/* START OF FLASH Advanced Tracking Code */
/* Copyright (c) BMW Group Australia.  All rights reserved. */
/* Author: Graham Abrey */
/* $DateTime: 2006/08/18 16:00:00 $ */
	var ArrayAnalyseTrackingString = new Array(); 
	var totalParameters = 0;
	var PassedCheckforMinimumParametersPresent= true;
	var MinimumTrackingParamaterStringLength = 6;
	var ErrorTrackingStatus;
	
	var WebTrendsCompulsaryParameterArray;
	var GoogleAnalyticsCompulsaryParameterArray;
	
// The main default and starting function works out what type of tracking is required
function WebTracking(TrackingType,ErrorTracking,TrackingStringData){
//	alert("TrackingType aaaa = "+TrackingType);
//	alert("ErrorTracking = "+ErrorTracking);
//	alert("TrackingStringData = "+TrackingStringData);	

	if(ErrorTracking == 1){
		ErrorTrackingStatus = 1
	} else {
		ErrorTrackingStatus = 0
	}
	AnalyseTrackingString(TrackingStringData);		// break down the tracking string
	if(TrackingType == "Flash"){
		// ----------------------------------------------------
		// -- Tracking in FLASH
		// ----------------------------------------------------		
		// Parameter 1, 2 and 3 is used for Web Trends
		// Parameter 4, 5 and 6 is used for Google Analytics
		// There is no limit to the amount of parameter that can be sent through the string so the arrangement(position)
		// and number of the parameters can be added. The minimum standard to adhear by is first three is allocated to WebTrends
		// and the remaining to Google Analytics.
		
		// Minimum parameters that need to be populated for WebTrends is Paramater 0 and 1
		// Minimum parameters that need to be populated for Google Analytics is not yet defined
		
		//alert("ErrorTrackingStatus = "+ErrorTrackingStatus);				// Status of Tracking // 0 = Tracking off and 1 = Tracking on
		
		// WebTrends
	
		WebTrendsCompulsaryParameterArray = new Array(0,1);							// Parameter 0 and 1 must be populated
		CheckMinimumParametersPresent(TrackingType,WebTrendsCompulsaryParameterArray)	// Check if Parameters are populated correctly
		
		// Google Analytics
//		var GoogleAnalyticsCompulsaryParameterArray = new Array(3,4)							// Parameter 3 and 4 must be populated
		GoogleAnalyticsCompulsaryParameterArray = new Array();							// Parameter 3 and 4 must be populated		
		CheckMinimumParametersPresent(TrackingType,GoogleAnalyticsCompulsaryParameterArray)		// Check if Parameters are populated correctly
		
		if (PassedCheckforMinimumParametersPresent == true){
			// Execute Flash Tracking method
			FlashTracking();
		} else {
			if(ErrorTrackingStatus == 1){
				alert("Flash Tracking is not currently working working correctly.\n Please check that the correct parameters are been populated");			
			}
		}
		
	}			
}

// Loop through the Tracking String to find all the parameter values.
function AnalyseTrackingString(TrackingStringData){
		var query = TrackingStringData; 
		var pairs = query.split("~~"); 
		
		for (var i=0;i<pairs.length;i++){ 
				var pos = pairs[i].length; 			
				var value = pairs[i].substring(0);
				if (pos >= 0){ 
					ArrayAnalyseTrackingString[i] = value;		
					trackingParametersPresent = true;
				}  else {
					if(ErrorTrackingStatus == 1){
						alert("Tracking error - No parameters are been passed");	
					}
					trackingParametersPresent = false;						
				}
				totalParameters++;
		} 	
}

