/*
	the Orange shop
	AKQA Analyst Tracking

	OO functions
		GUIDItemOO
		GUIDStoreOO
		TrackingOO

	functions
		oraEscape(Value)
		getReferrer()
		getReferrerHost()
		getKeywords()

	overloading functions
		aaBuildClicker(sCategory, sLinkText, sLinkURL)
		ora_doc_onload()

	variables
		GUID_ITEM			(GUIDItemOO)
		GUIDStore			(GUIDStoreOO)
		Tracking			(TrackingOO)

	Developed by Stephen Brown, SDB, stephen.brown@akqa.com
	1st December 2004
*/
//if (typeof AACreateAUID == "undefined") {
	//document.write('<SCRIPT TYPE="text/javascript" SRC="'+location.protocol+'//adserver.akqa.net/javascript/aainsertion.2.00.js"></SCRIPT>');
//}

/** GUID Item OO **/
function GUIDItemOO() {
	var GUID = new Array();
	this.GUID = GUID;

	var GUID_LIVE = 0;
	this.GUID_LIVE = GUID_LIVE;
	var GUID_DEV = 1;
	this.GUID_DEV = GUID_DEV;

	function setLive(strGUID) {
		this.GUID[this.GUID_LIVE] = strGUID;
	}
	this.setLive = setLive;

	function setDev(strGUID) {
		this.GUID[this.GUID_DEV] = strGUID;
	}
	this.setDev = setDev;

	return this;
}
var GUID_ITEM = new GUIDItemOO();

/** GUID Store OO **/
function GUIDStoreOO() {
	var Impressions = new Array();
	this.Impressions = Impressions;

	var Clicks = new Array();
	this.Clicks = Clicks;

	var useGUID;
	this.useGUID = useGUID;

	// Usage: setState('live') or setState('dev')
	function setState(GUIDType) {
		if (GUIDType == 'live') {
			this.useGUID = GUID_ITEM.GUID_LIVE;
		} else if (GUIDType == 'dev') {
			this.useGUID = GUID_ITEM.GUID_DEV;
		}
	}
	this.setState = setState;

	// Usage: addImpressionGUID('NAME', 'ABCD1234', '1234ABCD');
	// Usage: addImpressionGUID('NAME', 'ABCD1234', '');
	function addImpressionGUID(CampaignName, GUIDLive, GUIDDev) {
		if (!CampaignName || CampaignName == '') {
			alert('Campaign Name is missing or blank for Campaign: '+CampaignName);
		} else {
			if (!GUIDLive) {
				alert('GUID Live is missing for Campaign: '+CampaignName);
			} else {
				var GUIDItem = new GUIDItemOO();
				GUIDItem.setLive(GUIDLive);
				GUIDItem.setDev(GUIDDev);
				this.Impressions[CampaignName] = GUIDItem;
			}
		}
	}
	this.addImpressionGUID = addImpressionGUID;

	// Usage: addClickGUID('NAME', 'EFGH5678', '5678EFGH');
	// Usage: addClickGUID('NAME', 'EFGH5678', '');
	function addClickGUID(CampaignName, GUIDLive, GUIDDev) {
		if (!CampaignName || CampaignName == '') {
			alert('Campaign Name is missing or blank for Campaign: '+CampaignName);
		} else {
			if (!GUIDLive) {
				alert('GUID Live is missing for Campaign: '+CampaignName);
			} else {
				var GUIDItem = new GUIDItemOO();
				GUIDItem.setLive(GUIDLive);
				GUIDItem.setDev(GUIDLive);
				this.Clicks[CampaignName] = GUIDItem;
			}
		}
	}
	this.addClickGUID = addClickGUID;

	// Usage: addGUIDs('NAME', 'ABCD1234', '1234ABCD', 'EFGH5678', '5678EFGH');
	// Usage: addGUIDs('NAME', 'ABCD1234', '', 'EFGH5678', '');
	// Usage: addGUIDs('NAME', 'ABCD1234', '', '', '');
	// Usage: addGUIDs('NAME', '', '', 'EFGH5678', '');
	function addGUIDs(CampaignName, ImpressionGUIDLive, ImpressionGUIDDev, ClickGUIDLive, ClickGUIDDev) {
		if (!CampaignName || CampaignName == '') {
			alert('Campaign Name is missing or blank for Campaign: '+CampaignName);
		} else {
			if (!ImpressionGUIDLive) {
				alert('Impression GUID Live is missing for Campaign: '+CampaignName);
			} else {
				this.addImpressionGUID(CampaignName, ImpressionGUIDLive, ImpressionGUIDDev);
			}

			if (!ClickGUIDLive) {
				alert('Click GUID Live is missing for Campaign: '+CampaignName);
			} else {
				this.addClickGUID(CampaignName, ClickGUIDLive, ClickGUIDDev);
			}
		}
	}
	this.addGUIDs = addGUIDs;

	function getImpressionGUID(CampaignName) {
		var GUID = this.Impressions[CampaignName];
		if (GUID.GUID[this.useGUID] != '') {
			return GUID.GUID[this.useGUID];
		}
		// Always use the LIVE GUID if the current GUID is blank
		return GUID.GUID[GUID_ITEM.GUID_LIVE];
	}
	this.getImpressionGUID = getImpressionGUID;

	function getClickGUID(CampaignName) {
		var GUID = this.Clicks[CampaignName];
		if (GUID.GUID[this.useGUID] != '') {
			return GUID.GUID[this.useGUID];
		}
		// Always use the LIVE GUID if the current GUID is blank
		return GUID.GUID[GUID_ITEM.GUID_LIVE];
	}
	this.getClickGUID = getClickGUID;

	return this;
}

