/*****************************************************************************\
|**            				APH Script Library v2.0	     				     **|
|**					by Gyorgy Berdal & Trevor Cobbett 2008     			     **|
|**                                                                          **|
|**                  All rights reserved. APH 2008 - 2010                    **|
\*****************************************************************************/

var _gaq = _gaq || [];
var APHScriptLibrary = {
	News: [],
	NewsRotator: null,
	NewsCounter: 0,
	
	SubMenuIDs: [],
	TrackingHotels: false,
	MenuResize: false,
	
	ContID: "container",
	MenuID: "myMenu",
	MenuContID: "menu",
	EndlinksID: "endlinks",
	HotelMenuID:  "myMenu_bttn2_sub",
	AgentCode: "APH",
	ScrapersID: "fresh_offer",
	
	ScraperIndex: -1,
	ScraperTimer: null,
	ScraperImages: [],
	ScraperRotateSpeed: 15000,
	
	QueryString: (function(){
        var x = location.search.substr(1); //substr 1 as location.search includes the ?
        var ret = {};
        if(x){ //read querystring
            x = x.replace('+', ' ');
            var queryString = x.split("&");
            for(var i = 0; i < queryString.length; i++){
                var pair = queryString[i].split("=");
                ret[pair[0]] = unescape(pair[1]);
            }
        }
        return ret;
	})(),
	
	GoogleTrackingAccount: "UA-2804484-1",
	GoogleTrackingChannelAccount: "UA-13237461-1",
	GoogleTrackingVariableName: "_gaq",
	
	SearchContID: "search_div",
	
	PaTPopupWin: null,
	
	ParkmanURL: "http://booking.aph.com/aph/aphbook.asp",
	PartnersURL: "http://www.parking-quote.co.uk/aphdiscount/aphbook.asp",
	
	AgentCookies: ["ddi", "html", "advert", "banner", "theme", "prodl", "group", "dep", "ref", "page", "wb_web"],
	LastActivityDifference: 1, //in minutes how often to reset value, and to check against in functions
	
	CSSCodes: ["5hot","asda","asdae","asdaf","asdar","em06b","renew","wbweb","ing","asdam","fresh","em06a","ncps", "shear",], // which agent codes get own css file
	LastElement: null,
	StartUp: function(){
		this.SetAgentCode();
		this.UpdateLastActivity("lastActivityTimer", this.LastActivityDifference * 60 * 1000);
		this.AddToWindowLoad(APHScriptLibrary.SearchBoxFunctions.AddWaterMarkListeners);
		this.RemoveNoJSCSS();
		window[this.GoogleTrackingVariableName] = window[this.GoogleTrackingVariableName] || [];
	}
};

APHScriptLibrary.SeeWhy = function(level){
	//document.write('</script><img id="cy_image" width=1 height=1 border=0 alt="">\n<script src="/javascript/seewhy/webevent.js" type="text/javascript"></script>\n<script type="text/javascript">\n<!--\ncy.FunnelLevel="' + level + '";\ncy_getImageSrc();');			
}

APHScriptLibrary.AddToWindowLoad = function(fn){
	if (window.addEventListener){
		window.addEventListener("load", fn, false);
	}else if (window.attachEvent){
		window.attachEvent("onload", fn);
	}else{
		window.onload += fn;
	}
}

