// -- for Internet Explorer - stops background flickering --//
   /*@cc_on 
	@if (@_win32)
	try {
	  document.execCommand('BackgroundImageCache', false, true);
	} catch(e) {}
	@end
@*/
// -- addLoadEvent function from http://simonwillison.net --//
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

//---- DROPDOWN LIST SYNC ----//
addLoadEvent(filterDestinations);
function hideOpt(opt,select){
  //var opt = document.getElementById(id);
  var sel = select;
  opt && sel && sel.appendChild(opt.cloneNode(true));
}

function showOpt(opt,select){ 
  var dest = select;//document.getElementById('ctl00_FindHotel1_fDestinationselect');
  if (opt) {
    if (dest) {
      dest.appendChild(opt.cloneNode(true));
    }
  }
} 

function moveSelectOption(select,selectcopy,start1,start2) {
    selectcopy.options.length=start2;
    for(i=start1;i<select.length;i++)
	{  //ignore the first please select
       hideOpt(select.options[i],selectcopy);
	}
	select.options.length=start1;
}
function findByValue(select,value){
    var valueToSelect = value;
    var mySelect = select;
    for (var index = 0, roof = mySelect.options.length; index < roof; index++) {
       if (valueToSelect == mySelect.options[index].value) {
          return mySelect.options[index];
       }
    }
}
function filterDestinations(){
    
        if (typeof cIdTempSelectArrayId != 'undefined') 
            {for (var index = 0, roof = cIdTempSelectArrayId.length; index < roof; index++)
                {subFilterDestinations(cIdTempSelectArrayId[index][0],cIdTempSelectArrayId[index][1],cIdTempSelectArrayId[index][2]);}
        } 
    
}

function subFilterDestinations(tempId,mainSelect,subSelect){
  var temp = document.getElementById(tempId);
  var country,dest,selectedValue,mainS,subS;
  
  if (temp) if (mainSelect) country = document.getElementById(mainSelect);
  if (temp) if (mainSelect) dest = document.getElementById(subSelect);
  
  if (temp && country && dest) {
      selectedValue=dest.options[dest.selectedIndex].value;
      if (temp.length == 0 ) moveSelectOption(dest,temp,1,0);
      dest.options.length=1;
      if (country) {
        for (var currObj in CountrySlhDest){
           if (CountrySlhDest[currObj][country.value]) {showOpt(findByValue(temp,CountrySlhDest[currObj][country.value]),dest);}
        }
        if (country.selectedIndex==0) {moveSelectOption(temp,dest,0,1);}
        if (dest.options.length == 1 && (dest.options[0].text=='Please Choose' || dest.options[0].text=='-- Not Applicable --')) dest.options[0].text = '-- Not Applicable --'; else if (dest.options[0].text=='Please Choose' || dest.options[0].text=='-- Not Applicable --') dest.options[0].text='Please Choose';
      }
      var obj=findByValue(dest, selectedValue)
      if (obj) obj.setAttribute('selected',true);  
   }   
}

//---- NAVIGATION ROLLOVERS & MENU EVENTS ----//

//addLoadEvent(setupNav);