/** Tracking OO **/
function TrackingOO() {
	var Impressions = new Array();
	this.Impressions = Impressions;

	var Clicks = new Array();
	this.Clicks = Clicks;

	var params = new Array();
	this.params = params;

	var aParams = new Array();
	this.aParams = aParams;

	// Adds an Impression Campaign Name to the Array
	function addImpression(CampaignName, includeAdditional) {
		this.Impressions[CampaignName] = includeAdditional;
	}
	this.addImpression = addImpression;

	// Clears all Clicks from the Campaign list
	function clearClicks() {
		this.Clicks = new Array();
	}
	this.clearClicks = clearClicks;

	// Adds a Click Campaign Name to the Array
	function addClick(CampaignName) {
		this.Clicks[CampaignName] = true;
	}
	this.addClick = addClick;

	// Adds a Click and Impression Campaign Name to the Arrays
	function addCampaign(CampaignName, includeAdditional) {
		this.addImpression(CampaignName, includeAdditional);
		this.addClick(CampaignName);
	}
	this.addCampaign = addCampaign;

	// Adds an Additional Tracking Parameter
	function addParam(name, value) {
		if (value && value != null && value != '') {
			this.params[name] = value;
		}
	}
	this.addParam = addParam;

	function addAdditionalParam(name, value) {
		if (value && value != null && value != '') {
			this.aParams[name] = value;
		}
	}
	this.addAdditionalParam = addAdditionalParam;

	// Reset Tracking Parameters
	function resetAdditionalParams() {
		this.aParams = new Array();
	}
	this.resetAdditionalParams = resetAdditionalParams;

	// Creates all the DEFAULT parameters
	function setupDefaultParams() {
		this.addParam('Host', document.location.host);
		this.addParam('Brand', 'OrangeShop');
		this.addParam('Referrer', getReferrer());
		this.addParam('D9', getReferrerHost());
		this.addParam('Folder', document.location.pathname);
		this.addParam('D4', getSection());
		this.addParam('Section', getSubSection());
		this.addParam('Name', getPage(this.params['Page']));
		this.addParam('Filename', getSubPage(this.params['SubPage']));
	}
	this.setupDefaultParams = setupDefaultParams;

	// Works out the Payment route type, via a given orderTypeId
	function addPaymentType(orderTypeId) {
		var orderTypes = new Array();
		orderTypes[parseInt('00000000',2)] = new Array('D7','Empty');
		orderTypes[parseInt('00000001',2)] = new Array('D6','Free');
		orderTypes[parseInt('00000010',2)] = new Array('D5','Accessories');
		orderTypes[parseInt('00000100',2)] = new Array('D4','ValueAddedProducts');
		orderTypes[parseInt('00001000',2)] = new Array('D3','PayAsYouGo');
		orderTypes[parseInt('00010000',2)] = new Array('D2','Contract');
		orderTypes[parseInt('00100000',2)] = new Array('D1','MultipleHandsets');
		orderTypes[parseInt('01000000',2)] = new Array('D8','SmallBusiness');

		for (var i=0; i<orderTypes.length; i++) {
			if (orderTypes[i]) {
				if (i & orderTypeId || (orderTypeId == 0 && i == 0)) {
					this.addParam(orderTypes[i][0], orderTypes[i][1]);
				}
			}
		}
	}
	this.addPaymentType = addPaymentType;

	function setHandsetBrand(strBrand) {
		this.addParam('D2', strBrand);
	}
	this.setHandsetBrand = setHandsetBrand;

	function setHandsetName(strName) {
		this.addParam('Product', strName);
	}
	this.setHandsetName = setHandsetName;

	function setSubSection(strSubSection) {
		this.addParam('Section', strSubSection);
	}
	this.setSubSection = setSubSection;

	function setPage(strPage) {
		this.addParam('Name', strPage);
	}
	this.setPage = setPage;

	function setSubPage(strPage) {
		this.addParam('Filename', strPage);
	}
	this.setSubPage = setSubPage;

	// Retrieves a URL String from the Additional Tracking Parameters
	function getParams(includeAdditional) {
		var retval = '';

		// DEFAULT PARAMS
		var retArray = this.params;

		// ADDITIONAL PARAMS
		if (includeAdditional) {
			// COPYING PARAMS INTO ARRAY
			for (props in this.aParams) {
				retArray[props] = this.aParams[props];
			}
		}

		// ALL REQUIRED PARAMS
		for (paramName in sortArray(retArray)) {
			retval += '&';
			retval += paramName;
			retval += '=';
			retval += oraEscape(retArray[paramName]);
		}

		return retval;
	}
	this.getParams = getParams;

	// Returns the relative TYPEs http URL
	function getPath(type) {
		var retval = document.location.protocol;
		retval += '//adserver.akqa.net/';
		retval += type;
		retval += '.dll?';
		return retval;
	}
	this.getPath = getPath;

	// Usage (Impressions):	track('http://adserver.akqa.net/ad.dll?', 'ABCD1234');
	// Usage (Clicks):		track('http://adserver.akqa.net/redirect.dll?', 'EFGH5678', true);
	function track(sURL, sGUID, includeAdditional, isClick) {
/*		sURL += sGUID + this.getParams(includeAdditional);
		if (isClick) {
			// Add the Random ID to each Click
			sURL += '&RandomID=' + AACreateAUID();
		}
		var imgObj = standaloneTracker(sURL);
		return imgObj; */
		return null;
	}
	this.track = track;

	// Creates an Impression tag for EACH campaign in the Array
	function start() {
		for (CampaignName in this.Impressions) {
			var sGUID = GUIDStore.getImpressionGUID(CampaignName);
			var sURL = this.getPath('ad');
			includeAdditional = this.Impressions[CampaignName];
			var retval = this.track(sURL, sGUID, includeAdditional);
			if (this.debug) {
				alert('Analyst URL: '+sURL+'\n\nCampaign Name: '+CampaignName+'\n\nGUID: '+sGUID+'\n\nIncluding Additional Parameters: '+(includeAdditional?true:false)+'\n\nParameters\n======='+this.getParams(includeAdditional).split('&').join('\n'));
			}
			addToLog(CampaignName, sURL, retval, sGUID, this.getParams(includeAdditional));
		}
	}
	this.start = start;

	// Single Unique Impression
	function uniqueImpression(sDescription) {
		var CampaignName = 'UNIQUE_OFFERS';
		var sGUID = GUIDStore.getImpressionGUID(CampaignName);
		var sURL = this.getPath('ad');
		var retval = this.track(sURL, sGUID, true);
		if (this.debug) {
			alert('Analyst URL: '+sURL+'\n\nCampaign Name: '+CampaignName+'\n\nGUID: '+sGUID+'\n\nIncluding Additional Parameters: YES\n\nParameters\n======='+this.getParams(true).split('&').join('\n'));
		}
		addToLog(CampaignName, sURL, retval, sGUID, this.getParams(true));
	}
	this.uniqueImpression = uniqueImpression;

	// Creates a Click tag for EACH campaign in the Array
	function logClick(sTrackingType, sDescription, sLinkURL, sCategory, sLinkPosition) {
		this.resetAdditionalParams();

		this.addAdditionalParam("Description", oraEscape(sDescription));
		this.addAdditionalParam("D6", oraEscape(sLinkURL));
		this.addAdditionalParam("D8", sTrackingType);
		this.addAdditionalParam("D1", sLinkPosition);
		this.addAdditionalParam("Category", sCategory);

		for (CampaignName in this.Clicks) {
			var sGUID = GUIDStore.getClickGUID(CampaignName);
			var sURL = this.getPath('redirect');
			var imgObj = this.track(sURL, sGUID, true, true);
			if (this.debug) {
				alert('Analyst URL: '+sURL+'\n\nCampaign Name: '+CampaignName+'\n\nGUID: '+sGUID+'\n\nIncluding Additional Parameters: ALWAYS\n\nParameters\n======='+this.getParams(true).split('&').join('\n'));
			}
			addToLog(CampaignName, sURL, imgObj, sGUID, this.getParams(true));
		}
	}
	this.logClick = logClick;

	// Single Unique Click
	function uniqueClick(sTrackingType, sDescription, sLinkURL, sCategory, sLinkPosition) {
		this.resetAdditionalParams();

		this.addAdditionalParam("Description", oraEscape(sDescription));
		this.addAdditionalParam("D6", oraEscape(sLinkURL));
		this.addAdditionalParam("D8", sTrackingType);
		this.addAdditionalParam("D1", sLinkPosition);
		this.addAdditionalParam("Category", sCategory);

		var CampaignName = 'UNIQUE_OFFERS';
		var sGUID = GUIDStore.getClickGUID(CampaignName);
		var sURL = this.getPath('redirect');
		var imgObj = this.track(sURL, sGUID, true, true);
		if (this.debug) {
			alert('Analyst URL: '+sURL+'\n\nCampaign Name: '+CampaignName+'\n\nGUID: '+sGUID+'\n\nIncluding Additional Parameters: YES\n\nParameters\n======='+this.getParams(true).split('&').join('\n'));
		}
		addToLog(CampaignName, sURL, imgObj, sGUID, this.getParams(true));
	}
	this.uniqueClick = uniqueClick;

	/* Debugging */
	var debug = false;
	this.debug = debug;

	function AKQADebug() {
		this.debug = !this.debug;
//		alert (this.debug?'Debug Enabled':'Debug Disabled');
	}
	this.AKQADebug = AKQADebug;

	return this;
}