//Checks if Parameters are populated correctly against the specific tracking type
function CheckMinimumParametersPresent(TrackingType,ParameterPositionArray){
	var lengthArray = ParameterPositionArray.length;
	var ParameterCheckPassed = false;

	if (lengthArray > 0){	// If there is more than 0 parameters, then there is tracking for the respective tracking area (ie. WebTrends or Google Analytics)	
		for (var i=0;i<lengthArray; i++){ 
			if(ParameterPositionArray[i] <= totalParameters){
				if (ArrayAnalyseTrackingString[ParameterPositionArray[i]].length > 0){
					ParameterCheckPassed = true;
				} else {
					ParameterCheckPassed = false;		
				}
				if (ParameterCheckPassed == false){
					PassedCheckforMinimumParametersPresent = false;
					if(ErrorTrackingStatus == 1){
						alert("TRACKING ERROR\nParameter number "+ParameterPositionArray[i]+" is missing a value.\nAdministrator, please ensure that this parameter\n is populated to ensure tracing is working correctly")
					}
				}
			} else {
				if(ErrorTrackingStatus == 1){
					alert("The Parameter number postion "+ParameterPositionArray[i]+" does not exist for "+TrackingType+" tracking.\n Please ensure that parameter position used is equal or less than "+totalParameters+".");	
				}
				PassedCheckforMinimumParametersPresent = false;
			}
		}
	}
}

function encodeUri(ctx){
    var ipString = "";
	if (typeof(ctx) == "object"){
		if (ctx.length){
			for (var i=0; i < 1; i++){
				ctxN  = ctx.item(i);
				if (ctxN.nodeType == 1){
					ipString +=  _wander(ctxN);
				}
				if (ctxN.nodeType == 2){
					ipString += ctxN.nodeValue;
				}
			}
		}else{
			return '';
		}
	}else{
		ipString = ctx;
	}
    return encodeURI(ipString);
}
function   _wander(ctx){
	var retStr = "";
	for (var i=0; i < ctx.childNodes.length; i++){
		ctxN = ctx.childNodes[i];
		switch(ctxN.nodeType){
			case 1:
				retStr +=   _wander(ctxN);
				break;
			case 3:
				retStr += ctxN.nodeValue;
				break;
			default:
				break;
		}
	}
	return retStr;
}

function FlashTracking(){
//		wtFlashTracking();			// Disabled at current <------- Not using WT anymore.
		gaFlashTracking();
}

// WebTrends tracking
function wtFlashTracking(){
	if(((ArrayAnalyseTrackingString[0] == null)||(ArrayAnalyseTrackingString[1] == null)) || ((ArrayAnalyseTrackingString[0] == null)&&(ArrayAnalyseTrackingString[1] == null))){	
	
		if(ErrorTrackingStatus == 1){
			alert("WebTrends does not have sufficient paramaters to use,\n therefore WebTrends has been not sucessfully tracked");
		}	
	
	}else{
	
		var strDCSURI = "/FlashTrack/"+encodeUri(ArrayAnalyseTrackingString[0])+"/"+encodeUri(ArrayAnalyseTrackingString[1])
		var strWTTI = encodeUri(ArrayAnalyseTrackingString[0])+"%20-%20"+encodeUri(ArrayAnalyseTrackingString[1])
		
		if(ErrorTrackingStatus == 1){
			alert("String to Submit to WebTrends (URI Link) = "+ strDCSURI);			
			alert("String to Submit to WebTrends (Name of Link) = "+ strWTTI);	
		}
	
		dcsMultiTrack('DCS.dcsuri',strDCSURI,'WT.ti',strWTTI);
		if(ErrorTrackingStatus == 1){
			alert("WebTrends Tracked Sucessfully");
		}	
	}
}

