// JavaScript Document

	Date.prototype.isNorthAmerica = function(){
            return (this.getTimezoneOffset() < 660 && this.getTimezoneOffset() > 180);
            //return false;
	}
	Date.prototype.octopusDisplayFormat = function(){
	  var mm = this.getMonth()+1;
	  if(mm < 10) mm = "0" + mm;
	  var jj = this.getDate();
	  if(jj < 10) jj = "0" + jj;
	  if(this.isNorthAmerica()){
	      return mm + "/" + jj + "/" + this.getFullYear();
	  }
	  else{
	      return jj + "/" + mm + "/" + this.getFullYear();
	  }
	}

	today = new Date();
	dFormat = today.isNorthAmerica()?"mm/jj/aaaa":"jj/mm/aaaa";


	function makeEuroDate(str){
      var vals = str.split("/");
      var nDateString = vals[1] + "/" + vals[0] + "/" + vals[2];
      return new Date(nDateString);
	}
	function formatDateForURL(d){
	    var month = d.getMonth() + 1;
	    if(month < 10) month = "0" + month;
	    var date = d.getDate();
	    if(date < 10) date = "0" + date;
	    return d.getFullYear() + "-" + month + "-" + date;
	}

	function getSelectedValue(id){
	    try{
	        var theSelect = DGE(id);
	        return theSelect.options[theSelect.options.selectedIndex].value;
	    }
	    catch(Error){
	       return null;
	    }
	}
	expDate = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/
	function DGE(x){return document.getElementById(x)}

	function validateDate(dateStr){
	    if(!expDate.test(dateStr)) {return false;}
	    var monthNumStr = today.isNorthAmerica() ? dateStr.split("/")[0]:dateStr.split("/")[1];
	    var dateNumStr = today.isNorthAmerica()?dateStr.split("/")[1]:dateStr.split("/")[0];
	    var yearNum = parseFloat(dateStr.split("/")[2]);
	    var monthNum = parseFloat(monthNumStr);
	    var dateNum = parseFloat(dateNumStr);
	    var maxDate = 31;
	    if(monthNum == 4 || monthNum == 5 || monthNum ==  6 || monthNum == 9 || monthNum == 11){
	      maxDate = 30;
	    }
	    else if (monthNum == 2){
	      if(yearNum %4 ==0) {maxDate = 29;}
	      else{
	         maxDate = 28;
	      }
	    }
	    var bValid= (dateNum <= maxDate && dateNum > 0 && monthNum <= 12 && monthNum > 0);
        return bValid;
	}

	function setCheckout(){
	    var aSpan = DGE("alertSpan");
	    aSpan.innerHTML = "";
	    var numNights = parseInt(DGE("nights").value);
	    if(!isNaN(numNights)){
	        var checkinDateVal = DGE("checkin").value;
	        if(!expDate.test(checkinDateVal)){
                aSpan.innerHTML = "Le format de date doit etre: " + dFormat + "";
	        }
	        else if(!validateDate(checkinDateVal)){
	           aSpan.innerHTML = "Entrez une date valide";
	        }
            else{
	            var tDate = today.isNorthAmerica()?new Date(checkinDateVal):makeEuroDate(checkinDateVal);
	            tDate.setDate(tDate.getDate() + numNights);
              DGE("checkout").innerHTML = tDate.octopusDisplayFormat();
            }
	    }
	    else{
	        aSpan.innerHTML = "Le nombre de nuits est incorect.";
	    }
	}
	function makeURL(){
	    var aSpan = DGE("alertSpan");
	    aSpan.innerHTML = "";
	    var destinationVal = getSelectedValue("destination");
	    var checkinVal = DGE("checkin").value;
	    var nightsVal = DGE("nights").value;
	    var adultsVal = getSelectedValue("adults");
	    var childrenVal = getSelectedValue("children");
            var bErrors = false;
            var errorMsg = "";
	    if(destinationVal == 0){
	        errorMsg = "Choisissez une Destination.<BR>";
	        bErrors = true;
	    }
	    if(!expDate.test(checkinVal) ){
	        errorMsg += "Le format de date doit etre: " + dFormat + " .<BR>";
	        bErrors = true;
	    }
	    if(!validateDate(checkinVal)){
	        errorMsg += "Choisissez une date valide.<BR>";
	        bErrors = true;
	    }
	    if(isNaN(parseInt(nightsVal)))
	    {
	        errorMsg += "Le nombre de nuits est incorect.<BR>";
	        bErrors = true;
	    }
	    if(bErrors){
	        aSpan.innerHTML = errorMsg;
	        return;
	    }
	    var destinationArg = "&destination=" + destinationVal;
        var checkinArg = "";
	        if(!expDate.test(checkinVal)){
                aSpan.innerHTML = "Le format de date doit etre: " + dFormat + "";
	        }
	        else if(!validateDate(checkinVal)){
	           aSpan.innerHTML = "Entrez une date valide";
	        }
            else{
	            var tDate = today.isNorthAmerica()?new Date(checkinVal):makeEuroDate(checkinVal);
                checkinArg = "&checkin=" + formatDateForURL(tDate);
            }
	    var nightsArg= nightsVal == ""?"":"&nights=" + nightsVal;
	    var adultsArg = "&adults=" + adultsVal;
	    var childrenArg = childrenVal == 0?"":"&children=" + childrenVal;

	    var URLRoot = "http://www.octopustravel.com/HotelLink?siteid=referefr&country=F&lang=F&currency=EUR";
	    var URL = URLRoot + destinationArg + checkinArg + nightsArg + adultsArg + childrenArg;
	    //DGE("alertSpan").innerHTML = URL;
	    //alert("The constructed URL is : \n" + URL);
	    document.location = URL;
	}
	function init(){
	   var ci = DGE("checkin");
	   var ciDate = new Date(today);
	   ciDate.setDate(ciDate.getDate() + 7)
	   ci.value = ciDate.octopusDisplayFormat();
	   ciDate.setDate(ciDate.getDate() + 1);

	}