/** Standalone Tracking Functions **/
function standaloneTracker(sURL) {
	var starttime = 0;
	var endtime = 300000;
	var img = new Image(1,1);
	img.src = sURL;
	return img;
}

// Individual Log Item
function analystLog(strCampaignName, strURL, oImage, strGUID, arrParams) {
	var name = strCampaignName;
	var url = strURL;
	var imgobj = oImage;
	var GUID = strGUID;
	var params = arrParams;

	this.name = name;
	this.url = url;
	this.imgobj = imgobj;
	this.GUID = GUID;
	this.params = params;

	return this;
}

// Analyst Log Array
var trackingLog = new Array();
function addToLog(CampaignName, sURL, imgObj, strGUID, arrParams) {
	trackingLog[trackingLog.length] = new analystLog(CampaignName, sURL, imgObj, strGUID, arrParams);
}

// Displays the Current pages log
function showLog() {
	var out = '';
	out += '<a style="text-decoration:none;font-weight:bold;color:#ff6600;font-family:Helvetica;font-size:70%;" href="javascript:history.back();">back</a><br />';
	out += '<pre>\n';
	out += '<b>CAMPAIGN NAME          | ';
	out += 'SUCCESSFULL | ';
	out += 'URL</b>';
	out += '\n';
	for (var i=0; i<trackingLog.length; i++) {
		var logitem = trackingLog[i];
		out += getStr(logitem.name, 23, true);
		out += getStr(logitem.imgobj.complete, 12, true);
		out += getStr(logitem.url + logitem.GUID + logitem.params);
	}
	out += '</pre>';
	out += '<a style="text-decoration:none;font-weight:bold;color:#ff6600;font-family:Helvetica;font-size:70%;" href="javascript:history.back();">back</a><br />';
	document.write(out);
}