APHScriptLibrary.SearchBoxFunctions = {
    AddWaterMark: function(e) {
        var inp;
        if (typeof (e.srcElement) != "undefined") {
            inp = e.srcElement
        } else {
            inp = this;
        }
        if (inp.value.trim() == "") {
            inp.style.background = "url('/images/logos/search_aph_bg.gif') no-repeat scroll left center #fff";
        }
    },

    RemoveWaterMark: function(e) {
        var inp;
        if (typeof (e.srcElement) != "undefined") {
            inp = e.srcElement
        } else {
            inp = this;
        }
        inp.style.background = "white";
    },

    FormSubmit: function() {
        var inp = document.getElementById("SiteSearchInputBox");

        //as the htaccess redirects requests to the search page with directions in the query string, it won't get tracked on GA, so tracking page view to it, so we can see how many people are going via search
        if (inp != null && inp.value.match(/direction/i)) {
            var escpQuery = encodeURIComponent(inp.value).replace(/\%20/g, '+').replace(/[!'()*~]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); });
            window[APHScriptLibrary.GoogleTrackingVariableName].push(['_trackPageview', "search.shtml?q=" + escpQuery]);
            var now = new Date().getTime(); //call was aborting before it would be logged with GA
            while (new Date().getTime() < (now + 100)) { }
        }
    },

    AddWaterMarkListeners: function() {
        var inp = document.getElementById("SiteSearchInputBox");
        var searchForm = document.getElementById("cse-search-box");
        if (inp != null && searchForm != null) {
            if (inp.addEventListener) {
                inp.addEventListener("focus", SearchBoxFunctions.RemoveWaterMark, false);
                inp.addEventListener("blur", SearchBoxFunctions.AddWaterMark, false);
                //searchForm.addEventListener("onsubmit", SearchBoxFunctions.FormSubmit, false);
            } else if (inp.attachEvent) {
                inp.attachEvent("onfocus", SearchBoxFunctions.RemoveWaterMark);
                inp.attachEvent("onblur", SearchBoxFunctions.AddWaterMark);
                //searchForm.attachEvent("onsubmit", function(){ console.log("Form submitted."); });
            } else {
                inp.onfocus = SearchBoxFunctions.RemoveWaterMark;
                inp.onblur = SearchBoxFunctions.AddWaterMark;
            }
            if (typeof (APHSearcher) != "undefined" && APHScriptLibrary.QueryString["q"] != null) {
                inp.value = APHScriptLibrary.QueryString["q"].replace("+", " ");
            } else {
                inp.style.background = "url('/images/logos/search_aph_bg.gif') no-repeat scroll left center #fff";
            }
        }
    }
};

APHScriptLibrary.MonthNames = [{"Full": 'January', "Short": "Jan"}, {"Full": "February", "Short": "Feb"}, {"Full": 'March', "Short": "Mar"}, {"Full": 'April', "Short": "Apr"}, {"Full": 'May', "Short": "May"}, {"Full": 'June', "Short": "Jun"}, {"Full": 'July', "Short": "Jul"}, {"Full": 'August', "Short": "Aug"}, {"Full": 'September', "Short": "Sep"}, {"Full": 'October', "Short": "Oct"}, {"Full": 'November', "Short": "Nov"}, {"Full": 'December', "Short": "Dec"}];
APHScriptLibrary.ProductArray = [ 	//any new elemnts to be added at the *END* of the 
"parking",					//list to maintain database binary code system
"chauffeured",
"hotel",
"lounge",
"int_lounge",
"shortbr",
"insurance",
"carhire",
"money",
"tickets",
"ski",
"sim",
"olsafe",
"mytravel"
];
APHScriptLibrary.Airports = {"ABZ": "Aberdeen", "BFS": "Belfast Int'l", "BHX": "Birmingham", "BRS": "Bristol", "CWL": "Cardiff", "DSA": "Doncaster", "MME": "Durham Tees Valley", "EMA": "East-Midlands", "EDI": "Edinburgh", "EXT": "Exeter", "LGW": "Gatwick", "GLA": "Glasgow", "LHR": "Heathrow", "LBA": "Leeds-Bradford", "LPL": "Liverpool", "LTN": "Luton", "MAN": "Manchester", "NCL": "Newcastle", "PIK": "Prestwick", "STN": "Stansted"};
APHScriptLibrary.Ports = {"DOV": "Dover"};

APHScriptLibrary.Run = function(whichCal) {
	var thisFrame = document.getElementById(whichCal).style;
	
//  !!!! CUSTOMIZABLE: Calendar Stylesheet
// --------------- YOU CAN AMEND PROPERTIES BELOW THIS LINE ------------------

	thisFrame.position				= 'absolute';
	thisFrame.zIndex				= '999';
	thisFrame.backgroundColor 		= '#eaebf3';
	thisFrame.width 				= '150px';
	thisFrame.height 				= '180px';
	thisFrame.color					= '#343d8c';
	thisFrame.padding				= '5px';
	thisFrame.borderColor			= '#343d8c';
	thisFrame.borderWidth			= '1px';
	thisFrame.borderStyle			= 'solid';
	thisFrame.fontFamily			= 'Arial, Verdana, San-Serif';

}

// --------------- DO NOT CHANGE ANYTHING BELOW THIS LINE -------------------

//Resource Functions
Array.prototype.InArray = function(needle){ //returns true or false if part of array
	for(var i = 0; i < this.length; i++){
		if(this[i] == needle)
			return true;
	}
	return false;
}

Array.prototype.ArrayIndex = function(n){ //returns the index of the element
	for(i=0; i<this.length; i++){
		if(this[i] == n) return i;
	}
	return -1;
}

document.getElementsByTitle = function(title){
    var divEles = document.getElementsByTagName("div");
    var liEles = document.getElementsByTagName("li");
    var relElems = []; 
    for (i = 0; i < divEles.length; i++) {
        if (divEles[i].getAttribute("title") && divEles[i].title == title) {
			relElems.push(divEles[i]);
        }
    }
    for (i = 0; i < liEles.length; i++) {
        if (liEles[i].getAttribute("title") && liEles[i].title == title) {
			relElems.push(liEles[i]);
        }
    }
	return relElems;
}

String.prototype.reverse = function(){
	return this.split("").reverse().join("");
}

String.prototype.URLdecode = function(){
	return unescape(this);
}

String.prototype.trim = function(chars){
    var str = this.ltrim(chars);
    str = str.rtrim(chars);
	return str;
}
 
String.prototype.ltrim = function(chars){
    chars = chars || "\\s";
    return this.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
String.prototype.rtrim = function(chars){
    chars = chars || "\\s";
    return this.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

APHScriptLibrary.ValidateEmail = function(formObj){
	var email = formObj.EMAIL.value;
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

	if (email == "your@emailaddress.com" || email == "") { alert("Please enter an email address"); return false; }
	else if (!filter.test(email)) { alert("Please enter a valid email address"); return false; }
	else return true;
}

APHScriptLibrary.GetStyle = function(el, styleProp){
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}

APHScriptLibrary.newAjax = function(t,u){
	var resource = null;
	if(window.ActiveXObject){
		resource=new ActiveXObject("Microsoft.XMLHTTP");
	}else if(window.XMLHttpRequest){
		resource=new XMLHttpRequest();
		resource.overrideMimeType('text/html');
	}
	resource.open(t,u,false);
	if(t.toUpperCase() == "POST"){
		resource.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
	}
	return resource;
}

APHScriptLibrary.newAsyncAjax = function(t,u){
	var resource=null;
	if(window.ActiveXObject){
		resource= new ActiveXObject("Microsoft.XMLHTTP");
	}else if(window.XMLHttpRequest){
		resource= new XMLHttpRequest();
		resource.overrideMimeType('text/html');
	}
	resource.open(t,u,true);
	if(t.toUpperCase() == "POST"){
		resource.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
	}
	return resource;
}

APHScriptLibrary.RegisterEvent = function(objRef){ }

APHScriptLibrary.EventTracker = function(e){
	if(!e)
		e=window.event;
	else
		e.srcElement=e.target;
	if(e.srcElement.id){
		APHScriptLibrary.RegisterEvent(e.srcElement.id);
		return true
	}else if(e.srcElement.name){
		APHScriptLibrary.RegisterEvent(e.srcElement.name);
		return true
	}else if(e.srcElement.href){
		APHScriptLibrary.RegisterEvent(e.srcElement.href);
		return true
	}else{
		return true;
	}
}

APHScriptLibrary.ExternalLinks = function(){
	if(!document.getElementsByTagName)
		return;
	var lks=document.getElementsByTagName("a");
	for(i=0;i<lks.length;i++){
		var lk=lks[i];
		if(lk.getAttribute("href")&&lk.getAttribute("rel")=="external"){
			lk.target="_blank";
		}
	}
}

APHScriptLibrary.RegisterParameters = function() {
	var qs = window.location.search.substr(1);
	var ref = qs.match(/ref=([a-zA-Z0-9-]+)&?/i);
	if(ref == null){
		this.RegisterGUID();
	}else{
		result = this.newAsyncAjax("GET", "/fcgi-bin/normalized-new.pl?ref="+ref[1]);
		var ths = this;
		result.onreadystatechange = function(){
			if(result.readyState == 4 && result.status == 200){
	            ths.CodespContent();
			}
		};
		result.send(null);
	}
    if(this.AgentCode.toLowerCase() == "cand2" || this.AgentCode.toLowerCase() == "cande"){
        document.getElementById("news_form").style.visibility = document.getElementById("socialbookmarks").style.visibility = "hidden";
    }
    
}

APHScriptLibrary.NewXMLfromString = function(x){
	if(window.ActiveXObject){
		var result = new ActiveXObject("Microsoft.XMLDOM");
		result.async = false;
		result.loadXML(x);
		if(result.parseError.errorCode!=0){
			return null;
		}
	}else{
		var parser = new DOMParser();
		result = parser.parseFromString(x,"text/xml");
		if(result.documentElement.nodeName=="parsererror"){
			return null;
		}
	}
	return result;
}

APHScriptLibrary.RemoveNoJSCSS = function(){
	var nojs_link = document.getElementById("noJS");
	if(nojs_link != null){
		nojs_link.parentNode.removeChild(nojs_link);
	}
}

APHScriptLibrary.S4 = function() {
	return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}

APHScriptLibrary.CreateGUID = function() {
	return (this.S4()+this.S4()+"-"+this.S4()+"-"+this.S4()+"-"+this.S4()+"-"+this.S4()+this.S4()+this.S4());
}

APHScriptLibrary.RegisterGUID = function(){
	var GUID = this.ReadCookie("client");
	
	if (!GUID){
		GUID = this.CreateGUID(); 
		this.SetCookie("client", GUID, 30);
	}
	return GUID;
}

APHScriptLibrary.SearchProdLib = function(elem){
	if (this.IsDefined(this.ProductArray)){
		var prodL = this.ReadCookie("prodl");
		if(prodL){
			prodL = prodL.toString(2).reverse();			
			for(var i = 0; i < this.ProductArray.length; i++){
				if(this.ProductArray[i].toLowerCase() == elem){
					return prodL[i];
				}
			}
		}
	}
}

APHScriptLibrary.IsDefined = function(variable){
    return (typeof(window[variable]) == "undefined")?  false: true;
}

APHScriptLibrary.CheckImage = function(img){
	if (!img.complete) { //IE works properly!
        return false;
    }
    if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
        return false;
    }
    return true;
}

//Google Analytics
APHScriptLibrary.IsGoogleTracking = function(){
	return (typeof(window[this.GoogleTrackingVariableName]) != "undefined");	
}

APHScriptLibrary.InsertGoogleTracking = function() {

  	var pageUrl = window.location + "";
  	var partnerPttrn = /aph.com\/partners\//gi;
	  
	var GAAccntNum = this.GoogleTrackingAccount;
	if (APHScriptLibrary.ReadCookie('dep') != null)
	{
		if (APHScriptLibrary.ReadCookie('dep') == 'CH')
			GAAccntNum = this.GoogleTrackingChannelAccount;
		if (APHScriptLibrary.ReadCookie('dep') == 'WB') 
			GAAccntNum = this.GoogleTrackingAccount;
    }
	if (APHScriptLibrary.ReadCookie('group') != null)	
	{
		if (APHScriptLibrary.ReadCookie('group') == 'PP')
			GAAccntNum = this.GoogleTrackingAccount;
	}
	if (pageUrl.match(partnerPttrn)!=null)
		GAAccntNum = this.GoogleTrackingChannelAccount;
		

	window[this.GoogleTrackingVariableName] = window[this.GoogleTrackingVariableName] || [];
	if (typeof (window[APHScriptLibrary.GoogleTrackingVariableName].unshift) == "undefined") {
		window[this.GoogleTrackingVariableName].push(['_setAccount', GAAccntNum],
  			['_setDomainName', 'auto'],
			['_setAllowHash', false],
  			['_setAllowLinker', true],
  			['_trackPageview'] 		            
		);
	} else {
		window[this.GoogleTrackingVariableName].unshift(['_setAccount', GAAccntNum],
  			['_setDomainName', 'auto'],
			['_setAllowHash', false],			
  			['_setAllowLinker', true],
  			['_trackPageview'] 
		);
	}

	// register goal
	if (typeof(GWO)=='object')
	{
		GWO.SetVar(); 
	}	

	(function() {
		var ga = document.createElement('script');
		ga.type = 'text/javascript';
		ga.async = true;
		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		var s = document.getElementsByTagName('script')[0];
		s.parentNode.insertBefore(ga, s);
	})();
}
 
APHScriptLibrary.AddTrackingEvent = function(elementName, trackerName){
	if(this.IsGoogleTracking()){
		window[this.GoogleTrackingVariableName].push(["_trackEvent", trackerName, 'Clicked', elementName]);
	}
}

APHScriptLibrary.GetSilverlightVersion = function() {
	var SLVersion;
	try{  
		try{
			var control = new ActiveXObject('AgControl.AgControl');
			switch(true){
				case control.IsVersionSupported("4.0"):
					SLVersion = 4;
					break;
				case control.IsVersionSupported("3.0"):
					SLVersion = 3;
					break;
				case control.IsVersionSupported("2.0"):
					SLVersion = 2;
					break;
				default:
					SLVersion = 1;
					break;
			}
			control = null;
		}catch (e){
			var plugin = navigator.plugins["Silverlight Plug-In"];
			if(plugin){         
				if (plugin.description == "1.0.30226.2"){
					SLVersion = 2;
				}else{
					SLVersion = parseInt(plugin.description[0]);
				}
			}else{
				SLVersion = "None";
			}
		}
	}catch (e){ 
		SLVersion = "None";
	}
	return SLVersion;
}

// Display Functions 
APHScriptLibrary.ShowMessage = function(what) { alert(what); }

APHScriptLibrary.LoadFlash = function(flash_path, width, height){
	document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+ width +'" height="'+ height +'">');
	document.write('<param name="movie" value="'+ flash_path +'"/><param name="quality" value="best"/><param name="wmode" value="transparent"/><param name="play" value="true"/><embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="'+ flash_path +'" type="application/x-shockwave-flash" wmode="transparent" quality="best" play="true" width="'+ width +'" height="'+ height +'"></embed>');
	document.write('</object>');
}

APHScriptLibrary.RemoveProducts = function(prodArray){
	for (var i = 0; i < prodArray.length; i++){
		var prod = prodArray[i];
		var supr_elems = document.getElementsByTitle(prod);
		//alert(supr_elems.length);
		for (var j = 0; j < supr_elems.length; j++){
			//alert("removing: "+supr_elems[j].tagName);
			supr_elems[j].style.display = "none";
		}
	}
}

APHScriptLibrary.ContentOrder = function(firstID, secondID){
	var bl = document.getElementById(secondID);
	var tl = document.getElementById(firstID);
	tl.parentNode.removeChild( tl );
	bl.parentNode.insertBefore( tl, bl );
}

APHScriptLibrary.SetAgentCode = function(){
	var x = location.search;
	if(x){ //read querystring
		x = x.substr(1).replace("%26","&");
		var queryString = x.split("&");
		for(var i = 0; i < queryString.length; i++){
			var param = queryString[i];
			var res;
			if((res = param.match(/^ref=(.*)$/i)) != null){
				this.AgentCode = res[1].toLowerCase();
				return;
			}
		}
	}
	//read cookies
	var cookieCode = this.ReadCookie("ref");
	if(cookieCode)
		this.AgentCode = cookieCode.toLowerCase();
}

APHScriptLibrary.GetNews = function(id){
	var myContainer = document.getElementById(id);
	if(myContainer != null){
		var i = 0;
		while (myContainer.childNodes[i]){
			if (myContainer.childNodes[i].tagName == 'P' || myContainer.childNodes[i].tagName == 'H3')
				this.News.push(myContainer.childNodes[i].innerHTML); 
			i++;
		}
		return this.News;
	}else{
		return null;
	}	
}

APHScriptLibrary.PreLoadImages = function() {
	if (document.getElementById) {  // DOM3 = IE5, NS6
		document.getElementById('hidepage').style.display = 'none';
		document.getElementById('main').style.display = 'block';
	} else {
		if (document.layers) {  // Netscape 4
			document.hidepage.display = 'none';
		} else {  // IE 4
			document.all.hidepage.style.display = 'none'; 
		}
	}
}

APHScriptLibrary.getMousePosition = function(e){
	var Mouse = {};
	if (!e)
		var e = window.event;
	Mouse.x = e.pageX;
	Mouse.y = e.pageY;
	
	if (!(Mouse.x && Mouse.y)){
		Mouse.x = e.clientX;
		Mouse.y = e.clientY;			
	}
	return Mouse;
}

APHScriptLibrary.getElementPosition = function(oElement){ // target div must be outside of the canvas
	var iReturnValue = {"x":0, "y":0};

	while( oElement != null ) {
		iReturnValue.y += oElement.offsetTop;
		iReturnValue.x += oElement.offsetLeft;
		oElement = oElement.offsetParent;
	}

	return iReturnValue;
}

APHScriptLibrary.InsertAgentcode = function(eleID){
    var ele = document.getElementById(eleID);
    if(ele != null){
        ele.value = APHScriptLibrary.AgentCode;
    }
}

APHScriptLibrary.SendNewsletter = function(){
    formObj = document.getElementById("news_form");
    APHScriptLibrary.InsertAgentcode('newsletter_agentCode');
    var b = APHScriptLibrary.ValidateEmail(formObj);
    if(b){
        var inputs = formObj.getElementsByTagName("INPUT");
        var parameters = "";
        for(i = 0; i< inputs.length; i++){
            parameters += inputs[i].name+"="+encodeURI(inputs[i].value);
            if(i != inputs.length-1){
                parameters += "&";
            }
        }
        var ajax = APHScriptLibrary.newAsyncAjax("POST", "/cgi-bin/newsletter_post.pl");
        ajax.onreadystatechange = function(){
            APHScriptLibrary.AjaxResult(ajax);
        };
        ajax.send(parameters);
    }
}

APHScriptLibrary.AjaxResult = function(ajax){
    if (ajax.readyState == 4){
        if (ajax.status == 200){
            subscr_div = document.getElementById("newsletter_script_form");
            if(ajax.responseText && ajax.responseText == 1){
                alert("Thank you for signing up to our newsletter.");
				var imagetag = document.createElement("img");
				imagetag.setAttribute("src","https://track.searchignite.com/si/CM/Tracking/TransactionTracking.aspx?siclientid=6695&transactionamount=0&SICustTransType=29220&jscript=0");
				imagetag.setAttribute("height","1");
				imagetag.setAttribute("width","1");
				document.body.appendChild(imagetag);
            }else{
                alert("I'm sorry, there was a problem registering your email, please try again later.");
            }
        }else{
            alert("I'm sorry, there was a problem registering your email, please try again later.");
        }
    }
}

//Menu Functions
//PopUp Menu Script 
APHScriptLibrary.Initializer = function(){
	var MenuObject = document.getElementById(this.MenuID).getElementsByTagName("li");
	for (var key = 0; key < MenuObject.length; key++) {
		if (MenuObject[key].id){
			this.SubMenuIDs.push(MenuObject[key].id);
		 }
	}
	this.SubMenuIDs.sort();
	for($i = 0; $i<this.SubMenuIDs.length; $i++){
		subLastChild = document.getElementById(this.SubMenuIDs[$i]+"_sub").lastChild;
		subMenu = document.getElementById(this.SubMenuIDs[$i]+"_sub");
		subMenuChilds = subMenu.getElementsByTagName("LI");
		subLastChild = subMenuChilds[subMenuChilds.length-1]; 
		if(subLastChild.className == "" || !(subLastChild.className)){
			subLastChild.className = "lastmenuitem";
		}else{
			if(subLastChild.className.indexOf("lastmenuitem") == -1){
				subLastChild.className += " lastmenuitem";
			}
		}
	}
}

APHScriptLibrary.ShiftMenu = function(){
	var menu = document.getElementById("left_column");
	var canv = document.getElementById("canvas");
	var subMenuDummy = document.getElementById("myMenu_bttn1_sub");
	if(menu == null || canv == null || subMenuDummy == null)
		return;
	var menuOffset = (navigator.appVersion.indexOf("MSIE") == -1)?this.GetStyle("left_column","padding-left"):this.GetStyle("left_column","paddingLeft");
	if(canv.offsetLeft + parseInt(menuOffset) > (parseInt(this.GetStyle("myMenu_bttn1_sub","width")) + 26)){// not enough room on left to display
		if(this.MenuResize)//no change
			return;
		else
			this.MenuResize = true;
	}else{
		this.MenuResize = false;
	}
	for(var sm = 0; sm < this.SubMenuIDs.length; sm++){
		var ElLeft = parseInt(this.GetStyle(this.SubMenuIDs[sm]+"_sub","left"));
		if(ElLeft != "NaN"){
			if(sm <= 4){ //subs 1-5
				if(this.MenuResize)
					document.getElementById(this.SubMenuIDs[sm]+"_sub").style.left = "-226px";
				else
					document.getElementById(this.SubMenuIDs[sm]+"_sub").style.left = "158px";
			}else{ //subs 6-7(sub sub menus)
				if(this.MenuResize){
					document.getElementById(this.SubMenuIDs[sm]+"_sub").style.left = "-9px";
					document.getElementById(this.SubMenuIDs[sm]+"_sub").style.top = "6px";
				}else{
					document.getElementById(this.SubMenuIDs[sm]+"_sub").style.left = "208px";
					document.getElementById(this.SubMenuIDs[sm]+"_sub").style.top = "-320px";
				}
			}
		}
	}
}

APHScriptLibrary.Listener = function(){
	this.ShiftMenu();
	if (navigator.userAgent.indexOf("MSIE")!=-1){
		var arVersion = navigator.appVersion.split("MSIE");
		var version = parseFloat(arVersion[1]);
		e = window.event;

		if(version >= 7){
		var myElementID;
			
	  	//window.status = "last element: " + this.LastElement + " | current: " + e.srcElement.id + " | parent: " + e.srcElement.parentNode.id;
		
			if (myElementID = e.srcElement.id)
			{
				for (i = 0; i < this.SubMenuIDs.length; i++){
					if (myElementID == this.SubMenuIDs[i]){
				   		for (i = 0; i < this.SubMenuIDs.length; i++){
				   			if(((i == 1 && myElementID == "myMenu_bttn6") || (i == 0 && myElementID == "myMenu_bttn7")) || (this.LastElement == "myMenu_bttn2" && myElementID == "myMenu_bttn6") || (this.LastElement == "myMenu_bttn1" && myElementID == "myMenu_bttn7")){
				   			  //|-------------Prevent Whole submenu disappearing when leaving subsub menu-------------|
				   				continue;
				   			}
				   			//if(this.LastElement 
				  			document.getElementById(this.SubMenuIDs[i] + "_sub").style.display = "none";
						}
				   		document.getElementById(myElementID + "_sub").style.display = "";
				   		this.LastElement = myElementID;
					}
				}
			}
			else 
			{
				if(this.LastElement == "myMenu_bttn6" && e.srcElement.parentNode.id == "myMenu_bttn2_sub")
				{
					document.getElementById("myMenu_bttn6_sub").style.display = "none";
					this.LastElement = "myMenu_bttn2";
					return;
				}
				if(this.LastElement == "myMenu_bttn7" && e.srcElement.parentNode.id == "myMenu_bttn1_sub"){
					document.getElementById("myMenu_bttn7_sub").style.display = "none";
					this.LastElement = "myMenu_bttn1";
					return;
				}
				if (e.srcElement.parentNode.id != this.LastElement + "_sub")
				{
					//window.status = e.srcElement.parentNode.id +"!="+ this.LastElement + "_sub";
					if (!e.srcElement.href)
					{
						for (i = 0; i < this.SubMenuIDs.length; i++){
				  			document.getElementById(this.SubMenuIDs[i] + "_sub").style.display = "none";
						}
				  	}
				  	
				}
			}
		}
		if (e!=null)
		{
			if(e.srcElement.nodeName.toUpperCase() != "LI" && e.srcElement.parentNode.nodeName.toUpperCase() != "LI"){
				for (i = 0; i < this.SubMenuIDs.length; i++){
			  		document.getElementById(this.SubMenuIDs[i] + "_sub").style.display = "none";
				}			
			}
		}//*/
	}//end IE
			
		if (navigator.userAgent.indexOf("Chrome")!= -1 || navigator.userAgent.indexOf("Firefox")!= -1){
			var APHSL = this; 
			function Listener(e){
				if(!e)
					var e = window.event;
				var x = e.clientX;
				var y = e.clientY;
	
				var eInAr = APHSL.SubMenuIDs.ArrayIndex(e.target.id);
				var eParInAr = -1;
				if(e.target.parentNode != null)
					eParInAr = APHSL.SubMenuIDs.ArrayIndex(e.target.parentNode.id);
				if (eInAr != -1 ){
					window.status = "over subelement id " + e.target.id;
					document.getElementById(APHSL.SubMenuIDs[eInAr]+"_sub").style.display = "";
					for (i = 0; i < APHSL.SubMenuIDs.length; i++) {
						if(i == eInAr || ((i == 1 && eInAr == 5) || (i == 0 && eInAr == 6))){
							continue;
						}
						document.getElementById(APHSL.SubMenuIDs[i] + "_sub").style.display = "none";
				   }
				}else if(eParInAr != -1){
					window.status = "over subelement id " + eParInAr
					document.getElementById(APHSL.SubMenuIDs[eParInAr]+"_sub").style.display = "";
					for (i = 0; i < APHSL.SubMenuIDs.length; i++) {
						if(i == eParInAr || ((i == 1 && eParInAr == 5) || (i == 0 && eParInAr == 6))){
							continue;
						}
						document.getElementById(APHSL.SubMenuIDs[i] + "_sub").style.display = "none";
					}
				}else{
					if(e.target.nodeName == "LI"){
						if(e.target.parentNode.id.indexOf("_sub") == -1){
							for (i = 0; i < APHSL.SubMenuIDs.length; i++) {
						    	document.getElementById(APHSL.SubMenuIDs[i] + "_sub").style.display = "none";
						   	}
						}
					   	if(e.target.parentNode.id == "myMenu_bttn2_sub" && e.target.id != "myMenu_bttn6_sub")
					   		document.getElementById("myMenu_bttn6_sub").style.display = "none";
					}else if(e.target.nodeName == "A"){
						if(e.target.parentNode.parentNode.id.indexOf("_sub") == -1){
							return;
						}
					}else{
						for (i = 0; i < APHSL.SubMenuIDs.length; i++) {
					    	document.getElementById(APHSL.SubMenuIDs[i] + "_sub").style.display = "none";
					   }
					}
				}
			}
			document.onmousemove=Listener;
		}//end firefox/chrome
}

//News functions
APHScriptLibrary.Rotator = function(){
	if (this.NewsCounter < (this.News.length - 1)) {
		this.NewsCounter++;
	}else{
		this.NewsCounter = 1;
	}
	document.getElementById('news').innerHTML = "<h3>" + this.News[0] + "</h3>" + "<p>" + this.News[this.NewsCounter] + "</p>";
	var ths = this; 
	this.NewsRotator = setTimeout(function(){
		ths.Rotator();
	}, 10000);
}

// Storage Functions 
APHScriptLibrary.SetCookie = function(name, value, days){
		if (typeof(days) != "undefined"){
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}

		if (value!="" && name!="") {
			document.cookie = name + "=" + escape( value ) + ( ( expires ) ? expires : "" ) + "; domain=.aph.com; path=/"; 
			return true;
		}else{ 
			return false;
		}
}

APHScriptLibrary.ReadCookie = function(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' '){
			c = c.substring(1,c.length);
		}
		if (c.indexOf(nameEQ) == 0){
			//alert("Cookie" + c.substring(nameEQ.length,c.length));
			return c.substring(nameEQ.length, c.length);
		}
	}
	return null;
}

