/**
* tracking-ext 
* Client extension methods
* version 1.0
*/


WebTracker.prototype._getSourceID = function(srcIn)
{
	if(srcIn == "" || srcIn==undefined)
		return;
		
	var srcName = srcIn.replace(/\W/g,"").toLowerCase();
	var srcID = "";
	
	var idl = {
		vehiclehub:"VH",
		specialoffer:"SO",
		toyotafinanceadvantage:"TFA",
		toyotafinanceoffer:"TFO",
		all:"ALL",
		interior:"INT",
		exterior:"EXT",
		audio:"AUD",
		wheels:"WHL",
		firstaidkits:"FSA",
		vehicleintegration:"VHINTEG",
		genuinefitstyleperformance:"GFSP",
		builttolast:"BTL",
		nationwideavailability:"NWA"
	};
	
	if(idl[srcName])
		srcID = idl[srcName];
	else
		srcID="OTH";

	return srcID;	
};

WebTracker.prototype._getContentGroup = function()
{
	this.cGroup="";
	this.sGroup="";
	
	if(typeof(window["cGroup"])!="undefined")
	{
		this.cGroup = window["cGroup"];
		if(typeof(window["sGroup"])!="undefined")
		{
			this.sGroup = window["sGroup"];
		}
	}
}

WebTracker.prototype._getVehicleFromString = function(str)
{
	var vl = [
		"Hybrid Camry","(camry.*hybrid|hybrid.*camry)",
		"Landcruiser 70","landcruiser.*70",
		"Landcruiser 200","landcruiser.*200",
		"Aurion","aurion",
		"Avensis","avensis",
		"Camry","camry",
		"Coaster","coaster",
		"Corolla","corolla",
		"FJ Cruiser","fj.*cruiser",
		"Hiace","hiace",
		"Hilux","hilux",
		"Kluger","kluger",
		"Prado","prado",
		"Prius","prius",
		"Rav 4","rav4",
		"Rukus","rukus",
		"Tarago","tarago",
		"Yaris","yaris"
		];

	for(var i=0; i<vl.length;i+=2)
	{
		var re = eval('/' + vl[i+1] + '/i');
		if(str.match(re))
			return vl[i];
	}
	return "";
}

WebTracker.prototype._getSectTypeFromURL = function()
{
	var dl = document.location.pathname.toLowerCase();
	if(dl.indexOf('toyota-finance-advantage')>0)
		return "TFA";
	else if(dl.indexOf('toyota-finance-offer')>0)
		return "TFO";
	else if(dl.indexOf('special-offer')>0)
		return "RT";
	else
		return "";
}

WebTracker.prototype._sessionCurrent = function()
{
	var c1 = "__wtsessa";
	var c2 = "__wtsessb";
	var c3 = "WT_FPC";
	var a = this._getCookie(c1);
	var b = this._getCookie(c2);
	var c = this._getCookie(c3);
	
	if(this._cookieDomain =="")
		this._cookieDomain = document.location.hostname;
	
	var tn = new Date();
	var exp = 1800000;
	var st=0;
	if(a=="" && b=="" && c=="")
		st= -1; // no previous visit, new visitor
	else if(a=="" && b!="")
		st=-2 // browser closed
	else if(b=="")
		st=-3 // new session prior visitor
	else if(a>0 && b>0 && b+exp<tn.getTime())
		st= -3; // new session prior visitor
	var fd = new Date();
	fd.setTime(tn.getTime()+exp);
	
	if(st<0)
	{
		this._setCookie(c1,1,undefined,this._cookieDomain);
		this._setCookie(c2,fd.getTime(),fd,this._cookieDomain);
		return st;
	}
	else
	{
		return 1; // session is current
	}
}

WebTracker.prototype._capitaliseFirst = function(str)
{
	return str.charAt(0).toUpperCase() + str.slice(1);
}

