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 (document.getElementById('prodHeader')!=undefined){
	    if($$("#prodHeader h1.main span.title").length > 0) doProductDetailsTracking(); // Product Model page
	}
	
	if (document.getElementById('results')!=undefined){
	    if($$("#results h3.details").length > 0) doAccessoryDetailsTracking(); // Product Model page
	}

	
	if (document.getElementById('resultList') != undefined){
	    if($$("#resultList li.hasPrice").length > 0) doPartsTracking(); // Parts & accessories page
	    if($$(".hmc ul#resultsList li").length > 0) doHMCTracking(); // Help me choose
	}
	
	if (document.getElementById('offersList')!=undefined){
	    if($$("ul#offersList li.ltd").length > 0) doOffersTracking();
	}
	
	if($("basketUpdated")) doBasketTracking();
	//if($("orderNo")) doConfirmTracking();
}

// Only fires tracker if the 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);
	}
}

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 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;
}

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 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 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+"|"+strOrgProdIds);
			if(bTrack) SiTrackTracer("/si/prdview ","type=xsell&xselltype=basket&prd="+strProdIds+"&price="+strPrices+"&origprd="+strOrgProdIds);
			
			if(bTest) alert("/si/prdview type=xsell&xselltype=basket&prd="+strProdIds+"&price="+strPrices+"&origprd="+strOrgProdIds);
		}
	}
}

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() });
