//////////////////  GLOBAL FUNCTIONS  //////////////////



// These are for certain MSIE versions that don't know about Array functions yet.
if ( (![].push) || (!Array.push) ) {
    // push item on to end of the array.
    Array.prototype.push = function(tempItem) {
        for (var i=0;i<arguments.length;i++) {
            this[this.length]=arguments[i];
        }
        return this.length;
    }
}
if ( (![].pop) || (!Array.pop) ) {

    // pull last item off the array.
    Array.prototype.pop = function() {
        var tempItem = this[this.length-1];
        this.length--;
        return(tempItem);
    }
}
if ( (![].unshift) || (!Array.unshift) ) {

    // add item on to beginning of the array.
    Array.prototype.unshift = function(tempItem) {
        var c = arguments.length-1;
        for (var x=c;x>=0;x--) {
            var tempItemItem = arguments[x];
            
            var newlength = this.length;
            for (var i = newlength; i>0; i--) {
                var newspot = i;
                var oldspot = i-1;
                var tmp = this[oldspot];
                this[newspot] = tmp;
            }
            this[0]=tempItemItem;
        }
        return this.length;
    }
}
if ( (![].shift) || (!Array.shift) ) {

    // pull item from beginning of the array.
    Array.prototype.shift = function() {
        var tempItem = this[0];
        for (var i = 1; i <this.length; i++) {
            var tmp = this[i];
            var newspot = i-1;
            this[newspot] = tmp;
        }
        this.length--;
        return tempItem;
    }

}


// 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");

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 sshp_link_cats = new Object();
sshp_link_cats["toc"] = "_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 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");
wcs_link_names.push("searchhelp", "searchnav", "searchsort", "searchcat", "searchprod");

var out_shopall_link_cats = new Object();
out_shopall_link_cats["subcat"] = "_SA";
out_shopall_link_cats["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 giftreg_root = "REI_GIFT_REGISTRY";

var rei_giftcert_root = "REI_GIFT_CERTIFICATES";
var out_giftcert_root = "OUTLET_GIFT_CERTIFICATES";

var rei_comp_charts_root = "REI_COMPARISON_CHARTS";
var out_comp_charts_root = "OUTLET_COMPARISON_CHARTS";

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";


