	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 ==  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 roomtypeVal = getSelectedValue("roomtype");
	    var roomsVal = getSelectedValue("rooms");
	    var starratingVal = getSelectedValue("starrating");
	    var languageVal = getSelectedValue("language");
	    var currencyVal = getSelectedValue("currency");
        var bErrors = false;
        var errorMsg = "";
        var linebreak = "\n";
	    if(destinationVal == 0){
	        errorMsg = "Please select a destination."  + linebreak;
	        bErrors = true;
	    }
		if(nightsVal <=0 ) 
		{	
		alert( "Please enter a numeric value greater than 0");
	      	return false;
		
		}
	    if(!expDate.test(checkinVal) ){
	        errorMsg += "Please enter a checkin date in " + dFormat + " format."  + linebreak;
	        bErrors = true;
	    }
	    if(!validateDate(checkinVal)){
	        errorMsg += "";
	        bErrors = true;
		   
	    }
	    if(isNaN(parseInt(nightsVal)))
	    {
	        errorMsg += "Please enter the number of nights."  + linebreak;
	        bErrors = true;
	    }
	    if(bErrors)
		{
	        //aSpan.innerHTML = errorMsg;
	        alert(errorMsg);
	        return false;
	    }
	    
		var destinationArg = "&destination=" + destinationVal;
        var checkinArg = "";
	    if(!expDate.test(checkinVal))
		{
                aSpan.innerHTML = "The checkin date you entered must be in " + dFormat + " format";
				bErrors = true;
	    }
	    else if(!validateDate(checkinVal))
		{
	           aSpan.innerHTML = "Please enter a valid date";
			   bErrors = true;
	    }
        else
		{
	            var tDate = today.isNorthAmerica()?new Date(checkinVal):makeEuroDate(checkinVal);
                checkinArg = "&checkin=" + formatDateForURL(tDate);
        }
		
		if(!bErrors)
		{
	        //aSpan.innerHTML = errorMsg;
	        //alert(errorMsg);
	        return true;
	    }
	    
		var nightsArg= nightsVal == ""?"":"&nights=" + nightsVal;
	    var roomtypeArg = "&roomtype=" + roomtypeVal;
	    var roomsArg = "&rooms=" + roomsVal;
	    var starratingArg = starratingVal == 0?"":"&starrating=" + starratingVal;
	    var currencyArg = currencyVal == "0"?"":"&currency=" + currencyVal;
	    var langArg= languageVal == "0"?"":"&language=" + languageVal;
	    //var URLRoot = "http://www.octopustravel.com/HotelLink?country=GB&siteid=easyhotel";
var URLRoot = "http://www.octopustravel.com/HotelLink?country=GB&siteid=easyhotel";
	    var URL = URLRoot + destinationArg + checkinArg + nightsArg + roomtypeArg + roomsArg + starratingArg + currencyArg + langArg;
//DGE("alertSpan").innerHTML = URL;
	    //alert("The constructed URL is : \n" + URL);
          return true;
		  //window.open(URL,"_blank");
	   	}
	function init(){
	   var co = DGE("checkout")
	   var ci = DGE("checkin");
           var ciDate = new Date(today);
	   ciDate.setDate(ciDate.getDate() + 5)
	   ci.value = ciDate.octopusDisplayFormat();
           ciDate.setDate(ciDate.getDate() + 5);
	   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=13;


/*function giveCheckOut()
{
	var strCheckOut = "";
	var txtCheckIn = document.getElementById("checkin").value;
	var txtNights = document.getElementById("nights").value;
	
	if(txtNights <=0 ) 
	{	
		alert('Please Enter Numeric Value Greater Than 0');
		document.getElementById("nights").select();
		return false; 
	}
	
	if(isNaN(txtNights) )
	{	
		alert('Please Enter Numeric Value Greater Than 0');
		document.getElementById("nights").select();
		return false; 
	}
	
	date_array = txtCheckIn.split("/");
	var myCheckOutDate=new Date();
	myCheckOutDate.setFullYear(date_array[2],(date_array[1]-1),date_array[0]);
	myCheckOutDate.setDate(myCheckOutDate.getDate()+ parseInt(txtNights));
	strCheckOut = giveSno(myCheckOutDate.getDate()) + '/' + giveSno(myCheckOutDate.getMonth() + 1) + '/' + myCheckOutDate.getYear();
        document.getElementById("checkout").innerText = strCheckOut;
	
	return true;
}*/


function setFormPosition()
{
    var elementId ="tdSearchForm";
     var coords = {x: 0, y: 0}
     var element;
     if (document.all)
       element = document.all[elementId];
     else if (document.getElementById)
       element = document.getElementById(elementId);
     while (element)
	 {
       coords.x += element.offsetLeft;
       coords.y += element.offsetTop;
       element = element.offsetParent;
     }

     document.getElementById("SearchForm").style.left =coords.x;
	 document.getElementById("SearchForm").style.top =coords.y;
	 document.getElementById("SearchForm").style.visibility ="visible";
}
