function popUp(l) {
	window.open(l);
}

//common.js
function AddEventListener(obj, type, action) {
	if (typeof window.addEventListener != 'undefined') {
		//.. gecko, safari, konqueror and standard
		obj.addEventListener(type, action, false);
	}
	else if (typeof document.addEventListener != 'undefined') {
		//.. opera 7
		obj.addEventListener(type, action, false);
	}
	else if (typeof window.attachEvent != 'undefined') {
		//.. win/ie
		obj.attachEvent('on' + type, action);
	}
}

function RemoveEventListener(obj, type, action) {
	if (typeof window.removeEventListener != 'undefined') {
		//.. gecko, safari, konqueror and standard
		obj.removeEventListener(type, action, false);
	}
	else if (typeof document.removeEventListener != 'undefined') {
		//.. opera 7
		obj.removeEventListener(type, action, false);
	}
	else if (typeof window.detachEvent != 'undefined') {
		//.. win/ie
		obj.detachEvent("on" + type, action);
	}
}


function GetEventSource(pthis) {
	if (!document.all) {
		//.. moz
		var x = pthis;
	}
	else {
		//.. ie
		var x = window.event.srcElement;
	}
	return x;
}

function returnFalse(e) {
	var ev = e || window.event;
	if (ev.preventDefault) {
		ev.preventDefault();
	} else {
		ev.returnValue = false;
	}
}

function GetParentElement(pthis, rElm) {
	var elm = pthis;
	do {
		elm = elm.parentNode;
	}
	while (elm.nodeName != rElm && elm.nodeName != 'HTML');
	return elm;
}

function RemoveChildren(obj) {
	while (obj.firstChild) {
		obj.removeChild(obj.firstChild);
	}
}

function AddOption(obj, val, txt) {
	var o = document.createElement("OPTION");
	var t = document.createTextNode(txt);
	o.setAttribute("value", val);
	o.appendChild(t);
	obj.appendChild(o);
}


function setCookie(c_name, value, expiredays) {
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function getCookie(c_name) {
	if (document.cookie.length > 0) {
		c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1) {
			c_start = c_start + c_name.length + 1;
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) c_end = document.cookie.length;
			return unescape(document.cookie.substring(c_start, c_end));
		}
	}
	return "";
}

function loadXMLDoc(dname) {
	var xmlDoc;
	// code for IE
	if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument) {
		xmlDoc = document.implementation.createDocument("", "", null);
	}
	else {
		alert('Your browser cannot handle this script');
	}
	xmlDoc.async = false;
	xmlDoc.load(dname);
	return (xmlDoc);
}

function loadXMLDocXML(dXML) {
	var xmlDoc;
	// code for IE
	if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = "false";
		xmlDoc.loadXML(dXML);
	}
	// code for Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument) {
		var parser = new DOMParser();
		var xmlDoc = parser.parseFromString(dXML, "text/xml");
	}
	else {
		alert('Your browser cannot handle this script');
	}
	return (xmlDoc);
}

var iRoomCount = 0;


$(document).ready(function() {

	// ADD ANOTHER UNIT FUNCTIONALITY
	$('.addAnotherRoom')
		.bind("click keypress", function hpaccosearchAddUnit(e) {

			//get current room count
			var iRoomCount = $(this).parents('form').find('#NumRoomReqs').attr('value');
			iRoomCount++

			//prevent default action
			e.preventDefault();

			// copy room unit selection code
			var objRoomSpan = $(this)
			.parents('form')
			.find('#roomsReqRow1')
			.clone()
			.html();

			// replace with correct unit number
			var objRoomSpanAdditional = '<span id="roomsReqRow' + iRoomCount + '" class="row">' + objRoomSpan.replace(/roomReq_1/g, 'roomReq_' + iRoomCount).replace(/Unit 1/g, 'Unit ' + iRoomCount) + '</span>';

			// inject into relevant place in the code
			$(this)
			.parents('form')
			.find('#roomReqs')
			.append(objRoomSpanAdditional)
			.find('select:last')
			.prepend('<option value="0">0</option>');

			//update the hidden form value to the new room count value
			$(this).parents('form').find('#NumRoomReqs').attr('value', iRoomCount);
		});
});


//var iCapacityCount  = 0;

function refinebyAddUnitInitialise() {
	var cont;
	if (document.getElementById('refineBy')) {
		cont = document.getElementById('refineBy')
	}
	else if (document.getElementById('unitcapacity')) {
		cont = document.getElementById('unitcapacity').parentElement;
	}
	if (cont) {
		AddRoomLink = cont.getElementsByTagName('a');
		for (var i = 0; i < AddRoomLink.length; i++) {
			var x = AddRoomLink.item(i);
			if (x.className.toLowerCase() == 'addanothercapacity') {
				x.href = '#';
				AddEventListener(x, 'click', refinebyAddUnit);
				AddEventListener(x, 'keypress', refinebyAddUnit);

			}

		}

	}

}


function refinebyAddUnit(e) {
	iCapacityCount++;
	document.getElementById('numUnitCapacity').value = iCapacityCount;
	var theNode = document.getElementById('capacityReqRow1').cloneNode(true);
	theNode.id = theNode.id.replace('capacityReqRow1', 'capacityReqRow' + iCapacityCount);
	theNode.innerHTML = theNode.innerHTML.replace(/roomReq_1/g, 'roomReq_' + iCapacityCount).replace(/Unit 1/g, 'Unit ' + iCapacityCount);
	document.getElementById('unitcapacity').appendChild(theNode);
	returnFalse(e);
}
AddEventListener(window, 'load', refinebyAddUnitInitialise);


// Excursion Javascript - MBirkett 20060830

function ShowId(aId, abVisible) {
	document.getElementById(aId).style.display = (abVisible ? "block" : "none");
}

function Excur_CreateNote() {
	ShowId("ExcursionTxtNotesForm", true);
	ShowId("ExcursionTxtNotesLbl", false);
	return false;
}

function Excur_CreateName() {
	ShowId("ExcursionTxtNameForm", true);
	ShowId("ExcursionTxtNameLbl", false);
	return false;
}

function Excur_EmailFr() {
	ShowId("ExcursionEmailFrForm", true);
	ShowId("ExcursionEmailFrLbl", false);
	return false;
}

function Excur_SMS() {
	ShowId("ExcursionSMSForm", true);
	ShowId("ExcursionSMSLbl", false);
	return false;
}

function Excur_NoteLimit1(aTextbx, iLimit) {
	return (aTextbx.value.length < iLimit);
}

function Excur_NoteLimit2(aTextbx, iLimit) {
	aTextbx.style.backgroundColor = (aTextbx.value.length < iLimit ? '#fff' : "#faa");
}


$(document).ready(function() {

	if (NewMind.Vars) {
		var chan_id = NewMind.Vars.Page.ChannelID;
		var product_key = NewMind.Vars.Page.ProductKey;
	}

	$('.ProvClick').bind('click', function(e) {
		var $provider_id = $(this);
		$.get('/siteBuilder/updateProviderStats.asp?channel_id=' + chan_id + '&product_key=' + product_key + '&provider_id=' + $provider_id.attr('name'))
	});
});




//flashDetect.js
var MM_contentVersion = 6;
var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
if (plugin) {
	var words = navigator.plugins["Shockwave Flash"].description.split(" ");
	for (var i = 0; i < words.length; ++i) {
		if (isNaN(parseInt(words[i])))
			continue;
		var MM_PluginVersion = words[i];
	}
	var MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion;
}
else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE") >= 0
   && (navigator.appVersion.indexOf("Win") != -1)) {
	document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n'); //FS hide this from IE4.5 Mac by splitting the tag
	document.write('on error resume next \n');
	document.write('MM_FlashCanPlay = ( IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & MM_contentVersion)))\n');
	document.write('</SCR' + 'IPT\> \n');
}

//iefix.js
function iefix() {
	// this fix is for ie patch causing usability issue with embedded flash objects
	if (document.getElementsByTagName("object")) {
		objects = document.getElementsByTagName("object");
		for (var i = 0; i < objects.length; i++) {
			if (objects[i].className != 'nofix') {
				objects[i].outerHTML = objects[i].outerHTML;
			}
		}
	}
}

AddEventListener(window, 'load', iefix);


//bookingCheckForm.js

function checkform(objForm) {

	if (navigator.userAgent.match(/Opera (\S+)/)) {
		var operaVersion = parseInt(navigator.userAgent.match(/Opera (\S+)/)[1]);
	}
	if (!document.getElementById || operaVersion < 7) return;

	for (var m = 0; m < objForm.elements.length; m++) {

		if (objForm.elements[m].className.indexOf('VALIDATE') != -1) {
			elemToTest = objForm.elements[m].className;

			if (elemToTest.match(/VALIDATE (\S+)/)) {
				elemType = elemToTest.match(/VALIDATE (\S+)/)[1]

				if (elemType == 'ValidateTEXT') {
					obj = eval("objForm." + objForm.elements[m].name);
					if (isFilled(obj) == false) {
						alert("Please check that the form is complete.");
						obj.focus();
						return false;
					}
				}

				if (elemType == 'ValidateEMAIL') {
					obj = eval("objForm." + objForm.elements[m].name);
					if (isEmail(obj) == false) {
						alert("Please check that you have entered a valid email address.");
						obj.focus();
						return false;
					}
				}

				if (elemType == 'ValidateSELECT') {
					obj = eval("objForm." + objForm.elements[m].name);
					if (obj.selectedIndex == 0) {
						alert("Please check that the form is complete.");
						obj.focus();
						return false;
					}
				}

				if (elemType == 'ValidateEXPIRE') {
					obj = eval("objForm." + objForm.elements[m].name);
					dtThen = new Date(objForm.card_expiry_year.value, objForm.card_expiry_month.value - 1, objForm.card_expiry_day.value);
					dtNow = new Date();
					if (dtThen <= dtNow) {
						alert("Please enter a valid date.");
						obj.focus();
						return false;
					}
				}

				if (elemType == 'ValidateSPECPHONE') {
					obj = objForm.elements[m];
					if (objForm.elements['telephone'].value == '' && objForm.elements['mobile'].value == '') {
						alert("Please enter a phone number.");
						obj.focus();
						return false;
					}
				}

				if (elemType == 'ValidateRADIO') {
					radioSelected = false;
					elemName = objForm.elements[m].name;
					for (i = 0; i < objForm.elements[elemName].length; i++) {
						if (objForm.elements[elemName][i].checked == true) radioSelected = true;
					}
					if (!radioSelected) {
						alert("Please check the form is complete.");
						objForm.elements[m].focus();
						return false;
					}
				}

				if (elemType == 'ValidateCHECK') {
					checkSelected = false;
					elemName = objForm.elements[m].name;
					for (i = 0; i < objForm.elements[elemName].length; i++) {
						if (objForm.elements[elemName][i].checked == true) checkSelected = true;
					}
					if (!checkSelected) {
						alert("Please select an interest.");
						objForm.elements[m].focus();
						return false;
					}
				}

				if (elemType == 'ValidateBROC') {
					checkSelected = false;
					elemName = objForm.elements[m].name;
					for (i = 0; i < objForm.elements[elemName].length; i++) {
						if (objForm.elements[elemName][i].checked == true) checkSelected = true;
					}
					if (!checkSelected) {
						alert("Please select a brochure.");
						objForm.elements[m].focus();
						return false;
					}
				}

				if (elemType == 'ValidatePASSWORD') {
					obj = objForm.elements[m];
					if (objForm.elements['password1'].value != objForm.elements['password2'].value) {
						alert("Passwords are different.");
						obj.focus();
						return false;
					}
				}

			}

		}
	}
	var o = document.getElementById('agree');
	if (o) {
		if (!o.checked) {
			alert('You must agree to the Terms and Conditions!');
			return false;
		}
	}
	return true;
}


//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\

function isEmail(elm) {
	if (elm.value.indexOf("@") + "" != "-1" && elm.value.indexOf(".") + "" != "-1" && elm.value != "")
		return true;
	else return false;
}

function isFilled(elm) {
	if (elm.value == "" || elm.value == null)
		return false;
	else return true;
}


//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\

