//////////////////  GLOBAL FUNCTIONS  //////////////////


// addEvent and removeEvent cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew

function addLinkEvent(elm, evType, fn, useCapture) {
    if (elm.addEventListener){
        elm.addEventListener(evType, fn, useCapture);
        return true;
    } else if (elm.attachEvent){
        var r = elm.attachEvent("on"+evType, fn);
        return r;
    }
}


function procHost(inLink) {
    var host = inLink.host;
    //strip port off host for IE
    if (inLink.host.indexOf(':') != -1) host = inLink.host.substr(0,inLink.host.indexOf(':'));
    return host;
}

function procPath(inLink) {
    var pathname = inLink.pathname;
    //strip off search from pathname for opera
    if (inLink.pathname.indexOf('?') != -1) pathname = inLink.pathname.substr(0,inLink.pathname.indexOf('?'));
    //strip off leading slash for Netscape.
    if (inLink.pathname.charAt(0) == '/') pathname = inLink.pathname.substr(1,inLink.pathname.length-1);
    return pathname;
}

function procSearch(inLink) {
    var search = null;
    if (inLink.search!=null || inLink.search.length>0) search = inLink.search;
    return search;
}    
function procHash(inLink) {
    var hash = null;
    if (inLink.hash.length>0) {
        if (inLink.href.indexOf('#') != -1) hash = inLink.hash.substr(1);
    }
    return hash;
}
    
  
function debug(str) {
    if (DEBUG) alert(str);
}

function stripDollarsAndCommas(str) {
    if (str.indexOf('$')!=-1) str = str.substring(1,str.length);
    if (str.indexOf(',')!=-1) {
        var priceAr = str.split(',');
        str = priceAr.join("");
    }
    return str;
}

function arrayContains(inArray, inStr) {
    var retval = false;
    var end = inArray.length;
    for (var i = 0;i<end;i++) {
        var x = inArray.shift();
        if (x==inStr) {
            retval = true;
        }
        inArray.push(x);
    }
    return retval;
}

function convertOutletTitle(instr) {
    var x = instr.split('/');var y = x.join(' ');
    var x = y.split('& ');var y = x.join('');
    var x = y.split('\'');var y = x.join('');
    var x = y.split('\"');var y = x.join('');
    var x = y.split('\\');var y = x.join('');
    var x = y.split(' ');var y = x.join('_');
    return(y);
}



function Collection() {
    this.coll = new Object();
    this.keys = new Array();
}

Collection.prototype.containsKey = function(str) {
    return (this.coll[str]!=null);
}

Collection.prototype.put = function(n,v) {
    this.coll[n] = v;
    this.keys.push(n);
    return true;
}

Collection.prototype.get = function(n) {
    if (this.coll[n]!=null)
    return this.coll[n];
    else return null;
}

Collection.prototype.remove = function(n) {
    var entry = null;
    if (this.coll[n]!=null) {
        entry = this.coll[n];
        this.coll[n] = null;
    } 
    var end = this.keys.length;
    for (var i = 0;i<end;i++) {
        var x = this.keys.shift();
        if (x!=n) {
            this.keys.push(x);
        }
        
    }
    return entry;
}

Collection.prototype.getKeys = function() {
    var k = this.keys;
    return k;
}

Collection.prototype.size = function() {
    return this.keys.length;
}


function getACookieVal(offset) {
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr == -1)
	endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

