    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 dd = this.getDate();
      if(dd < 10) dd = "0" + dd;
      if(this.isNorthAmerica()){
          return mm + "/" + dd + "/" + this.getFullYear();
      }
      else{
          return dd + "/" + mm + "/" + this.getFullYear();
      }
    }

    today = new Date();
    dFormat = today.isNorthAmerica()?"mm/dd/yyyy":"dd/mm/yyyy";


    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 = "";
            }
            else if(!validateDate(checkinDateVal)){
               aSpan.innerHTML = "";
            }
            else{
                var tDate = today.isNorthAmerica()?new Date(checkinDateVal):makeEuroDate(checkinDateVal);
                tDate.setDate(tDate.getDate() + numNights);
              DGE("checkout").innerHTML = tDate.octopusDisplayFormat();
            }
        }
        else{
            aSpan.innerHTML = "";
        }
    }
    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 starratingVal = getSelectedValue("starrating");
        var languageVal = getSelectedValue("language");
            var bErrors = false;
            var errorMsg = "";
            var linebreak = "\n";
        if(destinationVal == 0){
            errorMsg = "Vyberte prosím destinaci."  + linebreak;
            bErrors = true;
        }
        if(!expDate.test(checkinVal) ){
            errorMsg += "Zadejte prosím datum příjezdu ve formátu " + dFormat + " ."  + linebreak;
            bErrors = true;
        }
        if(!validateDate(checkinVal)){
            errorMsg += "";
            bErrors = true;
        }
        if(isNaN(parseInt(nightsVal)))
        {
            errorMsg += "Zadejte prosím počet nocí."  + linebreak;
            bErrors = true;
        }
        if(bErrors){
            //aSpan.innerHTML = errorMsg;
            alert(errorMsg);
            return;
        }
        var destinationArg = "&destination=" + destinationVal;
        var checkinArg = "";
            if(!expDate.test(checkinVal)){
                aSpan.innerHTML = "Datum příjezdu musí být ve tvaru  " + dFormat + " ";
            }
            else if(!validateDate(checkinVal)){
               aSpan.innerHTML = "Prosím zadejte platné datum.";
            }
            else{
                var tDate = today.isNorthAmerica()?new Date(checkinVal):makeEuroDate(checkinVal);
                checkinArg = "&checkin=" + formatDateForURL(tDate);
            }
        var nightsArg= nightsVal == ""?"":"&nights=" + nightsVal;
        var adultsArg = "&adults=" + adultsVal;
        var starratingArg = starratingVal == 0?"":"&starrating=" + starratingVal;
        var langArg= languageVal == "0"?"":"&language=" + languageVal;
        //var URLRoot = "http://www.octopustravel.com/at/HotelLink?country=CZ&currency=CKR&siteid=ruzyne";
var URLRoot = "http://www.octopustravel.com/at/HotelLink?country=CZ&currency=CKR&siteid=ruzyne";
        var URL = URLRoot + destinationArg + checkinArg + nightsArg + adultsArg + starratingArg + langArg;
//DGE("alertSpan").innerHTML = URL;
        //alert("The constructed URL is : \n" + URL);
          window.open(URL,"_blank");
           }
    function init(){
       var co = DGE("checkout")
       var ci = DGE("checkin");
       var ciDate = new Date(today);
       ciDate.setDate(ciDate.getDate() + 1)
       ci.value = ciDate.octopusDisplayFormat();
       ciDate.setDate(ciDate.getDate() + 1);
       co.innerHTML = ciDate.octopusDisplayFormat();

    }
function openCal(x){
  document.onkeypress = customizeCal;
  var maxdate = new Date();
  maxdate.setMonth(maxdate.getMonth() +futureMonthLimit);
  if(self.gfPop)  gfPop.fLimitPop(today.octopusDisplayFormat(),x,maxdate.octopusDisplayFormat());
}

function customizeCal(e){
    if (!self.gfPop) return;
    else gfPop.fHideCal();
    document.onkeypress=null;
}
futureMonthLimit=12;
