
//-- Initialise constant for invisable graphic location
var GRAPHIC_LOCATION = "/images/__include.gif?TagInfo=";

//-- Initialise constant for Domain 
var COOKIE_DOMAIN = "www.jobcentreplus.gov.uk";
var COOKIE_NAME = "JCP_Cookie";

// Create object to hold browser values
// Initialise to 'false' as we may not be able to retrieve valid information
// about all of them.
var BRWSR_VALUES = new Object();
BRWSR_VALUES.lcn = ""; // Document location
BRWSR_VALUES.tsm = ""; // Timestamp
BRWSR_VALUES.jsc = ""; // Javascript enabled
BRWSR_VALUES.ref = ""; // Document referrer
BRWSR_VALUES.scr = ""; // User's screen resolution
BRWSR_VALUES.col = ""; // User's color depth
BRWSR_VALUES.lan = ""; // Browser language
BRWSR_VALUES.tzn = ""; // User's timezone
BRWSR_VALUES.jav = ""; // Browser's Java support
BRWSR_VALUES.app = ""; // Browser version
BRWSR_VALUES.sys = ""; // Operating System version
BRWSR_VALUES.vis = ""; // Cookie exists
BRWSR_VALUES.dom = ""; // Cookie Domain
BRWSR_VALUES.uid = ""; // Cookie user identifier(GUID)
BRWSR_VALUES.eng = ""; // Search Engine
BRWSR_VALUES.qry = ""; // Query parameter/search keyword

var strQuery = "";
var strDomain = "";

//-- Initialise constants for Search Refrerrers and Keywords
function SearchEngine(searchmatch, queryparam, friendlyname)
{
	this.searchmatch = searchmatch;
	this.queryparam = queryparam;
	this.friendlyname = friendlyname;
}

var SearchEngines = new Array(18);

SearchEngines[0] = new SearchEngine(".google", "q=", "Google");
SearchEngines[1] = new SearchEngine(".yahoo", "p=", "Yahoo");
SearchEngines[2] = new SearchEngine(".msn", "q=", "MSN");
SearchEngines[3] = new SearchEngine(".aol", "query=", "AOL");
SearchEngines[4] = new SearchEngine(".lycos", "query=", "Lycos");
SearchEngines[5] = new SearchEngine(".ask", "q=", "Ask Jeeves");
SearchEngines[6] = new SearchEngine(".altavista", "q=", "Altavista");
SearchEngines[7] = new SearchEngine(".netscape", "query=", "Netscape");
SearchEngines[8] = new SearchEngine(".cnn", "query=", "CNN");
SearchEngines[9] = new SearchEngine(".looksmart", "key=", "LookSmart");
SearchEngines[10] = new SearchEngine(".about", "terms=", "About");
SearchEngines[11] = new SearchEngine(".excite", "qkq=", "Excite");
SearchEngines[12] = new SearchEngine(".mamma", "query=", "Mamma");
SearchEngines[13] = new SearchEngine(".alltheweb", "q=", "AlltheWeb");
SearchEngines[14] = new SearchEngine(".gigablast", "q=", "Giga Blast");
SearchEngines[15] = new SearchEngine(".voila", "rdata=", "Voila");
SearchEngines[16] = new SearchEngine(".virgilio", "qs=", "Virgilio");
SearchEngines[17] = new SearchEngine(".teoma", "q=", "Teoma");

//provides a store for the browser properties
function setPropertyValue(sProp,sPropValue)
{
	BRWSR_VALUES[sProp] = sPropValue;
}


function setTimestamp()
{
	var varDate=new Date();

	return(varDate.getTime()+"."+Math.floor(Math.random()* 1000));
}


function findCookie(strName)
{
		var fChar;
		var lChar;
		var cookie_find = document.cookie;

		fChar = cookie_find.indexOf(strName);
		
		// cookie exists
		if(fChar != -1)
		{
			fChar += strName.length + 1;
	
			// skip 'name' and '='
			lChar = cookie_find.indexOf(';', fChar);
	
			// Find the end of the value string (i.e. the next ';').
			if(lChar == -1) 
				lChar = cookie_find.length;
	
			var strContent = unescape(cookie_find.substring(fChar, lChar));
		
			var arrItems = strContent.split(";");
			var arrDomainValue = arrItems[0].split("=");
			var arrGUIDValue = arrItems[1].split("=");
				
			//store content
			setPropertyValue("dom", arrDomainValue[1]);		
			setPropertyValue("uid", arrGUIDValue[1]);	
			
			return true;
		} 
		else
		{
			return false;
		}
}