APHScriptLibrary.CheckCookies = function(){
    if(!navigator.cookieEnabled){
       alert("Your cookies have been disabled. Please note, you might not be able to take advantage of our discounts this way.");
    }
}

// Calendar Functions 
APHScriptLibrary.Calendar = function(){
	this.today;
};
APHScriptLibrary.Calendar.zeroPad = function(value){
	var newvalue = value.toString();
	if (newvalue.length == 1) return "0" + newvalue;
	else return newvalue;
}

APHScriptLibrary.Calendar.DelzeroPad = function(value){
	value = value.toString(); var firstdigit = value.substr(0,1);
	if (value.length > 1 && firstdigit == '0') value = value.substr(1);
	return value;
}

APHScriptLibrary.Calendar.DaysOfThisMonth = function(year, month){
	daysofmonth	= (32 - new Date(year, month, 32).getDate()); 
	return daysofmonth;
}
			
APHScriptLibrary.Calendar.CalculateReturnDate = function (year, month, day){
	var mod_dur 	= 7; // modal duration (days)
	var nextyear 	= year + 1;
	var nextmonth	= month + 1;
	var retday 		= 0;
	var DateArray 	= new Object;
	
	//alert(year+"-"+month+"-"+day);
	// calculating the return date
	daysofmonth	= DaysOfThisMonth(year, month-1); 
	//alert(daysofmonth);
	retday = day + mod_dur;
	//alert("Return day: " + day + "+" + mod_dur);
	
	if (retday <= daysofmonth) {
		ReturnYear = year; ReturnMonth = month; ReturnDay = retday; 
	} else {
		retday = retday - daysofmonth;
		month = nextmonth;
		
		if (nextmonth <= 12) { ReturnYear = year; ReturnMonth = month; ReturnDay = retday; }
		else
		{
			//alert("year jump!");
			month = nextmonth - 12;
			ReturnYear = nextyear; ReturnMonth = month; ReturnDay = retday;
		}
	}
	
	DateArray['day'] = APHScriptLibrary.Calendar.zeroPad(ReturnDay); DateArray['month'] = APHScriptLibrary.Calendar.zeroPad(ReturnMonth); DateArray['year'] = APHScriptLibrary.Calendar.zeroPad(ReturnYear); 
	
	return DateArray;
}

APHScriptLibrary.PrevUntil = function(obj, nodename){
	obj = obj.previousSibling;
	while(obj.nodeName.toUpperCase() != nodename.toUpperCase()){
		obj = obj.previousSibling;
	}
	return obj;
}