// Returns a set length string with | or \n
function getStr(strItem, strLength, showPipe) {
	var retval = strItem;
	for (var i=strItem.toString().length; i<strLength; i++) {
		retval += ' ';
	}
	retval += (showPipe) ? '| ' : '\n';
	return retval;
}


/** Other Required (Shared) functions **/
function sortArray(myArray) {
	var keyList = new Array();
	var retval = new Array();
	// Creating Key List
	for (props in myArray) {
		keyList[keyList.length] = props;
	}
	// Copying Values to Returnable Array in Key Order
	for (props in keyList.sort()) {
		var key = keyList[props];
		retval[key] = myArray[key];
	}
	return retval;
}

function oraEscape(value) {
	var foundProtocol = false;
	// Stripping Location Protocol (http/https/file) prior to Search for Javascript
	var protocol = location.protocol.substring(0,location.protocol.length-1);
	if (value.indexOf(protocol) != -1) {
		var end = value.indexOf("//");
		end = (end == -1) ? value.indexOf(":") : end;
		end = (end == -1) ? 0 : end+2;

		value = value.substring(end);
		foundProtocol = true;
	}
	// Searching for Protocols (mailto/javascript etc...)
	if (value.indexOf(':') != -1) {
		// Stripping anything after a function (including parameters)
		if (value.indexOf('(') != -1) {
			value = value.substring(0, value.indexOf('('));
		}
		// Stripping anything after an object reference (including reference name)
		if (value.indexOf('[') != -1) {
			value = value.substring(0, value.indexOf('['));
		}
		// Stripping anything after the first statement
		if (value.indexOf(';') != -1) {
			value = value.substring(0, value.indexOf(';'));
		}
		// Converting : to _ to avoid URL conversion
		value = value.replace(':','_');
	}
	// Stripping & Converting characters
	var TradeMarkSymbol = unescape('%u2122');
	var RegisteredSymbol = unescape('%26reg%3B');
	var myChars = new Array(
		TradeMarkSymbol+'|TM',
		RegisteredSymbol+'|R',
		'?|GBP',
		'+|plus',
		'%| percent',
		'(',')','[',']',
		'\r\n| '
	);

	// Add & Conversion if not a URL
	if (!foundProtocol) {
		myChars[myChars.length] = '&|and';
	}

	var tmp = unescape(value);
	for (var i=0; i<myChars.length; i++) {
		var chr = myChars[i].split('|');
		if (tmp.indexOf(chr[0]) != -1) {
			var preChr = tmp.substring(0, tmp.indexOf(chr[0]));
			var postChr = tmp.substring(tmp.indexOf(chr[0]) + chr[0].length);
			tmp = preChr + ((chr[1])?chr[1]:'') + postChr;
		}
	}
	value = escape(tmp);
	// If Location Protocol was found, add it back for FULL URL display in tracking
	if (foundProtocol) {
		value = location.protocol +'//'+ value;
	}

	// Return ESCAPED value (UNESCAPING to remove possibility of dual escaping)
	return escape(unescape(value));
}