function checkAnswers(thing) {
	for (n = 0; n < thing.length; n++) {
		objEle = eval('document.forms[0].question_' + thing[n].value + '_answer');
		if (objEle.tagName != 'TEXTAREA' && !checkRadio(objEle)) {
			return false;
		}
	}
	return true;
}

function checkRadio(obj) {
	var bCheck = false;
	for (i = 0; i < obj.length; i++) {
		if (obj[i].checked) {
			bCheck = true;
		}
	}
	if (bCheck == false) {
		alert("Please ensure you have completed the form");
		return false;
	}
	return true;
}

function autoCap(elm) {
	if (!elm.autoCapped) {
		var words = elm.value.split(" ");
		var caps = "";
		for (var i = 0; i < words.length; i++) {
			var word = words[i];
			tmp = word.substring(0, 1);
			tmp = tmp.toUpperCase();
			word = tmp + word.substring(1, word.length).toLowerCase();
			caps = caps + " " + word;
		}
		elm.value = caps.substring(1, caps.length);
		elm.autoCapped = true
	}
}


//questionnairecheckform.js
function questionnairecheckform(objForm) {

	if (navigator.userAgent.match(/Opera (\S+)/)) {
		var operaVersion = parseInt(navigator.userAgent.match(/Opera (\S+)/)[1]);
	}
	if (!document.getElementById || operaVersion < 7) return;
	for (var m = 0; m < objForm.elements.length; m++) {
		if (objForm.elements[m].className.indexOf('VALIDATE') != -1) {
			elemToTest = objForm.elements[m].className;
			if (elemToTest.match(/VALIDATE (\S+)/)) {
				elemType = elemToTest.match(/VALIDATE (\S+)/)[1];
				if (elemType == 'ValidateTEXT') {
					obj = document.getElementById(objForm.elements[m].id);
					if (isFilled(obj) == false) {
						alert("Please check that the form is complete.");
						obj.focus();
						return false;
					}
				}

				if (elemType == 'ValidateEMAIL') {
					obj = document.getElementById(objForm.elements[m].id);
					if (isEmail(obj) == false) {
						alert("Please check that you have entered a valid email address.");
						obj.select();
						return false;
					}
				}
				if (elemType == 'ValidateNUMBER') {
					obj = document.getElementById(objForm.elements[m].id);
					if (isNaN(parseInt(obj.value)) == true) {
						alert("Please check that you have entered a valid number.");
						obj.focus();
						return false;
					}
				}
				if (elemType == 'ValidateSELECT') {
					obj = document.getElementById(objForm.elements[m].id);
					if (isFilled(obj) == false) {
						alert("Please check that you have selected a valid option.");
						obj.focus();
						return false;
					}
				}
				if (elemType == 'ValidateCHECKBOX') {
					obj = document.getElementById(objForm.elements[m].id);
					if (isChecked(obj) == false) {
						alert("You must agree to the terms set out in the last section of the form by ticking the box.");
						obj.focus();
						return false;
					}
				}
				if (elemType == 'ValidateRADIO') {
					obj = document.getElementById(objForm.elements[m].id);
					if (isCheckedRadio(obj) == false) {
						alert("Please check that the form is complete.");
						return false;
					}
				}
			}
		}
	}
	return true;
}

//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\

function isEmail(elm) {
	if (elm.value.indexOf("@") + "" != "-1" && elm.value.indexOf(".") + "" != "-1" && elm.value != "")
		return true;
	else return false;
}

function isFilled(elm) {
	if (elm.value == "" || elm.value == null)
		return false;
	else return true;
}

//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\


//banneradResize.js

function bannerAdResize() {
	resizeElement('bannerFrame', 'bannerContainer');
}

function resizeElement(strID, strTarget) {
	var miFrame;
	if (document.getElementById(strID)) {
		if (document.getElementById(strID).contentDocument) {
			miFrame = document.getElementById(strID).contentDocument.getElementById(strTarget);
		}
		else if (document.getElementById(strID).contentWindow.document) {
			miFrame = document.getElementById(strID).contentWindow.document.getElementById(strTarget);
		}
		if (miFrame) {
			if (miFrame.offsetHeight) {
				document.getElementById(strID).height = miFrame.offsetHeight + 5;
			}
			else {
				document.getElementById(strID).height = 0;
			}
		}
	}
}

AddEventListener(window, 'load', bannerAdResize);
AddEventListener(window, 'resize', bannerAdResize);



//calendarControl.js
// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download.
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

/* SOURCE FILE: AnchorPosition.js */
function getAnchorPosition(anchorname) { var useWindow = false; var coordinates = new Object(); var x = 0, y = 0; var use_gebi = false, use_css = false, use_layers = false; if (document.getElementById) { use_gebi = true; } else if (document.all) { use_css = true; } else if (document.layers) { use_layers = true; } if (use_gebi && document.all) { x = AnchorPosition_getPageOffsetLeft(document.all[anchorname]); y = AnchorPosition_getPageOffsetTop(document.all[anchorname]); } else if (use_gebi) { var o = document.getElementById(anchorname); x = AnchorPosition_getPageOffsetLeft(o); y = AnchorPosition_getPageOffsetTop(o); } else if (use_css) { x = AnchorPosition_getPageOffsetLeft(document.all[anchorname]); y = AnchorPosition_getPageOffsetTop(document.all[anchorname]); } else if (use_layers) { var found = 0; for (var i = 0; i < document.anchors.length; i++) { if (document.anchors[i].name == anchorname) { found = 1; break; } } if (found == 0) { coordinates.x = 0; coordinates.y = 0; return coordinates; } x = document.anchors[i].x; y = document.anchors[i].y; } else { coordinates.x = 0; coordinates.y = 0; return coordinates; } coordinates.x = x; coordinates.y = y; return coordinates; }
function getAnchorWindowPosition(anchorname) { var coordinates = getAnchorPosition(anchorname); var x = 0; var y = 0; if (document.getElementById) { if (isNaN(window.screenX)) { x = coordinates.x - document.body.scrollLeft + window.screenLeft; y = coordinates.y - document.body.scrollTop + window.screenTop; } else { x = coordinates.x + window.screenX + (window.outerWidth - window.innerWidth) - window.pageXOffset; y = coordinates.y + window.screenY + (window.outerHeight - 24 - window.innerHeight) - window.pageYOffset; } } else if (document.all) { x = coordinates.x - document.body.scrollLeft + window.screenLeft; y = coordinates.y - document.body.scrollTop + window.screenTop; } else if (document.layers) { x = coordinates.x + window.screenX + (window.outerWidth - window.innerWidth) - window.pageXOffset; y = coordinates.y + window.screenY + (window.outerHeight - 24 - window.innerHeight) - window.pageYOffset; } coordinates.x = x; coordinates.y = y; return coordinates; }
function AnchorPosition_getPageOffsetLeft(el) { var ol = el.offsetLeft; while ((el = el.offsetParent) != null) { ol += el.offsetLeft; } return ol; }
function AnchorPosition_getWindowOffsetLeft(el) { return AnchorPosition_getPageOffsetLeft(el) - document.body.scrollLeft; }
function AnchorPosition_getPageOffsetTop(el) { var ot = el.offsetTop; while ((el = el.offsetParent) != null) { ot += el.offsetTop; } return ot; }
function AnchorPosition_getWindowOffsetTop(el) { return AnchorPosition_getPageOffsetTop(el) - document.body.scrollTop; }

/* SOURCE FILE: date.js */
var MONTH_NAMES = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); var DAY_NAMES = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
function LZ(x) { return (x < 0 || x > 9 ? "" : "0") + x }
function isDate(val, format) { var date = getDateFromFormat(val, format); if (date == 0) { return false; } return true; }
function compareDates(date1, dateformat1, date2, dateformat2) { var d1 = getDateFromFormat(date1, dateformat1); var d2 = getDateFromFormat(date2, dateformat2); if (d1 == 0 || d2 == 0) { return -1; } else if (d1 > d2) { return 1; } return 0; }
function formatDate(date, format) { format = format + ""; var result = ""; var i_format = 0; var c = ""; var token = ""; var y = date.getYear() + ""; var M = date.getMonth() + 1; var d = date.getDate(); var E = date.getDay(); var H = date.getHours(); var m = date.getMinutes(); var s = date.getSeconds(); var yyyy, yy, MMM, MM, dd, hh, h, mm, ss, ampm, HH, H, KK, K, kk, k; var value = new Object(); if (y.length < 4) { y = "" + (y - 0 + 1900); } value["y"] = "" + y; value["yyyy"] = y; value["yy"] = y.substring(2, 4); value["M"] = M; value["MM"] = LZ(M); value["MMM"] = MONTH_NAMES[M - 1]; value["NNN"] = MONTH_NAMES[M + 11]; value["d"] = d; value["dd"] = LZ(d); value["E"] = DAY_NAMES[E + 7]; value["EE"] = DAY_NAMES[E]; value["H"] = H; value["HH"] = LZ(H); if (H == 0) { value["h"] = 12; } else if (H > 12) { value["h"] = H - 12; } else { value["h"] = H; } value["hh"] = LZ(value["h"]); if (H > 11) { value["K"] = H - 12; } else { value["K"] = H; } value["k"] = H + 1; value["KK"] = LZ(value["K"]); value["kk"] = LZ(value["k"]); if (H > 11) { value["a"] = "PM"; } else { value["a"] = "AM"; } value["m"] = m; value["mm"] = LZ(m); value["s"] = s; value["ss"] = LZ(s); while (i_format < format.length) { c = format.charAt(i_format); token = ""; while ((format.charAt(i_format) == c) && (i_format < format.length)) { token += format.charAt(i_format++); } if (value[token] != null) { result = result + value[token]; } else { result = result + token; } } return result; }
function _isInteger(val) { var digits = "1234567890"; for (var i = 0; i < val.length; i++) { if (digits.indexOf(val.charAt(i)) == -1) { return false; } } return true; }
function _getInt(str, i, minlength, maxlength) { for (var x = maxlength; x >= minlength; x--) { var token = str.substring(i, i + x); if (token.length < minlength) { return null; } if (_isInteger(token)) { return token; } } return null; }
function getDateFromFormat(val, format) { val = val + ""; format = format + ""; var i_val = 0; var i_format = 0; var c = ""; var token = ""; var token2 = ""; var x, y; var now = new Date(); var year = now.getYear(); var month = now.getMonth() + 1; var date = 1; var hh = now.getHours(); var mm = now.getMinutes(); var ss = now.getSeconds(); var ampm = ""; while (i_format < format.length) { c = format.charAt(i_format); token = ""; while ((format.charAt(i_format) == c) && (i_format < format.length)) { token += format.charAt(i_format++); } if (token == "yyyy" || token == "yy" || token == "y") { if (token == "yyyy") { x = 4; y = 4; } if (token == "yy") { x = 2; y = 2; } if (token == "y") { x = 2; y = 4; } year = _getInt(val, i_val, x, y); if (year == null) { return 0; } i_val += year.length; if (year.length == 2) { if (year > 70) { year = 1900 + (year - 0); } else { year = 2000 + (year - 0); } } } else if (token == "MMM" || token == "NNN") { month = 0; for (var i = 0; i < MONTH_NAMES.length; i++) { var month_name = MONTH_NAMES[i]; if (val.substring(i_val, i_val + month_name.length).toLowerCase() == month_name.toLowerCase()) { if (token == "MMM" || (token == "NNN" && i > 11)) { month = i + 1; if (month > 12) { month -= 12; } i_val += month_name.length; break; } } } if ((month < 1) || (month > 12)) { return 0; } } else if (token == "EE" || token == "E") { for (var i = 0; i < DAY_NAMES.length; i++) { var day_name = DAY_NAMES[i]; if (val.substring(i_val, i_val + day_name.length).toLowerCase() == day_name.toLowerCase()) { i_val += day_name.length; break; } } } else if (token == "MM" || token == "M") { month = _getInt(val, i_val, token.length, 2); if (month == null || (month < 1) || (month > 12)) { return 0; } i_val += month.length; } else if (token == "dd" || token == "d") { date = _getInt(val, i_val, token.length, 2); if (date == null || (date < 1) || (date > 31)) { return 0; } i_val += date.length; } else if (token == "hh" || token == "h") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 1) || (hh > 12)) { return 0; } i_val += hh.length; } else if (token == "HH" || token == "H") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 0) || (hh > 23)) { return 0; } i_val += hh.length; } else if (token == "KK" || token == "K") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 0) || (hh > 11)) { return 0; } i_val += hh.length; } else if (token == "kk" || token == "k") { hh = _getInt(val, i_val, token.length, 2); if (hh == null || (hh < 1) || (hh > 24)) { return 0; } i_val += hh.length; hh--; } else if (token == "mm" || token == "m") { mm = _getInt(val, i_val, token.length, 2); if (mm == null || (mm < 0) || (mm > 59)) { return 0; } i_val += mm.length; } else if (token == "ss" || token == "s") { ss = _getInt(val, i_val, token.length, 2); if (ss == null || (ss < 0) || (ss > 59)) { return 0; } i_val += ss.length; } else if (token == "a") { if (val.substring(i_val, i_val + 2).toLowerCase() == "am") { ampm = "AM"; } else if (val.substring(i_val, i_val + 2).toLowerCase() == "pm") { ampm = "PM"; } else { return 0; } i_val += 2; } else { if (val.substring(i_val, i_val + token.length) != token) { return 0; } else { i_val += token.length; } } } if (i_val != val.length) { return 0; } if (month == 2) { if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { if (date > 29) { return 0; } } else { if (date > 28) { return 0; } } } if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) { if (date > 30) { return 0; } } if (hh < 12 && ampm == "PM") { hh = hh - 0 + 12; } else if (hh > 11 && ampm == "AM") { hh -= 12; } var newdate = new Date(year, month - 1, date, hh, mm, ss); return newdate.getTime(); }
function parseDate(val) { var preferEuro = (arguments.length == 2) ? arguments[1] : false; generalFormats = new Array('y-M-d', 'MMM d, y', 'MMM d,y', 'y-MMM-d', 'd-MMM-y', 'MMM d'); monthFirst = new Array('M/d/y', 'M-d-y', 'M.d.y', 'MMM-d', 'M/d', 'M-d'); dateFirst = new Array('d/M/y', 'd-M-y', 'd.M.y', 'd-MMM', 'd/M', 'd-M'); var checkList = new Array('generalFormats', preferEuro ? 'dateFirst' : 'monthFirst', preferEuro ? 'monthFirst' : 'dateFirst'); var d = null; for (var i = 0; i < checkList.length; i++) { var l = window[checkList[i]]; for (var j = 0; j < l.length; j++) { d = getDateFromFormat(val, l[j]); if (d != 0) { return new Date(d); } } } return null; }