function GenerateGUID()
{
	var guid = "{"; 
	for (var i = 1; i <= 32; i++) 
	{ 
		var n = Math.floor(Math.random() * 16.0).toString(16); 
		guid += n; 
	
		if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) 
			guid += "-"; 
	} 
	guid += "}"; 
	
	return guid;
}



function ProcessReferrer(strReferrer)
{	
	var arrKeywords;
	var strQuery;
	var iIndex;
	var iIndexDomain;
		
	//Find query indicator
	strReferrer = unescape(strReferrer);
		
	//Retrieve query parameters	
	
	var strQryInd = FindQueryString(strReferrer.toLowerCase());
	
	if(strQryInd != "")
	{
		var tempChar = strReferrer.indexOf(strQryInd);
	
		if(tempChar != -1)
		{
			strQuery = strReferrer.substring(tempChar + strQryInd.toString().length);
			iIndex = strQuery.indexOf("&");
		
			if(iIndex != -1)
				strQuery = strQuery.substring(0,iIndex);
				
			//Find keywords	
			arrKeywords = strQuery.split("+");
			
			strQuery = "";
			for(var i=0; i < arrKeywords.length; i++)
				strQuery += arrKeywords[i] + " "; 

			strQuery = strQuery.substring(0, strQuery.length -1);
			
			//set domain and keywords properties
			setPropertyValue("eng", strDomain);	
			setPropertyValue("qry", strQuery);	
		}
	}	
	
	
}

function FindQueryString(strRefName)
{
	var varQueryParam = "";
	
	for (i = 0; i < SearchEngines.length; i++)
	{
		if(strRefName.indexOf(SearchEngines[i].searchmatch) != -1)
		{
			strDomain = SearchEngines[i].friendlyname;
			varQueryParam = SearchEngines[i].queryparam;
		}
	}	
	
	return varQueryParam;	
}

//--------------------------------------------
//LCN - Document location
//--------------------------------------------
		
	setPropertyValue("lcn",document.location.pathname.toString());	
	
//--------------------------------------------
//TSM - Timestamp
//--------------------------------------------
	
	setPropertyValue("tsm",setTimestamp());
	
	
//-----------------------------------------
//JSC - Javascript enabled
//-----------------------------------------

    setPropertyValue("jsc","1");


//--------------------------------------
//LAN - Browser Language
//--------------------------------------

	//Netscape
	if(navigator.language)
		strValue=navigator.language;
	//Internet explorer
	else if(navigator.userLanguage)
		strValue=navigator.userLanguage;
	//Other
	else 
		strValue='';

	setPropertyValue("lan", strValue);
	

//------------------------------------
//JAV - Java supported
//------------------------------------

	if(window.navigator.javaEnabled())
			vInt="1";
		else 
			vInt="0";

	setPropertyValue("jav", vInt);


//-------------------------------------------
// TZN - Timezone
//-------------------------------------------

	var strTimeSetting;
	var dDate=new Date();
	var intOffset=dDate.getTimezoneOffset();
	var intTime;
	
	strTimeSetting="GMT";
	
	if(intOffset!=1)
	{
	
		if(intOffset != -60)
		{
			if(intOffset > 0)
				strTimeSetting+="%-";
			else 
				strTimeSetting+="%+";
		}
		else
		{
			intOffset="";
		}
		
		intOffset=Math.abs(intOffset);
		intTime=Math.floor(intOffset/60);
		intOffset-=intTime* 60;
		
		if(intTime < 10)
			strTimeSetting+="0";
			
		strTimeSetting+=intTime+":";
		
		if(intOffset < 10)
			strTimeSetting+="0";
		
		strTimeSetting+=intOffset;
	}
	
	//store timezone information
	setPropertyValue("tzn",strTimeSetting);



