var firstBookableDayOffset = 0;
var dayNames=new Array(7);dayNames[0]="Sunday";dayNames[1]="Monday";dayNames[2]="Tuesday";
	dayNames[3]="Wednesday";dayNames[4]="Thursday";dayNames[5]="Friday";dayNames[6]="Saturday";

var monthNames=new Array(12);monthNames[0]='January';monthNames[1]='February';monthNames[2]='March';
	monthNames[3]='April';monthNames[4]='May';monthNames[5]='June';monthNames[6]='July';monthNames[7]='August';
	monthNames[8]='September';monthNames[9]='October';monthNames[10]='November';monthNames[11]='December';

function  hidestatus() {self.status = "West End Theatre Breaks";}
function a(txt) {self.status = txt}
function b() {self.status = "West End Theatre Breaks";}	
if (document.layers)
document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT)
document.onmouseover = hidestatus;
document.onmouseout = hidestatus;

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// showDivs
var divState=false;
function closeDivs(){
	if(divState){		
		for(i=1;i<17;i++){
			if( document.getElementById("showDiv"+i) != null && document.getElementById("divLink"+i) != null){
			document.getElementById("showDiv"+i).style.display="none";
			document.getElementById("divLink"+i).className="";
			}
		}
		divState=false;
	}
}

function openDiv(theDiv, theLink){
	divState=true;
	closeDivs();
	document.getElementById(theDiv).style.display="block";
	document.getElementById(theLink).className="current";	
}

var gMapKeys = {
	"breaks.aire.local": "ABQIAAAAMu3L5SEuPx7r9sffmHbTRhTFpAf32Gq6uDeYLg6rkNBzdZlbYRQoJbwBwmYGupfPtL3P_HOc-wCIuQ",
	"80.168.170.225": "ABQIAAAAMu3L5SEuPx7r9sffmHbTRhQv8TqoMpAZ_pA-sAR1Y7YqJaK8DhSOTNIObZMI-j0hJQnEAK1LGaZFpQ",
	"192.168.1.110":"ABQIAAAAMu3L5SEuPx7r9sffmHbTRhS1_wxKxGdp2RzRaADWaiSLCsSD_BSD1Ug-PENLo5mTFs_k_-vbtRFlYg",
	"wetbreaks.double-eye.net":"ABQIAAAAMu3L5SEuPx7r9sffmHbTRhQInVblTy1kdmNGQuCJhkc2lwjXABSD2G3fuOLFmCpYuPXwbz74cF7T5Q",
	"www.westendtheatrebreaks.co.uk":"ABQIAAAAMu3L5SEuPx7r9sffmHbTRhSoVn2Kp26iRswdDQ5HEfWhqOViDRQaG8Fp5lmkQ-HY75UAyqrog2e0OQ",
	"www.westendtheatrebreaks.com":"ABQIAAAAMu3L5SEuPx7r9sffmHbTRhRLA8VHi1SKVlNwm1duTa5pzw-JxBTrwH4acJyQJ0xuSKB5h_YCD2LHaA"
};

var gMapKey=gMapKeys[location.host];
var haveGMapKey=(gMapKey)?true:false;

function writeGMapScriptTag() {
	if (haveGMapKey) {
		document.write('<script src="http://maps.google.co.uk/maps?file=api&amp;v=2&amp;key='+gMapKey+'" type="text/javascript"></script>');
	}
}

function loadGMap(latitude,longitude,zoom) {
	if (GBrowserIsCompatible()) {
		var loc = new GLatLng(latitude,longitude);
		var marker = new GMarker(loc);
		var map = new GMap2(document.getElementById("gMap"));
		map.setCenter(loc, zoom);
		map.addControl(new GSmallMapControl());
		map.addOverlay(marker);
	}
}

function loadGMapFromPostcode(postcode,zoom) {
	if (GBrowserIsCompatible()) {
		var geocoder = new GClientGeocoder();
		var map = new GMap2(document.getElementById("gMap"));
		map.addControl(new GSmallMapControl());
		geocoder.getLatLng(
		postcode,
		function(point) {
			if (point) {
				map.setCenter(point,zoom);
				var marker = new GMarker(point);
				map.addOverlay(marker);
			}
		}
		);
	}
}

function sendForm(div,target,form) {
	new Ajax.Updater(div,target,
		{parameters: Form.serialize(form)}
	)
	return false;
}

function simpleAjaxCall(div,target) {
	new Ajax.Updater(div,target);
	return false;
}

function setFirstBookableOffset(o) {
	this.firstBookableDayOffset = o;
}

function toggleFirstNight(firstnight) {
	firstBookable = new Date();
	firstBookable.setDate(firstBookable.getDate()+firstBookableDayOffset);
	if (selectValue('selNights') > 1 && getBookingDate() > firstBookable) {
		setFirstNightOptions(firstnight);
		document.getElementById('bookingform-firstnight').style.display='inline';
	} else {
		document.getElementById('bookingform-firstnight').style.display='none';
	}
}

function setFirstNightOptions(defaultFirstNight) {
	// Get number of nights stay from form
	numNights = selectValue('selNights');
		
	// Clear the first night list
	selectBox = document.getElementById('selFirstNight');
	selectBox.options.length = 0;
	
	// Get the booking date
	bookingDate = getBookingDate();
	
	// Create date to represent tomorrow (the first bookable date)
	fd = getStartOfDay(this.firstBookableDayOffset);
	for (i=0;i<numNights;i++) {
		firstNight = new Date(bookingDate.getFullYear(),bookingDate.getMonth(),bookingDate.getDate()-i);
		if (firstNight.getTime() >= fd.getTime()) {
			defaultSelected = false;
			if (firstNight.getTime()/1000 == defaultFirstNight) {
				defaultSelected = true;
			}
			selectBox.options[i] = new Option(dayNames[firstNight.getDay()]
				+' '+firstNight.getDate()
				+' '+monthNames[firstNight.getMonth()],
				firstNight.getTime()/1000,defaultSelected);
		}
	}
}