/* SOURCE FILE: PopupWindow.js */
function PopupWindow_getXYPosition(anchorname) { var coordinates; if (this.type == "WINDOW") { coordinates = getAnchorWindowPosition(anchorname); } else { coordinates = getAnchorPosition(anchorname); } this.x = coordinates.x; this.y = coordinates.y; }
function PopupWindow_setSize(width, height) { this.width = width; this.height = height; }
function PopupWindow_populate(contents) { this.contents = contents; this.populated = false; }
function PopupWindow_setUrl(url) { this.url = url; }
function PopupWindow_setWindowProperties(props) { this.windowProperties = props; }
function PopupWindow_refresh() { if (this.divName != null) { if (this.use_gebi) { document.getElementById(this.divName).innerHTML = this.contents; } else if (this.use_css) { document.all[this.divName].innerHTML = this.contents; } else if (this.use_layers) { var d = document.layers[this.divName]; d.document.open(); d.document.writeln(this.contents); d.document.close(); } } else { if (this.popupWindow != null && !this.popupWindow.closed) { if (this.url != "") { this.popupWindow.location.href = this.url; } else { this.popupWindow.document.open(); this.popupWindow.document.writeln(this.contents); this.popupWindow.document.close(); } this.popupWindow.focus(); } } }
function PopupWindow_showPopup(anchorname) { this.getXYPosition(anchorname); this.x += this.offsetX; this.y += this.offsetY; if (!this.populated && (this.contents != "")) { this.populated = true; this.refresh(); } if (this.divName != null) { if (this.use_gebi) { document.getElementById(this.divName).style.left = this.x + "px"; document.getElementById(this.divName).style.top = this.y + "px"; document.getElementById(this.divName).style.visibility = "visible"; } else if (this.use_css) { document.all[this.divName].style.left = this.x; document.all[this.divName].style.top = this.y; document.all[this.divName].style.visibility = "visible"; } else if (this.use_layers) { document.layers[this.divName].left = this.x; document.layers[this.divName].top = this.y; document.layers[this.divName].visibility = "visible"; } } else { if (this.popupWindow == null || this.popupWindow.closed) { if (this.x < 0) { this.x = 0; } if (this.y < 0) { this.y = 0; } if (screen && screen.availHeight) { if ((this.y + this.height) > screen.availHeight) { this.y = screen.availHeight - this.height; } } if (screen && screen.availWidth) { if ((this.x + this.width) > screen.availWidth) { this.x = screen.availWidth - this.width; } } var avoidAboutBlank = window.opera || (document.layers && !navigator.mimeTypes['*']) || navigator.vendor == 'KDE' || (document.childNodes && !document.all && !navigator.taintEnabled); this.popupWindow = window.open(avoidAboutBlank ? "" : "about:blank", "window_" + anchorname, this.windowProperties + ",width=" + this.width + ",height=" + this.height + ",screenX=" + this.x + ",left=" + this.x + ",screenY=" + this.y + ",top=" + this.y + ""); } this.refresh(); } }
function PopupWindow_hidePopup() { if (this.divName != null) { if (this.use_gebi) { document.getElementById(this.divName).style.visibility = "hidden"; } else if (this.use_css) { document.all[this.divName].style.visibility = "hidden"; } else if (this.use_layers) { document.layers[this.divName].visibility = "hidden"; } } else { if (this.popupWindow && !this.popupWindow.closed) { this.popupWindow.close(); this.popupWindow = null; } } }
function PopupWindow_isClicked(e) { if (this.divName != null) { if (this.use_layers) { var clickX = e.pageX; var clickY = e.pageY; var t = document.layers[this.divName]; if ((clickX > t.left) && (clickX < t.left + t.clip.width) && (clickY > t.top) && (clickY < t.top + t.clip.height)) { return true; } else { return false; } } else if (document.all) { var t = window.event.srcElement; while (t.parentElement != null) { if (t.id == this.divName) { return true; } t = t.parentElement; } return false; } else if (this.use_gebi && e) { var t = e.originalTarget; while (t.parentNode != null) { if (t.id == this.divName) { return true; } t = t.parentNode; } return false; } return false; } return false; }
function PopupWindow_hideIfNotClicked(e) { if (this.autoHideEnabled && !this.isClicked(e)) { this.hidePopup(); } }
function PopupWindow_autoHide() { this.autoHideEnabled = true; }
function PopupWindow_hidePopupWindows(e) { for (var i = 0; i < popupWindowObjects.length; i++) { if (popupWindowObjects[i] != null) { var p = popupWindowObjects[i]; p.hideIfNotClicked(e); } } }
function PopupWindow_attachListener() { if (document.layers) { document.captureEvents(Event.MOUSEUP); } window.popupWindowOldEventListener = document.onmouseup; if (window.popupWindowOldEventListener != null) { document.onmouseup = new Function("window.popupWindowOldEventListener();PopupWindow_hidePopupWindows();"); } else { document.onmouseup = PopupWindow_hidePopupWindows; } }
function PopupWindow() { if (!window.popupWindowIndex) { window.popupWindowIndex = 0; } if (!window.popupWindowObjects) { window.popupWindowObjects = new Array(); } if (!window.listenerAttached) { window.listenerAttached = true; PopupWindow_attachListener(); } this.index = popupWindowIndex++; popupWindowObjects[this.index] = this; this.divName = null; this.popupWindow = null; this.width = 0; this.height = 0; this.populated = false; this.visible = false; this.autoHideEnabled = false; this.contents = ""; this.url = ""; this.windowProperties = "toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no"; if (arguments.length > 0) { this.type = "DIV"; this.divName = arguments[0]; } else { this.type = "WINDOW"; } this.use_gebi = false; this.use_css = false; this.use_layers = false; if (document.getElementById) { this.use_gebi = true; } else if (document.all) { this.use_css = true; } else if (document.layers) { this.use_layers = true; } else { this.type = "WINDOW"; } this.offsetX = 0; this.offsetY = 0; this.getXYPosition = PopupWindow_getXYPosition; this.populate = PopupWindow_populate; this.setUrl = PopupWindow_setUrl; this.setWindowProperties = PopupWindow_setWindowProperties; this.refresh = PopupWindow_refresh; this.showPopup = PopupWindow_showPopup; this.hidePopup = PopupWindow_hidePopup; this.setSize = PopupWindow_setSize; this.isClicked = PopupWindow_isClicked; this.autoHide = PopupWindow_autoHide; this.hideIfNotClicked = PopupWindow_hideIfNotClicked; }


/* SOURCE FILE: CalendarPopup.js */