APHScriptLibrary.Calendar.Show = function(bttnObj, whichCal, mod, pos) {
	var calendarObj = document.getElementById(whichCal); 

	if (mod == "S"){		
		var bttnID = bttnObj.id;
		var yearField = APHScriptLibrary.PrevUntil(bttnObj, "select"); 
		var monthField = APHScriptLibrary.PrevUntil(yearField, "select"); 
		var dayField = APHScriptLibrary.PrevUntil(monthField, "select"); 
		
		var Mouse = {};
		APHScriptLibrary.Calendar.Highlight(bttnID);
	} else if (mod == "C") {
		var bttnID = bttnObj.id;
		var boxObj = bttnObj.previousSibling; 
		var Mouse = {};
		fieldID = boxObj.id; 
		boxObj.style.backgroundColor = "red";
		var calendarObj = document.getElementById(whichCal); 
					
		var getDate = boxObj.value; //alert(getDate);
			if (getDate){
				dateRegex = /^\d{2}\/\d{2}\/\d{2}$/;
				if (getDate.match(dateRegex)){
				getDateArray = getDate.split("/"); this.today = new Date(parseInt("20" + getDateArray[2]), parseInt(getDateArray[1]), parseInt(getDateArray[0]));	
				//alert(getDateArray[2] + "-" + getDateArray[1] + "-" + getDateArray[0]);
				}
				else { alert("ERROR-02: Invalid date. (use: dd/mm/yy)"); ; return false; }}
		
	}
	
	var elemPos = APHScriptLibrary.getElementPosition(bttnObj);
	
	if (pos == "L") elemPos.x -= 150;	
	
	calendarObj.style.left = elemPos.x + "px"; 
	calendarObj.style.top = elemPos.y + "px"; 
	
	calendarObj.style.display = ""; 

	APHScriptLibrary.Calendar.LoadMonth(whichCal, bttnID);
	return true; 	

}
	
APHScriptLibrary.Calendar.Highlight = function(bttnID){
	var origColor = "white";
	var highlColor = "lightgreen";
	
	var bttnObj = document.getElementById(bttnID);

	var yearElement = APHScriptLibrary.PrevUntil(bttnObj, "select");
	var monthElement = APHScriptLibrary.PrevUntil(yearElement, "select");
	var dayElement = APHScriptLibrary.PrevUntil(monthElement, "select");
	
	if (yearElement.style.backgroundColor == origColor || yearElement.style.backgroundColor == "")
	{	 
		
		dayElement.style.backgroundColor = highlColor;
		monthElement.style.backgroundColor = highlColor;
		yearElement.style.backgroundColor = highlColor;	
	}
	else if (yearElement.style.backgroundColor == highlColor)
	{
		dayElement.style.backgroundColor = origColor;
		monthElement.style.backgroundColor = origColor;
		yearElement.style.backgroundColor = origColor;		
	}
}

APHScriptLibrary.Calendar.FillField = function(realDay, dateType, whichCal, mod, bttnID){

	var expDate = null;
	var realMonth = myMonth + 1;
	var bttnObj = document.getElementById(bttnID);
	
	if (mod == "C"){
		//alert(realDay + " " + dateType + " " + whichCal);
		var dispDay; var dispMonth; var dispYear;

		var boxObj = document.getElementById(fieldID);
		switch (dateType)
		{
		case 'short':
		if (realDay.toString().length == 1) { dispDay = "0" + realDay; } else { dispDay = realDay; }
		if (realMonth.toString().length == 1) { dispMonth = "0" + realMonth; } else { dispMonth = realMonth; }
		dispYear = myYear.toString().substr(2);
		break;
		}
		
		expDate = dispDay + "/" + dispMonth + "/" + dispYear;
		boxObj.value = expDate;
		boxObj.style.backgroundColor = "white";
	}else{
		var actDate = new Date();
		var actYear = actDate.getFullYear();
		
		var yearElement = APHScriptLibrary.PrevUntil(bttnObj, "select");
		var monthElement = APHScriptLibrary.PrevUntil(yearElement, "select");
		var dayElement = APHScriptLibrary.PrevUntil(monthElement, "select");
		
		yearElement.selectedIndex = myYear - actYear;
		monthElement.selectedIndex = realMonth -1; 
		dayElement.selectedIndex = realDay - 1; 

		APHScriptLibrary.Calendar.Highlight(bttnID);
	}
	document.getElementById(whichCal).style.display = "none";
	if(bttnID == "DepCalBttn"){ //update on change
		try{ UpdateReturnDate(); }catch(err){ };
	}else{
		try{ UpdateReturnDate(false); }catch(err){ };
	}
	//this is used to piggy back onto the calendar changing the date of the form if necessary
	//sofar only used in the triple booking form
	if(typeof(APHScriptLibrary.Calendar.FillFieldComplete) != "undefined"){
		APHScriptLibrary.Calendar.FillFieldComplete(bttnID);
	}
	return true;
}

APHScriptLibrary.Calendar.LoadMonth = function(whichCal, bttnID){
	var calendarFrame 	= document.getElementById(whichCal);

	if (!APHScriptLibrary.Calendar.today) {
		APHScriptLibrary.Calendar.today = new Date(); 
	}
		
	myYear 			= APHScriptLibrary.Calendar.today.getFullYear();
	myMonth 		= APHScriptLibrary.Calendar.today.getMonth(); // January is 0! 
	
	var dateControl 	= new Date();
	var monthControl 	= dateControl.getMonth();
	var yearControl		= dateControl.getFullYear();
	
	//alert(myMonth);
	myDate 			= this.today.getDate();
	myDay 			= APHScriptLibrary.Calendar.today.getDay();
	myDaysInMonth 	= 32 - new Date(myYear, myMonth, 32).getDate(); 
	myFirstDay 		= new Date(myYear, myMonth, 1).getDay();

	var myMonthName	= APHScriptLibrary.MonthNames[myMonth]["Full"];
	var	content		= null; 
	var dayCount 	= 1;
	
	if (myFirstDay === 0) { myFirstDay = 7; }
	
	content = '<div><div style="height:10px"><a href="javascript:void(0);" onclick="document.getElementById(\'' + whichCal + '\').style.display = \'none\';APHScriptLibrary.Calendar.Highlight(\'' + bttnID + '\');" style="float:right; font-size:9px">close</a></div><table border="1" cellpadding="3" class="calDays">';
	content += '<tr><th class="bttnMonthLeft" id="bttnMonthLeft" style="cursor: pointer;" onclick="APHScriptLibrary.Calendar.Actions.BttnClicked(this.id, \'' + whichCal + '\', \'' + bttnID + '\');"><<</th><th colspan="5">' + myMonthName + '</th><th class="bttnMonthRight" style="cursor: pointer;" id="bttnMonthRight" onclick="APHScriptLibrary.Calendar.Actions.BttnClicked(this.id, \'' + whichCal + '\', \'' + bttnID + '\');">>></th></tr>';
	content += '<tr><th>Mo</th><th>Tu</th><th>We</th><th>Th</th><th>Fr</th><th>Sa</th><th>Su</th></tr>';
	
	content += '<tr>'
	
	for (column = 0; column < (myFirstDay-1); column++) { content += '<td></td>'; } //draw empty cells
	for (column = (myFirstDay-1); column < 7; column++) 
	{ 
			content += '<td'; 
			if (dayCount == myDate) { content += ' bgcolor="#edab00"'; }
			if (dayCount < myDate && myMonth == monthControl && myYear == yearControl) content += ' style="text-decoration: line-through; cursor: default;"'; 			
			else if (myMonth < monthControl && myYear <= yearControl) content += ' style="text-decoration: line-through; cursor: default;"'; 
			else content += ' style="cursor: pointer;" onclick="APHScriptLibrary.Calendar.FillField(' + dayCount + ', \'short\', \'' + whichCal + '\', \'S\', \'' + bttnID + '\');"';
			content += '>';
			if (column == 6) 
				{ 
					content += '<font color="red">'; 
					content += dayCount; 
					content += '</font>'; 
				} 
			else  { content += dayCount; }
			dayCount++;		
			content += '</td>';	
			
	}		 //draw days in the first row
	content += '</tr>'
	
	for (row = 0; row < 5; row++) //fill the rest of the rows
	{
	content += '<tr>';
		for (column = 0; column < 7; column++)
		{
			content += '<td'; 
			if (dayCount == myDate) { content += ' bgcolor="#edab00"'; }
			if (dayCount <= myDaysInMonth) { 
			if (dayCount < myDate && myMonth == monthControl && myYear == yearControl) content += ' style="text-decoration: line-through; cursor: default;"'; 			
			else if (myMonth < monthControl && myYear <= yearControl) content += ' style="text-decoration: line-through; cursor: default;"';
			else content += ' style="cursor: pointer;" onclick="APHScriptLibrary.Calendar.FillField(' + dayCount + ', \'short\', \'' + whichCal + '\', \'S\', \'' + bttnID + '\');"';
			content += '>';
			if (column == 6) 
				{ 
					content += '<font color="red">';
					content += dayCount;
					content += '</font>'; 
				} 
			else { content += dayCount; } 
			} else content += '>&nbsp;';
			dayCount++;
			content += '</td>';
		}
	content += '</tr>';
	}
	content += '</table><div>';

	calendarFrame.innerHTML = content;

	APHScriptLibrary.Run(whichCal);
}

APHScriptLibrary.Calendar.Actions = function(){};
APHScriptLibrary.Calendar.Calculations = function(){};

APHScriptLibrary.Calendar.Actions.BttnClicked = function(id, whichCal, bttnID){
	if (id == "bttnMonthLeft") { APHScriptLibrary.Calendar.Calculations.minusMonth(); APHScriptLibrary.Calendar.LoadMonth(whichCal, bttnID); return true;}
	if (id == "bttnMonthRight") { APHScriptLibrary.Calendar.Calculations.plusMonth(); APHScriptLibrary.Calendar.LoadMonth(whichCal, bttnID); return true;}
	return false;
}

APHScriptLibrary.Calendar.Calculations.minusMonth = function(){
	var newMonth = myMonth - 1; 
	var newYear = myYear - 1;
	if (newMonth >= 0) {
		APHScriptLibrary.Calendar.today = new Date(myYear, newMonth, myDate); 
	} else { 
		APHScriptLibrary.Calendar.today = new Date(newYear, 11, myDate);
	}
	return true;
}

APHScriptLibrary.Calendar.Calculations.plusMonth = function(){
	
	var newMonth = myMonth + 1; var newYear = myYear + 1;	
	if (newMonth <= 11) { APHScriptLibrary.Calendar.today = new Date(myYear, newMonth, myDate); }
	else { APHScriptLibrary.Calendar.today = new Date(newYear, 0, myDate);}
	return true;
}//*/


APHScriptLibrary.CheckRes = function(){
	/*var winWidth = null;
	
	if ( parseInt(navigator.appVersion) > 3 ) {
	 	if (navigator.appName == "Netscape") {
	  		winWidth = window.innerWidth;}
		if ( navigator.appName.indexOf("Microsoft") != -1 ) {
			winWidth = document.body.offsetWidth;}
	}
	
	if (screen.width >= 1424 && winWidth >= 1424) {
		//alert(screen.width);
		document.getElementById("left_bgr").style.width = "200px";
		document.getElementById("right_bgr").style.width = "200px";				
	}
	*/
}

APHScriptLibrary.AutoFrameHeight = function(obj){
	var content_h = obj.contentWindow.document.body.scrollHeight;
	obj.height = content_h;
}

//Page Functions

APHScriptLibrary.ShowPage = function(){
	document.getElementById(this.ContID).style.display = "block";
}