function getPage(current) {
	var header = document.images['pagehead'];
	if (header != null) {
		return header.alt;
	}
	return (current != null) ? current : '';
}

function getSubPage(current) {
	var header = document.images['subpagehead'];
	if (header != null) {
		return header.alt;
	}
	return (current != null) ? current : '';
}

function getReferrer() {
	var retval = document.referrer;
	if (retval.lastIndexOf("?") != -1) {
		retval = retval.substring(0, retval.lastIndexOf("?"));
	}
	return retval;
}

function getReferrerHost() {
	var retval = getReferrer();
	retval = retval.substring(retval.indexOf("//")+2);
	if (retval.indexOf("/") != -1) {
		retval = retval.substring(0, retval.indexOf("/"));
	}
	return retval;
}

/** OVERLOADING **/
var DEFAULT_TRACKING_TYPE = 'default';
var DEFAULT_TRACKING_POSITION = 'body';

function aaUniqueClicker(ele, sLinkText, sLinkURL) {
	var sTrackingType = (ele.trackingType) ? ele.trackingType : (ele.parentElement && ele.parentElement.trackingType) ? ele.parentElement.trackingType : DEFAULT_TRACKING_TYPE;
	var sLinkPosition = (ele.position) ? ele.position : (ele.parentElement && ele.parentElement.position) ? ele.parentElement.position : DEFAULT_TRACKING_POSITION;
	var oLinkEle = (ele.tagName == 'A') ? ele.childNodes[0] : ele;
	var sLinkType = (oLinkEle.tagName == 'IMG') ? 'image' : (oLinkEle.tagName == 'INPUT') ? 'input' : 'text';

	if (sLinkType == 'input') {
		var frm = ele.form;
		sTrackingType = (frm.elements['trackingType'] != null) ? oraEscape(frm.elements['trackingType'].value) : sTrackingType;
		sLinkPosition = (frm.elements['position'] != null) ? oraEscape(frm.elements['position'].value) : sLinkPosition;
		sLinkText = (ele.alt != '') ? ele.alt : sLinkText;

		/** Adding in Handset Brand, Handset Name, Service Plan Type where necessary **/
		if (frm.elements['handsetname'] != null) Tracking.addParam('handsetname', oraEscape(frm.elements['handsetname'].value))
		if (frm.elements['handsetbrand'] != null) Tracking.addParam('handsetbrand', oraEscape(frm.elements['handsetbrand'].value));
		if (frm.elements['serviceplantypename'] != null) Tracking.addParam('serviceplantypename', oraEscape(frm.elements['serviceplantypename'].value));
	}

	Tracking.uniqueClick(sTrackingType, sLinkText, sLinkURL, sLinkType, sLinkPosition);
}