function CalendarPopup() { var c; if (arguments.length > 0) { c = new PopupWindow(arguments[0]); } else { c = new PopupWindow(); c.setSize(150, 175); } c.offsetX = -152; c.offsetY = 25; c.autoHide(); c.monthNames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); c.monthAbbreviations = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); c.dayHeaders = new Array("S", "M", "T", "W", "T", "F", "S"); c.returnFunction = "CP_tmpReturnFunction"; c.returnMonthFunction = "CP_tmpReturnMonthFunction"; c.returnQuarterFunction = "CP_tmpReturnQuarterFunction"; c.returnYearFunction = "CP_tmpReturnYearFunction"; c.weekStartDay = 0; c.isShowYearNavigation = false; c.displayType = "date"; c.disabledWeekDays = new Object(); c.disabledDatesExpression = ""; c.yearSelectStartOffset = 2; c.currentDate = null; c.todayText = "Today"; c.cssPrefix = ""; c.isShowNavigationDropdowns = false; c.isShowYearNavigationInput = false; window.CP_calendarObject = null; window.CP_targetInput = null; window.CP_dateFormat = "MM/dd/yyyy"; c.copyMonthNamesToWindow = CP_copyMonthNamesToWindow; c.setReturnFunction = CP_setReturnFunction; c.setReturnMonthFunction = CP_setReturnMonthFunction; c.setReturnQuarterFunction = CP_setReturnQuarterFunction; c.setReturnYearFunction = CP_setReturnYearFunction; c.setMonthNames = CP_setMonthNames; c.setMonthAbbreviations = CP_setMonthAbbreviations; c.setDayHeaders = CP_setDayHeaders; c.setWeekStartDay = CP_setWeekStartDay; c.setDisplayType = CP_setDisplayType; c.setDisabledWeekDays = CP_setDisabledWeekDays; c.addDisabledDates = CP_addDisabledDates; c.setYearSelectStartOffset = CP_setYearSelectStartOffset; c.setTodayText = CP_setTodayText; c.showYearNavigation = CP_showYearNavigation; c.showCalendar = CP_showCalendar; c.hideCalendar = CP_hideCalendar; c.getStyles = getCalendarStyles; c.refreshCalendar = CP_refreshCalendar; c.getCalendar = CP_getCalendar; c.select = CP_select; c.setCssPrefix = CP_setCssPrefix; c.showNavigationDropdowns = CP_showNavigationDropdowns; c.showYearNavigationInput = CP_showYearNavigationInput; c.copyMonthNamesToWindow(); return c; }
function CP_copyMonthNamesToWindow() { if (typeof (window.MONTH_NAMES) != "undefined" && window.MONTH_NAMES != null) { window.MONTH_NAMES = new Array(); for (var i = 0; i < this.monthNames.length; i++) { window.MONTH_NAMES[window.MONTH_NAMES.length] = this.monthNames[i]; } for (var i = 0; i < this.monthAbbreviations.length; i++) { window.MONTH_NAMES[window.MONTH_NAMES.length] = this.monthAbbreviations[i]; } } }
function CP_tmpReturnFunction(y, m, d) { if (window.CP_targetInput != null) { var dt = new Date(y, m - 1, d, 0, 0, 0); if (window.CP_calendarObject != null) { window.CP_calendarObject.copyMonthNamesToWindow(); } window.CP_targetInput.value = formatDate(dt, window.CP_dateFormat); } else { alert('Use setReturnFunction() to define which function will get the clicked results!'); } }
function CP_tmpReturnMonthFunction(y, m) { alert('Use setReturnMonthFunction() to define which function will get the clicked results!\nYou clicked: year=' + y + ' , month=' + m); }
function CP_tmpReturnQuarterFunction(y, q) { alert('Use setReturnQuarterFunction() to define which function will get the clicked results!\nYou clicked: year=' + y + ' , quarter=' + q); }
function CP_tmpReturnYearFunction(y) { alert('Use setReturnYearFunction() to define which function will get the clicked results!\nYou clicked: year=' + y); }
function CP_setReturnFunction(name) { this.returnFunction = name; }
function CP_setReturnMonthFunction(name) { this.returnMonthFunction = name; }
function CP_setReturnQuarterFunction(name) { this.returnQuarterFunction = name; }
function CP_setReturnYearFunction(name) { this.returnYearFunction = name; }
function CP_setMonthNames() { for (var i = 0; i < arguments.length; i++) { this.monthNames[i] = arguments[i]; } this.copyMonthNamesToWindow(); }
function CP_setMonthAbbreviations() { for (var i = 0; i < arguments.length; i++) { this.monthAbbreviations[i] = arguments[i]; } this.copyMonthNamesToWindow(); }
function CP_setDayHeaders() { for (var i = 0; i < arguments.length; i++) { this.dayHeaders[i] = arguments[i]; } }
function CP_setWeekStartDay(day) { this.weekStartDay = day; }
function CP_showYearNavigation() { this.isShowYearNavigation = (arguments.length > 0) ? arguments[0] : true; }
function CP_setDisplayType(type) { if (type != "date" && type != "week-end" && type != "month" && type != "quarter" && type != "year") { alert("Invalid display type! Must be one of: date,week-end,month,quarter,year"); return false; } this.displayType = type; }
function CP_setYearSelectStartOffset(num) { this.yearSelectStartOffset = num; }
function CP_setDisabledWeekDays() { this.disabledWeekDays = new Object(); for (var i = 0; i < arguments.length; i++) { this.disabledWeekDays[arguments[i]] = true; } }
function CP_addDisabledDates(start, end) { if (arguments.length == 1) { end = start; } if (start == null && end == null) { return; } if (this.disabledDatesExpression != "") { this.disabledDatesExpression += "||"; } if (start != null) { start = parseDate(start); start = "" + start.getFullYear() + LZ(start.getMonth() + 1) + LZ(start.getDate()); } if (end != null) { end = parseDate(end); end = "" + end.getFullYear() + LZ(end.getMonth() + 1) + LZ(end.getDate()); } if (start == null) { this.disabledDatesExpression += "(ds<=" + end + ")"; } else if (end == null) { this.disabledDatesExpression += "(ds>=" + start + ")"; } else { this.disabledDatesExpression += "(ds>=" + start + "&&ds<=" + end + ")"; } }
function CP_setTodayText(text) { this.todayText = text; }
function CP_setCssPrefix(val) { this.cssPrefix = val; }
function CP_showNavigationDropdowns() { this.isShowNavigationDropdowns = (arguments.length > 0) ? arguments[0] : true; }
function CP_showYearNavigationInput() { this.isShowYearNavigationInput = (arguments.length > 0) ? arguments[0] : true; }
function CP_hideCalendar() { if (arguments.length > 0) { window.popupWindowObjects[arguments[0]].hidePopup(); } else { this.hidePopup(); } }
function CP_refreshCalendar(index) { var calObject = window.popupWindowObjects[index]; if (arguments.length > 1) { calObject.populate(calObject.getCalendar(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])); } else { calObject.populate(calObject.getCalendar()); } calObject.refresh(); }
function CP_showCalendar(anchorname) { if (arguments.length > 1) { if (arguments[1] == null || arguments[1] == "") { this.currentDate = new Date(); } else { this.currentDate = new Date(parseDate(arguments[1])); } } this.populate(this.getCalendar()); this.showPopup(anchorname); }
function CP_select(inputobj, linkname, format) { var selectedDate = (arguments.length > 3) ? arguments[3] : null; if (!window.getDateFromFormat) { alert("calendar.select: To use this method you must also include 'date.js' for date formatting"); return; } if (this.displayType != "date" && this.displayType != "week-end") { alert("calendar.select: This function can only be used with displayType 'date' or 'week-end'"); return; } if (inputobj.type != "text" && inputobj.type != "hidden" && inputobj.type != "textarea") { alert("calendar.select: Input object passed is not a valid form input object"); window.CP_targetInput = null; return; } if (inputobj.disabled) { return; } window.CP_targetInput = inputobj; window.CP_calendarObject = this; this.currentDate = null; var time = 0; if (selectedDate != null) { time = getDateFromFormat(selectedDate, format) } else if (inputobj.value != "") { time = getDateFromFormat(inputobj.value, format); } if (selectedDate != null || inputobj.value != "") { if (time == 0) { this.currentDate = null; } else { this.currentDate = new Date(time); } } window.CP_dateFormat = format; this.showCalendar(linkname); }
function getCalendarStyles() { var result = ""; var p = ""; if (this != null && typeof (this.cssPrefix) != "undefined" && this.cssPrefix != null && this.cssPrefix != "") { p = this.cssPrefix; } result += "<STYLE>\n"; result += "." + p + "cpYearNavigation,." + p + "cpMonthNavigation{background-color:#C0C0C0;text-align:center;vertical-align:center;text-decoration:none;color:#000000;font-weight:bold;}\n"; result += "." + p + "cpDayColumnHeader, ." + p + "cpYearNavigation,." + p + "cpMonthNavigation,." + p + "cpCurrentMonthDate,." + p + "cpCurrentMonthDateDisabled,." + p + "cpOtherMonthDate,." + p + "cpOtherMonthDateDisabled,." + p + "cpCurrentDate,." + p + "cpCurrentDateDisabled,." + p + "cpTodayText,." + p + "cpTodayTextDisabled,." + p + "cpText{font-family:arial;font-size:8pt;}\n"; result += "TD." + p + "cpDayColumnHeader{text-align:right;border:solid thin #C0C0C0;border-width:0px 0px 1px 0px;}\n"; result += "." + p + "cpCurrentMonthDate, ." + p + "cpOtherMonthDate, ." + p + "cpCurrentDate{text-align:right;text-decoration:none;}\n"; result += "." + p + "cpCurrentMonthDateDisabled, ." + p + "cpOtherMonthDateDisabled, ." + p + "cpCurrentDateDisabled{color:#D0D0D0;text-align:right;text-decoration:line-through;}\n"; result += "." + p + "cpCurrentMonthDate, .cpCurrentDate{color:#000000;}\n"; result += "." + p + "cpOtherMonthDate{color:#808080;}\n"; result += "TD." + p + "cpCurrentDate{color:white;background-color: #C0C0C0;border-width:1px;border:solid thin #800000;}\n"; result += "TD." + p + "cpCurrentDateDisabled{border-width:1px;border:solid thin #FFAAAA;}\n"; result += "TD." + p + "cpTodayText, TD." + p + "cpTodayTextDisabled{border:solid thin #C0C0C0;border-width:1px 0px 0px 0px;}\n"; result += "A." + p + "cpTodayText, SPAN." + p + "cpTodayTextDisabled{height:20px;}\n"; result += "A." + p + "cpTodayText{color:black;}\n"; result += "." + p + "cpTodayTextDisabled{color:#D0D0D0;}\n"; result += "." + p + "cpBorder{border:solid thin #808080;}\n"; result += "</STYLE>\n"; return result; }
function CP_getCalendar() { var now = new Date(); if (this.type == "WINDOW") { var windowref = "window.opener."; } else { var windowref = ""; } var result = ""; if (this.type == "WINDOW") { result += "<HTML><HEAD><TITLE>Calendar</TITLE>" + this.getStyles() + "</HEAD><BODY MARGINWIDTH=0 MARGINHEIGHT=0 TOPMARGIN=0 RIGHTMARGIN=0 LEFTMARGIN=0>\n"; result += '<CENTER><TABLE WIDTH=100% BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>\n'; } else { result += '<TABLE CLASS="' + this.cssPrefix + 'cpBorder" WIDTH=144 BORDER=1 BORDERWIDTH=1 CELLSPACING=0 CELLPADDING=1>\n'; result += '<TR><TD ALIGN=CENTER>\n'; result += '<CENTER>\n'; } if (this.displayType == "date" || this.displayType == "week-end") { if (this.currentDate == null) { this.currentDate = now; } if (arguments.length > 0) { var month = arguments[0]; } else { var month = this.currentDate.getMonth() + 1; } if (arguments.length > 1 && arguments[1] > 0 && arguments[1] - 0 == arguments[1]) { var year = arguments[1]; } else { var year = this.currentDate.getFullYear(); } var daysinmonth = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { daysinmonth[2] = 29; } var current_month = new Date(year, month - 1, 1); var display_year = year; var display_month = month; var display_date = 1; var weekday = current_month.getDay(); var offset = 0; offset = (weekday >= this.weekStartDay) ? weekday - this.weekStartDay : 7 - this.weekStartDay + weekday; if (offset > 0) { display_month--; if (display_month < 1) { display_month = 12; display_year--; } display_date = daysinmonth[display_month] - offset + 1; } var next_month = month + 1; var next_month_year = year; if (next_month > 12) { next_month = 1; next_month_year++; } var last_month = month - 1; var last_month_year = year; if (last_month < 1) { last_month = 12; last_month_year--; } var date_class; if (this.type != "WINDOW") { result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>"; } result += '<TR>\n'; var refresh = windowref + 'CP_refreshCalendar'; var refreshLink = 'javascript:' + refresh; if (this.isShowNavigationDropdowns) { result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="78" COLSPAN="3"><select CLASS="' + this.cssPrefix + 'cpMonthNavigation" name="cpMonth" onChange="' + refresh + '(' + this.index + ',this.options[this.selectedIndex].value-0,' + (year - 0) + ');">'; for (var monthCounter = 1; monthCounter <= 12; monthCounter++) { var selected = (monthCounter == month) ? 'SELECTED' : ''; result += '<option value="' + monthCounter + '" ' + selected + '>' + this.monthNames[monthCounter - 1] + '</option>'; } result += '</select></TD>'; result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="10">&nbsp;</TD>'; result += '<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="56" COLSPAN="3"><select CLASS="' + this.cssPrefix + 'cpYearNavigation" name="cpYear" onChange="' + refresh + '(' + this.index + ',' + month + ',this.options[this.selectedIndex].value-0);">'; for (var yearCounter = year - this.yearSelectStartOffset; yearCounter <= year + this.yearSelectStartOffset; yearCounter++) { var selected = (yearCounter == year) ? 'SELECTED' : ''; result += '<option value="' + yearCounter + '" ' + selected + '>' + yearCounter + '</option>'; } result += '</select></TD>'; } else { if (this.isShowYearNavigation) { result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="10"><A CLASS="' + this.cssPrefix + 'cpMonthNavigation" HREF="' + refreshLink + '(' + this.index + ',' + last_month + ',' + last_month_year + ');">&lt;</A></TD>'; result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="58"><SPAN CLASS="' + this.cssPrefix + 'cpMonthNavigation">' + this.monthNames[month - 1] + '</SPAN></TD>'; result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="10"><A CLASS="' + this.cssPrefix + 'cpMonthNavigation" HREF="' + refreshLink + '(' + this.index + ',' + next_month + ',' + next_month_year + ');">&gt;</A></TD>'; result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="10">&nbsp;</TD>'; result += '<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="10"><A CLASS="' + this.cssPrefix + 'cpYearNavigation" HREF="' + refreshLink + '(' + this.index + ',' + month + ',' + (year - 1) + ');">&lt;</A></TD>'; if (this.isShowYearNavigationInput) { result += '<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="36"><INPUT NAME="cpYear" CLASS="' + this.cssPrefix + 'cpYearNavigation" SIZE="4" MAXLENGTH="4" VALUE="' + year + '" onBlur="' + refresh + '(' + this.index + ',' + month + ',this.value-0);"></TD>'; } else { result += '<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="36"><SPAN CLASS="' + this.cssPrefix + 'cpYearNavigation">' + year + '</SPAN></TD>'; } result += '<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="10"><A CLASS="' + this.cssPrefix + 'cpYearNavigation" HREF="' + refreshLink + '(' + this.index + ',' + month + ',' + (year + 1) + ');">&gt;</A></TD>'; } else { result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="22"><A CLASS="' + this.cssPrefix + 'cpMonthNavigation" HREF="' + refreshLink + '(' + this.index + ',' + last_month + ',' + last_month_year + ');">&lt;&lt;</A></TD>\n'; result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="100"><SPAN CLASS="' + this.cssPrefix + 'cpMonthNavigation">' + this.monthNames[month - 1] + ' ' + year + '</SPAN></TD>\n'; result += '<TD CLASS="' + this.cssPrefix + 'cpMonthNavigation" WIDTH="22"><A CLASS="' + this.cssPrefix + 'cpMonthNavigation" HREF="' + refreshLink + '(' + this.index + ',' + next_month + ',' + next_month_year + ');">&gt;&gt;</A></TD>\n'; } } result += '</TR></TABLE>\n'; result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=0 CELLPADDING=1 ALIGN=CENTER>\n'; result += '<TR>\n'; for (var j = 0; j < 7; j++) { result += '<TD CLASS="' + this.cssPrefix + 'cpDayColumnHeader" WIDTH="14%"><SPAN CLASS="' + this.cssPrefix + 'cpDayColumnHeader">' + this.dayHeaders[(this.weekStartDay + j) % 7] + '</TD>\n'; } result += '</TR>\n'; for (var row = 1; row <= 6; row++) { result += '<TR>\n'; for (var col = 1; col <= 7; col++) { var disabled = false; if (this.disabledDatesExpression != "") { var ds = "" + display_year + LZ(display_month) + LZ(display_date); eval("disabled=(" + this.disabledDatesExpression + ")"); } var dateClass = ""; if ((display_month == this.currentDate.getMonth() + 1) && (display_date == this.currentDate.getDate()) && (display_year == this.currentDate.getFullYear())) { dateClass = "cpCurrentDate"; } else if (display_month == month) { dateClass = "cpCurrentMonthDate"; } else { dateClass = "cpOtherMonthDate"; } if (disabled || this.disabledWeekDays[col - 1]) { result += '	<TD CLASS="' + this.cssPrefix + dateClass + '"><SPAN CLASS="' + this.cssPrefix + dateClass + 'Disabled">' + display_date + '</SPAN></TD>\n'; } else { var selected_date = display_date; var selected_month = display_month; var selected_year = display_year; if (this.displayType == "week-end") { var d = new Date(selected_year, selected_month - 1, selected_date, 0, 0, 0, 0); d.setDate(d.getDate() + (7 - col)); selected_year = d.getYear(); if (selected_year < 1000) { selected_year += 1900; } selected_month = d.getMonth() + 1; selected_date = d.getDate(); } result += '	<TD CLASS="' + this.cssPrefix + dateClass + '"><A HREF="javascript:' + windowref + this.returnFunction + '(' + selected_year + ',' + selected_month + ',' + selected_date + ');' + windowref + 'CP_hideCalendar(\'' + this.index + '\');" CLASS="' + this.cssPrefix + dateClass + '">' + display_date + '</A></TD>\n'; } display_date++; if (display_date > daysinmonth[display_month]) { display_date = 1; display_month++; } if (display_month > 12) { display_month = 1; display_year++; } } result += '</TR>'; } var current_weekday = now.getDay() - this.weekStartDay; if (current_weekday < 0) { current_weekday += 7; } result += '<TR>\n'; result += '	<TD COLSPAN=7 ALIGN=CENTER CLASS="' + this.cssPrefix + 'cpTodayText">\n'; if (this.disabledDatesExpression != "") { var ds = "" + now.getFullYear() + LZ(now.getMonth() + 1) + LZ(now.getDate()); eval("disabled=(" + this.disabledDatesExpression + ")"); } if (disabled || this.disabledWeekDays[current_weekday + 1]) { result += '		<SPAN CLASS="' + this.cssPrefix + 'cpTodayTextDisabled">' + this.todayText + '</SPAN>\n'; } else { result += '		<A CLASS="' + this.cssPrefix + 'cpTodayText" HREF="javascript:' + windowref + this.returnFunction + '(\'' + now.getFullYear() + '\',\'' + (now.getMonth() + 1) + '\',\'' + now.getDate() + '\');' + windowref + 'CP_hideCalendar(\'' + this.index + '\');">' + this.todayText + '</A>\n'; } result += '		<BR>\n'; result += '	</TD></TR></TABLE></CENTER></TD></TR></TABLE>\n'; } if (this.displayType == "month" || this.displayType == "quarter" || this.displayType == "year") { if (arguments.length > 0) { var year = arguments[0]; } else { if (this.displayType == "year") { var year = now.getFullYear() - this.yearSelectStartOffset; } else { var year = now.getFullYear(); } } if (this.displayType != "year" && this.isShowYearNavigation) { result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>"; result += '<TR>\n'; result += '	<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="22"><A CLASS="' + this.cssPrefix + 'cpYearNavigation" HREF="javascript:' + windowref + 'CP_refreshCalendar(' + this.index + ',' + (year - 1) + ');">&lt;&lt;</A></TD>\n'; result += '	<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="100">' + year + '</TD>\n'; result += '	<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="22"><A CLASS="' + this.cssPrefix + 'cpYearNavigation" HREF="javascript:' + windowref + 'CP_refreshCalendar(' + this.index + ',' + (year + 1) + ');">&gt;&gt;</A></TD>\n'; result += '</TR></TABLE>\n'; } } if (this.displayType == "month") { result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n'; for (var i = 0; i < 4; i++) { result += '<TR>'; for (var j = 0; j < 3; j++) { var monthindex = ((i * 3) + j); result += '<TD WIDTH=33% ALIGN=CENTER><A CLASS="' + this.cssPrefix + 'cpText" HREF="javascript:' + windowref + this.returnMonthFunction + '(' + year + ',' + (monthindex + 1) + ');' + windowref + 'CP_hideCalendar(\'' + this.index + '\');" CLASS="' + date_class + '">' + this.monthAbbreviations[monthindex] + '</A></TD>'; } result += '</TR>'; } result += '</TABLE></CENTER></TD></TR></TABLE>\n'; } if (this.displayType == "quarter") { result += '<BR><TABLE WIDTH=120 BORDER=1 CELLSPACING=0 CELLPADDING=0 ALIGN=CENTER>\n'; for (var i = 0; i < 2; i++) { result += '<TR>'; for (var j = 0; j < 2; j++) { var quarter = ((i * 2) + j + 1); result += '<TD WIDTH=50% ALIGN=CENTER><BR><A CLASS="' + this.cssPrefix + 'cpText" HREF="javascript:' + windowref + this.returnQuarterFunction + '(' + year + ',' + quarter + ');' + windowref + 'CP_hideCalendar(\'' + this.index + '\');" CLASS="' + date_class + '">Q' + quarter + '</A><BR><BR></TD>'; } result += '</TR>'; } result += '</TABLE></CENTER></TD></TR></TABLE>\n'; } if (this.displayType == "year") { var yearColumnSize = 4; result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>"; result += '<TR>\n'; result += '	<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="50%"><A CLASS="' + this.cssPrefix + 'cpYearNavigation" HREF="javascript:' + windowref + 'CP_refreshCalendar(' + this.index + ',' + (year - (yearColumnSize * 2)) + ');">&lt;&lt;</A></TD>\n'; result += '	<TD CLASS="' + this.cssPrefix + 'cpYearNavigation" WIDTH="50%"><A CLASS="' + this.cssPrefix + 'cpYearNavigation" HREF="javascript:' + windowref + 'CP_refreshCalendar(' + this.index + ',' + (year + (yearColumnSize * 2)) + ');">&gt;&gt;</A></TD>\n'; result += '</TR></TABLE>\n'; result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n'; for (var i = 0; i < yearColumnSize; i++) { for (var j = 0; j < 2; j++) { var currentyear = year + (j * yearColumnSize) + i; result += '<TD WIDTH=50% ALIGN=CENTER><A CLASS="' + this.cssPrefix + 'cpText" HREF="javascript:' + windowref + this.returnYearFunction + '(' + currentyear + ');' + windowref + 'CP_hideCalendar(\'' + this.index + '\');" CLASS="' + date_class + '">' + currentyear + '</A></TD>'; } result += '</TR>'; } result += '</TABLE></CENTER></TD></TR></TABLE>\n'; } if (this.type == "WINDOW") { result += "</BODY></HTML>\n"; } return result; }



