var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	]

};

var SubNavOptions =
{
	checkMousePosition : function(evt, button)
	{
		evt = (evt) ? evt : window.event;
		var subnavTop = 0;
		var mousePos = this.actualPosition(evt);
		var oldWrapper = document.getElementById('topsubnavwrapper');
		var wrapper = document.getElementById('topsubnavwrapper');

		if(wrapper.offsetParent)
		{
			do
			{
				subnavTop += wrapper.offsetTop
			} while(wrapper = wrapper.offsetParent);
		}
		if(mousePos[1] < subnavTop) oldWrapper.style.display = 'none';
	},

	actualPosition : function(evt)
	{
		evt = (evt) ? evt : window.event;
		var pos = Array();
		pos[0] = 0;
		pos[1] = 0;
		if(evt.pageX || evt.pageY)
		{
			pos[0] = evt.pageX;
			pos[1] = evt.pageY;
		}
		else if(evt.clientX || evt.clientY)
		{
			pos[0] = (evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft);
			pos[1] = (evt.clientY + document.body.scrollTop + document.documentElement.scrollTop);
		}
		return pos;
	},

	disableFade : typeof(navigator) != "undefined" && navigator.appVersion.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("Firefox/2") >= 0,

	showSubnav : function(evt){
		evt = (evt) ? evt : window.event;
		var showNav = true;
		if(document.getElementById('large') && document.getElementById('large').style.top > 0)
		{
			showNav = false;
		}
		var wrapper = document.getElementById('topsubnavwrapper');
		if(document.all) wrapper.style.height = '260px';

		if(document.body.clientWidth)
		{
			var leftPos = Math.floor(document.body.clientWidth / 2) - 464;
		}
		else if(window.innerWidth)
		{
			var leftPos = Math.floor(window.innerWidth / 2) - 464;
		}

		wrapper.style.left = leftPos + "px";

		if(wrapper.style.display == 'none' && showNav) wrapper.style.display = 'block';
	},

	hideSubnav : function(wrapper, evt)
	{
		evt = (evt) ? evt : window.event;
		var subNavTop = 0;
		var subNavLeft = 0;
		var subNavWidth = 594;
		var subNavHeight = 240;
		var mousePosition = this.actualPosition(evt);
		var originalWrapper = wrapper;
		if(wrapper.offsetParent)
		{
			do
			{
				subNavTop += wrapper.offsetTop;
				subNavLeft += wrapper.offsetLeft;
			} while(wrapper = wrapper.offsetParent);
		}
		else
		{
			subNavTop += wrapper.x;
			subNavLeft += wrapper.y;
		}
		if(mousePosition[0] < subNavLeft) originalWrapper.style.display = 'none';
		if(mousePosition[0] > (subNavLeft + subNavWidth)) originalWrapper.style.display = 'none';
		if(mousePosition[1] > (subNavTop + subNavHeight)) originalWrapper.style.display = 'none';
		if(mousePosition[1] < subNavTop) originalWrapper.style.display = 'none';
	}
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};


function quitspan(){
	var isIE = (navigator.appName.indexOf("Microsoft Internet Explorer")!=-1);
	if (document.all && isIE){
		document.all.loadcoat.style.display="none";
	}
}

function popatt(num1,num2) { tele = window.open("/cgi-bin/londonpass/attraction.pl?Attraction_Id="+num1+"&Category_Id="+num2, "Specifics", "height=460,width=600,scrollbars=yes");}
function popconditions() { tele = window.open("../../londonpass/conditions.htm", "", "height=550,width=520,scrollbars=yes,resizable=yes");}
function popfaq() { tele = window.open("/faq/", "", "height=550,width=550,scrollbars=yes,resizable=yes");}

function openWindow(theURL,winName,features) {
	self.name = "main";
	window.open(theURL,winName,features);
}

function showRestOfWorld()
{
	var popupHeight = 550;
	var popupCentreLeft = (screen.width / 2) - 300;
	var popupCentreTop = (screen.height / 2) - 195;
	openWindow('/hotels/about0800LONDON/index.phtml?showCallback=yes', 'About0800LONDON', 'scrollbars=no,width=398,height=' + popupHeight + ',screenX='+popupCentreLeft+',screenY='+popupCentreTop);
}

/* Search for LT search / oct2009 */
var Search = {
	Submit : function(inputId){
		var input = document.getElementById(inputId);
		var host = window.location.hostname;
		var redirectTo = "";
		if (window.location.hostname == "secure.londontown.com"){redirectTo = "http://www.londontown.com";}
		if(input && input.value != '' && input.value != 'Search' ) location.href = redirectTo+"/Search/Full/" + input.value + "/";
		return false;
	},
	KeyWasPressed : function(e,inputId){
		if (!e) e = (e) ? e : window.event;
		var coder = (e.which) ? e.which : e.keyCode;
		if ( coder == 13) this.Submit(inputId);
	}
}