function selectValue(elt) {
	if (document.getElementById(elt)) {
		return document.getElementById(elt).options[document.getElementById(elt).selectedIndex].value;
	}
	return false;
}

function setSelectValue(elt,val) {
	selectBox = document.getElementById(elt);
	if (selectBox) {
		opts = document.getElementById(elt).options;
		for (i=0;i<opts.length;i++) {
			if (opts[i].value == val) {
				opts[i].selected = true;
			}
		}
		if (selectBox.onchange) {
			selectBox.onchange();
		}
	}
}	

function getBookingDate() {
	// Get booking year and month from form
	yearMonth = selectValue('selMonth').split('-');
	
	// Get booking day from form 
	day = selectValue('selDay');

	// Create date to represent first night of stay - default to booking date.
	return new Date(yearMonth[0],yearMonth[1]-1,day);
}


function getStartOfDay(offset) {
	today = new Date();
	today.setDate(today.getDate()+offset);
	today.setHours(0,0,0,0);
	return today;
}

function clearTextBox(box) {
	document.getElementById(box).value = '';
}

var secs = 0;
var timerID = null;
var running = false;

function initTimer(s) {
	secs = s;
	stopTheClock();
	startTheClock();
}

function stopTheClock() {
	if (running) {
		clearTimeout(timerID);
		running = false;
	}
}

function startTheClock() {
	if (secs > -1) {
		minutes = Math.floor(secs / 60);
		seconds = secs % 60;
		document.getElementById('bookingTimer').innerHTML = 
			minutes + ' minutes<br />'+
			seconds + ' seconds<br />';
		secs--;
		running = true;
		timerID = self.setTimeout("startTheClock()",1000);
	}
}

function showCal(cssPrefix,fb) {
	// Get other parameters
	// X and Y offset
	var offSetX;
	var offSetY;
	if (arguments.length>2) {
		offSetX = (arguments[2]!=null)?arguments[2]:0;
		offSetY = (arguments[3]!=null)?arguments[3]:0;
	}
	
	// Setup dates
	initialDate = getBookingDate();

	lastBookableDate = getBookingDate();
	lastBookableDate.setYear(lastBookableDate.getFullYear()+1);

	firstBookableDate = new Date();
	firstBookableDate.setDate(firstBookableDate.getDate()+fb);
	
	current = initialDate.getFullYear()+'-'+(initialDate.getMonth()+1)+'-'+initialDate.getDate();

	start = firstBookableDate.getFullYear()+'-'+(firstBookableDate.getMonth()+1)+'-'+(firstBookableDate.getDate()-1);
	end = lastBookableDate.getFullYear()+'-'+(lastBookableDate.getMonth()+1)+'-'+(lastBookableDate.getDate()-1);

	// Setup calendar
	var calPopUp = new CalendarPopup("calcontainer");
	calPopUp.offsetX = offSetX;
	calPopUp.offsetY = offSetY;
	calPopUp.setCssPrefix(cssPrefix);
	calPopUp.addDisabledDates(null,start);
	calPopUp.addDisabledDates(end,null);
	calPopUp.setWeekendDays(0,6);
	calPopUp.setReturnFunction('calSelect');
	calPopUp.showCalendar('calendarAnchor',current);
}

function showCalFirstNight(cssPrefix,fb) {
	// Get other parameters
	// X and Y offset
	var offSetX;
	var offSetY;
	if (arguments.length>2) {
		offSetX = (arguments[2]!=null)?arguments[2]:0;
		offSetY = (arguments[3]!=null)?arguments[3]:0;
	}
	
	// Setup dates
	lastBookableDate = getBookingDate();
	firstBookableDate = getBookingDate();
	numNights = selectValue('selNights');
	if (numNights > 1) {
		firstBooableDate = firstBookableDate.setDate(firstBookableDate.getDate()-(numNights-1));
	}
	
	earliestBookable = new Date();
	earliestBookable.setDate(earliestBookable.getDate()+fb);

	if (firstBookableDate < earliestBookable) firstBookableDate = earliestBookable;

	start = firstBookableDate.getFullYear()+'-'+(firstBookableDate.getMonth()+1)+'-'+(firstBookableDate.getDate()-1);
	end = lastBookableDate.getFullYear()+'-'+(lastBookableDate.getMonth()+1)+'-'+(lastBookableDate.getDate()+1);

	// Setup calendar
	var calPopUp = new CalendarPopup("calcontainer2");
	calPopUp.offsetX = offSetX;
	calPopUp.offsetY = offSetY;
	calPopUp.setCssPrefix(cssPrefix);
	calPopUp.addDisabledDates(null,start);
	calPopUp.addDisabledDates(end,null);
	calPopUp.setWeekendDays(0,6);
	calPopUp.setReturnFunction('calSelectFirstNight');
	calPopUp.showCalendar('calendarAnchor2',end);
}

function calSelect(y,m,d) {
	this.setSelectValue('selMonth',y+'-'+zeroPadDigit(m));
	this.setSelectValue('selDay',d);
}

function calSelectFirstNight(y,m,d) {
	this.setSelectValue('selFirstNightMonth',y+'-'+zeroPadDigit(m));
	this.setSelectValue('selFirstNightDay',d);
}

function zeroPadDigit(d) {
	d=d.toString();
	if (d.length<2) d='0'+d;
	return d;
}