//calendarSelect.js
// ===================================================================
//	New Mind Calendar functions
//
//
// ===================================================================

var now = new Date();
now.setDate(now.getDate() - 1);
var calStartDate = new CalendarPopup();
calStartDate.setReturnFunction("setStartDateValues");
calStartDate.setWeekStartDay(1);
calStartDate.addDisabledDates(null, formatDate(now, "yyyy-MM-dd"));

var calEndDate = new CalendarPopup();
calEndDate.setReturnFunction("setEndDateValues");

function getCalForm() {
	var o;
	o = document.getElementById('calendarForm');
	if(o === null){
		o = document.getElementById('SC_CalendarForm');
	}
	if(o === null){
		o = document.getElementById('refineBySearchForm');
	}
	if (o === null) {
		o = document.getElementById('searchAdvanced');
	}
	return o;
}

function setStartDateValues(y, m, d) {
	var $f = $(getCalForm());

	$f.find('select[name=staydate_year]').val(y);
	$f.find('select[name=staydate_month]').val(m);
	$f.find('select[name=staydate_day]').val(d);
	
}

function setEndDateValues(y, m, d) {
	var $f = $(getCalForm());

	$f.find('select[name=enddate_year]').val(y);
	$f.find('select[name=enddate_month]').val(m);
	$f.find('select[name=enddate_day]').val(d);

}

function getDateString(y_obj, m_obj, d_obj) {
	var y = y_obj.options[y_obj.selectedIndex].value;
	var m = m_obj.options[m_obj.selectedIndex].value;
	var d = d_obj.options[d_obj.selectedIndex].value;
	if (y == "" || m == "") { return null; }
	if (d == "") { d = 1; }
	return str = y + '-' + m + '-' + d;
}

function ShowStartDateCalendar() {

	var elmInput = GetEventSource(this);
	var name = elmInput.id;

	var elmsSelects = elmInput.parentNode.getElementsByTagName('select');
	if (elmsSelects.length > 0) {
		iIndexOfUnderscore = elmsSelects[0].name.indexOf('_');
		field = elmsSelects[0].name.substring(0, iIndexOfUnderscore);
	}

	var $form = $(getCalForm());
	var date = getDateString($form.find('select[name=' + field + '_year]')[0], $form.find('select[name=' + field + '_month]')[0], $form.find('select[name=' + field + '_day]')[0]);
	
	calStartDate.showCalendar(name, date);
}

function ShowEndDateCalendar() {

	var elmInput = GetEventSource(this);
	var name = elmInput.id;

	var elmsSelects = elmInput.parentNode.getElementsByTagName('select');
	if (elmsSelects.length > 0) {
		iIndexOfUnderscore = elmsSelects[0].name.indexOf('_');
		field = elmsSelects[0].name.substring(0, iIndexOfUnderscore);
	}
	
	var $form = $(getCalForm());
	var date = getDateString($form.find('select[name=' + field + '_year]')[0], $form.find('select[name=' + field + '_month]')[0], $form.find('select[name=' + field + '_day]')[0]);
	
	calEndDate.showCalendar(name, date);

}

