var brandChannleName = "";    
function recordProductTrackingLink(link, events, products, name)
{
	recordLink(link, events, products, name, null);
}

function recordLink(link, events, products, name, varList)
{
	var es = s_gi(s_account);
	es.linkTrackVars = 'events,eVar8,eVar15';
    if (varList != null) {
        es.linkTrackVars += "," + varList;
    }
    // filter out serialization id
	es.linkTrackEvents = events.replace(/([^:]*)(\:[^\,]*)/g, "$1","g");
	es.events = events;
	if (products != "") {
		es.products = products;
		es.linkTrackVars += ",products";
	}
    // copy evars
    for (i = 1; i <= 50; i++) { 
        var tmpEVar = eval("s.eVar" + i);
        if (tmpEVar) {
            if (tmpEVar != "") {
                eval("es.eVar" + i + " = tmpEVar");
            }
        }
    }
    //alert ("linkTrackVars = " + es.linkTrackVars + "\nlinkTrackEvents = " + es.linkTrackEvents + "\nevents = " + es.events + "\nproducts = " + es.products);
	es.tl(link, 'o', name);   
}
    
    
function trackAddToCart(orderId, sku)
{
	s.pageName="Shopping Cart";
	
    addEvent("scOpen:" + orderId);
	addEvent("scAdd:" + orderId + "_" + sku);
    s.products = ";" + sku;
}

function trackRemoveFromCart(sku) {
	s.pageName="Shopping Cart";
	addEvent("scRemove");
	
	s.products = ";" + sku;
	
}

function trackAddToWishList(sku)
{
	addEvent('event9:' + sku);  	
}

function trackRemoveFromWishlist(products)
{	
    s.products += products;
	addEvent('event10:' + stringSum(products));	
}

function trackCancelUserEvent()
{
	addEvent("event7");
}

function trackUserRegister()
{
    s.pageName += " 1";
}

function trackUserProfile()
{
    s.pageName += " 2";
}
function trackSweepstakes(contestID,pageDetails)
{    
    s.pageName = pageDetails+(s.pageName)+"#"+contestID;
}
function trackRegisterUserEvent (formName)
{
    addEvent("event6,event4");
    pageFormSuccess = false;	    	
}

function trackEmailSignUpEvent(formName)
{
    addEvent("event16,event4");
    pageFormSuccess = false;			
}

function stringSum(s) 
{
    var sum = 0;
    for (i = 0; i < s.length; i++) {
        sum = (2 * sum + s.charCodeAt(i)) % 9223372036854775807; 
    }
    return sum;
}

function trackLogin(ltpaToken)
{
    addEvent("event8:" + stringSum(ltpaToken));
}

function trackProductSearchBreadCrumb()
{
    commitCategories();
    productFindingMethod = "search";
}

function trackProductSearch(searchTerm, numResults)
{
    trackSearchEvent(searchTerm, numResults);
}

function trackStoreLocator(numResults, productLine, zipcode, range, sku)
{
    trackSearchEvent("storelocator:" + productLine + ":" + zipcode + ":" + range + ":" + sku, numResults);
    s.eVar6 = zipcode;
    s.eVar7 = productLine;
    s.eVar38 = sku;
    s.eVar39 = range;
}

function trackIntlStoreLocator(numResults, productLine, country)
{
    trackSearchEvent("internationaldistributor:" + productLine + ":" + country, numResults);
    s.eVar40 = country;
    s.eVar7 = productLine;
}

function trackSearchEvent(searchTerm, numResults)
{
    s.prop1 = searchTerm;
    s.eVar1 = searchTerm;
    s.prop2 = numResults;
    addEvent("event1");
}