//-------------------------------------------------------------------
// SCR - Screen resolution details for NN4 & IE4 and above only??
//-------------------------------------------------------------------

	if(self.screen)
	{
		//store screen resolution 
		setPropertyValue("scr",self.screen.width+"x"+self.screen.height);
				
		//store colour depth 
		setPropertyValue("col",self.screen.colorDepth);
	}

//--------------------------------------------------------------------
// REF - Document referrer
//--------------------------------------------------------------------

	var vReferrerName;
	
	//Check to see if frames are being used
	if(top&&top.document)
		vReferrerName=top.document.referrer;
	else
		vReferrerName=document.referrer;
	
	//Add referrer name to store
	if (vReferrerName != '')
		setPropertyValue("ref",vReferrerName);
	
	ProcessReferrer(vReferrerName);
	
	
	
//--------------------------------------------------------------------
// APP - Browser version
//--------------------------------------------------------------------
	
	var detect = navigator.userAgent.toLowerCase();
	var OS,browser,vers,total,thestring;

	if (parseValue('konqueror'))
	{
		browser = "Konqueror";
		OS = "Linux";
	}
	else if (parseValue('safari')) browser = "Safari"
	else if (parseValue('firefox')) browser = "FireFox"
	else if (parseValue('netscape')) browser = "Netscape"
	else if (parseValue('omniweb')) browser = "OmniWeb"
	else if (parseValue('opera')) browser = "Opera"
	else if (parseValue('webtv')) browser = "WebTV";
	else if (parseValue('icab')) browser = "iCab"
	else if (parseValue('msie')) browser = "Internet Explorer"
	else if (!parseValue('compatible'))
	{
		browser = "Netscape Navigator"
		version = detect.charAt(8);
	}
	else browser = "An unknown browser";
	
	if (!vers) vers = detect.charAt(place + thestring.length);
	
	setPropertyValue("app", browser + " " + vers);

	var strPlatform;
	var arrDetails;
	var iPos;

	if (!OS)
	{
		if (parseValue('linux')) OS = "Linux";
		else if (parseValue('x11')) OS = "Unix";
		else if (parseValue('mac')) OS = "Mac";
		else if (parseValue('win'))
		{
			OS = "Windows";
		
			iPos = detect.indexOf('windows');
			strPlatform = detect.substring(iPos);
			arrDetails = strPlatform.split(";");
			OS = arrDetails[0];
		}
		else OS = "an unknown operating system";
	}
	
	setPropertyValue("sys", OS);

	function parseValue(string)
	{
		place = detect.indexOf(string) + 1;
		thestring = string;
		return place;
	}


//--------------------------------------------------------------------
// VIS - Visitor cookie exists
//--------------------------------------------------------------------

	var Visitor = 0;
	var JCPCookie;
	var strGUID ="";
	var bFound = false;
	

	if(document.cookie.length > 0)
	{
		bFound = findCookie(COOKIE_NAME)
		
		
	}
	
	if(!bFound)
	{
		//Create cookie as doesn't exist 
		strGUID = GenerateGUID();
		JCPCookie = "Domain=" + COOKIE_DOMAIN + ";ID=" + strGUID;
		
		//Duration of expiry (years)
		var duration = 35;
		var expireDate = new Date ();
		var expiryOffset = 35 / 1;
  
  
	    expireDate.setYear(expireDate.getFullYear()+expiryOffset);
	    document.cookie = escape(COOKIE_NAME) + "=" + escape(JCPCookie) + "; expires=" + expireDate.toGMTString() + "; path=/";
	

		setPropertyValue("vis", 0);
	}
	else
	{
		setPropertyValue("vis", 1);
	}


	

//Loop through browser values 
for (property in BRWSR_VALUES)
{
	strQuery += property.toString() + "=";
	strQuery += BRWSR_VALUES[property].toString() + ";";
}

//Store as querystring.
var strSrc = GRAPHIC_LOCATION + strQuery;

//Preload image
preload_image = new Image(1,1); 
preload_image.src = strSrc;
    