/*function setupNav(){
	var nItems = new Array();
	if(n = document.getElementById("navigation")){
	nItems = n.getElementsByTagName("a");
	    for(i=0;i<nItems.length;i++){
		    navImg = nItems[i].getElementsByTagName("img");
		    if(navImg[0]){
			    if(navImg[0].src.indexOf("-on")==-1){
				    nItems[i].stored = navImg[0].id;
				    nItems[i].onmouseover = imgRoll;
				    nItems[i].onmouseout = imgOff;
			    }
		    }
	    }
	}	
}
function setupNav(){
	var nItems = [], n;
	if (document.getElementById("navigation")) {
		n = document.getElementById("navigation");
		nItems = n.getElementsByTagName("a");
	    for(i=0;i<nItems.length;i++){
		    navImg = nItems[i].getElementsByTagName("img");
		    if(navImg[0]){
			    if(navImg[0].src.indexOf("-on") == -1){
				    nItems[i].stored = navImg[0].id;
				    nItems[i].onmouseover = imgRoll;
				    nItems[i].onmouseout = imgOff;
			    }
		    }
	    }
	}	
}



if(document.Images){
ctl00_TopNavigation1_nav01Roll = new Image();
ctl00_TopNavigation1_nav01Roll.src = "/Images/nav_01_on.jpg";
ctl00_TopNavigation1_nav01Off = new Image();
ctl00_TopNavigation1_nav01Off.src = "/Images/nav_01_off.jpg";

ctl00_TopNavigation1_nav02Roll = new Image();
ctl00_TopNavigation1_nav02Roll.src = "/Images/nav_02_on.jpg";
ctl00_TopNavigation1_nav02Off = new Image();
ctl00_TopNavigation1_nav02Off.src = "/Images/nav_02_off.jpg";

ctl00_TopNavigation1_nav03Roll = new Image();
ctl00_TopNavigation1_nav03Roll.src = "/Images/nav_03_on.jpg";
ctl00_TopNavigation1_nav03Off = new Image();
ctl00_TopNavigation1_nav03Off.src = "/Images/nav_03_off.jpg";

ctl00_TopNavigation1_nav04Roll = new Image();
ctl00_TopNavigation1_nav04Roll.src = "/Images/nav_04_on.jpg";
ctl00_TopNavigation1_nav04Off = new Image();
ctl00_TopNavigation1_nav04Off.src = "/Images/nav_04_off.jpg";

ctl00_TopNavigation1_nav05Roll = new Image();
ctl00_TopNavigation1_nav05Roll.src = "/Images/nav_05_on.jpg";
ctl00_TopNavigation1_nav05Off = new Image();
ctl00_TopNavigation1_nav05Off.src = "/Images/nav_05_off.jpg";

ctl00_TopNavigation1_nav06Roll = new Image();
ctl00_TopNavigation1_nav06Roll.src = "/Images/nav_06_on.jpg";
ctl00_TopNavigation1_nav06Off = new Image();
ctl00_TopNavigation1_nav06Off.src = "/Images/nav_06_off.jpg";

}*/
/*
if(document.Images){
    ctl00_TopNavigation1_nav01Roll=new Image();
    ctl00_TopNavigation1_nav01Roll.src="Images/nav_01_on.jpg";
    ctl00_TopNavigation1_nav01Off=new Image();
    ctl00_TopNavigation1_nav01Off.src="Images/nav_01_off.jpg";
    ctl00_TopNavigation1_nav02Roll=new Image();
    ctl00_TopNavigation1_nav02Roll.src="Images/nav_02_on.jpg";
    ctl00_TopNavigation1_nav02Off=new Image();
    ctl00_TopNavigation1_nav02Off.src="Images/nav_02_off.jpg";
    ctl00_TopNavigation1_nav03Roll=new Image();
    ctl00_TopNavigation1_nav03Roll.src="Images/nav_03_on.jpg";
    ctl00_TopNavigation1_nav03Off=new Image();
    ctl00_TopNavigation1_nav03Off.src="Images/nav_03_off.jpg";
    ctl00_TopNavigation1_nav04Roll=new Image();
    ctl00_TopNavigation1_nav04Roll.src="Images/nav_04_on.jpg";
    ctl00_TopNavigation1_nav04Off=new Image();
    ctl00_TopNavigation1_nav04Off.src="Images/nav_04_off.jpg";
    ctl00_TopNavigation1_nav05Roll=new Image();
    ctl00_TopNavigation1_nav05Roll.src="Images/nav_05_on.jpg";
    ctl00_TopNavigation1_nav05Off=new Image();
    ctl00_TopNavigation1_nav05Off.src="Images/nav_05_off.jpg";
    ctl00_TopNavigation1_nav06Roll=new Image();
    ctl00_TopNavigation1_nav06Roll.src="Images/nav_06_on.jpg";
    ctl00_TopNavigation1_nav06Off=new Image();
    ctl00_TopNavigation1_nav06Off.src="Images/nav_06_off.jpg";
}
*/
function imgRoll(){
	var n = this.stored;
	if(document.getElementById(n)){
		document.getElementById(n).src = eval(n+"Roll").src;
	}
}

function imgOff(){
	var n = this.stored;
	if(document.getElementById(n)){
		document.getElementById(n).src = eval(n+"Off").src;	
	}
}

//---- RESERVATION DROPDOWNS ----//  
function unSelect(dropdownId)
{
    //selects the first element of a dropdown list
    if (document.getElementById(dropdownId)){document.getElementById(dropdownId).selectedIndex =0;}
}

//---- DATEPICKER ----//   

addLoadEvent(function() {
	if (document.getElementById("sd")){
  		//datePickerController(window, 'load', initialiseInputs);
		initialiseInputs();
	}
	
});

function makeTwoChars(inp) {
        return String(inp).length < 2 ? "0" + inp : inp;
}

