jQuery.fn.extend({
getEscapedUrlParam: function(strParamName)
{
	strParamName = escape(unescape(strParamName));
	  var returnVal = new Array();
	  var qString = null;
	  if ($(this).attr("nodeName")=="#document") {
	  	//document-handler
		if (window.location.search.search(strParamName) > -1 ){
			qString = window.location.search.substr(1,window.location.search.length).split("&");
		}
	  } else if (typeof($(this).attr("src"))!="undefined") {
	  	var strHref = $(this).attr("src")
	  	if ( strHref.indexOf("?") > -1 ){
	    	var strQueryString = strHref.substr(strHref.indexOf("?")+1);
	  		qString = strQueryString.split("&");
	  	}
	  } else if (typeof($(this).attr("href"))!="undefined") {
	  	var strHref = $(this).attr("href")
	  	if ( strHref.indexOf("?") > -1 ){
	    	var strQueryString = strHref.substr(strHref.indexOf("?")+1);
	  		qString = strQueryString.split("&");
	  	}
	  } else {
	  	return null;
	  }
	  if (qString==null) return null;
	  for (var i=0;i<qString.length; i++){
			if (escape(unescape(qString[i].split("=")[0])) == strParamName){
				returnVal.push(qString[i].split("=")[1]);
			}
	  }
	  if (returnVal.length==0) return null;
	  else if (returnVal.length==1) return returnVal[0];
	  else return returnVal;
	}
});
function cmlog(url) {
	if (typeof console != "undefined" && typeof console.log != "undefined") console.log("cm tracked: " + url);
}
function getUrlVars() {
	var vars = {};
	var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
		vars[key] = value;
	});
	return vars;
}