APHScriptLibrary.InsertFooter = function(){
	var endlinks = document.getElementById(this.EndlinksID);
	if(endlinks != null){
		var table = '<table class="footertable">'
		+ '<tr class="nohide">'
		+ '<td><a href="/affiliates/affiliates.shtml">Become an Affiliate</a></td>'
		+ '<td><a href="/information/contact_us.shtml">Contact Us</a></td>'
		+ '<td><span class="ft_link" onclick="APHScriptLibrary.PaTPopup(1)">Privacy Statement</span></td>'
		//@Andy T&C edit 28/10/11 reverted 23/11/11		
		+ '<td><span class="ft_link"><a href="/information/t_and_c.shtml" alt="Terms and Conditions">Terms &amp; Conditions</a></span></td>'
		//+ '<td><span class="ft_link" onclick="APHScriptLibrary.PaTPopup(0)">Terms &amp; Conditions</span></td>'
		+ '</tr></table>';
		endlinks.innerHTML += table;
	}
	this.CheckCookies();
	this.UpdateBookmarkURL();
}

APHScriptLibrary.InsertGlobalMenu = function(){
	var MenuCont = document.getElementById(this.MenuContID);
	if(MenuCont != null){
		this.EmptyNode(MenuCont);
		MenuCont.innerHTML += this.CreateGlobalMenu();
		MenuCont.innerHTML += "<div style='clear: both'></div>";
		APHScriptLibrary.Initializer();
	}
},

APHScriptLibrary.EmptyNode = function(element){
	while(element.hasChildNodes()){
		element.removeChild(element.firstChild);
	}
},
	
APHScriptLibrary.CreateGlobalMenu = function(){
	var prodL = (this.ReadCookie("prodl") == null)? 16383 : this.ReadCookie("prodl");
	var acode = (this.ReadCookie("ref") == null)? "default" : this.ReadCookie("ref");
	prodL = parseInt(prodL).toString(2).reverse();
	var myMenu = '<ul id="myMenu">'
	+ "<li>" + ((APHScriptLibrary.ReadCookie("wb_offers") != null && APHScriptLibrary.ReadCookie("wb_offers") == 1)? "<a href='/offers/welcomeback.shtml?code=home'>": "<a href='/'>") + "Home</a></li>";
	if(prodL.charAt(0)){ //parking
		myMenu += '<li id="myMenu_bttn1"><a href="/parking/index.shtml">Airport Parking</a><ul id="myMenu_bttn1_sub" style="display: none;">'
		+ '<li class="dark_blu_bttn"><a href="/parking/gatwick_airport/index.shtml">Gatwick Airport Parking</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/parking/birmingham_airport/index.shtml">Birmingham Airport Parking</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/parking/manchester_airport/index.shtml">Manchester Airport Parking</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/parking/heathrow_airport/index.shtml">Heathrow Airport Parking</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/parking/meet_and_greet_parking.shtml">Meet &amp; Greet Parking</a></li>'
		+ '<li class="lastmenuitem" style="cursor: default;" id="myMenu_bttn7"><a href="/parking/index.shtml">More Car Parks</a>'
		+ '<ul style="display: none;" id="myMenu_bttn7_sub">'
		+ '<li><a href="/parking/aberdeen_airport/index.shtml">Aberdeen Airport Parking</a></li>'
		+ '<li><a href="/parking/belfast_airport/index.shtml">Belfast Airport Parking</a></li>'
		+ '<li><a href="/parking/bournemouth_airport/index.shtml">Bournemouth Airport Parking</a></li>'
		+ '<li><a href="/parking/bristol_airport/index.shtml">Bristol Airport Parking</a></li>'
		+ '<li><a href="/parking/cardiff_airport/index.shtml">Cardiff Airport Parking</a></li>'
		+ '<li><a href="/parking/doncaster_airport/index.shtml">Doncaster Airport Parking</a></li>'
		+ '<li><a href="/parking/dover_port/index.shtml">Dover Port Parking</a></li>'
		+ '<li><a href="/parking/durham_tees_airport/index.shtml">Durham Tees Airport Parking</a></li>'
		+ '<li><a href="/parking/east_midlands_airport/index.shtml">East Midlands Airport Parking</a></li>'
		+ '<li><a href="/parking/edinburgh_airport/index.shtml">Edinburgh Airport Parking</a></li>'
		+ '<li><a href="/parking/exeter_airport/index.shtml">Exeter Airport Parking</a></li>'
		+ '<li><a href="/parking/glasgow_airport/index.shtml">Glasgow Airport Parking</a></li>'
		+ '<li><a href="/parking/leeds_bradford_airport/index.shtml">Leeds Bradford Airport Parking</a></li>'
		+ '<li><a href="/parking/liverpool_airport/index.shtml">Liverpool Airport Parking</a></li>'
		+ '<li><a href="/parking/luton_airport/index.shtml">Luton Airport Parking</a></li>'
		+ '<li><a href="/parking/newcastle_airport/index.shtml">Newcastle Airport Parking</a></li>'
		+ '<li><a href="/parking/prestwick_airport/index.shtml">Prestwick Airport Parking</a></li>'
		+ '<li><a href="/parking/southampton_airport/index.shtml">Southampton Airport Parking</a></li>'
		+ '<li><a href="/parking/southampton_port/index.shtml">Southampton Port Parking</a></li>'
		+ '<li><a href="/parking/stansted_airport/index.shtml">Stansted Airport Parking</a></li>'
		+ '<li class="us lastmenuitem"><a href="/parking/us/index.shtml">US Airport Parking</a></li>'
		+ '</ul></li></ul></li>';
	}
	if(prodL.charAt(2)){ //hotels
		var tracking = (APHScriptLibrary.TrackingHotels)? " onclick=\"APHScriptLibrary.AddTrackingEvent('MenuClicks', 'HotelMenu']);\"": "";
		myMenu += '<li id="myMenu_bttn2"><a href="/hotels/index.shtml">Airport Hotels</a>'
		+ '<ul style="display: none;" id="myMenu_bttn2_sub">'
		+ '<li><a href="/information/airport_hotels.shtml"'+tracking+'>Parking &amp; Hotel Packages</a></li>'
		+ '<li><a href="/hotels/hotel_room_only.shtml"'+tracking+'>Hotel Room Only</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/hotels/gatwick_airport/index.shtml"'+tracking+'>Gatwick Airport Hotels</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/hotels/birmingham_airport/index.shtml"'+tracking+'>Birmingham Airport Hotels</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/hotels/manchester_airport/index.shtml"'+tracking+'>Manchester Airport Hotels</a></li>'
		+ '<li class="dark_blu_bttn"><a href="/hotels/heathrow_airport/index.shtml"'+tracking+'>Heathrow Airport Hotels</a></li>'
		+ '<li class="lastmenuitem" id="myMenu_bttn6" ><a href=""'+tracking+'>More Hotels</a>'
		+ '<ul id="myMenu_bttn6_sub" style="display: none;">'
		+ '<li><a href="/hotels/aberdeen_airport/index.shtml"'+tracking+'>Aberdeen Airport Hotels</a></li>'
		+ '<li><a href="/hotels/belfast_airport/index.shtml"'+tracking+'>Belfast Int\'l Airport Hotels</a></li>'
		+ '<li><a href="/hotels/belfast_city_airport/index.shtml"'+tracking+'>Belfast City Airport Hotels</a></li>'
		+ '<li><a href="/hotels/bournemouth_airport/index.shtml"'+tracking+'>Bournemouth Airport Hotels</a></li>'
		+ '<li><a href="/hotels/blackpool_airport/index.shtml"'+tracking+'>Blackpool Airport Hotels</a></li>'
		+ '<li><a href="/hotels/bristol_airport/index.shtml"'+tracking+'>Bristol Airport Hotels</a></li>'
		+ '<li><a href="/hotels/cardiff_airport/index.shtml"'+tracking+'>Cardiff Airport Hotels</a></li>'
		+ '<li><a href="/hotels/doncaster_airport/index.shtml"'+tracking+'>Doncaster Airport Hotels</a></li>'
		+ '<li><a href="/hotels/durham_tees_airport/index.shtml"'+tracking+'>Durham Tees Airport Hotels</a></li>'
		+ '<li><a href="/hotels/east_midlands_airport/index.shtml"'+tracking+'>East Midlands Airport Hotels</a></li>'
		+ '<li><a href="/hotels/edinburgh_airport/index.shtml"'+tracking+'>Edinburgh Airport Hotels</a></li>'
		+ '<li><a href="/hotels/exeter_airport/index.shtml"'+tracking+'>Exeter Airport Hotels</a></li>'
		+ '<li><a href="/hotels/glasgow_airport/index.shtml"'+tracking+'>Glasgow Airport Hotels</a></li>'
		+ '<li><a href="/hotels/leeds_bradford_airport/index.shtml"'+tracking+'>Leeds Bradford Airport Hotels</a></li>'
		+ '<li><a href="/hotels/liverpool_airport/index.shtml"'+tracking+'>Liverpool Airport Hotels</a></li>'
		+ '<li><a href="/hotels/luton_airport/index.shtml"'+tracking+'>Luton Airport Hotels</a></li>'
		+ '<li><a href="/hotels/newcastle_airport/index.shtml"'+tracking+'>Newcastle Airport Hotels</a></li>'
		+ '<li><a href="/hotels/norwich_airport/index.shtml"'+tracking+'>Norwich Airport Hotels</a></li>'
		//+ '<li><a href="/hotels/prestwick_airport/index.shtml"'+tracking+'>Prestwick Airport Hotels</a></li>'
		+ '<li><a href="/hotels/southampton_airport/index.shtml"'+tracking+'>Southampton Airport Hotels</a></li>'
		+ '<li><a href="/hotels/southampton_port/index.shtml"'+tracking+'>Southampton Port Hotels</a></li>'
		+ '<li><a href="/hotels/southend_airport/index.shtml"'+tracking+'>Southend Airport Hotels</a></li>'
		+ '<li class="lastmenuitem"><a href="/hotels/stansted_airport/index.shtml"'+tracking+'>Stansted Airport Hotels</a></li>'
		+ '</ul></li></ul></li>';
	}
	if(prodL.charAt(3)){ //lounges
		myMenu += '<li><a href="/information/airport_lounges.shtml">Airport Lounges</a></li>';
	}
	var travelExtras = false;
	for(i = 7; i< 14; i++){ //determining if any travel extras are enabled
		if(i == 10) //ski
			continue;
		else
			if(prodL.charAt(i)){
				travelExtras = true;
				break;
			}
	}
	if(travelExtras){
		myMenu += '<li id="myMenu_bttn3"><a href="/travel_extras/index.shtml">Travel Extras</a>'
		+ '<ul style="display: none;" id="myMenu_bttn3_sub">';

		if (prodL.charAt(6)) {
			myMenu += '<li><a href="/travel_extras/travel_insurance.shtml">Travel Insurance</a></li>';
		}
		if (prodL.charAt(7)) {
			myMenu += '<li><a href="/travel_extras/car_hire/index.shtml">Car Hire</a></li>';
		}
		if (prodL.charAt(13)) {
			myMenu += '<li><a href="/travel_extras/my_travel_cash.shtml">My Travel Cash</a></li>';
		}
		if (prodL.charAt(11)) {
			myMenu += '<li><a href="/travel_extras/truphone.shtml">Truphone Local Anywhere</a></li>';
		}
		if (prodL.charAt(12)) {
			myMenu += '<li><a href="/travel_extras/streamthru.shtml">StreamThru Travel app</a></li>';
		} 
		/*if (prodL.charAt(9)) {
			myMenu += '<li><a href="http://airportparking.tsd-aff.com/tickets/slink.buy/s.us-florida_attractions/florida-attractions.html">Attraction Tickets</a></li>';
		}*/
		myMenu += '<li><a href="http://aph.resorthoppa.com/">Airport Transfers</a></li>';
		if (prodL.charAt(8)) {
		myMenu += '<li class="lastmenuitem"><a href="/travel_extras/airport_taxis.shtml">Holiday Taxis</a></li>';
		}
		myMenu += '</ul></li>';
	}
	
	
	/* News Item */
	myMenu += '<li id="myMenu_bttn4"><a href="/news/">APH News</a>'
	+ '<ul style="display: none;" id="myMenu_bttn4_sub">'
	+ '<li><a href="/news/knowbeforeyougo/">Know Before You Go</a></li>'
	+ '<li class="lastmenuitem"><a href="/news/Travel News">Travel News</a></li>'
	+ '</ul></li>'
	
	/* About Us */
	+ '<li><a href="/information/index.shtml">About Us</a></li>'
	
	/* Contact Us */
	+ '<li id="myMenu_bttn5"><a href="/information/contact_us.shtml">Contact Us</a>'
    + '<ul style="display: none;" id="myMenu_bttn5_sub">'
    + '<li><a href="/information/contact_us.shtml">Contact Us</a></li>'
    + '<li><a href="/directions.shtml">Car Park Directions</a></li>'
    + '<li><a href="/parking/faqs.shtml">Airport Parking FAQ\'s</a></li>'
    + '<li><a href="/hotels/airport_hotels_faqs.shtml">Airport Hotels FAQ\'s</a></li>'
    + '<li><a href="/information/general_faqs.shtml">General FAQ\'s</a></li>'
    + '<li><a href="/affiliates/affiliates.shtml">Become An Affiliate</a></li>'
    + '<li><a href="http://www.parking-quote.co.uk/agent/aphagent.asp">Travel Trade</a></li>'
    + '</ul></li>'
	
	/* Manage My Booking */
	+ '<li class="mmb"><a href="https://www.parking-quote.co.uk/aphmyb/amendvalidate.aspx?agent='+ acode +'" onclick="_gaq.push([\'_trackEvent\', \'MMB\', \'Clicked\', \'MMB menu button clicked\']);">Manage My Booking</a></li>'
	
	/* End */
	+ '</ul>';
	return myMenu;
}