/* pos finders, oct09 */
function findPosX(obj){
	var curleft = 0;
	if (obj.offsetParent){while (obj.offsetParent){curleft += obj.offsetLeft;obj = obj.offsetParent;}} else if (obj.x) curleft += obj.x;
	return curleft;
}
function findPosY(obj){
	var curtop = 0;
	if (obj.offsetParent){ while (obj.offsetParent) { curtop += obj.offsetTop; obj = obj.offsetParent; } } else if (obj.y) curtop += obj.y;
	return curtop;
}

function initialiseTime()
{
	updateTime();
	setInterval("updateTime()", 30000);
}

// Sets the time in the date bar (to UK time)
function updateTime()
{
	var dst = 0;
	var time = new Date();
	var gmtMS = time.getTime() + (time.getTimezoneOffset() * 60000);
	var gmtTime = new Date(gmtMS);
	var day = gmtTime.getDate();
	var month = gmtTime.getMonth();
	var year = gmtTime.getYear();
	if (year < 1000) year += 1900;
	var monthArray = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	var monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
	var allDays = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
	if (year%4 == 0) monthDays = new Array("31", "29", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
	if	(year%100 == 0 && year%400 != 0) monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
	var hr = gmtTime.getHours();
	var min = gmtTime.getMinutes();
	var sec = gmtTime.getSeconds();
	var dayIndex = gmtTime.getDay();

	if (hr >= 24)
	{
		hr -= 24;
		day++;
		dayIndex++;
	}

	if (hr < 0)
	{
		hr += 24;
		day--;
		dayIndex--;
	}

	if (hr < 10) hr = " " + hr;
	if (min < 10) min = "0" + min;
	if (sec < 10) sec = "0" + sec;


	if (day <= 0)
	{
		if (month == 0)
		{
			month = 11;
			year--;
		}
		else
		{
			month--;
		}

		day = monthDays[month];
	}

	if (day > monthDays[month])
	{
		day = 1;
		if (month == 11)
		{
			month = 0;
			year++;
		}
		else
		{
			month++;
		}
	}

	var startDST = new Date();
	var endDST = new Date();
	startDST.setMonth(2);
	startDST.setHours(1);
	startDST.setDate(31);
	var dayDST = startDST.getDay();
	startDST.setDate(31-dayDST);
	endDST.setMonth(9);
	endDST.setHours(0);
	endDST.setDate(31);
	dayDST = endDST.getDay();
	endDST.setDate(31-dayDST);
	var currentTime = new Date();
	currentTime.setMonth(month);
	currentTime.setYear(year);
	currentTime.setDate(day);
	currentTime.setHours(hr);

	if(currentTime >= startDST && currentTime < endDST)
	{
		dst = 1;
	}

	if (dst == 1)
	{
		hr++;
		if (hr >= 24)
		{
			hr -= 24;
			day++;
			dayIndex++;
		}

		if (hr < 10)
		{
			hr = " " + hr;
		}

		if (day > monthDays[month])
		{
			day = 1;
			if (month == 11)
			{
				month = 0;
				year++;
			}
			else
			{
				month++;
			}
		}
	}

	var daySuffix;
	switch (day)
	{
		case 1:
		case 21:
		case 31: daySuffix = "st"; break;
		case 2:
		case 22: daySuffix = "nd"; break;
		case 3:
		case 23: daySuffix = "rd"; break;
		default: daySuffix = "th"; break;
	}

	var greeting;

	if (hr < 12)
	{
		greeting = "Good&nbsp;Morning&nbsp;";
	}
	else if (hr < 18)
	{
		greeting = "Good&nbsp;Afternoon&nbsp;";
	}
	else
	{
		greeting = "Good&nbsp;Evening&nbsp;";
	}

	var ampm = "am";

	// 12 hour clock
	if (hr >= 12)
	{
		ampm = "pm";
	}

	if (hr > 12)
	{
		hr -= 12;
	}

	var dateString = allDays[dayIndex] + "&nbsp;" + day + daySuffix + "&nbsp;" + monthArray[month];
	var timeString = hr + ":" + min + "&nbsp;" + ampm;

	document.getElementById('textualwelcome').innerHTML = greeting;
	document.getElementById('textualdate').innerHTML = timeString;
	document.getElementById('textualtime').innerHTML = dateString;

	// Finally, check we're showing the correct banner image
	var headImage = document.getElementById('headerBar');

	if (headImage)
	{
		if (getCallCentreStatus() == "off")
		{
			// Should be off, do we have the correct image?
			if (headImage.src.search(/_off/) == -1)
			{
				// Nope, so set it
				headImage.src = "http://images.londontown.com/LTtemplates/new_site_design/images/londontown_header_off.jpg";
			}
		}
		else
		{
			// Should be on, do we have the correct image?
			if (headImage.src.search(/_off/) != -1)
			{
				// Nope, so set it
				headImage.src = "http://images.londontown.com/LTtemplates/new_site_design/images/londontown_header.jpg";
			}
		}
	}
}

function getCallCentreStatus()
{
	var status = "off";
	var today = new Date();

	// This is client side, so convert to english time
	var gmt = new Date();
	gmt.setTime(gmt.getTime() - (window.timeOffset * 3600000));

	var dayOfMonth = today.getDate();
	var month = today.getMonth() + 1;
	var dayOfWeek = today.getDay();
	var hour = today.getHours();

	if (month == 1 && dayOfMonth == 1)
	{
		// New year
		status = "off";
	}
	else if(month == 12 && (dayOfMonth == 25 || dayOfMonth == 26))
	{
		// Christmas day and boxing day
		status = "off";
	}
	else if(dayOfWeek == 0 || dayOfWeek == 6)
	{
		// A weekend, open 10am to 8pm
		if(hour >= 10 && hour < 20)
		{
			status = "on";
		}
	}
	else
	{
		// A weekday, open 8am to 10pm
		if(hour >= 8 && hour < 22)
		{
			status = "on";
		}
	}

	return status;
}

function recentlyViewedPopup(ref, content, width, e)
{
	e = (e ? e : window.event);
	var y = e.clientY + document.body.scrollTop;
	ref.interval = null;

	if (!ref.notice || ref.notice == null)
	{
		var y = e.clientY + document.body.scrollTop;
		var outerBox = document.createElement("div");
		outerBox.className = 'recentlyViewedPopup';
		outerBox.style.width = width;

		// Make sure the div is not under the mouse pointer or the onmouseout event will keep firing
		outerBox.style.left = e.clientX - 122;
		outerBox.style.top = y + 2;

		var innerBox = document.createElement("div");
		innerBox.className = 'recentlyViewedBoxInternal';

		var contentDiv = document.createElement("div");
		contentDiv.className = 'recentlyViewedText';
		contentDiv.innerHTML = content;
		innerBox.appendChild(contentDiv);

		outerBox.appendChild(innerBox);

		ref.notice = outerBox;
		document.body.appendChild(outerBox);
	}
}

function hideRecentlyViewedPopup(ref, e)
{
	e = (e ? e : window.event);

	var r = ref;
	ref.interval = setTimeout(
		function()
		{
			try { r.notice.parentNode.removeChild(r.notice); r.notice=null; } catch ( e ) {}
		},200);
}

if(document.URL == 'http://dev2/' || document.URL == 'http://dev2' || document.URL == 'http://www.londontown.com' || document.URL == 'http://www.londontown.com/')
{
	document.write("<IMG src='http://affiliates.londonmarketing.com/remote/clickimg.php?" + Math.random() + "' />");
}



var SendRightFeedback =
{
	sendDetails : function(){
		var usermail = document.getElementById('usermail').value;
		var username = document.getElementById('username').value;
		var message = document.getElementById('message').value;

		var url = "/LTtemplates/new_site_design/php/FeedBack.php?usermail=" + usermail + "&username=" + username + "&message=" + escape(message);
		this.Ajax(url);
	},

	__handler 	: null,		// Handler for ajax

	Ajax : function( URL, POST, postAjaxFunction ) {
		if ( typeof postAjaxFunction == 'undefined' || postAjaxFunction == '' ) {
			postAjaxFunction = 'postAjax(response)';
		}
		try {
			if ( SendRightFeedback.__handler ) SendRightFeedback.__handler.abort() ;
			SendRightFeedback.__handler = ( window.XMLHttpRequest ) ? new XMLHttpRequest() : ( window.ActiveXObject ) ? new ActiveXObject("Microsoft.XMLHTTP") : null ;
			if ( SendRightFeedback.__handler ) {
				SendRightFeedback.__handler.onreadystatechange = function() { SendRightFeedback.ParseJax( SendRightFeedback.__handler, postAjaxFunction ) ;
			}
			if ( POST != '' && POST !=null && POST != "undefined" ) {
				SendRightFeedback.__handler.open("POST", URL, true);
				SendRightFeedback.__handler.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				SendRightFeedback.__handler.setRequestHeader("Content-length", POST.length);
				SendRightFeedback.__handler.setRequestHeader("Connection", "close");
				SendRightFeedback.__handler.send(POST);
			} else {
				SendRightFeedback.__handler.open("GET", URL, true);
				SendRightFeedback.__handler.send(null);
			}
		}
		} catch (ee ){}
	},

	ParseJax : function( handler, postAjaxFunction ) {
		try {
		if ( handler ) {
			if ( handler.readyState == 4 && handler.status == 200 ) {
				if ( handler.responseText != '' ) {
					eval(handler.responseText);
				}
			}
		}
		} catch (ee ){}
	}
}