// Google Anayltics tracking
function gaFlashTracking(){	
	if(((ArrayAnalyseTrackingString[3] == null)||(ArrayAnalyseTrackingString[4] == null)) || ((ArrayAnalyseTrackingString[3] == null)&&(ArrayAnalyseTrackingString[4] == null))){
		
		if(ErrorTrackingStatus == 1){
			alert("Google Analytics does not have sufficient paramaters to use,\n therefore Google Analytics has been not sucessfully tracked");
		}	
		
	}else{
		
		var strGATrackingURI = "/FlashTrack/"+encodeUri(ArrayAnalyseTrackingString[3])+"/"+encodeUri(ArrayAnalyseTrackingString[4])
	//	alert("strGATrackingURI = " + strGATrackingURI);
		if(ErrorTrackingStatus == 1){
			alert("String to Submit to Google Analytics (URI Link) = "+ strGATrackingURI);			
		}
	
		//urchinTracker(strGATrackingURI);
		//HtmlPage.Window.Invoke("CallPageTracker", strGATrackingURI);
		CallPageTracker(strGATrackingURI);
		
		if(ErrorTrackingStatus == 1){
			alert("Google Analytics Tracked Sucessfully");	
		}
	}
}

function jsTrackingAlert(AlertString){
	alert(AlertString);	
}

/* ******************************************************************************************************** */
/* ******************************************************************************************************** */

/* START OF RECORDING CAMPAIGNS (WEBTRENDS AND DATABASE CAMPAIGN) IN COOKIES */
/* Copyright (c) BMW Group Australia.  All rights reserved. */
/* V1.0 */
/* $DateTime: 2006/09/25 14:45:00 $ */

// -----------------------------------------------------------------------------------------------------------
// -- START - Collect Querystring data
// -----------------------------------------------------------------------------------------------------------
QueryString.keys        = new Array(); 
QueryString.values      = new Array(); 


function QueryString(key){ 
        var value = null; 
        for (var i=0;i<QueryString.keys.length;i++){ 
                if (QueryString.keys[i]==key){ 
                        value = QueryString.values[i]; 
                        break; 
                } 
        } 
        return value; 
} 

function QueryString_Parse(){ 
        var query = window.location.search.substring(1); 
        var pairs = query.split("&"); 
        for (var i=0;i<pairs.length;i++){ 
                var pos = pairs[i].indexOf('='); 
                if (pos >= 0){ 
                        var argname = pairs[i].substring(0,pos); 
                        var value = pairs[i].substring(pos+1); 
                        QueryString.keys[QueryString.keys.length] = argname; 
                        QueryString.values[QueryString.values.length] = value;           
                } 
        } 
} 


QueryString_Parse(); 

var strURL;
var pageID = QueryString("PageID"); 
//var currentCampaignIdUCase = QueryString("WT.MC_ID");
//var currentCampaignIdUCaseLCase = QueryString("WT.mc_id");
//var currentCampaignIdLCase = QueryString("wt.mc_id");
//var currentCampaignId;
//var currentDBCampaignId = QueryString("DBC");
//var currentWTLinkType = QueryString("WT.ac");
//var currentCustomerType = QueryString("custtype");
//var currentMysteryShopperDate = QueryString("msdate");
/*
	if(currentCampaignIdUCase == null){
		currentCampaignIdUCase = "";
	}
	if(currentCampaignIdUCaseLCase == null){
		currentCampaignIdUCaseLCase = "";
	}
	if(currentCampaignIdLCase == null){
		currentCampaignIdLCase = "";
	}
	
	if(currentWTLinkType == null){
		currentWTLinkType = "";
	}
	
	if(currentCustomerType == null){
		currentCustomerType = "";
	}	
	
	if((currentCampaignIdUCase!=null)&&(currentCampaignIdUCase.length > 0)){
		currentCampaignId = currentCampaignIdUCase;
	} else {
		if(currentCampaignIdUCaseLCase.length > 0){
			currentCampaignId = currentCampaignIdUCaseLCase;
		} else {
			if(currentCampaignIdLCase.length > 0){
				currentCampaignId = currentCampaignIdLCase;
			}			
		}
	}
	
	if(currentCampaignId == null){
		currentCampaignId = "";
	}
*/	
	if(QueryString("ETS") == 1){
		ErrorTrackingStatus = QueryString("ETS");
	} else {
		if(QueryString("ets") == 1){
			ErrorTrackingStatus = QueryString("ets");
		}		
	}