function amendPageNameByWCMContentPath(contentRoot)
{
	var wcmContext = /.*WCM_CONTEXT\=([^&]+).*/i.exec(location.href);
	if (wcmContext != null) {
		var contentPath = new RegExp(".*" + contentRoot + "(.*)","i").exec(wcmContext[1].replace("\+", " ", "g"));
		amendPageName(contentPath[1]);
        var contentPathElems = contentPath[1].split("/");
        var contentTypeId;
        var articleId;
        for (var i = 0; i < contentPathElems.length; i++) {
            if (contentPathElems[i] != "") {
                if (contentTypeId == null) {
                    contentTypeId = contentPathElems[i];
                } else {
                    articleId = contentPathElems[i];
                }
            }
        }
        s.prop6 = contentTypeId;
        s.prop7 = articleId;
	}
}

function amendPageName(amendment)
{
	if (amendment != null) {
		s.pageName += ":" + amendment;
	}
}

function trackFeaturedReferrals(link, name)
{
    // for now, use the same code
    trackReferrals(link, name);
}

function trackReferrals(link, name)
{
    trackingParams = "event13=1&eVar25=" + name;
    trackExternalLinks(link, link.href, null, trackingParams)
}

function addEvent(event)
{
    if (s.events != "") {
        s.events += "," + event;
    } else {
       s.events += event;
    }
}

function trackPurchase(purchaseID, billToZip, billToState, billToCountry, shipToState, shipToCountry)
{
    trackCheckoutConfirmation();
	s.state = billToState;
	s.zip = billToZip;
    s.eVar18 = shipToState;
    s.eVar19 = billToState;
    s.eVar20 = shipToCountry;
    s.eVar21 = billToCountry;
	s.purchaseID = purchaseID;
	s.pageName = "Order Confirmation";
	addEvent("purchase" + ((hasDiscounts) ? ",event2" : ""));
	if (com_rc2corp_tracked_cart_products) {
		s.products = com_rc2corp_tracked_cart_products;
	}
}

function trackProductView(sku, name)
{
    addEvent("prodView,event12");
    s.products += ";" + sku;
    s.pageName += ": " + name + " #" + sku;
    s.prop7 = sku;
    copyCategoriesToEvars();
    trackCategoryData("", false, true);
    s.eVar2 = productFindingMethod;
    s.hier1 += ":" + sku;
    s.prop5 += ":" + sku;
}

function trackShoppingCartView(orderId)
{
	s.pageName="Shopping Cart";
	addEvent("scView");
    addEvent("scOpen:" + orderId);
	if (com_rc2corp_tracked_cart_products) {
		s.products = com_rc2corp_tracked_cart_products;
	}
}

// remove this? 
function processProductString(orderId, productString)
{
    var products = productString.split(",");
    var newProductString = null;
    for (var i = 0; i < products.length; i++) {
        productComps = products[i].split(";");
        if (newProductString == null) {
            newProductString = "";
        } else {
            newProductString += ",";
        }
        newProductString += products[i] + ";scAdd:" + orderId + "_" + productComps[1];
    }
    return newProductString;
}

function trackRemoval(_form, _cbItemName)
{

    var i, e;
    var skus = new Array();
    
    for (i = 0; i < _form.elements.length; i++){
        e = _form.elements[i];
        if ((e.type == "checkbox") && (e.name == _cbItemName) && (e.checked)){
            skus[skus.length] = catentrySkuMap[e.value];
        }
    }	
    trackRemoveFromWishlist(document.getElementById("WC_WishListDisplay_Link_3"), skus, 1);
}

function trackWishList(form, link)
{
    emailcount = form.recipient.value.split(',').length;
    recordProductTrackingLink(link, "event14", ";;;;event14=" + emailcount, "Send Wish List")
}

function trackEmail(form, link)
{
	emailcount = form.recipient.value.split(',').length;
	recordProductTrackingLink(link, "event11", ";;;;event11=" + emailcount, "Tell A Friend")
}

var com_rc2corp_tracked_cart_products = "";