//AvCal.js
function EviivoUnitSelectInitialise() {

	if (document.getElementById('EviivoAvailabilityResults')) {
		RoomResultsInputs = document.getElementById('EviivoAvailabilityResults').getElementsByTagName('input');
		for (var i = 0; i < RoomResultsInputs.length; i++) {
			var x = RoomResultsInputs.item(i);
			if (x.type.toLowerCase() == 'checkbox') {
				AddEventListener(x, 'change', EviivoUnitSelectOnChange);
				AddEventListener(x, 'click', EviivoUnitSelectOnChange);
			}

		}

	}

}


function EviivoUnitSelectOnChange() {
	if (this.name != '') {
		//.. moz
		var o = this;
	} else {
		//.. ie
		var o = window.event.srcElement;
	}
	//alert('Changed ' + o.id);
	EviivoUnitCalculateTotal();
}



function EviivoUnitCalculateTotal() {
	var total = 0;

	if (document.getElementById('EviivoAvailabilityResults')) {
		RoomResultsInputs = document.getElementById('EviivoAvailabilityResults').getElementsByTagName('input');
		for (var i = 0; i < RoomResultsInputs.length; i++) {
			var x = RoomResultsInputs.item(i);
			if (x.type.toLowerCase() == 'checkbox') {
				if (x.checked) {
					thisPrice = parseFloat(document.getElementById(x.id + '-price').value)
				}
				else {
					thisPrice = 0;
				}

				total += thisPrice;

			}
		}
	}
	document.getElementById('AvCalTotal').lastChild.data = String.fromCharCode(163) + MakePrice(total);
}

AddEventListener(window, 'load', EviivoUnitSelectInitialise);





function AvCalInitialise() {

	var elmStartDate = document.getElementById('anchorStartDate');
	if (elmStartDate != null) AddEventListener(elmStartDate, 'click', ShowStartDateCalendar);

	var elmEndDate = document.getElementById('anchorEndDate');
	if (elmEndDate != null) AddEventListener(elmEndDate, 'click', ShowEndDateCalendar);

	if (document.getElementById('roomSelection')) {
		AvCalSelects = document.getElementById('roomSelection').getElementsByTagName('select');
		for (var i = 0; i < AvCalSelects.length; i++) {
			var x = AvCalSelects.item(i);
			if (AvCalGetName(x) == 'unit') {
				AddEventListener(x, 'change', AvCalOnChange);
				var unitkey = AvCalGetUnit(x, 'actual');
				var unitid = AvCalGetUnit(x, 'full');
				var y = document.getElementById('occu_' + unitid);
				if (y != undefined) {
					AvCalRenderSelect(x, y);
					AddEventListener(y, 'change', AvCalOnChange);
				}
				var z = document.getElementById('occuC_' + unitid);
				if (z != undefined) {
					AvCalRenderSelect(x, z);
					AvCalShowChildAges(z);
					AddEventListener(z, 'change', AvCalOnChange);
				}
			}
		}
	}
}

function AvCalCheckLinkedUnits(o) {
	if (document.getElementById('roomSelection')) {
		AvCalSelects = document.getElementById('roomSelection').getElementsByTagName('select');
		for (var i = 0; i < AvCalSelects.length; i++) {
			var x = AvCalSelects.item(i);
			if (AvCalGetName(x) == 'unit') {
				if ((AvCalGetUnit(o, 'full') != AvCalGetUnit(x, 'full')) && (AvCalGetUnit(o, 'linked') == AvCalGetUnit(x, 'linked'))) {
					AvCalRenderSelect(o, x);
				}
			}
		}
	}
}


function AvCalCalculatePrices() {
	if (document.getElementById('roomSelection')) {
		AvCalSelects = document.getElementById('roomSelection').getElementsByTagName('select');
		var total = 0;
		for (var i = 0; i < AvCalSelects.length; i++) {
			var x = AvCalSelects.item(i);
			if (AvCalGetName(x) == 'unit') {
				var subtotal = 0;
				var unitid = AvCalGetUnit(x, 'full');
				var unitkey = AvCalGetUnit(x, 'actual');
				var prices = AvCalGetData(unitkey, 'prices');
				if (prices == null) { return; }
				var y = document.getElementById('occu_' + unitid);
				var z = document.getElementById('occuC_' + unitid);
				if (y) {
					var ad = parseInt(y.value);
				} else {
					var ad = 0;
				}
				if (z) {
					var ch = parseInt(z.value);
				} else {
					var ch = 0;
				}
				for (var j = 0; j = prices.length; j++) {
					if (AvCalGetData(unitkey, 'basis') == 'per per') {
						subtotal += prices.shift() * (ad + ch);
					} else {
						subtotal += prices.shift() * x.value;
					}
				}
				total += subtotal;
				document.getElementById('data_' + unitkey).parentNode.lastChild.data = String.fromCharCode(163) + MakePrice(subtotal);
			}
		}
		document.getElementById('AvCalTotal').lastChild.data = String.fromCharCode(163) + MakePrice(total);
	}
}

function AvCalGetData(unitkey, type) {
	if (document.getElementById('data_' + unitkey)) {
		var data = document.getElementById('data_' + unitkey).value.split(',');
		if (type == 'maxunit') {
			data = data.slice(0, 1);
		} else if (type == 'minocc') {
			data = data.slice(1, 2);
			if (data == 0 || data == null) data = 1;
		} else if (type == 'maxocc') {
			data = data.slice(2, 3);
		} else if (type == 'basis') {
			data = data.slice(3, 4);
		} else if (type == 'prices') {
			data = data.slice(4);
		}
		return data;
	} else {
		return null;
	}
}

function AvCalGetName(obj) {
	if (obj) {
		var name = obj.name.substring(0, obj.name.indexOf('_', 0));
	} else {
		var name = null;
	}
	return name;
}

function AvCalGetUnit(obj, type) {
	if (obj) {
		var unit = obj.name.substring(obj.name.indexOf('_', 0) + 1, obj.name.length);
		if (unit.indexOf('_', 0) > 0) {
			if (type == 'actual') {
				//.. individiual unit key
				unit = unit.substring(unit.indexOf('_', 0) + 1, unit.length);
			} else if (type == 'linked') {
				//.. master linked unit key
				unit = unit.substring(0, unit.indexOf('_', 0));
			} else if (type == 'full') {
				//.. full string
			}
		}
		return unit;
	} else {
		return null;
	}
}

function AvCalChildrenEnabled(obj) {
	if (document.getElementById('occuC_' + AvCalGetUnit(obj, 'full'))) {
		return true;
	} else {
		return false;
	}
}

function AvCalOnChange() {
	if (!document.all) {
		//.. moz
		var o = this;
	} else {
		//.. ie
		var o = window.event.srcElement;
	}
	var unitid = AvCalGetUnit(o, 'full');
	var unitkey = AvCalGetUnit(o, 'actual');
	var x = document.getElementById('unit_' + unitid);
	var y = document.getElementById('occu_' + unitid);
	var z = document.getElementById('occuC_' + unitid);
	if (AvCalGetName(o) == 'unit') {
		//AvCalCheckLinkedUnits(o);
		AvCalRenderSelect(x, y);
		AvCalRenderSelect(x, z);
	} else if (AvCalGetName(o) == 'occu') {
		AvCalRenderSelect(y, z);
	} else if (AvCalGetName(o) == 'occuC') {
		AvCalRenderSelect(z, y);
	}
	AvCalShowChildAges(z);
	AvCalCalculatePrices();
}


function AvCalShowChildAges(x) {
	if (document.getElementById('occuC_' + AvCalGetUnit(x, 'full') + '_childages') != null) {
		var o = document.getElementById('occuC_' + AvCalGetUnit(x, 'full') + '_childages');
		var l = o.previousSibling;
		if (x.value < 1) {
			o.className = 'hidden';
			l.className = 'hidden';
		} else {
			o.className = '';
			l.className = '';
		}
	}
}

function AvCalRenderSelect(o, obj) {
	if (obj) {
		var unitid = AvCalGetUnit(o, 'full');
		var unitkey = AvCalGetUnit(o, 'actual');
		var x = document.getElementById('unit_' + unitid);
		var y = document.getElementById('occu_' + unitid);
		var z = document.getElementById('occuC_' + unitid);
		if (x.value < 1) {
			obj.selectedIndex = 0;
			obj.className = 'hidden';
			RemoveChildren(obj);
			AvCalCreateOptions(obj, 0, 0);
		} else {
			var minOcc = AvCalGetData(unitkey, 'minocc');
			var maxOcc = AvCalGetData(unitkey, 'maxocc');
			var iOldVal = obj.value;
			obj.className = '';
			if (AvCalChildrenEnabled(x)) {
				if (y) {
					var ad = parseInt(y.value);
				} else {
					var ad = 0;
				}
				if (z) {
					var ch = parseInt(z.value);
				} else {
					var ch = 0;
				}
				if (AvCalGetName(o) == 'unit') {
					var maxVal = x.value * maxOcc;
				} else if (AvCalGetName(o) == 'occu') {
					var maxVal = x.value * maxOcc - ad;
				} else if (AvCalGetName(o) == 'occuC') {
					var maxVal = x.value * maxOcc - ch;
				}
				RemoveChildren(obj);
				AvCalCreateOptions(obj, 0, maxVal);
			} else {
				RemoveChildren(obj);
				AvCalCreateOptions(obj, 0, x.value * maxOcc);
			}
			for (i = 0; i < obj.options.length; ++i)
				if (obj.options[i].value == iOldVal) obj.options[i].selected = true;
		}
	}
}

function AvCalCreateOptions(obj, min, max) {
	for (var i = min; i <= max; i++) {
		AddOption(obj, i, i);
	}
}


function MakePrice(amount) {
	var i = parseFloat(amount);
	if (isNaN(i)) {
		i = 0.00;
	}
	var minus = '';
	if (i < 0) {
		minus = '-';
	}
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	var s = new String(i);
	if (s.indexOf('.') < 0) {
		s += '.00';
	}
	if (s.indexOf('.') == (s.length - 2)) {
		s += '0';
	}
	s = minus + s;
	return s;
}

AddEventListener(window, 'load', AvCalInitialise);


//refineBy.js
function InitialiseRefineBy() {
	//<dt><input onclick="ShowHideRefine(this);" />
	bHideNextDD = false;
	var refineList = $('#refineBy #refineByDefList')[0];
	if(refineList != null)
	{
		if(refineList.hasChildNodes())
		{
			var children = refineList.childNodes;
			for (var i = 0; i < children.length; i++) {
				if (children[i].tagName == 'DT') {
					AddEventListener(children[i].firstChild, 'click', ShowHideRefine)
					if (children[i].firstChild.checked != true) {
						bHideNextDD = true;
					}
					if (children[i].className.indexOf('mandatory') > -1) {
						bHideNextDD = false;
						//var sel = children[i].parentNode.parentNode.getElementById('src_area');
						var sel = document.getElementById('src_area');
						AddEventListener(sel, 'change', CheckMandatory);
						if (sel.options[sel.selectedIndex].value == '') {
							RefineBySubmit(false);
						}
						else {
							RefineBySubmit(true);
						}
					}
				}
				else if (children[i].tagName == 'DD' && bHideNextDD == true) {
					bHideNextDD = false;
					children[i].style.display = 'none';
				}
			}

		}
	}
}

function CheckMandatory() {
	var objInput = GetEventSource(this);
	if (objInput.options[objInput.selectedIndex].value == '') {
		RefineBySubmit(false);
	}
	else {
		RefineBySubmit(true);
	}
}


function RefineBySubmit(enable) {
	var inputs = document.getElementById('refineBySearchForm').getElementsByTagName('INPUT');
	for (var i = 0; i < inputs.length; i++) {
		if (inputs[i].className == 'submit') {
			if (enable) {
				//AddEventListener(inputs[i], 'click', EnabledSubmit);
				RemoveEventListener(inputs[i], 'click', DisabledSubmit);
			}
			else {
				AddEventListener(inputs[i], 'click', DisabledSubmit);
				//RemoveEventListener(inputs[i], 'click', EnabledSubmit);
			}
		}
	}
}

function DisabledSubmit(e) {
	returnFalse(e);
	alert('Please choose a location!');
	document.getElementById('src_area').focus();
}