WebTracker.prototype.ToyotaPersonalisation = function(st)
{
	var r = this._sessionCurrent();
	if(r==-1)
	{
		wt.AddToBucket("V","FirstVisit");
	}
	else if(r<-1)
	{
		wt.ChangeBucket("V","FirstVisit","PriorVisit");
	}
	// else session is current - do nothing
	
	var myT = this;
	
	// set up the event handler
	this._eventParams["personalisationstate"] = new EventObj(
		"always",
		function() { 
			var evObj = arguments[0]; 
			var dl = document.location.pathname;
			var st = evObj.State.toLowerCase();
			var ub ="",ubn="",ubd = "",tp=0, sn=0, pcConv="";
			// entry state logic
			var dl = document.location.pathname.toLowerCase();

			if(dl=="/special-offers/entry" || dl.indexOf('/offers/entry')>0)
			{
				wt.AddToBucket("S","SpecialOffersEntry");
				pcConv="Entered Not Converted";
			}
			
			if(st == "anon" && myT.InBucket("V","FirstVisit"))
			{
				if(! myT.InBucket("S","S1Sent"))
				{
					ubn=ub="Non Personalised";
					ubd = "First Visit - No Input"; // Scenario 1
					sn=1;
					myT.AddToBucket("S","S1Sent")
				}
			}
			else if(st == "update" && myT.InBucket("V","FirstVisit"))
			{
				ub="Non Personalised";
				ubn="Postcode Entry";
				ubd = "First Visit - Postcode Input"; // Scenario 2
				tp=1; // record the url
				sn=2;
				myT.AddToBucket("S","PostcodeInput");
				myT.AddToBucket("V","Personalised");
				if(wt.InBucket("S","SpecialOffersEntry"))
				{
					wt.ChangeBucket("S","SpecialOffersEntry","SpecialOffersEntryConv");
					pcConv="Entered and Converted";
				}
			}
			else if(st == "anon" && myT.InBucket("V","PriorVisit"))
			{
				if(! myT.InBucket("S","S3Sent"))
				{
					ubn=ub="Non Personalised";
					ubd = "Prior Visit - No Input"; // Scenario 3
					sn=3;
					myT.AddToBucket("S","S3Sent")
				}
			}
			else if(st == "anon" && myT.InBucket("V","PriorVisit") && ! myT.InBucket("V","Personalised"))
			{
				if(! myT.InBucket("S","S4Sent"))
				{
					ubn=ub="Non Personalised";
					ubd = "Prior Visit - No Prior Input - Postcode Input"; // Scenario 4
					myT.AddToBucket("S","PostcodeInput");
					myT.AddToBucket("V","Personalised");
					sn=4;
					tp=1; // record the url
					myT.AddToBucket("S","S4Sent");
					
					if(wt.InBucket("S","SpecialOffersEntry"))
					{
						wt.ChangeBucket("S","SpecialOffersEntry","SpecialOffersEntryConv");
						pcConv="Entered and Converted";
					}
				}
			}
			else if(st == "known" && myT.InBucket("V","PriorVisit") && myT.InBucket("V","Personalised"))
			{
				if(! myT.InBucket("S","S5Sent"))
				{
					ubn=ub="Personalised";
					ubd = "Prior Visit - Personalised Entry"; // Scenario 5
					sn=5;
					myT.ChangeBucket("S","PostcodeInput","PersonalisedEntry");
					myT.AddToBucket("S","S5Sent")
				}
			}
			// end entry state logic
			
			if(typeof(console) != "undefined" && typeof(window['debug']) !="undefined")
			{
				console.log("V: First Visit: " + myT.InBucket("V","FirstVisit"));
				console.log("V: Prior Visit: " + myT.InBucket("V","PriorVisit"));
				console.log("V: Personalised: " + myT.InBucket("V","Personalised"));
				console.log("S: Postcode Input: " + myT.InBucket("S","PostcodeInput"));
				console.log("S: Personalised Entry: " + myT.InBucket("S","PersonalisedEntry"));
				console.log("Recording URL : " + tp);
				console.log("Special Offers Postcode Conversion : " + pcConv);
			}
			
			try{
				$('.module').each(function(i,n) {
					tracking.webtrends.link.modulelink(n);
				});
			}catch(err){}
			if(ub=="" && pcConv=="") return;
			
  		myT._trackParams = {
  			webtrends:{
	  			WT:{
	  				seg_1:ub,
	  				dl:30
	  			},
	  			DCSext: {
	  				ODEntryType:ubn,
	  				PersonalisationState:ubd
	  			},
	  			DCS:{dcsuri:dl + "/personalisation"}
	  		},
  			googleanalytics:{
  				_trackEvent:[
  					"Personalisation",
  					ubd,
  					dl
  				]
  			}
  		};
  		
  		if(tp==1)
  			myT._trackParams.webtrends.DCSext["PersonalisationURL"]=dl;
  		
  		if(sn>0)
  			myT._trackParams.webtrends.DCSext["PersonalisationS" + sn]=1;
  			
  		if(pcConv!="")
  			myT._trackParams.webtrends.DCSext["SpecOffersConv"]=pcConv;
  		
  		
			if(typeof(evObj) != "undefined") { myT._sendData(); }
		}
	);
}


// initialise the module
$(document).ready(function() 
	{
		if(typeof(wt) != "undefined")
			wt._getContentGroup();
			
		wt.SetBucketName("V","V1","FirstVisit");
		wt.SetBucketName("V","V2","PriorVisit");
		wt.SetBucketName("V","V3","Personalised");
		wt.SetBucketName("S","S1","PostcodeInput");
		wt.SetBucketName("S","S2","PersonalisedEntry");
		wt.SetBucketName("S","S3","S1Sent");
		wt.SetBucketName("S","S4","S3Sent");
		wt.SetBucketName("S","S5","S4Sent");
		wt.SetBucketName("S","S6","S5Sent");
		wt.SetBucketName("S","S7","SpecialOffersEntry");
		wt.SetBucketName("S","S8","SpecialOffersEntryConv");
		
		// set up the personalisation
		wt.ToyotaPersonalisation();
		
		wt._log("Personalisation State: " + wt.InBucket("V","Personalised"));
	}
);