APHScriptLibrary.RotateScrapers = function(){
    var offer = document.getElementById(this.ScrapersID);
    if(offer != null){
        this.ScraperIndex = (this.ScraperIndex==this.ScraperImages.length-1) ? -1 : this.ScraperIndex;
        this.ScraperIndex++;
        while(offer.hasChildNodes()){
            offer.removeChild(offer.firstChild);
        }
        offer.appendChild(this.ScraperImages[this.ScraperIndex]);
        var ths = this;
        this.ScraperTimer = setTimeout(function(){
			ths.RotateScrapers();
		}, this.ScraperRotateSpeed);
    }
}

APHScriptLibrary.PaTPopup = function(which){
	var loc;
	var WinName;
	switch(which){
		case 2:
			loc = "/partners/terms/terms.shtml";
			WinName = "Terms and Conditions";
		case 1:
			loc = "/norobots/privacy-policy_noframe.htm";
			WinName = "Privacy Policy";
			break;
		case 0:
			loc = (APHScriptLibrary.AgentCode.toUpperCase() == "APH" || APHScriptLibrary.AgentCode == "")? "/norobots/t_and_c_noframe.htm":"/partners/terms/terms.shtml";
			WinName = "Terms and Conditions";
			break;
		default:
			loc = "/norobots/ourratings.shtml";
			WinName = "About Our Ratings";
			break;
	}
	var locStr = "http://www.aph.com"+loc;
	if(this.PaTPopupWin == null){
		this.PaTPopupWin = window.open(locStr, "", "status = 1, height = 600, width = 800, resizable = 0, fullscreen = 0, scrollbars = 1");
	}else{
		try{
			this.PaTPopupWin.location = locStr;
		}catch(e){
			this.PaTPopupWin = window.open(locStr, "", "status = 1, height = 600, width = 800, resizable = 0, fullscreen = 0, scrollbars = 1");
		}
		this.PaTPopupWin.focus();
	}
}

var PaTPopup = APHScriptLibrary.PaTPopup;

APHScriptLibrary.InsertScrapers = function(){
	/* Orig got xml file from /partners/agentCode.xml and parsed it to get
	the images per agent code. Now we just load the standard 3	
	*/
	var defaultImg = document.createElement("IMG");
	defaultImg.style["border"] = "none 0pt";
	defaultImg.style["width"] = "166px";
	defaultImg.style["height"] = "234px";
	defaultImg.alt = "APH Special Offer";		
			
	var defaultAImg = defaultImg.cloneNode(true);
	defaultAImg.src = "/images/banners/default_offer1.gif";
	
	var defaultBImg = defaultImg.cloneNode(true);
	defaultBImg.src = "/images/banners/default_offer2.gif";
	
	var defaultCImg = defaultImg.cloneNode(true);
	defaultCImg.src = "/images/banners/default_offer3.gif";
	
	var defaultALnk = document.createElement("A");
	defaultALnk.href = "/travel_extras/car_hire/index.shtml";
	
	var defaultBLnk = document.createElement("A");
	defaultBLnk.href = "/travel_extras/travel_insurance.shtml";
	
	var defaultCLnk = document.createElement("A");
	defaultCLnk.href = "/travel_extras/my_travel_cash.shtml";
	
    defaultALnk.appendChild(defaultAImg);
    defaultBLnk.appendChild(defaultBImg);
    defaultCLnk.appendChild(defaultCImg);
    
    this.ScraperImages.push(defaultALnk, defaultBLnk, defaultCLnk);
    this.RotateScrapers();
}

APHScriptLibrary.Headline = function(){
	if (this.AgentCode.toLowerCase() == "aph" || this.AgentCode.toLowerCase() == "hot10"){ 
		document.write("<span class='h1'>Airport Parking &amp; Hotels</span>");
	}
}

APHScriptLibrary.MoveHeadline = function(){
	var hline = document.getElementById("h-one2");
	var header = document.getElementById("header");
	if(hline == null || header == null)
		return;
	if(parseInt(this.ReadCookie("wb_offers")) != 1){
		if (this.AgentCode.toLowerCase() != "aph" && this.AgentCode.toLowerCase() != "hot10"){ 
			hline.parentNode.removeChild(hline);
		}else{
			var newHline = hline.cloneNode(true);
			header.insertBefore(newHline,header.firstChild);
			hline.parentNode.removeChild(hline);
			newHline.style.display = "block";
			newHline.setAttribute("id","h-one");
		}
	}else{
		hline.parentNode.removeChild(hline);
	}
}

APHScriptLibrary.EmptyHeadline = function(){
	if (this.AgentCode.toLowerCase() != "aph" && this.AgentCode.toLowerCase() != "hot10"){ 
		var h1 = document.getElementById("h-one");
		if(h1 != null && h1.hasChildNodes()){
			h1.removeChild(h1.firstChild);
		}
	}
}

APHScriptLibrary.CheckAirport = function(apId){
	if (!(document.getElementById(apId).value != ""))
	{
	alert('Please select an airport');
	return false;
	}
	else
	return true;	
}

APHScriptLibrary.GoogleCrossDomainConverter = function(formobj, formtype) {
	try {
		if (this.CheckAirport(formobj.ap.id) === false)
			return false;

		// THE FOLLOWING SETTINGS OVERRULE ALL SETTINGS REGARDING THE TEMPLATES 
		// group codes in the folloing array will be sent to ParkMan
		var parkman_groups = ['PP'];

		// code in the folling array or the on retrieved by ajax from the CSV file will be sent to ParkMan
		/* var pman_array_ajax = this.newAjax("POST","/admin/mainadmin/parkman/parkman_codes.csv");
		pman_array_ajax.send(false);
		s = pman_array_ajax.status;
		var parkman_array;
		if(s == 200 || s == 304){
		parkman_array = pman_array_ajax.responseText.split(",");
		}else{
		parkman_array = ['ASDA','APH','ASDAE','ASDAR','ASDAF','25OFF','ASALE','EDISC','EM06A','EM06B','EM06C','EM06D','EM06E','EM06F','ENEWS','EPARK','EXPEM','EZINE','FWCS1','FWCS2','FWCS3','FWCS4','KISS','KRING','MATAL','SALE','THKS','WBWEB','WCOME','CHAN2','HOT10','AFU'];
		}//*/

		// codes in the folloing array will be using agentcode for tmp, other will default to epark
		var tmp_exceptions = ['APH', 'AFU', 'ASDAE', 'ASDAR', 'ASDAF'];

		// codes in the folloing array will be using agentcode for tmp, other will default to disc
		var disc_exceptions = ['FRESH','ASDA', 'ASDAE', 'ASDAR', 'ASDAF'];

		var agentcode = formobj.agent.value || this.AgentCode;
		var tmp = formobj.tmp.value;
		if (!tmp)
			tmp = this.ReadCookie('tmp');
		if (this.ReadCookie('dep') != null && this.ReadCookie('dep').toUpperCase() == "CH") {
			if (!tmp)
				tmp = "disc";
		} else {
			if (!tmp) {
				if (agentcode.toLowerCase() == "aph") {
					tmp = "aph";
				} else {
					tmp = "epark";
				}
			}
		}

		var agentgroup = this.ReadCookie('group') || "";
		var querystr = "";
		var ur = "";
		if (formobj.ur != null) {
			ur = formobj.ur.value;
		}

		//if agent group is pp, or is aph agentcode default to normal engine
		var dest = (parkman_groups.InArray(agentgroup.toUpperCase()) || agentcode.toLowerCase() == "aph") ? this.ParkmanURL : this.PartnersURL;

		switch (formtype) {
			// hotels 
			case 'hotel':
				if(tmp_exceptions.InArray(agentcode.toUpperCase()))
				tmp = agentcode;
				if(disc_exceptions.InArray(agentcode.toUpperCase()))
				tmp = "disc";

				var ddd = formobj.ddd.value;
				var ddm = formobj.ddm.value;
				var ddy = formobj.ddy.value;
				var zn = formobj.zn.value;
				var pkg_ro = "";
				if (zn.toUpperCase() == "PKG") {
					var rdd = formobj.rdd.value;
					var rdm = formobj.rdm.value;
					var rdy = formobj.rdy.value;
					pkg_ro = '&rdd=' + rdd + '&rdm=' + rdm + '&rdy=' + rdy;
				}
				var airport = formobj.ap.value;
				var zn = formobj.zn.value;
				if (formobj.prod)
					var prod = formobj.prod.value;
				querystr = dest + '?agent=' + agentcode + '&tmp=' + tmp + '&ddd=' + ddd + '&ddm=' + ddm + '&ddy=' + ddy + pkg_ro + '&ap=' + airport + '&zn=' + zn + "&p=h";
				if (prod)
					querystr += '&prod=' + prod;
				break;

			// parking     
			case 'parking':
				if(tmp_exceptions.InArray(agentcode.toUpperCase()))
				tmp = agentcode;
				if(disc_exceptions.InArray(agentcode.toUpperCase()))
				tmp = agentcode;

				var ddd = formobj.ddd.value;
				var ddm = formobj.ddm.value;
				var ddy = formobj.ddy.value;
				var dth = formobj.dtime.value.substr(0, 2);
				var dtm = formobj.dtime.value.substr(2, 2);
				var rdd = formobj.rdd.value;
				var rdm = formobj.rdm.value;
				var rdy = formobj.rdy.value;
				var rth = formobj.rtime.value.substr(0, 2);
				var rtm = formobj.rtime.value.substr(2, 2);
				var airport = formobj.ap.value;
				if (formobj.cp)
					var cp = formobj.cp.value;
				var px = formobj.px.value;
				querystr = dest + '?agent=' + agentcode + '&tmp=' + tmp + '&ddd=' + ddd + '&ddm=' + ddm + '&ddy=' + ddy + '&dth=' + dth + '&dtm=' + dtm + '&rdd=' + rdd + '&rdm=' + rdm + '&rdy=' + rdy + '&rth=' + rth + '&rtm=' + rtm + '&ap=' + airport + '&px=' + px + "&p=p";
				if (cp)
					querystr += '&cp=' + cp;
				break;

			// lounge 
			case 'lounge':
				if(tmp_exceptions.InArray(agentcode.toUpperCase()))
				tmp = agentcode;
				if(disc_exceptions.InArray(agentcode.toUpperCase()))
				tmp = "disc";

				var ddd = formobj.ddd.value;
				var ddm = isNaN(parseInt(formobj.ddm.value)) ? formobj.ddm.value : APHScriptLibrary.MonthNames[formobj.ddm.value - 1].Short;
				var ddy = formobj.ddy.value;
				var t = formobj.dtime.value;
				var ad = formobj.ad.value;
				var ch = formobj.ch.value;
				var inf = 0;
				var airport = formobj.ap.value;
				querystr = dest + '?agent=' + agentcode + '&tmp=' + tmp + '&d=' + ddd + '&m=' + ddm + '&y=' + ddy + '&t=' + t + '&ad=' + ad + '&ch=' + ch + '&in=' + inf + '&ap=' + airport + "&p=l";
				break;
			default:
				alert("I'm sorry, we cannot retrieve a quote for you at this time, please try again later.");
				return false;
		}
		if (querystr != "") {
			querystr += "&googletr=true";
			if (ur != "") {
				querystr += "&ur=" + ur;
			}
			window[this.GoogleTrackingVariableName].push(["_link", querystr]);
		}
		return false;
	} catch (ex) {
		alert("I'm sorry, we cannot retrieve a quote for you at this time, please try again later.");
		return false;
	}
}