function aaBuildClicker(ele, sLinkText, sLinkURL) {
	var sTrackingType = (ele.trackingType) ? ele.trackingType : (ele.parentElement && ele.parentElement.trackingType) ? ele.parentElement.trackingType : DEFAULT_TRACKING_TYPE;
	var sLinkPosition = (ele.position) ? ele.position : (ele.parentElement && ele.parentElement.position) ? ele.parentElement.position : DEFAULT_TRACKING_POSITION;
	var oLinkEle = (ele.tagName == 'A') ? ele.childNodes[0] : ele;
	var sLinkType = (oLinkEle.tagName == 'IMG') ? 'image' : (oLinkEle.tagName == 'INPUT') ? 'input' : 'text';

	if (sLinkType == 'input') {
		var frm = ele.form;
		sTrackingType = (frm.elements['trackingType'] != null) ? oraEscape(frm.elements['trackingType'].value) : sTrackingType;
		sLinkPosition = (frm.elements['position'] != null) ? oraEscape(frm.elements['position'].value) : sLinkPosition;
		sLinkText = (ele.alt != '') ? ele.alt : sLinkText;

		/** Adding in Handset Brand, Handset Name, Service Plan Type where necessary **/
		if (frm.elements['handsetname'] != null) Tracking.addParam('handsetname', oraEscape(frm.elements['handsetname'].value))
		if (frm.elements['handsetbrand'] != null) Tracking.addParam('handsetbrand', oraEscape(frm.elements['handsetbrand'].value));
		if (frm.elements['serviceplantypename'] != null) Tracking.addParam('serviceplantypename', oraEscape(frm.elements['serviceplantypename'].value));
	} else {
		if (ele.handsetBrand != null) Tracking.addParam('handsetbrand', oraEscape(ele.handsetBrand));
		if (ele.handsetName != null) Tracking.addParam('handsetname', oraEscape(ele.handsetName));
	}

	Tracking.logClick(sTrackingType, sLinkText, sLinkURL, sLinkType, sLinkPosition);
}