function initialiseInputs() {
        // Clear any old values from the inputs (that might be cached by the browser after a page reload)
        document.getElementById("sd").value = "dd/mm/yyyy";
        document.getElementById("ed").value = "dd/mm/yyyy";

        // Add the onchange event handler to the start date input
        document.getElementById("sd").onchange = setReservationDates;
        
        //and end date
        document.getElementById("ed").onchange = setReservationDates;
        
        //setLowRangeToBeSixWeeksAfterToday();
}
function setLowRangeToBeSixWeeksAfterToday() {
        if(!("sd" in datePickerController.datePickers)) {
                setTimeout("setLowRangeToBeSixWeeksAfterToday()", 50);
                return;
        }
        
        var dt = new Date();
        dt.setDate(dt.getDate() +  (6 * 7));
        
        var stringDt = dt.getFullYear() + String(makeTwoChars(dt.getMonth())) + makeTwoChars(dt.getDate());

        datePickerController.datePickers["sd"].setRangeLow(stringDt);
        datePickerController.datePickers["ed"].setRangeLow(stringDt);
}

function setReservationDates(e) {


        // Check the associated datePicker object is available (be safe)
        if(!("sd" in datePickerController.datePickers)) {
                document.getElementById("noOfNightsSpan").innerHTML ="--";
                return;
        }
        
        // Check the value of the input is a date of the correct format
        var dt = datePickerController.dateFormat(this.value, datePickerController.datePickers["sd"].format.charAt(0) == "m");
        
        // If the input's value cannot be parsed as a valid date then return
        if(dt == 0) {
        document.getElementById("noOfNightsSpan").innerHTML ="--";
        setDateDiff(e);
        return;}

        // Grab the value set within the endDate input and parse it using the dateFormat method
        // N.B: The second parameter to the dateFormat function, if TRUE, tells the function to favour the m-d-y date format
        var edv = datePickerController.dateFormat(document.getElementById("ed").value, datePickerController.datePickers["ed"].format.charAt(0) == "m");

        // Grab the end date datePicker Objects
        var ed = datePickerController.datePickers["ed"];

        //Set low range to be alway connected to the start date
         var lr = datePickerController.dateFormat(document.getElementById("sd").value, datePickerController.datePickers["sd"].format.charAt(0) == "m");
         var sdd;
         if (lr.length ==8) {sdd= new Date(lr.substring(0,4),lr.substring(4,6)-1,lr.substring(6,8));
         sdd.setTime(sdd.getTime()+(1000*24*60*60));//add a day
         lr = sdd.getFullYear().toString() + LZ((sdd.getMonth()+1).toString()) + LZ(sdd.getDate().toString());
         if(dt != 0) { ed.setRangeLow( lr);}
        }
        // If theres a value already present within the end date input and it's smaller than the start date
        // then clear the end date value
        if(edv < dt) {
                document.getElementById("ed").value = "";
                document.getElementById("noOfNightsSpan").innerHTML ="--";
        }
        
        var sdv = datePickerController.dateFormat(document.getElementById("sd").value, datePickerController.datePickers["sd"].format.charAt(0) == "m");

        //if date is ok, try to count the days and fill the span
        //if(document.getElementById("noOfNightsSpan")) {
        //        document.getElementById("noOfNightsSpan").innerHTML = (edv-sdv);
        //}
        setDateDiff(e);
}

function LZ(x){return(x<0||x>9?"":"0")+x}

function setDateDiff(e) {
        
        var sdv = datePickerController.dateFormat(document.getElementById("sd").value, datePickerController.datePickers["sd"].format.charAt(0) == "m");
        var edv = datePickerController.dateFormat(document.getElementById("ed").value, datePickerController.datePickers["ed"].format.charAt(0) == "m");

        // Check the associated datePicker object is available (be safe)
        if(!("sd" in datePickerController.datePickers || sdv==0)) {
                document.getElementById("noOfNightsSpan").innerHTML ="--";
                return;
        }
        if(!("ed" in datePickerController.datePickers || edv==0)) {
                document.getElementById("noOfNightsSpan").innerHTML ="--";
                return;
        }
        var sdd,edd;
        if (sdv==edv) {document.getElementById("ed").value="";
                       document.getElementById("noOfNightsSpan").innerHTML ="--";
                return;}
        
        if (sdv.length ==8) {sdd= new Date(sdv.substring(0,4),sdv.substring(4,6)-1,sdv.substring(6,8));}
        if (edv.length ==8) {edd= new Date(edv.substring(0,4),edv.substring(4,6)-1,edv.substring(6,8));}
        
                   //if date is ok, try to count the days and fill the span
        if(document.getElementById("noOfNightsSpan")) {
                //document.getElementById("noOfNightsSpan").innerHTML = (edv-sdv);
                var one_day=1000*60*60*24;

            //Calculate difference btw the two dates, and convert to days
            var daysspan=Math.ceil((edd-sdd)/one_day);
            if (daysspan > 0) {document.getElementById("noOfNightsSpan").innerHTML = daysspan;} else {document.getElementById("noOfNightsSpan").innerHTML ="--";}
            
        }
}
