var bTrack = true; // turns tracking on / off var bTest = false; // turns testing alerts on / off function doSiTracking() { if($$(".navRange li div.img a.track").length > 0) doProductCategoryTracking(); // Product Category page if($$(".navModel li.prod").length > 0) doProductModelTracking(); // Product Model page //if($$("#prodHeader h1.main span.title").length > 0) doProductDetailsTracking(); // Product Model page if($$("#results h3.details").length > 0) doAccessoryDetailsTracking(); // Product Model page if($$("#resultList li.hasPrice").length > 0) doPartsTracking(); // Parts & accessories page if($$(".hmc ul#resultsList li").length > 0) doHMCTracking(); // Help me choose //if($$("#spo_SpecialOffers").length > 0) doOffersTracking(); if($("basketUpdated")) doBasketTracking(); //if($("orderNo")) doConfirmTracking(); } // Only fires tracker if there is only 1 variant in range function doProductCategoryTracking() { if(!bTrack) return; var strProds=""; var strPrices=""; var strBreadcrumb="'STORE'"; var curProdId; var aProds = $$(".navRange li div.img a.track"); var strTracking = ""; for(var i=0; i < aProds.length; i++) { curProdId = aProds[i].href.split("product=")[1]; if(i>0) { strProds=strProds+","; strPrices=strPrices + ","; } strProds=strProds + curProdId; strPrices = strPrices + getPreTaxPrice($("prc_" + curProdId).innerHTML); } var strUrl = document.location.toString(); strBreadcrumb = strBreadcrumb + ":'" + strUrl.split("category=")[1] + "'"; if(strBreadcrumb.split(":").length==2 && strProds.split(",").length == strPrices.split(",").length) { strTracking = strTracking + "type=browse" + "&"; strTracking = strTracking + "prd=" + strProds + "&"; strTracking = strTracking + "price=" + strPrices + "&"; var strTestTracking = strTracking + "breadcrumb=" + strBreadcrumb; strTracking = strTracking + "breadcrumb=" + escape(strBreadcrumb); if(bTest) alert(strTestTracking); if(bTrack) SiTrackTracer("/si/prdview", strTracking); } } function doProductModelTracking() { if(!bTrack) return; var strProdIds=""; var strPrices=""; var aId; var iCount=0; var aProds = $$(".navModel li.prod"); var aPrices = $$(".navModel li.prod p.price"); var strBreadcrumb = "'STORE'"; var strTracking=""; if(aProds.length > 0) { for(var i=0; i < aProds.length; i++) { aId = aProds[i].id.split("_"); if(aId.length > 0) { if(iCount > 0) strProdIds = strProdIds + ","; strProdIds = strProdIds + aId[1]; iCount=iCount+1; } } } if(aPrices.length > 0) { for(var i=0; i < aPrices.length; i++) { if(i>0) strPrices = strPrices + ","; strPrices = strPrices + getPreTaxPrice(aPrices[i].innerHTML); } } var strBC2, strBC3, strUrl; var aBC2 = $$("span.back a"); if(aBC2.length > 0) strBC2 = aBC2[0].className.toUpperCase(); strUrl = document.location.toString(); strBC3 = strUrl.split("model=")[1]; if(strBC2!="" && strBC3!="") { strBreadcrumb = strBreadcrumb + ":'" + strBC2 + "':'" + strBC3 + "'"; } if(strBreadcrumb.split(":").length==3 && strProdIds.split(",").length == strPrices.split(",").length) { strTracking = strTracking + "type=browse" + "&"; strTracking = strTracking + "prd=" + strProdIds + "&"; strTracking = strTracking + "price=" + strPrices + "&"; var strTestTracking = strTracking + "breadcrumb=" + strBreadcrumb; strTracking = strTracking + "breadcrumb=" + escape(strBreadcrumb); if(bTest) alert(strTestTracking); if(bTrack) SiTrackTracer("/si/prdview", strTracking); } } /* 25/09/08 AS ------------------------------------------------ Thsi is now fired from the XSLT file with a function called doProductDetailsTrackingXSLT() function doProductDetailsTracking() { var strProdIds = "" var aProds = $$("h1.main span.title") if(aProds.length == 1) { strProdIds = aProds[0].id; strProdIds = strProdIds.split("_")[1]; if(bTest) alert(strProdIds); if(strProdIds!="") SiTrackTracer("/si/prddet ","prd="+strProdIds); } } */ function doProductDetailsTrackingXSLT(strProdId) { if(bTest) alert(strProdId); if(strProdId!="") SiTrackTracer("/si/prddet ","prd="+strProdId); } function doAccessoryDetailsTracking() { var strProdIds = "" var aProds = $$("div.clear div.prod") if(aProds.length == 1) { strProdIds = aProds[0].id; if(strProdIds!="") SiTrackTracer("/si/prddet ","prd="+strProdIds); if(bTest) alert(strProdIds); } } function doPartsTracking() { if(!bTrack) return; var strProdIds=""; var strPrices=""; var aProds = $$("#resultList li.hasPrice"); var aPrices = $$("#resultList li.hasPrice p.price"); var iProds = aProds.length; if(iProds > 0) { for(var i=0; i < iProds; i++) { if(i>0) { strProdIds = strProdIds + ","; strPrices = strPrices + ","; } strProdIds = strProdIds + aProds[i].id; strPrices = strPrices + getPreTaxPrice(aPrices[i].innerHTML); } } if(strProdIds.split(",").length > 10) { // if there are more than 10 products aProds = strProdIds.split(","); aPrices = strPrices.split(","); // split the lists back into arrays var strProdIds2=""; var strPrices2=""; var iCnt=0; // set new variables for(var i=0; i < aProds.length; i++) { // loop through all products if(iCnt > 0) { strProdIds2=strProdIds2+","; strPrices2=strPrices2+","; } // make lists comma delimited strProdIds2 = strProdIds2 + aProds[i]; strPrices2 = strPrices2 + aPrices[i]; // add prods and prices to lists if(iCnt==9) { // if counter reaches the tenth product sendPartsSearchTrackTracer(strProdIds2,strPrices2,iProds); // send track tracer iCnt = -1; strProdIds2=""; strPrices2=""; // reset counter and list variables } iCnt++; // increment counter } if(strProdIds2!="" && strPrices2!="") sendPartsSearchTrackTracer(strProdIds2,strPrices2,iProds); // send the remainder in a track tracer } else { if(strProdIds!="" && strPrices!="") { sendPartsSearchTrackTracer(strProdIds,strPrices,iProds); } } // send track tracer } function getPartsTrackQry() { var strTrackQry = "Page: Parts and accessories, "; var strCategory = "Category:Generic Accessories"; var strModel=""; var strProduct=""; if($("selectedModel")) { var aModelInfo = $("selectedModel").className.split(" "); if(aModelInfo.length==3) { if(aModelInfo[0].split("_").length==2) strCategory = "Category:" + aModelInfo[0].split("_")[1]; if(aModelInfo[1].split("_").length==3) strModel = "Model:" + aModelInfo[1].split("_")[2]; if(aModelInfo[2]!="") strProduct = "Product:" + aModelInfo[2]; } } strTrackQry = strTrackQry + strCategory; if(strModel!="") strTrackQry = strTrackQry + ", " + strModel; if(strProduct!="") strTrackQry = strTrackQry + ", " + strProduct; return strTrackQry; } // *** builds parameter strings and call tracking function function sendPartsSearchTrackTracer(prods,prices,hits) { var strTrack="type=search"; if(prods.split(",").length >= 1) { if(prods.split(",").length == prices.split(",").length) { var iProds = prods.split(",").length; strTrack = strTrack + "&prd=" + prods; strTrack = strTrack + "&price=" + prices; } strTrack = strTrack + "&hits="+hits; strTrackQry = getPartsTrackQry(); if(!bTest) { strTrack = strTrack + "&qry=" + escape( strTrackQry ) } else { strTrack = strTrack + "&qry=" + strTrackQry; } if(bTest) alert(strTrack); if(bTrack) SiTrackTracer ( "/si/prdview", strTrack ); } } function doHMCTracking() { if(!bTrack) return; var strProdIds=""; var strPrices=""; var aProds = $$("ul#resultsList li"); var aPrice = $$("ul#resultsList li p.price"); // get Product and Price arrays from the results page var iProds = aProds.length; if(aProds.length > 0) { // if there are products in the list for(var i=0; i < aProds.length; i++) { // cycle through all product if(i > 0) { strProdIds = strProdIds + ","; strPrices = strPrices + ","; } // make lists comma delimited strProdIds = strProdIds + aProds[i].id; // add product id to list - taken from part of the id string strPrices = strPrices + getPreTaxPrice(aPrice[i].innerHTML); // add pre tax price to list - taken from the inside of the price p tag } } else { // there are no products in the results list var aProds2 = $$("thead th.prod"); var aPrices2 = $$("thead th.prod p.price"); // get products and prices arrays from the results table iProds = aProds2.length; if(aProds2.length > 0) { // if there are products in the table strProdIds=""; strPrices="";// reset lists for(var i=0; i < aProds2.length; i++) { // loop through all products if(i>0) { strProdIds=strProdIds+","; strPrices = strPrices + ","; } // make lists comma delimited strProdIds=strProdIds+aProds2[i].id; // add product id to list - taken from the id string strPrices = strPrices + getPreTaxPrice(aPrices2[i].innerHTML); // add pre tax price to the list } } } if(strProdIds.split(",").length > 10) { // if there are more than 10 products aProds = strProdIds.split(","); aPrices = strPrices.split(","); // split the lists back into arrays var strProdIds2=""; var strPrices2=""; var iCnt=0; // set new variables for(var i=0; i < aProds.length; i++) { // loop through all products if(iCnt > 0) { strProdIds2=strProdIds2+","; strPrices2=strPrices2+","; } // make lists comma delimited strProdIds2 = strProdIds2 + aProds[i]; strPrices2 = strPrices2 + aPrices[i]; // add prods and prices to lists if(iCnt==9) { // if counter reaches the tenth product sendHMCSearchTrackTracer(strProdIds2,strPrices2,iProds); // send track tracer iCnt = -1; strProdIds2=""; strPrices2=""; // reset counter and list variables } iCnt++; // increment counter } if(strProdIds2!="" && strPrices2!="") sendHMCSearchTrackTracer(strProdIds2,strPrices2,iProds); // send the remainder in a track tracer } else { sendHMCSearchTrackTracer(strProdIds,strPrices,iProds); } // send track tracer } // *** builds parameter strings and call tracking function function sendHMCSearchTrackTracer(prods,prices,hits) { var strTrack="type=search"; if(prods.split(",").length == prices.split(",").length) { var iProds = prods.split(",").length; strTrack = strTrack + "&prd=" + prods; strTrack = strTrack + "&price=" + prices; } strTrack = strTrack + "&hits="+hits; strTrackQry = getHMCTrackQry(); if(bTest) { strTrack = strTrack + "&qry=" + strTrackQry; alert(strTrack); } else { strTrack = strTrack + "&qry=" + escape( strTrackQry ); } if(bTrack) SiTrackTracer ( "/si/prdview", strTrack ); } function getHMCTrackQry() { var strTrackQry = "Page: Help me choose, "; var aElm = $$("#frmHelpMeChoose fieldset input"); var aLabel = $$("#frmHelpMeChoose fieldset label span"); var strNeeds=""; var strType=""; var strOrder=""; for(var i=0; i < aElm.length; i++) { if(aElm[i].hasClassName("rad")) { if(aElm[i].checked) { if(strType!="") strType = strType + "; "; strType = strType + aLabel[i].innerHTML; } } else { if(aElm[i].checked) { if(strNeeds!="") strNeeds=strNeeds + "; "; strNeeds=strNeeds + aLabel[i].innerHTML; } } } if($F("slSort")=="ascending") { strOrder="Price: Low to high" } else { strOrder="Price: High to low" } strTrackQry = strTrackQry + strOrder; if(strNeeds!="") { strNeeds = "Features: " + strNeeds; strTrackQry = strTrackQry + ", " + strNeeds; } if(strType!="") { strType = "Show: " + strType; strTrackQry = strTrackQry + ", " + strType; } return strTrackQry; } /* 25/09/08 AS The offers page has changed so there is only one OTB (the clearance item). This is in a new function called clearanceTracking which is called directly from the XSLT clearance.xslt file -------------------------------------------------------------------------------------------- function doOffersTracking() { if(!bTrack) return; var aProd = $$("ul#offersList li.ltd"); var aPrice = $$("ul#offersList .price span"); var strProdIds = ""; var strPrices = ""; var strTrack = "" if(aProd.length == aPrice.length) { for(var i=0; i < aProd.length; i++) { if(i > 0) { strProdIds = strProdIds + ","; strPrices = strPrices + ","; } strProdIds = strProdIds + aProd[i].id; strPrices = strPrices + getPreTaxPrice(aPrice[i].innerHTML); } if(strProdIds!="" && strPrices!="" && strProdIds.split(",").length == strPrices.split(",").length) { strTrack = "type=browse&" strTrack = strTrack + "prd=" + strProdIds + "&"; strTrack = strTrack + "price=" + strPrices + "&"; strTrack = strTrack + "breadcrumb=" + escape("'Online store':'Special offers'"); if(bTest) alert(strTrack); if(bTrack) SiTrackTracer("/si/prdview ",strTrack); } } } */ function clearanceTracking(strProdId,strPrice){ strTrack = "type=browse&" strTrack = strTrack + "prd=" + strProdId + "&"; strTrack = strTrack + "price=" + strPrice + "&"; strTrack = strTrack + "breadcrumb=" + escape("'Online store':'Special offers'"); if(bTest) alert(strTrack); if(bTrack) SiTrackTracer("/si/prdview ",strTrack); } function doBasketTracking() { if(!bTrack) return; if($("basketUpdated")) { var strUpdated = $F("basketUpdated"); if(strUpdated!="") { var arrUpdated = strUpdated.split("|"); if(arrUpdated.length==3) { var arrModels = arrUpdated[0].split(","); var arrQtys = arrUpdated[1].split(","); var arrPrices = arrUpdated[2].split(","); if(arrModels.length == arrQtys.length && arrModels.length == arrPrices.length) { var addRemove; var strTrack; var price for(var i=0; i < arrModels.length; i++) { price = getPreTaxPrice("£" + arrPrices[i]); if(arrQtys[i] > 0) { addRemove = "/si/addbasket"; strTrack = "sku=" + arrModels[i] + "&qty=" + arrQtys[i] + "&price=" + price; } else { addRemove = "/si/rmvbasket"; strTrack = "sku=" + arrModels[i] + "&qty=" + Math.abs(arrQtys[i]) + "&price=" + price; } if(bTest) alert(addRemove + " | " + strTrack); if(bTrack) SiTrackTracer ( addRemove, strTrack ); } } } } } doXsellTracking(); } // *** SI Tracking function doXsellTracking() { if(!bTrack) return; var pastPageID = ""; if (document.getElementById('lastPageID') != null){ pastPageID = document.getElementById('lastPageID').value } var aPrices = $$("#dvXsell ul li p.price"); var aLinks = $$("#dvXsell ul li p.buy a"); var strProdId=""; var strProdIds=""; var strPrices=""; var strOrgProdIds=""; strProdIds=""; strPrices=""; if(aPrices.length == aLinks.length) { for(var i=0; i < aLinks.length; i++) { strProdId = aLinks[i].href.split("product=")[1]; orgstrProdId = aLinks[i].href.split("model=")[1]; // Gets the Original Model ID (i.e. the one calling the Xsell product) strProdId = strProdId.split("&")[0]; if(i>0) { strProdIds = strProdIds + ","; strOrgProdIds = strOrgProdIds + ","; strPrices = strPrices + ","; } strProdIds = strProdIds + strProdId strOrgProdIds = strOrgProdIds + orgstrProdId strPrices = strPrices + getPreTaxPrice(aPrices[i].innerHTML); } if(strProdIds!="" && strPrices!="") { if(bTest) alert(strProdIds+"|"+strPrices+"|"+orgstrProdId); if(bTrack) SiTrackTracer("/si/prdview ","type=xsell&xselltype=basket&prd="+strProdIds+"&price="+strPrices+"&breadcrumb="+escape("'"+pastPageID+"'&origprd="+orgstrProdId+"")); if(bTest) alert("/si/prdview type=xsell&xselltype=basket&prd="+strProdIds+"&price="+strPrices+"&breadcrumb="+escape("'"+pastPageID+"'&origprd="+orgstrProdId+"")); } } } function doConfirmTracking() { var orderNo = ""; var userId = ""; if($("orderNo") && $("orderId")) { orderNo = $("orderId").innerHTML; userId = $("orderNo").className; if(orderNo!="" && userId!="") { if(bTest) alert("id="+ orderNo + "&customer="+userId); if(bTrack) SiTrackTracer("/si/order ","id="+ orderNo + "&customer="+userId); } } } function doHomepageTracking(strProdIds,strPrices) { var arrPrices = strPrices.split(","); strPrices = ""; for(var i=0; i < arrPrices.length; i++){ if(i > 0) strPrices = strPrices + "," strPrices = strPrices + getPreTaxPrice(arrPrices[i]); } if(bTest) alert(strProdIds + " | " + strPrices); if(bTrack) SiTrackTracer("/si/prdview","type=hero&prd=" + strProdIds + "&price=" + strPrices + "&breadcrumb=" + escape("'Home'")); } function doLandingPageTracking(strProdIds,strPrices,strBreadcrumb) { var arrPrices = strPrices.split(","); strPrices = ""; for(var i=0; i < arrPrices.length; i++){ if(i > 0) strPrices = strPrices + "," strPrices = strPrices + getPreTaxPrice(arrPrices[i]); } var breadcrumb = "LANDING:" + strBreadcrumb; if(bTest) alert(strProdIds + " | " + strPrices + " | " + breadcrumb); if(bTrack) SiTrackTracer("/si/prdview","type=hero&prd=" + strProdIds + "&price=" + strPrices + "&breadcrumb=" + escape(breadcrumb)); } Event.observe (window, "load", function() { doSiTracking() });