/*This function will test to make sure a valid
date has been entered.  If it is valid it will
return "true".  If not, it will return "false".*/

function validsearchfrm(frm)
{
	checkflag = false;
	checkflag = validateFormDates(frm);
	checkflag = hotelsearchform(frm);
	
	return checkflag;
	
}

function validateDate(month, day, year) {

   //if no year is given assume current year
   //unless date has passed, then assume next year
   if (year == null) {
      time = new Date();
      today_year = time.getYear();
      today_month = time.getMonth();
      today_day = time.getDay();
      if ((month > today_month) || ((month == today_month) && (day >= today_day)))
         year = today_year + 1900;
      else  year = today_year + 1901;
   }

   if ((month == null) || (day == null) || (year == null))
     return false;
   
   if (navigator.appName.indexOf("WebTV")!=-1) {
      ;//do nothing for now
   }
   else {
      var numDays;
      switch(month) {
         case 1:
         case 3:
         case 5:
         case 7:
         case 8:
         case 10:
         case 12:
            numDays = 31;
            break;
         case 4:
         case 6:
         case 9:
         case 11:
            numDays = 30;
            break;
         case 2:
            numDays = 28;
            break;
      }

      //Check for leap year
      if ((month == 2) && (day == 29)) {
        if (year % 100 == 0) {
          if (year % 400 != 0)
            return false;
        }
        else {
          if (year % 4 != 0)
            return false;
        }
      } else if (day > numDays) {
         //Compare days enter to maximum number of days in the given month
         return false;
      }

      return true;
   }
}


function validateFormDates(form_flds) {
 
   if (form_flds.imo) {
     arrive_month = form_flds.imo.options.value;
     arrive_day = form_flds.idy.options.value;
    arrive_year = form_flds.iyr.options.value;     
    date1 = new Date(arrive_year,arrive_month - 1, arrive_day);
   }
   
   if (form_flds.omo) {

     depart_month =form_flds.omo.options.value;
     depart_day = form_flds.ody.options.value;
     depart_year = form_flds.oyr.options.value;
     date2 = new Date(depart_year,depart_month - 1, depart_day);     
   }
     
  var difference = date2.getTime() - date1.getTime();
  var daysDifference = Math.floor(difference/1000/60/60/24);
  
  if (daysDifference <= 0)
  {
  	alert ("Invalid booking date range: departure date is earlier than arrival date");
  	return;
  }
 

   if (!datesCheck(arrive_month,arrive_day,arrive_year,"Arrival Date"))
           return false;
  
  if (!datesCheck(depart_month,depart_day, depart_year,"Departure Date"))
           return false;
              
   return true;
}


function datesCheck (month, day, year, title) {

   if (day < 0 || month < 0)  {
         alert("Please enter "+title);
         return false;
  }

   if ((day > 0) && (month < 0))  {
     alert("You have entered a partial date.\n"
        + "Please enter a Month and select 'Day' ");
     return false;
   }

   if ((month > 0) && (day < 0))  {
     alert("You have entered a partial date.\n"
        + "Please enter a day or select 'Month' to clear the month.");
     return false;
   }

   var today = new Date();
   var today_year = today.getFullYear();
   var today_month = today.getMonth();
   var today_day = today.getDay();
   
   var date1 = new Date(year,month-1, day);
   
   var difference = date1.getTime() - today.getTime();
   var daysDifference = Math.floor(difference/1000/60/60/24) + 1;
   
   if (daysDifference >= 365)
   {
     alert(title+" more than one year from today\'s date would not be searched.");    
     return false;
   }
   
   
   if (daysDifference < 0)
   {
        alert(title+" is not valid for booking");    
        return false;
   }
   

/*
   if (!validateDate(month,day,year)) {
     alert("Invalid date:\nNot that many days in " + monthNames(month));
     return false;
   }
*/
   return true;
}


function monthNames(month) {
   var name;
   switch(month) {
      case 1:
            name = "January";
         break;
      case 2:
         name = "February";
         break;
      case 3:
         name = "March";
         break;
      case 4:
         name = "April";
         break;
	case 5:
         name = "May";
         break;                  
      case 6:
         name = "June";
         break;
	case 7:
         name = "July";
         break;
	case 8:
         name = "August";
         break;                  
      case 9:
         name = "September";
         break;
	case 10:
         name = "October";
         break;                  
      case 11:
         name = "November";
         break;
	case 12:
         name = "December";
         break;                  
   }
   return name;
}

var submitted = false;
function hotelsearchform(frm) {

	if (frm.ci.value=="")
	{
		alert("Please enter a city");
		return false;
	}
	
	if (frm.cn.value=="US")
	{
	 	if (frm.st.value=="")
		{	
			alert("Please enter a state");
			return false;
		}
	}	
	

	if (! submitted) {
		submitted = true;
		ProgressImg = document.getElementById('inprogress_img');
		document.getElementById("inprogress").style.visibility = "visible";
		setTimeout("ProgressImg.src = ProgressImg.src",100);
	}
	else {
		return false;
	}

	return true;
	
}