APHScriptLibrary.UpdateBookmarkURL = function(){
	var b_b = document.getElementById("bookmark_button");
	if(b_b != null){
		b_b.setAttribute("addthis:title","APH - Airport Parking and Hotels");
		var e_b = document.getElementById("addthis_email_button");
		e_b.setAttribute("addthis:title","APH - Airport Parking and Hotels");
		var client = this.ReadCookie("page");
		var book_url = window.location;
		book_url = String(book_url);
		if(client && client.toUpperCase() != "APH"){
			if(book_url.match(/\.aph\.com\/$/i)){
				b_b.setAttribute("addthis:url",book_url+client);
				e_b.setAttribute("addthis:url",book_url+client);
			}else{
				b_b.setAttribute("addthis:url",book_url+"?ref="+client);
				e_b.setAttribute("addthis:url",book_url+"?ref="+client);
			}
		}else{
			b_b.setAttribute("addthis:url",book_url);
			e_b.setAttribute("addthis:url",book_url);
		}
	}
}

APHScriptLibrary.CodespStyle = function(){
	var lastActivity = this.ReadCookie("lastActivity");
	if(lastActivity != null){
		var lastActivityDate = new Date(decodeURIComponent(lastActivity));
		if((new Date() - lastActivityDate) > (this.LastActivityDifference * 60 * 1000)){
			for(var c = 0; c < this.AgentCookies.length; c++){
				if(this.ReadCookie(this.AgentCookies[c]) != null){
					this.SetCookie(this.AgentCookies[c], "", -1);
				}
			}
			return;
		}
	   	var head = document.getElementsByTagName("HEAD")[0];
		if(this.ReadCookie("wb_offers") != null && parseInt(this.ReadCookie("wb_offers")) == 1){
	   		var offersStyle = document.createElement("LINK");
	   		offersStyle.href = "/stylesheet/offers.css";
	   		offersStyle.type = "text/CSS";
			offersStyle.rel = "stylesheet";
			offersStyle.media = "all";
			head.appendChild(offersStyle);
		   	return;	
	   	}
    	if(this.AgentCode != "aph"){
    		/*var script = document.createElement("SCRIPT");
    		script.type = "text/Javascript";
    		script.src = "/javascript/homeonly.js";
    		head.appendChild(script);*/
	    	var cssFile = "../stylesheet/codespec/"+this.AgentCode+".css";
	    	if(this.CSSCodes.InArray(this.AgentCode)){
	    		var cssFile = "/stylesheet/codespec/"+this.AgentCode+".css"
	    		var css = document.createElement("LINK");
				css.type = "text/CSS";
				css.rel = "stylesheet";
				css.media = "all";
				css.href = cssFile;
				head.appendChild(css);
	    	}
    	}
	}
}

APHScriptLibrary.CodespContent = function(){		
	// banners
	var banner = this.ReadCookie("banner");
	var html = this.ReadCookie("html");
	var channel = this.ReadCookie("dep");
	var banner_div = document.getElementById('top_banner');
	var insert;
	var hotel = this.SearchProdLib('hotel');
	
	if(parseInt(this.ReadCookie("wb_offers")) != 1){
		if (hotel == 1 && this.AgentCode.toLowerCase() != "aph") {
			insert = "<img src=\"/images/banners/blank_hotel.png\" alt=\"APH - Airport Parking Experts\" height=\"121\" width=\"650\" style=\"border:0\" usemap=\"#default_banner2219bc\" /><map name=\"default_banner2219bc\" id=\"default_banner2219bc\"><area title=\"Airport Hotels\" shape=\"rect\" coords=\"421,12,624,98\" href=\"/hotels/featured_airport_hotels.shtml\" alt=\"Airport Parking and Hotel Packages\"/></map>";
		}
		if ((html)&&(banner == 1) && this.AgentCode.toLowerCase() != "aph"){
			var html_decoded = html.URLdecode();
			insert = "<div style=\"margin-top:0px; width: 400px; position: absolute; top: 10px; left: 10px;font-size:14px\">" + html_decoded + "</div>";
		}
		if (insert)
			banner_div.innerHTML = insert;	
	}else{
		if(document.getElementById("h-one"))
			document.getElementById("h-one").style.display = "none";
		while(banner_div.hasChildNodes()){
			banner_div.removeChild(banner_div.firstChild);	
		}
	}
		
	if(this.AgentCode.toLowerCase() != "aph" && channel != null && channel.toUpperCase() == "CH"){
		document.getElementById("APHLogo").src = "/images/frame/aph_logo_chan.png";
		if(document.getElementById("wb_form"))
			document.getElementById("wb_form").style.display = "none";
	}
	
	// do ddi
	var ddi = this.ReadCookie("ddi");
	
	var ddispan = document.getElementById('ddi');
	if (ddi != null && ddispan != null)
	{
		var ddiDecoded = ddi.URLdecode();
		try
		{
		ddispan.firstChild.replaceWholeText(ddiDecoded);
		}
		catch(err)
		{
		ddispan.innerHTML = ddiDecoded;
		}
	}
	
	// top 10		
	var topTenDiv = document.getElementById('toptenimg');
	if(topTenDiv){
		var imageOrder = [
			"/images/codespec/banners/"+this.AgentCode+"_topten.gif",
			"/images/codespec/banners/"+this.AgentCode+"_topten.jpg",
			"/images/banners/default_topten.png",
			"/images/banners/default_topten.jpg"
		];
		for(var i = 0; i < imageOrder.length; ){
			var topTenImg = new Image();
			topTenImg.src = imageOrder[i];
			topTenImg.onLoad = new function(){
				if(!this.CheckImage(topTenImg)){
					i++;
				}else{
					topTenDiv.src = imageOrder[i];
					i = imageOrder.length;
				}
			}
		}
	}
	var dep = this.ReadCookie("dep");
	if(this.AgentCode.toLowerCase() == "aph" || dep != null && dep == "CH"){
		var prodL = this.ReadCookie("prodl");
		if(this.AgentCode.toLowerCase() != "aph" && prodL != null){
			prodL = parseInt(prodL).toString(2).reverse();
			var supress = [];
			for(var i = 0; i < this.ProductArray.length; i++){
				if(prodL.charAt(i) == 0){
					supress.push(this.ProductArray[i]);
				}
			}
			this.RemoveProducts(supress);		
			this.InsertGoogleTracking();
			return supress;
		}else{
			this.InsertGoogleTracking();
			return null;
		}
	}
	this.InsertGoogleTracking();
}

APHScriptLibrary.UpdateLastActivity = function(timer, timeout){
	this.SetCookie("lastActivity", new Date().toUTCString());
	var ths = this;
	window[timer] = setTimeout(function(){
		ths.UpdateLastActivity(timer, timeout);
	}, timeout*1000*60);
}

APHScriptLibrary.ApplyContext = function(context, func) {  
	return function() {  
		func.apply(context, arguments);  
	};  
} 

APHScriptLibrary.StartUp();