function aaStoreTracker(pagename, searchtype, searchdetails, shopname) {
	Tracking.addAdditionalParam('D2', aaStoreConvert(pagename));
	Tracking.addAdditionalParam('D3', aaStoreConvert(searchtype));
	if (searchdetails && searchdetails != '') Tracking.addAdditionalParam('NO1', aaStoreConvert(searchdetails));
	if (shopname && shopname != '') Tracking.addAdditionalParam('Town', aaStoreConvert(shopname));
	Tracking.start();
}

function aaStoreClicker(cO, shopname, returnForm) {
	var slFrm = document.forms['formStoreLocator'];
	var pagename = 'unknown'; // Required Field
	var searchtype = 'unknown'; // Required Field
	var searchpostcode = '';
	var searchtown = '';

	// Get the page name from Anchor Text, Button Value, or IMG ALT
	if (cO.text && cO.text != '') {
		pagename = cO.text;
	} else if (cO.value && cO.value != '') {
		pagename = cO.value;
	} else if (cO.alt && cO.alt != '') {
		pagename = cO.alt;
	}

	// Get the search type from the page Form
	if (slFrm && slFrm.elements['postcode'].value != '') {
		searchtype = 'postcode';
	} else if (slFrm && slFrm.elements['townName'].selectedIndex > 0) {
		searchtype = 'town';
	}

	// Get the search details from the page Form
	if (slFrm && slFrm.elements['postcode'].value != '') {
		searchpostcode = slFrm.elements['postcode'].value;
	}
	if (slFrm && slFrm.elements['townName'].selectedIndex > 0) {
		searchtown = slFrm.elements['townName'].options[slFrm.elements['townName'].selectedIndex].value;
	}

	Tracking.addParam('Name', aaStoreConvert(pagename));
	if (shopname && shopname != '') Tracking.addParam('Filename', aaStoreConvert(shopname));
	if (searchpostcode && searchpostcode != '') Tracking.addParam('PostCode', aaPostCodeConvert(searchpostcode));
	if (searchtown && searchtown != '') Tracking.addParam('Town', aaStoreConvert(searchtown));

	// ONLY run this click, ignore other items that would be logged through global site tracking
	Tracking.clearClicks();
	Tracking.addClick('STORE_LOCATOR_CAMPAIGN');
	Tracking.logClick(DEFAULT_TRACKING_TYPE, '', '', '', DEFAULT_TRACKING_POSITION);

	if (returnForm) return true;
}


function trackFlash(flashId, NULL_VALUE, sLinkURL) {
	var ele = flashArray[flashId];
	var sLinkText = '';

	// Some flash files are passing in the URL Number, some are passing in the URL
	if (parseInt(sLinkURL) != null && sLinkURL == parseInt(sLinkURL)) {
		sLinkText = (ele.URLs[sLinkURL-1].description != null) ? ele.URLs[sLinkURL-1].description : '';
		sLinkURL = (ele.URLs[sLinkURL-1].url != null) ? ele.URLs[sLinkURL-1].url : '';

		if (ele.hanadsetBrand != null) { Tracking.addParam('handsetbrand', oraEscape(ele.handsetBrand)); }
		if (ele.handsetName != null) { Tracking.addParam('handsetname', oraEscape(ele.handsetName)); }
	}

	var sTrackingType = (ele.trackingType) ? ele.trackingType : DEFAULT_TRACKING_TYPE;
	var sTrackingPosition = (ele.trackingPosition) ? ele.trackingPosition : DEFAULT_TRACKING_POSITION;
	var sLinkType = 'flash';
	Tracking.logClick(sTrackingType, sLinkText, sLinkURL, sLinkType, sTrackingPosition);
	Tracking.uniqueClick(sTrackingType, sLinkText, sLinkURL, sLinkType, sTrackingPosition);
}