function ShowHideRefine() {
	var objInput = GetEventSource(this)
	if (objInput.checked == true) {
		objInput.parentNode.nextSibling.style.display = 'block';
	}
	else {
		objInput.parentNode.nextSibling.style.display = 'none';
	}

}

AddEventListener(window, 'load', InitialiseRefineBy);


function ShowHideCapacityRefine() {
	var availInput = document.getElementById('refine-availability');
	var capInput = document.getElementById('refine-unitcapacitytype');
	var typeInput = document.getElementById('refine-category');
	if (availInput != null && capInput != null) {
		if (availInput.checked == true) {
			capInput.parentNode.style.display = 'none';
			capInput.disabled = true
			capInput.checked = false
		}
		else {
			//if (capInput.checked == true)
			//{
			//capInput.parentNode.nextSibling.style.display = 'block';
			//}
			capInput.disabled = false

		}



		if (typeInput.checked == true && availInput.checked == false) {
			capInput.parentNode.style.display = 'block';
		}
		else {
			capInput.parentNode.style.display = 'none';
			capInput.parentNode.nextSibling.style.display = 'none'
		}
	}
	else if (typeInput != null && capInput != null) {
		if (typeInput.checked == true) {
			capInput.parentNode.style.display = 'block';
		}
		else {
			capInput.parentNode.style.display = 'none';
			capInput.parentNode.nextSibling.style.display = 'none'
		}
	}
}
AddEventListener(window, 'load', ShowHideCapacityRefine);

//quickFind.js
function InitialiseQuickFind() {
	var sels = document.getElementsByTagName('SELECT');
	if (sels != null) {
		for (var i = 0; i < sels.length; i++) {
			if (sels[i].className == 'quickfindDrop') {
				AddEventListener(sels[i], 'change', QuickFind_OnChange)
			}
		}
	}
}


function QuickFind_OnChange() {
	var select = GetEventSource(this);
	//traverse up 'til we reach a form then submit that badboy!

	var elmForm = GetParentElement(select, 'FORM');
	if (elmForm.nodeName == 'FORM') {
		elmForm.action = select.value;
		elmForm.submit();
	}
}

AddEventListener(window, 'load', InitialiseQuickFind);


//navMenu.js
// this function is run on window.onload and loops through the "navList" list
// assigning mouseover and mouseout events on the list items
startList = function() {
	//alert("starting");
	if (document.all && document.getElementById) {
		if (document.getElementById("headerNav")) {
			navRoot = document.getElementById("headerNav");
			//alert("Node Name = " +navRoot.nodeName);
			for (i = 0; i < navRoot.childNodes.length; i++) {
				node = navRoot.childNodes[i];
				//alert("Node Name = " +node.nodeName);
				if (node.nodeName == "UL") {
					for (j = 0; j < node.childNodes.length; j++) {
						anode = node.childNodes[j];
						//alert("Node Name = " +anode.nodeName);
						if (anode.nodeName == "LI") {
							//alert("added");
							anode.onmouseover = function() {
								this.className += " over";

								//position an iframe behind if one exists
								if (document.getElementById("DivShim")) {

									//declared subList for IE error when checking for undefined
									var subList;
									var ifrRef = document.getElementById("DivShim");

									for (k = 0; k < this.childNodes.length; k++) {
										nodeChild = this.childNodes[k];
										if (nodeChild.nodeName == "UL") { subList = nodeChild; }
									}

									if (subList != undefined) {
										ifrRef.style.display = "block";
										ifrRef.style.width = subList.offsetWidth;
										ifrRef.style.height = subList.offsetHeight;
										ifrRef.style.top = subList.offsetTop;
										ifrRef.style.left = subList.parentNode.offsetLeft;
										ifrRef.style.zIndex = subList.style.zIndex - 1;
									}
								}
							}
							anode.onmouseout = function() {
								this.className = this.className.replace(" over", "");
								if (document.getElementById("DivShim")) {
									ifrRef = document.getElementById("DivShim");
									ifrRef.style.display = "none";
								}
							}
						}
					}
				}
			}
		}
	}
}

AddEventListener(window, 'load', startList);



// text size switcher

function textSizeSwitcher() {
	var uls = document.getElementsByTagName('ul');
	for (i = 0; i < uls.length; i++) {
		if (uls[i].className == 'textSizeSwitcher') {
			ch = uls[i].childNodes;
			for (j = 0; j < ch.length; j++) {
				var x = ch[j].firstChild;
				if (ch[j].className == 'default') {
					AddEventListener(x, 'click', textSizeDefault);
				}
				if (ch[j].className == 'larger') {
					AddEventListener(x, 'click', textSizeLarge);
				}
				if (ch[j].className == 'largest') {
					AddEventListener(x, 'click', textSizeLargest);
				}
			}
		}
	}
	if (getCookie('text_size') == 1) {
		document.getElementsByTagName('html')[0].style.fontSize = '140%';
	}
	if (getCookie('text_size') == 2) {
		document.getElementsByTagName('html')[0].style.fontSize = '180%';
	}
}

function textSizeLarge(e) {
	returnFalse(e);
	document.getElementsByTagName('html')[0].style.fontSize = '140%';
	setCookie('text_size', 1, 1);
}

function textSizeLargest(e) {
	returnFalse(e);
	document.getElementsByTagName('html')[0].style.fontSize = '180%';
	setCookie('text_size', 2, 1);
}

function textSizeDefault(e) {
	returnFalse(e);
	document.getElementsByTagName('html')[0].style.fontSize = '100%';
	setCookie('text_size', 0, 1);
}

AddEventListener(window, 'load', textSizeSwitcher);

// This stuff uses YUI


var unitTypeSuccess = function(o) {
	if (o.responseText !== undefined) {
		var xmlDoc = loadXMLDocXML(o.responseText);
		var utXml = xmlDoc.getElementsByTagName('unittype');
		var utSel = document.getElementById('src_unittype');
		var ucSel = document.getElementsByName('src_unitcapacity');

		if (utSel != null) {
			utSel.disabled = false;
			RemoveChildren(utSel);
			if (utXml.length > 0) {
				for (var i = 0; i < utXml.length; i++) {
					AddOption(utSel, utXml[i].getAttribute('id'), utXml[i].childNodes[0].data);
				}
			}
			else {
				AddOption(utSel, '', '-- Any --');
			}
		}

		var utXml = xmlDoc.getElementsByTagName('unittype');
		var utSel2 = document.getElementsByName('src_unitcapacitytype');


		for (var c = 0; c < utSel2.length; c++) {
			utSel2[c].disabled = false;
			RemoveChildren(utSel2[c]);
			if (utXml.length > 0) {
				for (var i = 0; i < utXml.length; i++) {
					AddOption(utSel2[c], utXml[i].getAttribute('id'), utXml[i].childNodes[0].data);
					for (var p = 0; p < ucSel.length; p++) {
						ucSel[p].disabled = false;
					}
				}
			}
			else {
				AddOption(utSel2[c], '', '-- Any --');

				for (var p = 0; p < ucSel.length; p++) {
					ucSel[p].disabled = true;
				}
			}
		}
	}
}

var unitTypeFailure = function(o) {
	if (o.responseText !== undefined) {
		alert('An error has occurred.');
	}
}

var unitTypeCallback =
{
	success: unitTypeSuccess,
	failure: unitTypeFailure,
	argument: { foo: "foo", bar: "bar" }
}

function unitTypesDisable() {
	var utSel = document.getElementById('src_unittype');

	if (utSel != null) {
		RemoveChildren(utSel);
		utSel.disabled = true;
		AddOption(utSel, '', '-- Please select a category first --');
	}

	var utSel2 = document.getElementsByName('src_unitcapacitytype');
	for (var i = 0; i < utSel2.length; i++) {
		RemoveChildren(utSel2[i]);
		utSel2[i].disabled = true;
		AddOption(utSel2[i], '', '-- Please select a type first --');
	}
	var ucSel = document.getElementsByName('src_unitcapacity');
	for (var c = 0; c < ucSel.length; c++) {
		ucSel[c].disabled = true;
	}
}

function unitTypesUpdate(e) {
	var elmSel = GetEventSource(this);
	var iCat = elmSel.value;
	var elmForm = GetParentElement(elmSel, 'FORM');
	if (elmForm.nodeName == 'FORM') {
		var elmInputs = elmForm.getElementsByTagName('INPUT');
		for (var i = 0; i < elmInputs.length; i++) {
			if (elmInputs[i].name == 'channel') {
				var mChan = elmInputs[i].value;
			}
			if (elmInputs[i].name == 'prodtype') {
				var mProd = elmInputs[i].value;
			}
		}
		if (mChan != null && mProd != null && iCat != null) {
			var sUrl = '/sitebuilder/ajax/unittypes.asp?chan=' + mChan + '&prod=' + mProd + '&cat=' + iCat;
			var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, unitTypeCallback);
		}
		else {
			unitTypesDisable();
		}
	}
}


function unitTypesInit() {
	if (typeof YAHOO != 'undefined') {
		if (typeof YAHOO.util.Connect != 'undefined') {
			var catSel = document.getElementById('src_category');
			var utSel = document.getElementById('src_unittype');
			if (catSel != null && utSel != null) {
				AddEventListener(catSel, 'change', unitTypesUpdate);
				var iCat = catSel.value;
				if (iCat == '') {
					unitTypesDisable();
				}
			}
			var catSel = document.getElementById('src_category');
			var utSel = document.getElementById('refine-unitcapacitytype')
			if (catSel != null && utSel != null) {
				AddEventListener(catSel, 'change', unitTypesUpdate);
				var iCat = catSel.value;
				if (iCat == '') {
					unitTypesDisable();
				}
			}

			//start

			var availCB = document.getElementById('refine-availability')
			var typeCB = document.getElementById('refine-category')
			var UnitCB = document.getElementById('refine-unitcapacitytype')
			if (typeCB != null && UnitCB != null) {
				if (availCB != null) {
					AddEventListener(availCB, 'change', ShowHideCapacityRefine);
					AddEventListener(availCB, 'click', ShowHideCapacityRefine);
				}
				AddEventListener(typeCB, 'change', ShowHideCapacityRefine);
				AddEventListener(typeCB, 'click', ShowHideCapacityRefine);
			}

			//end
		}
	}

}


AddEventListener(window, 'load', unitTypesInit);


//new availability calendar ajax - start

var availCalSuccess = function(o) {

	if (o !== undefined) {
		var $availCal = $('#availabilityCalendarTableWrapper');
		$availCal.html(o);

		var $calForm = $('#calendarForm');
		var iNights = $calForm.find('#nights')[0].value;

		var sNights = iNights + ' day';

		if (iNights > 1) {
			sNights = sNights + 's'
		}

		var dateString;
		var $isoStartDate = $calForm.find('input.isostartdate');
		if ($isoStartDate.length > 0) {
			dateString = $isoStartDate[0].value;
		}
		else {
			var day = $('#staydate_day')[0].value;
			var month = $('#staydate_month')[0].value;
			var year = $('#staydate_year')[0].value;
			var dayobj = new Date(year, month - 1, day)
			dateString = formatDate(dayobj, "d/MM/yyyy"); //formatDate(dayobj,"d MMM yyy")
		}

		$('#availCalNights').html(sNights);
		$('#availCalDate').html(dateString);

	}
}


function availCalUpdate(e) {

	var $availcalproduct = $('#availcalproduct');
	var $calForm = $('#calendarForm');
	
	var iProd = $availcalproduct.length > 0 ? $availcalproduct[0].value : null;
	var $nights = $calForm.find('#nights');
	var iNights = $nights.length > 0 ? $nights[0].value : null; 
	
	var day, month, year;

	var $isoStartDate = $calForm.find('input.isostartdate');

	if ($isoStartDate.length > 0) { //if we are using date picker parse date if not use select fields
		var aryDate = $isoStartDate[0].value.split('/');
		day = aryDate[0];
		month = aryDate[1];
		year = aryDate[2];
		
	}
	else {
		day = $('#staydate_day').length > 0 ? $('#staydate_day')[0].value : null;
		month = $('#staydate_month').length > 0 ? $('#staydate_month')[0].value : null;
		year = $('#staydate_year').length > 0 ? $('#staydate_year')[0].value : null;
	}
	if (iProd !== null && day !== null && month !== null && year !== null && iNights !== null) {

		var sUrl = '/sitebuilder/ajax/availcal.asp?product=' + iProd + '&staydate_day=' + day + '&staydate_month=' + month + '&staydate_year=' + year + '&nights=' + iNights;
		var request = $.ajax({
			type: "GET",
			url: sUrl,
			success: availCalSuccess,
			error: function(XMLHttpRequest, textStatus, errorThrown) {
				alert('An error has occurred updating availability calendar.'); 
			}
		});

	}
	returnFalse(e);

}