// -----------------------------------------------------------------------------------------------------------
// -- END - Collect Querystring data
// -----------------------------------------------------------------------------------------------------------


// -----------------------------------------------------------------------------------------------------------
// -- START - 	Create Campaign Cookies from Querystring data
// -----------------------------------------------------------------------------------------------------------
//checks if the cookie has been set
function getCampaignCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
  }
return null
}

//stores the name of the visitor in a cookie variable
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate)
}


//stores the WT AC Link Type of the visitor in a session cookie variable
function setSessionCookie(c_name,value)
{
document.cookie=c_name+ "=" +escape(value);
}

/*
// Stores the WebTrends Campaign ID if present in the Querystring
if (currentCampaignId!=null && currentCampaignId!="")		// If the querystring campaign parameter is populated, then continue
{
//	NewCampaignId = currentCampaignId;						// pass the querystringinto the campaign id holder
	setCookie('bmwcampaign',currentCampaignId,365);				// create/overwright cookie on current website
}

// Stores the Database Campaign ID if present in the Querystring
if (currentDBCampaignId!=null && currentDBCampaignId!="" && currentDBCampaignId.length > 0)		// If the querystring DB campaign parameter is populated, then continue
{
	setCookie('bmwdbcampaign',currentDBCampaignId,365);			// create/overwright cookie on current website	
}

// Stores the WebTrends AC Link Type String if present in the Querystring
if (currentWTLinkType!=null && currentWTLinkType!="")		// If the querystring campaign parameter is populated, then continue
{
	setSessionCookie('bmwaclinktype',currentWTLinkType);				// create/overwright cookie on current website
}

// Stores the Customer Type if present in the Querystring
if (currentCustomerType!=null && currentCustomerType!="")		// If the querystring customer type parameter is populated, then continue
{
	setSessionCookie('bmwcustomertype',currentCustomerType);		// create/overwright cookie on current website
}

// Stores the Customer Type if present in the Querystring
if (currentMysteryShopperDate!=null && currentMysteryShopperDate!="")		// If the querystring customer type parameter is populated, then continue
{
	setSessionCookie('bmwmsdate',currentMysteryShopperDate);		// create/overwright cookie on current website
}
*/
// -----------------------------------------------------------------------------------------------------------
// Check COOKIE Tracking

	if(ErrorTrackingStatus == 1){
		var NewCampaignId=getCampaignCookie('bmwcampaign');		// Check if campaign ID is set.
		if (NewCampaignId!=null)
			{
				alert('***************************************\nCurrent CampaignId String stored as a cookie is\n'+NewCampaignId+'\n***************************************');
			}
			else 
			{
				alert('***************************************\nThere is currently no CampaignId String stored as a cookie is\n***************************************');				
		}	

		var NewDBCampaignId=getCampaignCookie('bmwdbcampaign');					// Check if campaign ID is set.
		if (NewDBCampaignId!=null)
			{
//				alert('NewDBCampaignId is set in cookie - '+NewDBCampaignId);
				alert('***************************************\nCurrent Database CampaignId Number stored as a cookie is\n'+NewDBCampaignId+'\n***************************************');				
			}
			else 
			{
//				alert('NewDBCampaignId is NOT set');
				alert('***************************************\nThere is currently no Database CampaignId Number stored as a cookie\n***************************************');	
		}	
		
		var NewWTLinkType=getCampaignCookie('bmwaclinktype');					// Check if campaign ID is set.
		if (NewWTLinkType!=null)
			{
				alert('***************************************\nCurrent WebTrends AC Link Type stored as a cookie is\n'+NewWTLinkType+'\n***************************************');				
			}
			else 
			{
				alert('***************************************\nThere is currently no WebTrends AC Link Type stored as a cookie\n***************************************');	
		}			
	}	
	
	
// -----------------------------------------------------------------------------------------------------------
// -- END - Create Campaign Cookies from Querystring data
// -----------------------------------------------------------------------------------------------------------

/* ******************************************************************************************************** */
/* ******************************************************************************************************** */