function trackOrderItems()
{
    if (com_rc2corp_tracked_cart_products != "") {
        com_rc2corp_tracked_cart_products += ",";
    } 
    com_rc2corp_tracked_cart_products += ";" + sku + ";" + qty + ";" + subtotal;
    if (itemDisc < 0.0) {
        hasDiscounts = true;
        com_rc2corp_tracked_cart_products += ";event2=" + (-itemDisc);
        itemDisc = 0;
        for (i = 0; i < discNames.length; i++) {
            if (i == 0) {
                com_rc2corp_tracked_cart_products += ";";
            } else {
                com_rc2corp_tracked_cart_products += "|";
            }
            if (discCodes[i] != '') {
                com_rc2corp_tracked_cart_products += discCodeEVars[i] + "=" + discCodes[i] + "|";					 
            }
            com_rc2corp_tracked_cart_products += discNameEVars[i] + "=" + discNames[i];
        }
        discCodes = new Array();
        discNames = new Array();
    }
}

var hasDiscounts = false;
var discCodeEVars = new Array("eVar16", "eVar30", "eVar32", "eVar34", "eVar36");
var discNameEVars = new Array("eVar29", "eVar31", "eVar33", "eVar35", "eVar37");	 
var sku;
var qty;
var subtotal;
var itemDisc = 0;
var discCodes = new Array();
var discNames = new Array();


var checkoutAddressPage = "Checkout: Address";
var checkoutSummaryPage = "Checkout: Summary";
var checkoutConfirmationPage = "Checkout: Confirmation";

function trackCheckoutAddress(orderId)
{
	s.pageName = checkoutAddressPage;
    addEvent("scCheckout:" + orderId);
	if (com_rc2corp_tracked_cart_products) {
		s.products = com_rc2corp_tracked_cart_products;
	}
}

function trackCheckoutSummary(orderId)
{
	s.pageName = checkoutSummaryPage;
    addEvent("event15:" + orderId);
}

function trackCheckoutConfirmation()
{
	s.pageName = checkoutConfirmationPage;
}

var pageFormMap = new Array();
pageFormMap["Email Us"] = /.*EmailForm/;
pageFormMap["Progressive Newsletter"] = /.*NewsletterForm/;
pageFormMap["Progressive Affiliate"] = /.*AffiliateForm/;
pageFormMap["Progressive Research"] = /.*ResearchForm/;
pageFormMap["Refer Friends"] = /.*ReferralForm/;


function setFormList()
{
    var formRE = pageFormMap[s.pageName];
    if (formRE) {
        for (i = 0; i < document.forms.length; i++) {
            if (document.forms[i].name.match(formRE)) {
		   analyzeForm(document.forms[i].name);
            }
        }
    }
}


function analyzeForm(formName)
{
    s.formList = formName;
    s.trackFormList = true;
    s.trackPageName = false;
    s.useCommerce = true;
    s.eventList = "event3,event4,event5";
    s.eVar9 =  formName;
    s.varUsed = "eVar9";
    s.setupFormAnalysis();
    if (pageFormErrors) {
        for (i = 0; i < pageFormErrors.length; i++) {
            // need to assign again because after each send eVar9 is reset?
	     s.eVar9 =  formName;
            s.sendFormEvent('e', s.pageName, s.eVar9, pageFormErrors[i]);
        }
	 pageFormErrors = "";
	 s.events = "";
    }
    if (pageFormSuccess) {
       s.sendFormEvent('s', s.pageName, s.eVar9);
    }
}

var pageFormErrors;

function sendFormAnalysisError(error)
{
    // this is deferred
    if (!pageFormErrors) {
        pageFormErrors = new Array();
    }
    pageFormErrors[pageFormErrors.length] = error; 
}

var pageFormSuccess = false;

function sendFormAnalysisSuccess()
{
    pageFormSuccess = true;
}

var categoriesCommitted = false;
var topcategories = new Array();
var subcategories = new Array();

var productFindingMethod = "browse";