function checkAvailCal(objAvCalForm) {
	AvCalSelects = objAvCalForm.getElementsByTagName('select');
	var total = 0;
	for (var i = 0; i < AvCalSelects.length; i++) {
		var x = AvCalSelects.item(i).value;
		total += x * 1; //convert x to a number
	}
	if (total > 0) { return true }
	else {
		alert("Please select the units you want to book.");
		return false;
	}
}

function availCalInit() {
	if (window.jQuery) {
		var availCalSrchCntl = document.getElementById('calendarForm');
		var availCal = document.getElementById('availabilityCalendarTableWrapper');
		if (availCalSrchCntl != null && availCal != null) {
			AddEventListener(availCalSrchCntl, 'submit', availCalUpdate);
		}
	}
}

AddEventListener(window, 'load', availCalInit);

//new availability calendar ajax - end 


// =========================================================================================
// HANDLE EXTERNAL / POPUP LINKS
// - To be fully XHTML, link elements shouldn't utilise the "target" attribute, so it's
//   been taken out of the generated markup and instead we hook up the click and keypress
//   handlers to popup a window for us on links with "rel" attrib set to "external".
//    However, this means that "referrer" header information isn't passed properly by all
//   browsers (IE) so stats get screwed up. "target" is still a valid DOM setting, so we're
//   going to cheat and make the click and keypress handlers set "target" to "_blank" and
//   let the window open, then undo the "target" setting (so even Firebug's little indicator
//   in the status bar will flip back to valid).
// NB: "rel" attributes can have multiple values, space separated - eg. "external nofollow"
// =========================================================================================
function externalLinks() {
	// Loop through all anchor / link elements of page with "rel" attrib set to "external"
	// and adjust intercept their onclick handler (if any) such that it will call the
	// TargetAttribCheat function first, which will set the link's "target" attrib to
	// "blank" and then set it back to its previous value (if any) 100ms later. This
	// means any onclick code that gets called better be quicker! Displaying an alert
	// box in the onclick handler will cause issues, for example.
	if (!document.getElementsByTagName)
		return;
	var arrLinks = document.getElementsByTagName("a");
	for (var i = 0; i < arrLinks.length; i++) {
		var objLink = arrLinks[i];
		if ((objLink.getAttribute("href"))
		&& ((" " + objLink.getAttribute("rel") + " ").indexOf(" external ") !== -1)) {
			if (objLink.title.indexOf("opens in a") == -1)
				objLink.title += " Link opens in a new window";
			objLink.onclick = GenNewFunc(
				TargetAttribCheat,
				(typeof (objLink.onclick) === "undefined") ? null : objLink.onclick);
		}
	}

	// This methods returns a function wrapping old and new onclick handlers
	function GenNewFunc(fncNew, fncOld) {
		// When we get here (see above), we'll have a reference to the containing element
		// which we don't want in the click handler (circular references issue for garbage
		// collection in IE), so we'll explicitly set objLink to null here.
		var objLink = null;
		return function() {
			fncNew.apply(this, arguments);
			if (fncOld != null)
				return fncOld.apply(this, arguments);
		};
	}

	// This method temporarily assigns "_blank" value to "target" attribute, then resets
	// it back after a delay
	function TargetAttribCheat(e, bEnable, bAutoDisable, intAutoDisTimeout) {
		// Try to access the source element that raised this call
		e = e || window.event;
		if (!e)
			return;
		var objSrc = e.srcElement || e.target;
		if (!objSrc)
			return;

		// If we've got an image within the link element then that image may appear as the
		// source element, rather than the actual link. So we may need to head up the chain
		// until we get the original anchor.
		while (String(objSrc.tagName).toUpperCase() !== "A") {
			// Check we've not hit the top of the tree
			if ((!objSrc) || (objSrc.parentNode === objSrc))
				return;
			objSrc = objSrc.parentNode;
		}

		/*
		bEnable, bAutoDisable and intAutoDisTimeout are optional, defaulting
		to True, True and 100, respectively.
		bEnable:
		True => Set "target" attrib to "_blank"
		False => Reset to previous value
		bAutoDisable:
		True => After a timeout, automatically re-call this method with bEnable
		set to False to reset the "target" attribute's value. Only relevant when
		bEnable is True.
		intAutoDisTimeout:
		Override the default AutoDisable timeout. Only applicable when bEnable
		and bAutoDisable are True.
		*/
		if ((typeof (bEnable) === "undefined") || (bEnable !== false))
			bEnable = true;
		if ((typeof (bAutoDisable) === "undefined") || (bAutoDisable !== false))
			bAutoDisable = true;
		if ((typeof (intAutoDisTimeout) === "undefined") || isNaN(intAutoDisTimeout))
			intAutoDisTimeout = 100;
		Work(objSrc, bEnable, bAutoDisable, intAutoDisTimeout);

		// Perform the element manipulation
		function Work(objSrc, bEnable, bAutoDisable, intAutoDisTimeout) {
			if (bEnable) {
				// In case this method gets called several times in succession, don't allow
				// a previously recorded "target" value to be overwritten.
				if (typeof (objSrc.targetOldNM) === "undefined") {
					if (typeof (objSrc.target) === "undefined")
						objSrc.targetOldNM = "";
					else
						objSrc.targetOldNM = objSrc.target;
				}
				// Set new "target" value and set up AutoDisable function (if required)
				objSrc.target = "_blank";
				if (bAutoDisable)
					setTimeout(function() { Work(objSrc, false); }, intAutoDisTimeout);
			}
			else
			{
				if (typeof(objSrc.targetOldNM) !== "undefined")
				{
					// Reset old .target value and delete .targetOldNM backup value.
					// NB: IE(6?) doesn't seem to like this - so on error just set to null instead.
					objSrc.target = objSrc.targetOldNM;
					try { delete objSrc["targetOldNM"]; }
					catch(e) { objSrc.targetOldNM = null; }
				}
			}
		}
	}
}
AddEventListener(window, 'load', externalLinks);


// =========================================================================================
// "ADDITIONAL IMAGES" PRODUCT DETAIL CODE (ENSURE VIEW WINDOW VISIBLE WHEN IMAGE SELECTED)
// =========================================================================================
function ProductDetailImageScrollTo() {
	return ElementScrollTo(document.getElementById("productImage"));
}

function ElementScrollTo(objEleSrc) {
	// Ensure scroll function and image element available
	if ((!window.scroll) || (!objEleSrc))
		return false;

	// Ensure we can retrieve image position
	var intImageStart = AnchorPosition_getWindowOffsetTop(objEleSrc);
	if (isNaN(parseInt(intImageStart)))
		return false;

	// If need to scroll, leave some space above image
	var OFFSET_TOP = 16;

	// Ensure we can retrieve image height, window scroll pos and viewable area's height
	var intImageHeight = parseInt(objEleSrc.height);
	if (isNaN(intImageHeight) || (intImageHeight <= 0) && !isNaN(objEleSrc.offsetHeight))
		intImageHeight = parseInt(objEleSrc.offsetHeight);
	var intScrollPosY = GetScrollPosY();
	var intViewHeight = GetViewHeight();
	if (isNaN(intImageHeight) || (intImageHeight <= 0)
	|| (intScrollPosY == null)
	|| (intViewHeight == null)) {
		// If not, scroll to image anyway and return success
		var intScrollToY = intImageStart - OFFSET_TOP;
		if (intScrollToY < 0)
			intScrollToY = 0;
		scroll(0, intScrollToY);
		return true;
	}

	// As all info was available, only scroll if image not fully in view
	var intImageEnd = intImageStart + intImageHeight;
	if ((intScrollPosY > intImageStart) || (intScrollPosY + intViewHeight < intImageEnd)) {
		var intScrollToY = intImageStart - OFFSET_TOP;
		if (intScrollToY < 0)
			intScrollToY = 0;
		scroll(0, intScrollToY);
	}
	return true;

	function GetScrollPosY() {
		var intScrollY = null;
		if (document.all) {
			if (!document.documentElement.scrollTop)
				intScrollY = document.body.scrollTop;
			else
				intScrollY = document.documentElement.scrollTop;
		}
		else
			intScrollY = window.pageYOffset;
		if (isNaN(parseInt(intScrollY)))
			intScrollY = null;
		return intScrollY;
	}

	function GetViewHeight() {
		if (document.documentElement && document.documentElement.clientWidth) {
			return document.documentElement.clientHeight;
		}
		else if (document.body) {
			return document.body.clientHeight;
		}
		return null;
	}
}

function KeyPressWasActivate(e) {
	// If passed the event parameters from a onkeypress method, this will
	// return true if key pressed was [Enter] or [Space]
	if (!e) {
		e = window.event;
	}

	// In IE and Firefox, keyCode will be 13 if [Enter] is pressed
	// In IE, keyCode and charCode will be 32 if [Space] pressed,
	// while only charCode will be 13 in Firefox for [Space] key
	var intKeyCode = e.keyCode;
	var intCharCode = e.charCode;
	return ((intKeyCode == 13) || (intKeyCode == 32) || (intCharCode == 32));
}

NewMind.registerNameSpace("NewMind.WebPlatform.Booking");
NewMind.WebPlatform.Booking.InitPollingUnitSel = function() {
	// Loop through all Unit Selection controls (if any) and grab the wrappers around the
	// sets of fuzzy results (each "set" is a distinct StartDate / NumNights combination)
	// - We need to set links to show / hide one set at a time
	// - We want them all to be hidden initially
	// Note: If there was a perfect match (or no matches), then there won't be any of
	// these PollingFuzzySetWrapper containers - so don't need to worry about what's
	// going on here in that scenario.
	$("div.bookingform").each(function() {
		SetupUnitSelDisplay(this, -1, false);
	});

	function SetupUnitSelDisplay(objEleUnitSelCtrl, intIndexShow, bAnimate) {
		$(objEleUnitSelCtrl).find("div.PollingFuzzySetWrapper").each(function(intIndex) {

			// Show / hide result set units as appropriate
			// - If in animate mode (ie. arrived here by user action, not by the initial call
			//   organise the page), we actually want to toggle the specified result set so
			//   that users can close the currently-displayed entry
			var arrForms = $(this).find("div.StayCandidateItem");
			if (intIndex === intIndexShow) {
				if (bAnimate)
					arrForms.slideToggle("slow");
				else
					arrForms.show();
				//arrForms.find("div.StayCandidateItem").show();
			}
			else {
				if (bAnimate)
					arrForms.slideUp("slow");
				else
					arrForms.hide();
			}

			// Initialise the link for the current result set (unless it's already been done)
			$(this).find("div.cell div.pnStayTtl").each(function() {
				var bHasLink = ($(this).find("a").length > 0);
				if (bHasLink) {
					return;
				}
				var strText = this.innerHTML;
				var objEleLink = document.createElement("a");
				objEleLink.href = "#";
				objEleLink.innerHTML = strText;
				this.innerHTML = "";
				this.appendChild(objEleLink);
				$(objEleLink).click(function(e) {
					SetupUnitSelDisplay(objEleUnitSelCtrl, intIndex, true);
					e.preventDefault();
				});
			});

		});
	}
};

AddEventListener(window, 'load', NewMind.WebPlatform.Booking.InitPollingUnitSel);

NewMind.registerNameSpace("NewMind.WebPlatform.ProductSearch");
NewMind.WebPlatform.ProductSearch.InitialiseRefineBy = function()
{
	$('div.srcAdvFacilities')
		.find('legend')
		.css("cursor", "pointer")
		.next('ul')
		.hide()
		.end()
		.bind('click', function() {
		
		$(this)
			.next('ul')
			.toggle();
	});
};