function getACookie(name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
		return getACookieVal(j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}


//////////////////  GLOBAL VARIABLES  //////////////////


var coremetrics_tag_name = "vcat";
var ext_tag_name = "ext_cat";
var store_id_tag_name = "storeId";
var rackfitter_type_tag_name = "type";
var reixCookieValue = getACookie("REIX");

var found_name = false;
var pageViewSent = false;

var ss = 1;

var PAGE_TYPE_HOME      = ss++;
var PAGE_TYPE_SSHP      = ss++;
var OUT_HOME            = ss++;
var OUT_JUSTREDUCED     = ss++;
var OUT_TOPSELLERS      = ss++;
var REI_SHOP_BY_BRAND   = ss++;
var OUT_SHOP_BY_BRAND   = ss++;
var PAGE_TYPE_FINDER    = ss++;
var PAGE_TYPE_ERROR     = ss++;
var PAGE_TYPE_REI_SHOPALL     = ss++;

var hp_link_names = new Array();
hp_link_names.push("lead","prodpack","lower","best");

var hp_link_cats = new Object();
hp_link_cats["lead"] = "REI_HP_LD";
hp_link_cats["prodpack"] = "REI_HP_PP";
hp_link_cats["lower"] = "REI_HP_L4";
hp_link_cats["best"] = "REI_HP_BS";

var sshp_link_names = new Array();
sshp_link_names.push("toc","lead","prodpack","lower","best","moreCategory","moreBrand","moreShopping","moreBikes","moreCategory1","moreCategory2","moreBrands");

var sshp_link_cats = new Object();
sshp_link_cats["toc"] = "_TOC";
sshp_link_cats["moreCategory"] = "_TOC";
sshp_link_cats["moreBrand"] = "_TOC";
sshp_link_cats["moreShopping"] = "_TOC";
sshp_link_cats["moreBikes"] = "_TOC";
sshp_link_cats["moreCategory1"] = "_TOC";
sshp_link_cats["moreCategory2"] = "_TOC";
sshp_link_cats["moreBrands"] = "_TOC";
sshp_link_cats["lead"] = "_LD";
sshp_link_cats["prodpack"] = "_PP";
sshp_link_cats["lower"] = "_L4";

var page_links = new Collection();
page_links.put("prod", true);
page_links.put("lead", "LD");
page_links.put("DOTD", "DOTD");
page_links.put("prodpack", "PP");
page_links.put("lower", "L4");
page_links.put("favorites", "FF");
page_links.put("learn", true);
page_links.put("finder", true);
page_links.put("brand", true);
page_links.put("nav", true);

var search_suffixes = new Collection();
search_suffixes.put("searchrefinebrand", "N"); // "Narrow"
search_suffixes.put("searchrefine", "N"); // "Narrow"
search_suffixes.put("searchsort", "S"); // "Sort"
search_suffixes.put("searchnav", "P"); // "Page navigation"
search_suffixes.put("searchcat", "C"); // "Display entire category"

var hp_link_cats_coll = new Collection();
hp_link_cats_coll.put("lead", "REI_HP_LD");
hp_link_cats_coll.put("prodpack", "REI_HP_PP");
hp_link_cats_coll.put("lower", "REI_HP_L4");
hp_link_cats_coll.put("best", "REI_HP_BS");


var sshp_link_cats_coll = new Collection();
sshp_link_cats_coll.put("toc", "_TOC");
sshp_link_cats_coll.put("moreCategory", "_TOC");
sshp_link_cats_coll.put("moreBrand", "_TOC");
sshp_link_cats_coll.put("moreShopping", "_TOC");
sshp_link_cats_coll.put("moreBikes", "_TOC");
sshp_link_cats_coll.put("moreCategory1", "_TOC");
sshp_link_cats_coll.put("moreCategory2", "_TOC");
sshp_link_cats_coll.put("moreBrands", "_TOC");
sshp_link_cats_coll.put("lead", "_LD");
sshp_link_cats_coll.put("prodpack", "_PP");
sshp_link_cats_coll.put("lower", "_L4");


var homepage_cat= "REICOMMERCE";
var hp_name = "REI_HP";
var sshp_root = "REI_SSHP";
var out_hp_name = "OUTLET_HP";
var out_hp_cat = "OUTLETCOMMERCE";
var out_sshp_root = "OUTLET_SSHP";

var rei_brand_cat = "REI_SHOP_BY_BRAND";
var out_brand_cat = "OUTLET_SHOP_BY_BRAND";
var just_reduced_cat = "OUTLET_JUST_REDUCED";
var top_sellers_cat = "OUTLET_TOP_SELLERS";


var stores_root = "REICONTENT_STORES";

var adv_root = "ADVENTURES";

// fetched off the URL

var rei_finder_root = "REI_FINDERS";




var path_cats = new Collection();
path_cats.put("/rei/aboutrei/", "REICONTENT_ABOUT_REI");
path_cats.put("/rei/aboutrei/releases/", "REICONTENT_ABOUT_REI");
path_cats.put("/aboutrei/", "REICONTENT_ABOUT_REI");
path_cats.put("/aboutrei/releases/", "REICONTENT_ABOUT_REI");
path_cats.put("/rei/help/", "REICONTENT_HELP");
path_cats.put("/outlet/help/", "OUTLETCONTENT_HELP"); 

path_cats.put("/8000/shared/help/", "REICONTENT_HELP");
path_cats.put("/8000/shared/help/feedback/", "REICONTENT_HELP");
path_cats.put("/8000/shared/help/membership/", "REICONTENT_HELP");
path_cats.put("/8000/shared/help/registry/", "REICONTENT_HELP");
path_cats.put("/8000/shared/help/simplesecure/", "REICONTENT_HELP");
path_cats.put("/8000/shared/help/bod/", "REICONTENT_HELP");
path_cats.put("/8001/shared/help/bod/", "REICONTENT_HELP");

path_cats.put("/8001/shared/help/", "OUTLETCONTENT_HELP");
path_cats.put("/8001/shared/help/feedback/", "OUTLETCONTENT_HELP");
path_cats.put("/8001/shared/help/membership/", "OUTLETCONTENT_HELP");
path_cats.put("/8001/shared/help/registry/", "OUTLETCONTENT_HELP");
path_cats.put("/8001/shared/help/simplesecure/", "OUTLETCONTENT_HELP");

path_cats.put("/webservices/rei/DisplayHelp/", "REICONTENT_HELP");
path_cats.put("/rei/sales_and_events/brands.html", "REI_SHOP_BY_BRAND");
path_cats.put("/outlet/sales_and_events/brands.html", "OUTLET_SHOP_BY_BRAND");
path_cats.put("/jobs/", "REICONTENT_JOBS");


var exp_adv_root = "REI_EXPERT_ADVICE";


var DEFAULT_REI_MERCH_CAT_PREFIX = 'REICAT';
var DEFAULT_OUT_MERCH_CAT_PREFIX = 'OUTLETCAT';

var wcs_category_id = null;

// for shop and category pages.
var wcs_link_names = new Array();
wcs_link_names.push("parentcat","subcat","prod","sort","include","next","prev","related_prod","related_cart","bcrumb","article","exp_adv_shop","brand","lead","giftcard");
wcs_link_names.push("searchhelp", "searchnav", "searchsort", "searchcat", "searchrefinebrand", "searchrefine", "searchtips", "searchcrumb");

var out_shopall_link_cats = new Object();
out_shopall_link_cats["subcat"] = "_SA";
out_shopall_link_cats["lead"] = "_LD";

var out_shopall_link_cats_coll = new Collection();
out_shopall_link_cats_coll.put("subcat", "_SA");
out_shopall_link_cats_coll.put("lead", "_LD");




var ii = 1;

var WCS_PAGE_TYPE_SHOPALL       = ii++;
var WCS_PAGE_TYPE_CATEGORY      = ii++;
var WCS_PAGE_TYPE_COMPCHART     = ii++;
var WCS_PAGE_TYPE_PRODUCT       = ii++;
var WCS_PAGE_TYPE_PRODUCT_LG    = ii++;
var WCS_PAGE_TYPE_SPLASH        = ii++;
var WCS_PAGE_TYPE_GIFTCERT      = ii++;
var WCS_PAGE_TYPE_YOUR_ACCOUNT  = ii++;
var WCS_PAGE_TYPE_GIFT_REGISTRY = ii++;
var WCS_PAGE_TYPE_SHOPCART      = ii++;
var WCS_PAGE_TYPE_SEARCH        = ii++;
var WCS_PAGE_TYPE_EXPADVICE     = ii++;
var WCS_PAGE_TYPE_CHECKOUT      = ii++;
var WCS_PAGE_TYPE_RACKFITTER    = ii++;
var WCS_PAGE_TYPE_ERROR         = ii++;
var WCS_PAGE_TYPE_NOVARA         = ii++;
var WCS_PAGE_TYPE_BACKORDER     = ii++;
var WCS_PAGE_TYPE_UNAVAIL     = ii++;
var WCS_PAGE_TYPE_REVW_SUB = ii++;

var giftreg_root = "REI_GIFT_REGISTRY";

var rei_giftcert_root = "REI_GIFT_CARD";
var out_giftcert_root = "OUTLET_GIFT_CARD";

var rei_comp_charts_root = "REI_COMPARISON_CHARTS";
var out_comp_charts_root = "OUTLET_COMPARISON_CHARTS";

var product_review_root = "REVW_SUB";
var your_acct_root = "YOUR_ACCOUNT";
var rei_your_acct_root = "YOUR_ACCOUNT_REI";
var out_your_acct_root = "YOUR_ACCOUNT_OUTLET";

var rei_splash_root = "REI_SPLASH";
var out_splash_root = "OUTLET_SPLASH";

var rei_related_cart_root = "REI_RELATED_ITEMS_CART";
var rei_related_prod_root = "REI_RELATED_ITEMS_PRODUCT_PAGE";
var out_related_cart_root = "OUTLET_RELATED_ITEMS_CART";
var out_related_prod_root = "OUTLET_RELATED_ITEMS_PRODUCT_PAGE";

var rei_search_root = "REI_SEARCH";
var rei_search_noresults_root = "REI_SEARCH_NO_RESULTS";
var out_search_root = "OUTLET_SEARCH";
var out_search_noresults_root = "OUTLET_SEARCH_NO_RESULTS";

var rei_checkout_cat = "CHECKOUT";
var out_checkout_cat = rei_checkout_cat;

var thule_cat  = "REI_FINDERS_THULE";
var yakima_cat = "REI_FINDERS_YAKIMA";

var novara_cat = "REI_SSHP_NOVARA";

var unassigned_root = "UNASSIGNED";

var WCS_PAGE_CART = "SHOPPING BASKET";
var WCS_PAGE_BILLING_CHECKOUT = "BILLING: NON-REGISTERED";
var WCS_PAGE_BILLING_CHECKOUT_REGISTERED = "BILLING: REGISTERED";
var WCS_PAGE_SHIPPING = "SHIPPING: TO CUSTOMER";
var WCS_PAGE_SHIPPING_DIFF = "SHIPPING: TO CUSTOMER_DIFF_ADDR";
var WCS_PAGE_SHIP_TO_STORE = "SHIPPING: TO STORE";
var WCS_PAGE_GIFT_DELIVERY = "CHOOSE YOUR GIFT-DELIVERY OPTIONS";
var WCS_PAGE_PAYMENT = "PAYMENT INFORMATION";
var WCS_PAGE_RECEIPT = "YOUR RECEIPT";