$(document).ready( function ()
{
	var url = document.domain;
	var domain = "";
	var sub_domain = "";
	if(url.indexOf("www.") >= 0)
	{
		domain = url.substring(4);
	}
	else
	{
		sub_domain = url.substring(0,url.indexOf("."));
		domain = url.substring(url.indexOf(".")+1);
	}
	if(domain == "o2online.ie")
	{
		if((sub_domain != "pre" || sub_domain != "uat" || sub_domain != "int"))
		{
			cmSetProduction();
		}
	}

	var url = document.location.href;
	var fullUrl = document.location.href;
	url = url.toLowerCase();

	var partNumber;
	var xhttp = "";
	if(url.indexOf('?') != -1)
	{
		url = url.substring(0, url.indexOf('?'));
	}

	if (url == "http://www.o2online.ie/o2search/search/search.do")
	{
		var search_term = "";
		var number_results  = "";
		
		$('.searchResultsTopBar').children().each(function ()
		{	
			var class_search = $(this).attr('class');
			if(class_search == "floatRight standardText1R")
			{
				var temp = $(this).text();
				number_results = temp.substring(temp.indexOf(':')+2);
			}
		});
		if($(document).getEscapedUrlParam("query")!=null)
		{
			search_term = $(document).getEscapedUrlParam("query");
		}
		cmCreatePageviewTag("Search Successful","1000",search_term,number_results);
		
	} else if ((url.indexOf("/webapp/wcs/stores/servlet/o2productdisplayview")!= -1) ||
            (url.indexOf("/webapp/wcs/stores/servlet/o2priceplanview")!= -1) ||
            (url.indexOf("/webapp/wcs/stores/servlet/o2personaldetailsupdate")!= -1) || 
            (url.indexOf("/webapp/wcs/stores/servlet/o2paymentdetailsupdate")!= -1)) { 
		
		//alert(getUrlVars()["partNumber"]);
		partNumber = getUrlVars()["partNumber"];
		//if (partNumber = $(document).getEscapedUrlParam("partNumber")) {
		//if (partNumber.length > 0 || partNumber != "" || partNumber != null) {
		//alert(partNumber.length);
		if (partNumber != null && partNumber.length > 0) {	
			
			if (window.XMLHttpRequest) {
				xhttp = new XMLHttpRequest();
			} else {
				xhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			xhttp.open("GET","http://www.o2online.ie/o2/css/coremetrics_products.xml",false);
			xhttp.send("");
			xmlDoc=xhttp.responseXML;
			
			// Look up the different elements for this partNumber
			var productNodes = xmlDoc.getElementsByTagName("product");
			
			for(var i=0; i < productNodes.length; i++) {
				var coremetrics_productid = xmlDoc.getElementsByTagName("product")[i].getAttribute("id");
				if ((coremetrics_productid) == (partNumber)) {
					var coremetrics_productName = xmlDoc.getElementsByTagName("productname")[i].childNodes[0].nodeValue; 
					var coremetrics_catId = xmlDoc.getElementsByTagName("cmcategoryid")[i].childNodes[0].nodeValue; 
					cmCreateProductviewTag(partNumber,coremetrics_productName,coremetrics_catId);
					cmlog('in shop with part number', partNumber, coremetrics_productName, coremetrics_catId);
					i = productNodes.length;
				}
			}
		} else {
			//alert("URL" + url);
			cmCreatePageviewTag(url,null);
			cmlog('in shop no part number');
		}
	} else if ((url.indexOf("/webapp/wcs/stores/servlet/o2shopcartview")!= -1) || 
            (url.indexOf("/webapp/wcs/stores/servlet/o2priceplanview")!= -1) || 
            (url.indexOf("http://www.o2online.ie/webapp/wcs/stores/servlet/o2addonview")!=-1) || 
            (url.indexOf("/webapp/wcs/stores/servlet/o2personaldetailsupdate")!= -1) || 
            (url.indexOf("/webapp/wcs/stores/servlet/o2paymentdetailsupdate")!= -1)) { 

            cmCreatePageviewTag(url,null);
		var theNode = "";
		theNode = ($("#shopHeaderPanel #helpPanel a").length == 1) ? $("#shopHeaderPanel #helpPanel a") : "";
		theNode = (theNode == "" && $("#shopHeaderPanel .floatRight a").length == 1) ? $("#shopHeaderPanel .floatRight a") : theNode;
		if (theNode != "")
		{
			partNumberList = unescape(theNode.getEscapedUrlParam("partNumberList")).split(",");
			if (window.XMLHttpRequest) {
				xhttp = new XMLHttpRequest();
			} else {
				xhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			xhttp.open("GET","//www.o2online.ie/o2/css/coremetrics_products.xml",false);
			xhttp.send("");
			xmlDoc=xhttp.responseXML;
		
			// Look up the different elements for this partNumber
			var productNodes = xmlDoc.getElementsByTagName("product");
			//
			for (pl=0;pl<partNumberList.length;pl++)
			{
				partNumber = partNumberList[pl];
				for(var i=0; i < productNodes.length; i++) {
					var coremetrics_productid = xmlDoc.getElementsByTagName("product")[i].getAttribute("id");
					if (partNumber.indexOf(coremetrics_productid)>-1) {
						var coremetrics_productName = xmlDoc.getElementsByTagName("productname")[i].childNodes[0].nodeValue; 
						var coremetrics_catId = xmlDoc.getElementsByTagName("cmcategoryid")[i].childNodes[0].nodeValue;
						cmCreateShopAction5Tag(partNumber,coremetrics_productName,'1','0.00',coremetrics_catId)
						i = productNodes.length;
					}
				}
			}
			cmDisplayShop5s();
		}
	} else if ((url.indexOf("/webapp/wcs/stores/servlet/orderokview")!= -1)) { 
            cmCreatePageviewTag("Shop Order Confirm","2600");
             cmlog(url + ' Shop Order Confirm');
	}
	else if (url.indexOf("/smart-sounds/")!= -1)
	{
		cmCreatePageviewTag(url,null);
		cmlog(url + ' smart sounds');
	}
	else if (url.indexOf("http://www.o2online.ie")!= -1 || url.indexOf("https://www.o2online.ie")!= -1)
	{
		var categoryFound = false;
		if (window.XMLHttpRequest) {
			xhttp = new XMLHttpRequest();
		} else {
			xhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		xhttp.open("GET","http://www.o2online.ie/o2/css/coremetrics_categories.xml",false);
		xhttp.send("");
		xmlDoc=xhttp.responseXML;
		
		
		categoryNodes = xmlDoc.getElementsByTagName("category");
		categorynameNodes = xmlDoc.getElementsByTagName("categoryname");
		categoryurlNodes = xmlDoc.getElementsByTagName("categoryurl");
		
		
		for(var i=0; i < categoryNodes.length; i++) {
			var coremetrics_catid = xmlDoc.getElementsByTagName("category")[i].getAttribute("id");
			var coremetrics_url = xmlDoc.getElementsByTagName("categoryurl")[i].childNodes[0].nodeValue.toLowerCase(); 
			var coremetrics_catname = xmlDoc.getElementsByTagName("categoryname")[i].childNodes[0].nodeValue; 
			
			// Check to see what the category is for this url
			if (url.indexOf(coremetrics_url) > -1) {
				cmCreatePageviewTag(fullUrl,coremetrics_catid);
				cmlog('found cat xml' + coremetrics_catid);
				i = categoryNodes.length;
				categoryFound = true;
			}
		}
		if (url === 'http://www.o2online.ie/o2/' && url === 'http://www.o2online.ie/o2/#' &&
			url === 'https://www.o2online.ie/o2/' && url === 'https://www.o2online.ie/o2/#'
		) {
			cmCreatePageviewTag(fullUrl, 1000);
			categoryFound = true;
			cmlog('home page');
		}
		if (!categoryFound) {
			cmCreatePageviewTag(fullUrl,null);
			cmlog('no category found!' + url);
		}	

	} else if (url.indexOf("//messaging.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"1700");
                cmlog(url + ' messaging');
	} else if (url.indexOf("//community.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"1810");
                cmlog(url + ' community');
	} else if (url.indexOf("//topup.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"1600");
                cmlog(url + ' topup');
	} else if (url.indexOf("//help.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"1820");
                cmlog(url + ' help');
	} else if (url.indexOf("//blueroom.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"2100");
                cmlog(url + ' blueroom');
	} else if (url.indexOf("//webkit.o2online.ie/ideasroom")!= -1) {
		cmCreatePageviewTag(url,"2400");
                cmlog(url + ' ideasroom');
	} else if (url.indexOf("//recycle.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"2500");
                cmlog(url + ' recycle');
	}  else if (url.indexOf("//refer.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"4000");
                cmlog(url + ' refer');
	}  else if (url.indexOf("//bethedifference.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"6000");
                cmlog(url + ' bethedifference');
	}  else if (url.indexOf("//o2money.o2online.ie")!= -1) {
		cmCreatePageviewTag(url,"7000");
                cmlog(url + ' o2money subdomain');
	}  else if (url.indexOf("//www.o2online.ie/o2/o2-money/")!= -1) {
		cmCreatePageviewTag(url,"7000");
                cmlog(url + ' o2money');
	} else if (url.indexOf("//dailytreats.o2online.ie") != -1) {
		cmCreatePageviewTag(url,"2000");
                cmlog(url + ' daily');
	} else {
		cmCreatePageviewTag(url,null);
                cmlog(url + ' in rest of...');
	}
});