function addTopCategory(catalog, category)
{
    if(brandChannleName ==""){
       brandChannleName = category;
    }

    if (!categoriesCommitted) {
        topcategories[catalog] = category;
    }
}

function addSubCategory(category)
{
    if (!categoriesCommitted) {
        subcategories[subcategories.length] = category;
    }
}

function commitCategories()
{
    categoriesCommitted = true;
}

var topCategoryEvarMapping = new Array();
topCategoryEvarMapping["Product Lines"] = "eVar10";
topCategoryEvarMapping["Needs"] = "eVar11";
topCategoryEvarMapping["Ages"] = "eVar12";
topCategoryEvarMapping["Product Types"] = "eVar13";

var subCategoryEvarMapping = new Array();
subCategoryEvarMapping[0] = "eVar14";
subCategoryEvarMapping[1] = "eVar26";
subCategoryEvarMapping[2] = "eVar27";
subCategoryEvarMapping[3] = "eVar28";


function copyCategoriesToEvars()
{
    if (categoriesCommitted) {
        for (topcat in topcategories) {
            eval("s." + topCategoryEvarMapping[topcat] + " = '" + topcategories[topcat] + "'"); 
        }
        for (i = 0; i < subcategories.length; i++) {
            eval("s." + subCategoryEvarMapping[i] + " = '" + subcategories[i] + "'"); 
        } 
    }
}

function trackCategory()
{
    trackCategoryData("Category", false, false);
}

function trackFilteredProducts()
{
    trackCategoryData("Shop by ", true, false);
}

function trackCategoryData(basePageName, useShopBy, hierOnly)
{
    var shopBy = "";
    var hier = "";
    var catPath = "";
    for (topcat in topcategories) {
        if (shopBy == "") {
            shopBy = (topcat == "Product Lines") ? "Brand" : "Category";
        } else {
            catPath += "/";
            hier += ":";
        }
        catPath += topcategories[topcat];
        hier += topcategories[topcat];
    }
    for (i = 0; i < subcategories.length; i++) {
        catPath += "/" + subcategories[i];
        hier += ":" + subcategories[i]; 
    }
    if (!hierOnly) {
        s.pageName = basePageName + (useShopBy ? shopBy : "") + ":" + catPath;
    }
   
    s.prop5 = hier;
    s.hier1 = hier;
}

function setDefaultHierarchy()
{
    if (s.hier1 == "") {
        var hier = s.pageName;
        hier = hier.replace(/[/]/g, ":").replace("::", ":", "g");
        s.prop5 = hier;
        s.hier1 = hier;
    }
}

var pageNameMap = new Array();
pageNameMap["Customer Care"] = "Customer Care:FAQS";
pageNameMap["Email Us"] = "Customer Care:Email Us";
pageNameMap["Product Recalls"] = "Customer Care:Product Recalls";
pageNameMap["Warranty Information"] = "Customer Care:Warranty Information";
pageNameMap["Wish List"] = "Parents Council:Wish List";
pageNameMap["Track Layouts"] = "Parents Council:Track Layouts";
pageNameMap["Articles"] = "Community:Articles";
pageNameMap["Events"] = "Parents Council:Events";
pageNameMap["Shop by Category"] = "Home Shop by Category";

function mapPageName(pageName)
{
    var mappedName = pageNameMap[pageName];
    return (mappedName == null) ? pageName : mappedName;
}

function tagLinks(node, iname, ival)
{
    var i;
    for (i = 0; i < node.childNodes.length; i++) {
        if ("A" == node.childNodes[i].nodeName) {
            var origHref = node.childNodes[i].getAttribute("href", 2);
            var href = node.childNodes[i].href;
            //document.write(origHref + " " + href);
            node.childNodes[i].setAttribute("href", origHref + ((origHref.indexOf("?") == -1) ? "?" : "&") + iname + "=" + escape(ival), 0);
            //document.write(node.childNodes[i].getAttribute("href", 2));
        }
        tagLinks(node.childNodes[i], iname, ival);
    }
}

