// ---
function onLoadFunctionality(){
	if(document.getElementById && document.getElementsByTagName){		
		if(typeof addBookingPanelEvents != "undefined"){
			addBookingPanelEvents();
		}
		if(typeof addBackLinkFunctionality != "undefined"){
			addBackLinkFunctionality();
		}
		if(typeof addEventsForInnerTabNavigation != "undefined"){
			addEventsForInnerTabNavigation();
		}
		if(typeof addDynamicDropDownEvents != "undefined"){
			addDynamicDropDownEvents();
		}
		if(typeof addInfoLayerEvents != "undefined"){
			addInfoLayerEvents();
		}				
		if(typeof addSeasonNavigationEvents != "undefined"){
			addSeasonNavigationEvents();
		}
		if(typeof addHelpInfoEvents != "undefined"){
			addHelpInfoEvents();
		}
		if(typeof addDatePickerEvents != "undefined"){
			addDatePickerEvents();
		}		
		if(typeof createPaging != "undefined"){
			createPaging();
		}
		if(typeof createValidationMessageEvent != "undefined"){
			createValidationMessageEvent();
		}
		if(typeof automaticPrinting != "undefined"){
			automaticPrinting();
		}
		if(typeof addPrintEvent != "undefined"){
			addPrintEvent();
		}
		if(typeof addFlexLinkFunctionality != "undefined"){
			addFlexLinkFunctionality();
		}
	}
}
// ---
Array.prototype.push = ArrayPush;
function ArrayPush(value){
	this[this.length] = value;
}
// ---
function addEvent(oElement, strEvent, oFunction, bCapture){
	if(oElement.addEventListener){
		oElement.addEventListener(strEvent, oFunction, bCapture);
	}
	else if(oElement.attachEvent){
		oElement.attachEvent(("on" + strEvent), oFunction)
	}
}
// ---
addEvent(window, "load", onLoadFunctionality, false);
// ---
function clickSubmitButton(oEvent, strButtonId){
	if(oEvent && oEvent.keyCode == 13){
		var oButton = document.getElementById(strButtonId);
		if(oButton){
			oButton.click();
			oEvent.returnValue = false;
			if(oEvent.preventDefault){
				oEvent.preventDefault();
			}
			return false;
		}		
	}	
}
// ---
var oTabOne;
var oTabTwo;
function addBookingPanelEvents(){
	oTabOne = document.getElementById("booking-panel-show-tab-1");
	if(oTabOne){
		oTabOne.onclick = function(){
			showHideBookingCriteriaBlocks(true);
		};
	}
	oTabTwo = document.getElementById("booking-panel-show-tab-2");
	if(oTabTwo){
		oTabTwo.onclick = function(){
			showHideBookingCriteriaBlocks(false);
		};		
	}
}
// ---
function showHideBookingCriteriaBlocks(bShowFirstBlock){
	var oInnerCriteriaBlockOne = document.getElementById("inner-criteria-block-1");
	var oInnerCriteriaBlockTwo = document.getElementById("inner-criteria-block-2");
	if(oInnerCriteriaBlockOne && oInnerCriteriaBlockTwo){
		if(bShowFirstBlock){
			oTabOne.className = "selected";
			oTabTwo.className = "second-option";
			oInnerCriteriaBlockOne.className = "inner-criteria-block display-block";
			oInnerCriteriaBlockTwo.className = "inner-criteria-block display-none";
		}
		else{
			oTabOne.className = "";
			oTabTwo.className = "second-option selected-second-option selected";
			oInnerCriteriaBlockOne.className = "inner-criteria-block display-none";
			oInnerCriteriaBlockTwo.className = "inner-criteria-block display-block";
		}
	}
}
// ---
function addBackLinkFunctionality(){	
	var oBackLink = document.getElementById("back-link");
	if(oBackLink){
		oBackLink.onclick = function(){
			history.back();
			return false;
		}
	}
}
// ---
function addFlexLinkFunctionality(){
	var oMainContent = document.getElementById("main-content");
	if(oMainContent){
		var arrLinks = getElementsByClassName(oMainContent, "a", "flex-link");
		for(var i=0; i<arrLinks.length; i++){
			arrLinks[i].onclick = function (){
				OpenWindow(this.getAttribute("href"), 835, 710, "toolbar=false,directories=false,menubar=false,scrollbars=yes,resizable=false,status=false");
				return false;
			};
		}
	}
}
// ---
var arrAllDivElements;
function addEventsForInnerTabNavigation(){
	arrAllDivElements = document.getElementsByTagName("div");
	var oDiv;
	var arrListItems;
	var oListItem;
	var intCurrentIteration;
	for(var i=0; i<arrAllDivElements.length; i++){
		oDiv = arrAllDivElements[i];
		if(oDiv.className.search(/inner-sub-tab-navigation/) != -1){
			arrListItems = oDiv.getElementsByTagName("li");
			for(var j=0; j<arrListItems.length; j++){
				oListItem = arrListItems[j];
				intCurrentIteration = j;
				oListItem.setAttribute("tabnavindex", ("tabnavindex-" + intCurrentIteration));
				oListItem.onclick = innerTabNavigate;
			}
		}
	}
}
// ---
function innerTabNavigate(){
	var oElm = this;
	var intTabIndex = oElm.getAttribute("tabnavindex").replace(/tabnavindex-/, "");	
	var oTable;
	var arrAllListItems = oElm.parentNode.getElementsByTagName("li");
	var oListItem;
	for(var i=0; i<arrAllListItems.length; i++){
		oListItem = arrAllListItems[i];
		oListItem.className = "";
	}
	oElm.className = (intTabIndex == 0)? "first-tab-selected selected" : "selected";
	
	var oContainingDiv = oElm.parentNode.parentNode;
	var arrAllTables = oContainingDiv.getElementsByTagName("table");
	for(var j=0; j<arrAllTables.length; j++){
		arrAllTables[j].className = "dynamic-table display-none";
	}
	arrAllTables[intTabIndex].className = "dynamic-table display-table";
}
// ---
var oDropDownToFill = null;
function addDynamicDropDownEvents(){
	var arrAllDynamicDropDowns = getElementsByClassName(document, "select", "dynamic-dropdown");	
	for(var i=0; i<arrAllDynamicDropDowns.length; i++){
		arrAllDynamicDropDowns[i].onchange = function (){
			var strClassName = this.className;
			var strType = strClassName.replace(/.*type-(\w+)(\b.*|$)/i, "$1");
			var strId = this.options[this.options.selectedIndex].value;
			if(strType == 'resort'){
				//Depcodes always in first dropdown
				var depCode = arrAllDynamicDropDowns[0].value;
				var strURL = "/Ice/Templates/ContentBlocks/Booking/DynamicContent/GetDropDownItems.aspx?type=" + strType + "&id=" + strId + "&dep=" + depCode;
			}
			else{
				var strURL = "/Ice/Templates/ContentBlocks/Booking/DynamicContent/GetDropDownItems.aspx?type=" + strType + "&id=" + strId;
			}
			var strIdOfElementToFill = strClassName.replace(/.*element-to-fill-([\w\d\-]+)(\b.*|$)/i, "$1");
			oDropDownToFill = document.getElementById(strIdOfElementToFill);
			getJavaScriptArray(strURL, "fillDropDown");
		};
	}
}
// ---
function fillDropDown(arrOptions){
	if(oDropDownToFill){
		var oOption;
		var arrayOption;
		for(var i=(oDropDownToFill.options.length - 1); i>=0; i--){
			oDropDownToFill.options[i].parentNode.removeChild(oDropDownToFill.options[i]);
		}
		for(var j=0; j<arrOptions.length; j++){
			arrayOption = arrOptions[j];
			oOption = document.createElement("option");
			oOption.setAttribute("value", arrayOption.value);
			oOption.innerHTML = arrayOption.text;
			oDropDownToFill.appendChild(oOption);
		}
		oDropDownToFill = null;
	}
}
// ---
var oInfoLayer;
var oInfoLayerHeading;
var oInfoLayerContent;
function addInfoLayerEvents(){
	oInfoLayer = document.getElementById("info-layer");
	oInfoLayerHeading = document.getElementById("info-layer-heading-text");
	oInfoLayerContent = document.getElementById("info-layer-content");
	if(oInfoLayer){
		var oHeadingElm = document.getElementById("info-layer-heading");
		oHeadingElm.onmousedown = function(oEvent){
			initDrag(oEvent, this);
		}	
		var oCloseLink = document.getElementById("info-layer-close-link");
		oCloseLink.onmousedown = function(){
			oInfoLayer.className = "display-none";
		}		
		oBodyElmForIE = (bIsIE5)? document.body : document.documentElement;
	}
}
// ---
function showInfoLayer(intYPos, strWidth, strHeight, intXPos){
	if(oInfoLayer){
		var intScrollTop = (window.pageYOffset)? document.documentElement.scrollTop : oBodyElmForIE.scrollTop;
		if(typeof intXPos != "undefined"){
			oInfoLayer.style.left = intXPos + "px";
		}
		oInfoLayer.style.top = intYPos + intScrollTop + "px";
		oInfoLayer.style.width = (strWidth)? strWidth : "400px";
		oInfoLayerContent.style.height = (strHeight)? strHeight : "auto";
		oInfoLayer.className = "display-block";
	}
}
// ---
function addSeasonNavigationEvents(){
	var arrAllSelectsLists = document.getElementsByTagName("select");
	var oSelect;
	for(var i=0; i<arrAllSelectsLists.length; i++){
		oSelect = arrAllSelectsLists[i];
		if(oSelect.className.search(/season-navigation/i) != -1){
			oSelect.onchange = function (){
				location.href = this.options[this.selectedIndex].value;
			};
		}	
	}
}
// ---
function addHelpInfoEvents(){
	var arrAllHelpInfoLinks = getElementsByClassName(document, "a", "help-info");
	for(var i=0; i<arrAllHelpInfoLinks.length; i++){
		arrAllHelpInfoLinks[i].onclick = function(oEvent){
			var oEvent = (typeof oEvent != "undefined")? oEvent : event;
			oEvent.returnValue = false;
			if(oEvent.preventDefault){
				oEvent.preventDefault();
			}
			displayHelpInfo(oEvent, this);
		};
	}
	var arrAllHelpInfoWindowLinks = getElementsByClassName(document, "a", "help-info-window");
	for(var j=0; j<arrAllHelpInfoWindowLinks.length; j++){	
		arrAllHelpInfoWindowLinks[j].onclick = function (){
			OpenWindow(this.getAttribute("href"), 835, 710, "toolbar=false,directories=false,menubar=false,scrollbars=yes,resizable=false,status=false");
			return false;
		};
	}
}
// ---
function displayHelpInfoWindow(){
	var arrAllHelpInfoLinks = getElementsByClassName(document, "a", "help-info");
	for(var i=0; i<arrAllHelpInfoLinks.length; i++){
		arrAllHelpInfoLinks[i].onclick = function(oEvent){
			var oEvent = (typeof oEvent != "undefined")? oEvent : event;
			oEvent.returnValue = false;
			if(oEvent.preventDefault){
				oEvent.preventDefault();
			}
			displayHelpInfo(oEvent, this);
		};
	}
}
// ---
function createValidationMessageEvent(){
	var oCloseValidationMessage = document.getElementById("close-validation-message");
	if(oCloseValidationMessage){
		oCloseValidationMessage.onclick = function (){
			this.parentNode.parentNode.className = "validation-message display-none";
		};
	}	
}
// ---
function addPrintEvent(){
	var oPrintButton = document.getElementById("print-button");
	if(oPrintButton){
		oPrintButton.onclick = function (oEvent){
			var oEvent = (typeof oEvent != "undefined")? oEvent : event;
			oEvent.returnValue = false;
			if(oEvent.preventDefault){
				oEvent.preventDefault();
			}
			var oNewWindow = window.open((location.href.replace(/travel.aspx/i, 'print.aspx') + '&print=true'), "", ("width=" + document.getElementById("container").offsetWidth) + ",scrollbars=yes");			
		}
	}
}
// ---
function automaticPrinting(){
	if(location.href.search(/print=true/i) != -1){
		setTimeout("window.print()", 500);
	}
}
// ---
var oDatePicker;
var oDatePickerCalendar;
var oDatePickerCalendarHeading;
var oDatePickerCalendarContent;
function addDatePickerEvents(){
	oDatePicker = document.getElementById("date-picker");
	oDatePickerCalendar = document.getElementById("date-picker-calendar");	
	if(oDatePicker && oDatePickerCalendar){		
		oDatePickerCalendarHeading = document.getElementById("date-picker-calendar-heading-text");
		oDatePickerCalendarContent = document.getElementById("date-picker-calendar-content");
		var oHeadingElm = document.getElementById("date-picker-calendar-heading");
		oHeadingElm.onmousedown = function(oEvent){
			initDrag(oEvent, this);
		}
		
		var oCloseLink = document.getElementById("date-picker-calendar-close-link");
		oCloseLink.onclick = function(){
			oDatePickerCalendar.className = "display-none";
		}		
		oBodyElmForIE = (bIsIE5)? document.body : document.documentElement;
		
		oDatePicker.onclick = function (){			
			oDatePickerCalendarHeading.innerHTML = strCalendar;
			getXML("/Ice/Templates/ContentBlocks/Booking/DynamicContent/GetDatePicker.aspx", oDatePickerCalendarContent);
			oDatePickerCalendar.className = "display-block";
		}
	}
}
// ---
function displayHelpInfo(oEvent, oElm){
	if(oInfoLayer){
		var strURL = oElm.getAttribute("href");
		oInfoLayerHeading.innerHTML = strHelpInfo;
		getXML(strURL, oInfoLayerContent);
		showInfoLayer(oEvent.clientY + 30, null, null, 400);
	}
}
// ---
//Function for open new windows with different features
function OpenWindow(url,width,height,features){
	width = (width > 0) ? ",width=" + width : "";
	height = (height > 0) ? ",height=" + height : "";
	features = (features != null) ? ","+ features : "";
	
	var newWin = window.open(url,'',""+ width +""+ height +""+ features);
	newWin.focus();
}
// ---
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements)
}
// ---
// Drag 'n' drop functionality
var oDragObj;
var intOffsetX;
var intOffsetY;
var intContainerOffsetLeft;
var intContainerOffsetTop;
function initDrag(oEvent, oElm){
	var oEvent = (typeof oEvent != "undefined")? oEvent : event;
	oDragObj = oElm.parentNode;
	intOffsetX = (oEvent.layerX)? oEvent.layerX : oEvent.offsetX;
	intOffsetY = (oEvent.layerY)? oEvent.layerY : oEvent.offsetY;
	intContainerOffsetLeft = document.getElementById("container").offsetLeft;
	intContainerOffsetTop = document.getElementById("container").offsetTop;
	if(oEvent.preventDefault){		
		oEvent.preventDefault();
	}
	oElm.ondragstart = function (){
		event.returnValue = false;
	}
	document.onselectstart = function (){
		event.returnValue = false;
	}
}
// ---
var intScrollLeft = 0;
var intScrollTop = 0;
var bIsIE5 = (String(navigator.userAgent).search(/MSIE 5/) != -1)? true : false;
var oBodyElmForIE;
document.onmousemove = function (oEvent){	
	if(oDragObj){
		intScrollLeft = (window.pageXOffset)? window.scrollX : oBodyElmForIE.scrollLeft;
		intScrollTop = (window.pageYOffset)? window.scrollY : oBodyElmForIE.scrollTop;
		var oEvent = (typeof oEvent != "undefined")? oEvent : event;
		oDragObj.style.left = (oEvent.clientX - (intOffsetX + intContainerOffsetLeft)) + intScrollLeft + "px";
		oDragObj.style.top = (oEvent.clientY - (intOffsetY + intContainerOffsetTop)) + intScrollTop + "px";
		if(oEvent.preventDefault){
			oEvent.preventDefault();
		}
	}	
}
// ---
document.onmouseup = function (){	
	oDragObj = null;
	document.onselectstart = function (){
		event.returnValue = true;
	}
}
// ---
function setFormAction(action){
	document.forms[0].action = action;
	document.forms[0].method = "post";
}
// ---