// Google Analytics functions
// This function is for stripping leading and trailing spaces 
	function trim(str) {  
	    if (str != null) { 
	        var i;  
	        for (i=0; i<str.length; i++) { 
	            if (str.charAt(i)!=" ") { 
	                str=str.substring(i,str.length);  
	                break; 
	            }  
	        }  
	     
	        for (i=str.length-1; i>=0; i--) { 
	            if (str.charAt(i)!=" ") { 
	                str=str.substring(0,i+1);  
	                break; 
	            }  
	        }  
	         
	        if (str.charAt(0)==" ") { 
	            return "";  
	        } else { 
	            return str;  
	        } 
	    } 
	}
	     
	function RetrieveCookies(formID)
	{
	    // retrieve cookies and feed values into hidden inputs
	  	var keyValuePairs = document.cookie.split(';'); 
		for(var i = 0; i < keyValuePairs.length; i++) { 
		    var name = trim(keyValuePairs[i].substring(0, keyValuePairs[i].indexOf('='))); 
		    var value = trim(keyValuePairs[i].substring(keyValuePairs[i].indexOf('=')+1)); 

		    var inputTag = document.createElement('input');
		    inputTag.setAttribute('type', 'hidden');
		    inputTag.setAttribute('name', name);
		    inputTag.setAttribute('value', value);
		    document.getElementById(formID).appendChild(inputTag);
			} 	
		return true;	  
	  }

	  function GetKeyValues(formID)
	  {
		var mobile = $.browser.mobile;
	  	var outputStr = '';
	  	var formObj = document.getElementById(formID);
	  	var inputs = formObj.getElementsByTagName('input')
	  	for (var i = 0; i < inputs.length; i++)
	  	{
	  		var tag = inputs[i];
	  		if (typeof(tag.name) != "undefined" && typeof(tag.value) != "undefined")
	  		{
				if (mobile && (tag.name=='tmp'))
				outputStr += '';
				else
				{
					outputStr += tag.name + "=" + tag.value; 
					outputStr += "&";
				}
	  		}
	  	}
	  	var selects = document.getElementsByTagName('select')
	  	for (var i = 0; i < selects.length; i++)
	  	{
	  		var tag = selects[i];
	  		if (typeof(tag.name) != "undefined" && typeof(tag.value) != "undefined")
	  		{
		  		outputStr += tag.name + "=" + tag.value; 
		  		outputStr += "&";
	  		}
	  	}	  
		var querystring = "?" + outputStr.substr(0,outputStr.length-1);
		var test = querystring;
	  	return querystring;
	  }
		
	  function ConvertTimes()
	  {
 	  	if (document.getElementById('dtime') != null)
	  	{
			if  ((document.getElementById('dth') != null) && (document.getElementById('dtm') != null))
			{
				var dtime = document.getElementById('dtime').value; 
				document.getElementById('dth').value = dtime.substr(0,2);
				document.getElementById('dtm').value = dtime.substr(2);
			}
			else
			{
				var dtime = document.getElementById('dtime').value; 
				var parentObj = document.getElementById('dtime').parentNode;
				var dth = document.createElement('input');
				var dtm = document.createElement('input');
				parentObj.appendChild(dth); parentObj.appendChild(dtm);
				dth.type = 'hidden'; dtm.type = 'hidden'; 
				dth.name = 'dth'; dtm.name = 'dtm';
				dth.value = dtime.substr(0,2); dtm.value =  dtime.substr(2);
			}
	  	}	
	  	if (document.getElementById('rtime') != null)
	  	{
			if ((document.getElementById('rth') != null) && (document.getElementById('rtm') != null))
			{
				var rtime = document.getElementById('rtime').value; 
				document.getElementById('rth').value = rtime.substr(0,2);
				document.getElementById('rtm').value = rtime.substr(2);
			}
			else
			{
				var rtime = document.getElementById('rtime').value;
				var parentObj = document.getElementById('rtime').parentNode;
				var rth = document.createElement('input');
				var rtm = document.createElement('input');
				parentObj.appendChild(rth); parentObj.appendChild(rtm);
				rth.type = 'hidden'; rtm.type = 'hidden';
				rth.name = 'rth'; rtm.name = 'rtm';
				rth.value = rtime.substr(0,2); rtm.value = rtime.substr(2);				
			}			
	  	}	
	  	if (document.getElementById('ddate') != null)
	  	{
	  		if (document.getElementById('p') != null)
	  		{
	  			var prod = document.getElementById('p').value;
	  			if (prod == "l")
	  			{
			  		var dateArray = document.getElementById('ddate').value.split("/");
			  		var parentObj = document.getElementById('ddate').parentNode;
					var d = document.createElement('input');
					var m = document.createElement('input');
					var y = document.createElement('input');
				
					parentObj.appendChild(d); parentObj.appendChild(m); parentObj.appendChild(y);
					d.type = 'hidden'; m.type = 'hidden'; y.type = 'hidden';
					d.name = 'd'; m.name = 'm'; y.name = 'y';
					d.value = dateArray[0]; m.value = dateArray[1]; y.value = dateArray[2];
				}
				if (prod == "p" || prod == "h")
				{
			  		var dateArray = document.getElementById('ddate').value.split("/");
			  		if (dateArray.length > 0)
			  		{
			  			var parentObj = document.getElementById('ddate').parentNode;
			  			var ddd = document.createElement('input');
			  			var ddm = document.createElement('input');
			  			var ddy = document.createElement('input');		
			  			parentObj.appendChild(ddd); parentObj.appendChild(ddm); parentObj.appendChild(ddy);	
						ddd.type = 'hidden'; ddm.type = 'hidden'; ddy.type = 'hidden';
						ddd.name = 'ddd'; ddm.name = 'ddm'; ddy.name = 'ddy';
						ddd.value = dateArray[0]; ddm.value = dateArray[1]; ddy.value = dateArray[2];			  			  						  						  			
			  		}					
				}
			}
	  	}	
	  	if (document.getElementById('rdate') != null)
	  	{
	  		if (document.getElementById('p') != null)
	  		{
	  			var prod = document.getElementById('p').value;
				if (prod == "p" || prod == "h")
				{
			  		var dateArray = document.getElementById('rdate').value.split("/");
			  		if (dateArray.length > 0)
			  		{
			  			var parentObj = document.getElementById('rdate').parentNode;
			  			var rdd = document.createElement('input');
			  			var rdm = document.createElement('input');
			  			var rdy = document.createElement('input');		
			  			parentObj.appendChild(rdd); parentObj.appendChild(rdm); parentObj.appendChild(rdy);	
						rdd.type = 'hidden'; rdm.type = 'hidden'; rdy.type = 'hidden';
						rdd.name = 'rdd'; rdm.name = 'rdm'; rdy.name = 'rdy';
						rdd.value = dateArray[0]; rdm.value = dateArray[1]; rdy.value = dateArray[2];			  			  						  						  			
			  		}					
				}
			}
	  	}		  	  	 	
	}

	function SetTMP(formID)
	{
	  	if (document.getElementById(formID).tmp != null)
	  	{
			var pageUrl = window.location + "";
			var partnerPttrn = /aph.com\/partners\//gi; 
			var offersPttrn = /aph.com\/offers\//gi; 
			var tmp = document.getElementById(formID).tmp.value;
			
			if (APHScriptLibrary.ReadCookie('dep') != null)
			{
				if (APHScriptLibrary.ReadCookie('dep') == 'CH')
				{
					if (tmp != "afu" && tmp != "afw")
					document.getElementById(formID).tmp.value = 'disc';
				}
				if (APHScriptLibrary.ReadCookie('dep') == 'WB') 
					document.getElementById(formID).tmp.value = 'epark';
		    }
			else
			{
				if (pageUrl.match(partnerPttrn)!=null)
				{
					if (tmp != "afu" && tmp != "afw")				
					document.getElementById(formID).tmp.value = 'disc';
				}
				if (pageUrl.match(offersPttrn)!=null)
					document.getElementById(formID).tmp.value = 'epark';			
			}
			if (APHScriptLibrary.ReadCookie('group') != null)	
			{
				if (APHScriptLibrary.ReadCookie('group') == 'PP')
					document.getElementById(formID).tmp.value = 'aph';
			}
		}
	}	
	
	function sleep(ms)
	{
		var dt = new Date();
		dt.setTime(dt.getTime() + ms);
		while (new Date().getTime() < dt.getTime());
	}

	
	function GoogleLink(obj)
	{
		//var mobile = $.browser.mobile;
		var prodType = $('input[name=p]').val();
		
		//jQuery.preLoadImages("ajax-loader.gif", "/images/home/ajax-loader.gif");
		// register goal
		/*
		if (typeof(GWO)=='object')
		{
			if (GWO.isOn && GWO.expID!=null)
			GWO.GoalTrigger(); 
		}	
		*/
  		var pageUrl = window.location + "";
  		var partnerPttrn = /aph.com\/partners\//gi;
	  
	  	//var pman = 'http://95.177.31.36/basket/aphbook.ASP';
	  	var pman = 'http://booking.aph.com/aph/aphbook.asp';
		//if ( mobile && (prodType == 'p') )
		//	pman = 'http://booking.aph.com/aphmobile/';
		ConvertTimes();
		SetTMP(obj.id);
		
		var dep = APHScriptLibrary.ReadCookie('dep');
		
		if (dep=="CH" || (pageUrl.match(partnerPttrn)!=null))
			pman = 'http://www.parking-quote.co.uk/aphdiscount/aphbook.ASP';
		
		var QueryString = pman + GetKeyValues(obj.id); 
		if (SilverPop.PassVars() != null) 
			QueryString += SilverPop.PassVars();
		QueryString += "&linkByPost=true";
		
		//return true; // <- uncomment for temporary override for _linkByPost. _linkByPost died on 04/08/2011 ~16:00
		
		// call to Google _linkByPost
		if ( mobile && (prodType == 'p') )
			_gaq.push(['_trackEvent', 'Mobile', 'Clickthrough', 'Mobile quote']);
		else
			_gaq.push(['_trackEvent', 'Non-mobile', 'Clickthrough', 'Non-mobile quote']);
		_gaq.push(['_link', QueryString]);

		// if Google has not redirected within 5 secs it returns to the form
		setTimeout("return true",3000);		
		Loading(); 
		return false;
	}
	
	function wait(ms)
	{
		var dt = new Date();
		dt.setTime(dt.getTime() + ms);
		while (new Date().getTime() < dt.getTime());
	}
	function GetVar(name) {
							url = window.location.search.substring(1);
							vars = url.split("&");
							for (i = 0; i < vars.length; i++) 
							{
								namevalue = vars[i].split("=");
								if (namevalue[0] == name) 
								{
									return namevalue[1];
								}
							}
	}			
	
var SilverPop = {

	SilverPopVars:	function() {
	
						var spVars = {
							spMailingID: 	GetVar('spMailingID'),
							spUserID:		GetVar('spUserID'),
							spJobID:		GetVar('spJobID'),
							spReportID:		GetVar('spReportID')
						};
						
						if ( spVars.spMailingID != null )
							this.SessionRegister('spMailingID', spVars.spMailingID);
						else
							if ( this.ReadSession('spMailingID') != null )
								spVars.spMailingID = this.ReadSession('spMailingID');
					
						if ( spVars.spUserID != null )
							this.SessionRegister('spUserID', spVars.spUserID);
						else
							if ( this.ReadSession('spUserID') != null )
								spVars.spUserID = this.ReadSession('spUserID');	
						
						if ( spVars.spJobID != null )
							this.SessionRegister('spJobID', spVars.spJobID);
						else
							if ( this.ReadSession('spJobID') != null )
								spVars.spJobID = this.ReadSession('spJobID');	
								
						if ( spVars.spReportID != null )
							this.SessionRegister('spReportID', spVars.spReportID);
						else
							if ( this.ReadSession('spReportID') != null )
								spVars.spReportID = this.ReadSession('spReportID');
								
						return spVars;
	},
	PassVars:		function() {
						var spVars = this.SilverPopVars();
						if ( typeof(spVars.spMailingID) != "undefined" )
						return "&spMailingID=" + spVars.spMailingID + "&spUserID=" + spVars.spUserID + "&spJobID=" + spVars.spJobID + "&spReportID=" + spVars.spReportID;
						else 
						return null;
	},
	SessionRegister:function(name,value) {
						
						var date = new Date();
						date.setTime(date.getTime()+(1*24*60*60*1000));
						var expires = "; expires="+date.toGMTString();
		
						if (value!="" && name!="") {
							document.cookie = name + "=" + escape( value ) + ( ( expires ) ? expires : "" ) + "; domain=.aph.com; path=/"; 
							return true;
						}else{ 
							return false;
						}
	},
	ReadSession:	function(name) {
						
						var nameEQ = name + "=";
						var ca = document.cookie.split(';');
						for(var i=0;i < ca.length;i++) {
							var c = ca[i];
							while (c.charAt(0)==' '){
								c = c.substring(1,c.length);
							}
							if (c.indexOf(nameEQ) == 0){
								//alert("Cookie" + c.substring(nameEQ.length,c.length));
								return c.substring(nameEQ.length, c.length);
							}
						}
						return null;						
	},
	ClickStream:	function(pagename, url) {	
	
						var spVars = this.SilverPopVars();
						
						if ( ( spVars.spMailingID != null ) && ( spVars.spUserID != null ) && ( spVars.spJobID != null ) )
						{
							var servlet_loc = "http://sdm3.rm04.net/";   //POD1             
							var servlet = "cst";
							var name = pagename;
							var siteURL = url;
							var servlet_call = servlet_loc + servlet + "?m=" + spVars.spMailingID + "&r=" + spVars.spUserID + "&j=" + spVars.spJobID + "&name=" + name + "&s=" + siteURL;
							var $img = $('<img src="' + servlet_call + '" width="1" height="1">');
							
							$(document).ready( function() {
								$('body').append($img);
							});
						}
	}						
}

/*/ preloader
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)
*/
jQuery.fn.center = function () {
    this.css({'position':'absolute'});
    this.css("top", (($(window).height() - this.outerHeight()) / 2) + $(window).scrollTop() + "px");
    this.css("left", (($(window).width() - this.outerWidth()) / 2) + $(window).scrollLeft() + "px");
    return this;
}

function Loading() {
	$('body').append('<div id="grayout">');
	$('#grayout').css({'position':'absolute','z-index':'98','left':'0px','top':'0px','width':'100%','height':'100pc','background-color':'#ffffff','filter':'alpha(opacity=50)','opacity':'0.5'}); 
	$('body').append('<div id="loading" style="width:500px; height:444px">');
	$('#loading').center();
	$('#loading').css({'z-index':'99'});
	$('#loading').append('<img src="/images/home/ajax-loader.gif">');
}

var pageUrl = window.location + "";
var pattern = /www.aph.com\/$/gi;
if (pageUrl.match(pattern)!=null) // filters for home page only
{
	var ref = APHScriptLibrary.ReadCookie('ref');
	var mobile = $.browser.mobile;
	if ( mobile && !ref)
		location.href = 'http://booking.aph.com/aphmobile/';
}