// Loads on BODY ONLOAD, called by "ora_body_onload()"
function initiateTracking() {
	oIC.searchAnchors();
	// Works out the Section, as well as other default params
	Tracking.setupDefaultParams();

	var Section = Tracking.params['D4']; // Section

	/*Tracking.addCampaign('GLOBAL_ANALYTICS');

	if (isGateway(Section)) {
		Tracking.addCampaign('GATEWAY_ANALYTICS',true);
	}
	if (isOffer(Section)) {
		Tracking.addCampaign('OFFER_ANALYTICS',true);
	}
	if (isStoreLocator(Section)) {
		Tracking.addImpression('STORE_LOCATOR_CAMPAIGN',true);
	}

	Tracking.start(); */
}
// COPY TO ONLOAD
/* ora_doc_onload = initiateTracking; */

/** Setup Objects **/
var GUIDStore = new GUIDStoreOO();
var Tracking = new TrackingOO();

/*GUIDStore.addGUIDs('GLOBAL_ANALYTICS', '9B040D752752468E8F3C13825D28DF55', '', '20E04F7EE9D240928BA8A149F78EDCC4', '');
GUIDStore.addGUIDs('GATEWAY_ANALYTICS', '0BE84E1FA9294DE1BF3DDE35369149B3', '', '605362DB3F0C4491A09E34869B5E662F', '');
GUIDStore.addGUIDs('OFFER_ANALYTICS', '8C784D832B9243D99D510CF0DDB615B9', '', '1FF44F5D148F47508E2FC9029DA15D8B', '');
GUIDStore.addGUIDs('STORE_LOCATOR_CAMPAIGN', '9B040D752752468E8F3C13825D28DF55', '', '20E04F7EE9D240928BA8A149F78EDCC4', '');

// UNIQUE OFFERS - SAME GUIDS AS OFFER_ANALYTICS
GUIDStore.addGUIDs('UNIQUE_OFFERS', '8C784D832B9243D99D510CF0DDB615B9', '', '1FF44F5D148F47508E2FC9029DA15D8B', '');

GUIDStore.addImpressionGUID('3G_CAMPAIGN', '745A9C6E278846FDA695E626D8219EFE', '');
GUIDStore.addImpressionGUID('ALL_PLANS_CAMPAIGN', '6E5FB699E5D54185884A607E705FE31D', '');
GUIDStore.addImpressionGUID('OVP_CAMPAIGN', 'AEA4B646B0BA4CA1A067FF478CD50FCF', '');
GUIDStore.addImpressionGUID('SHOWPHONE_CAMPAIGN', '15615CCEECFF44C1ADAA5E1E8DAF6C5E', '');
GUIDStore.addImpressionGUID('SHOWPHONEFEAT_CAMPAIGN', 'D896B7138E1E4322983367E48847F0FF', '');
GUIDStore.addImpressionGUID('STUDENT_CAMPAIGN', '40CFB77BFE754E4C91AD5119397811E5', '', '', '');
GUIDStore.addImpressionGUID('STUDENT_UPGRADE_CAMPAIGN', 'C7EF8014BFD34BB0A665452CD76EA48A', '');
GUIDStore.addImpressionGUID('STUDENT_CAMPAIGN_ERROR', '379426710A4942348B5138A7DB9652A3', '');
GUIDStore.addImpressionGUID('UPGRADE_CAMPAIGN', '948CC718FCCF46AE941FBD412D6E6407', '');

GUIDStore.addClickGUID('STUDENT_INDEX', 'C66E266757664F79B224C1A196140823', '');
GUIDStore.addClickGUID('STUDENT_PAYMONTHLY', '441203F7488842D18DF9931356250957', '');
GUIDStore.addClickGUID('STUDENT_PAYASYOUGO', 'D02D7757A39E44EDBD59B369FD089C3C', '');

GUIDStore.setState( (location.host == 'shop.orange.co.uk') ? 'live' : 'dev' ); */

/*if (location.host.indexOf(".analyst.") != -1) {*/
//	Tracking.AKQADebug();
/*}*/