function trackExtEspotLinks(link, url, popupFunctionName)
{
    var icid = link.href.replace(/^.*icid=([^&]+).*$/, "$1");
    var trackingParams = "event13=1&icid=" + icid;
    trackExternalLinks(link, url, popupFunctionName, trackingParams);
}

function trackExternalLinks(link, url, popupFunctionName, trackingParams)
{
    if (!link.href.match("tracked=true")) {
        newUrl = "/wps/tracking_redirector.jsp?tracked=true&url=" + escape(url) + "&" + trackingParams;
        if (popupFunctionName == null) {
           link.href = newUrl;
        } else {
           link.href = "javascript: " + popupFunctionName + "('" + newUrl + "');";
        }
    }
}

function getChannel(pageName) {
    var channel;
    if(pageName.match(/^miPump/)){
        var mipump =pageName.substring(6,8);
       if(mipump.match("CA")){
            channel ="miPumpCA";
	}else{
             channel ="miPump";
        }
	 return channel;
    }
    if(brandChannleName !="" && brandChannleName !=null){
       channel = brandChannleName;
    } else if (pageName.match(/^Category/) || pageName.match(/^Product Detail/) || pageName.match(/^Product Search/) || pageName.match(/Filtered Products/) || pageName.match(/^Our Brands/) || pageName.match(/^Our Brands/) || pageName.match(/Shop by/)) {
        channel = "Catalog";
    } else if (pageName.match(/^Customer Care/) || pageName.match(/^Our Story/)) {
        channel = "Customer Care";
    } else if (pageName.match(/^Parents Council/) || pageName.match(/^Privacy Statement/)) {
        channel = "Parents Council";
    } else if (pageName.match(/^RC2 Login/) || pageName.match(/^My Account/) || pageName.match(/^Progressive Update Profile/) || pageName.match(/^Progressive Newsletter/) || pageName.match(/^Progressive Affiliate/) || pageName.match(/^Progressive Research/) || pageName.match(/^Progressive Join WTE/) || pageName.match(/^Progressive Update Email Preferences/) || pageName.match(/^Delete Stage1 User Profile/) || pageName.match(/^Progressive Join WTE/) || pageName.match(/^Change Password/) || pageName.match(/^Forgot Userid Or Password/) || pageName.match(/^Member Tools/)) {
        channel = "User Profile";
    } else if (pageName.match(/^Shopping Cart/) || pageName.match(/^Checkout/) || pageName.match(/^Order Confirmation/)) {
        channel = "Commerce";
    } else if (pageName.match(/^Where To Buy/)) {
        channel = "Where To Buy";
    } else if (pageName.match("Home")) {
        channel = "Home";
    }else if(pageName.match(/^Community/)){
	 channel="Community";
    }else if(pageName.match(/^truefit/)){
	 channel="truefit"; 
    }else if(pageName.match(/^miPump/)){
	 channel="miPump";
    }else if (pageName.match(/^Car Seats & Travel Gear/)) {
        channel = "Car Seats & Travel Gear";
    }else if (pageName.match(/^The First Years/)) {
        channel = "The First Years";
    }else if(pageName.match(/^LandingSweepstakes/)||pageName.match(/^ThankYouSweepstakes/)){
	 channel="Sweepstakes";
    }else if(pageName.match(/^Thomas Wooden Railway - Talking Railway Series/)||pageName.match(/^Thomas Wooden Railway Track Layouts/)){
	 channel="Thomas Wooden Railway";
    }else if(pageName.match(/^LandingSuper Why - Coming Soon/)|| pageName.match(/^ThankYouSuper Why - Coming Soon/)){
	 channel="Super Why";
    }else if (pageName.match("External Link")) {
        channel = "External";    
    } else {
        channel = "Undefined channel:" + pageName;
        //alert(channel);
    }
    //alert(channel);

    return channel;
}
