function checkDate(sSelectMonthIn, sSelectDayIn, sSelectMonthOut, sSelectDayOut){
    var errDates = false;
    var monthOutValue = sSelectMonthOut.options[sSelectMonthOut.selectedIndex].value;
    var monthInValue  = sSelectMonthIn.options[sSelectMonthIn.selectedIndex].value;
    var dayInValue    = sSelectDayIn.options[sSelectDayIn.selectedIndex].value;
    var dayOutValue   = sSelectDayOut.options[sSelectDayOut.selectedIndex].value;
    if (dayInValue == "" || dayOutValue ==""){
        errDates = true;
    }
    monthInValue  = parseInt(monthInValue);
    monthOutValue = parseInt(monthOutValue);
    dayInValue    = parseInt(dayInValue);
    dayOutValue   = parseInt(dayOutValue);
    if ((monthInValue > monthOutValue) || (monthInValue == monthOutValue && dayInValue >= dayOutValue)){
        errDates = true;
    }
    return errDates;
}

function computeNights(sSelectMonthIn, sSelectDayIn,sSelectMonthOut, sSelectDayOut){
    var sMonthOut = sSelectMonthOut.options[sSelectMonthOut.selectedIndex].value;
    var sMonthIn  = sSelectMonthIn.options[sSelectMonthIn.selectedIndex].value;
    var sDayIn    = sSelectDayIn.options[sSelectDayIn.selectedIndex].value;
    var sDayOut   = sSelectDayOut.options[sSelectDayOut.selectedIndex].value;
    var dDateIn   = retrieveDate(sMonthIn, sDayIn);
    var dDateOut  = retrieveDate(sMonthOut, sDayOut);
    var nMillsec  = dDateOut.getTime(dDateOut) - dDateIn.getTime(dDateIn);
    var nNights   = Math.round(nMillsec /1000/60/60/24);
    if (nNights >= '99'){
        alert(" Number of nights cannot exceed 99. \n Please adjust your dates.");
    } else {
        document.Fsearch.NN.value = nNights;
    }

}

function retrieveDate(selectMonthValue, selectDayValue){
    var sYear  = selectMonthValue.toString().substr(0,4);
    var sMonth = selectMonthValue.toString().substr(4,6);
    sMonth = (sMonth.substr(0,1) == "0"? sMonth.substr(1,1): sMonth);
    var dDay= new Date(sYear,sMonth - 1, selectDayValue, 12, 0, 0);
    return dDay;
}

function computeDays(sSelectMonth, sSelectDay){
    var nMonthValue = sSelectMonth.options[sSelectMonth.selectedIndex].value;
    var sYear = nMonthValue.toString().substr(0,4);
    var sMonth = nMonthValue.toString().substr(4,6);
    var nDays = 31;
    switch (sMonth){
        case "04":
        case "06":
        case "09":
        case "11":
            nDays = 30;
            sSelectDay.options[31].value = "";
            sSelectDay.options[31].text = "";
            if(sSelectDay.selectedIndex == 31) sSelectDay.selectedIndex = 1;
        break;
	    case "02":
            nDays = (sYear%4 == 0 ? 29: 28);
		for (var less = 31; less >= nDays+1; less --){
            sSelectDay.options[less].value = "";
            sSelectDay.options[less].text = "";
            if(sSelectDay.selectedIndex == less) sSelectDay.selectedIndex = 1;
		}
	    break;
    }
    for ( var count =1; count <nDays+1; count ++){
        sSelectDay.options[count].value = count;
        sSelectDay.options[count].text = count;
    }
}

function displayNights(sSelectMonthIn, sSelectDayIn,sSelectMonthOut, sSelectDayOut ,sNoCheck){
    var errCheck = checkDate(sSelectMonthIn, sSelectDayIn,sSelectMonthOut, sSelectDayOut);
    if (errCheck == false){
        computeNights(sSelectMonthIn, sSelectDayIn,sSelectMonthOut, sSelectDayOut);
	} else {
		document.Fsearch.NN.value = '';
//	    alert(" Check-out date is prior to check-in date. \n Please adjust your dates.");
	}
}

function updateCheckOut(sSelectMonthIn, sSelectDayIn,sSelectMonthOut, sSelectDayOut){
    var num = document.Fsearch.NN.value;
	var now = new Date();
        if (num !=""){
            num = parseInt(num);
            var cin = sSelectMonthIn.options[sSelectMonthIn.selectedIndex].value;
            var din = sSelectDayIn.options[sSelectDayIn.selectedIndex].value;
            if (din == ""){
                sSelectDayIn.selectedIndex = 0;
            }
            var checkInDate = retrieveDate(cin, din);
	        var millsec = (num)*24*60*60*1000;
            var millsecIn = checkInDate.getTime();
            millsec = millsec + millsecIn;
            checkInDate.setTime(millsec);
            var day = checkInDate.getDate();
		    var month= checkInDate.getMonth();
		    var year = "";
            if ( (checkInDate.getMonth() == now.getMonth()) && (now.getFullYear() == checkInDate.getFullYear()) ){
                year = now.getFullYear();
            } else {
                year = checkInDate.getFullYear();
            }

            month = (month< 9?"0":"").toString() + (month + 1).toString();
            var selectValue = year.toString() + month;
            for (var count = 0; count < sSelectMonthIn.length; count ++){
		    	if (sSelectMonthOut.options[count].value == selectValue){
					sSelectMonthOut.options[count].selected = true;
		            }
		    }

 		day = day - 1;
		sSelectDayOut.selectedIndex = day + 1;
        computeDays(sSelectMonthOut, document.Fsearch.OD);
	}

}

function calcDays(){
        updateCheckOut(document.Fsearch.CMY, document.Fsearch.CD,document.Fsearch.OMY,document.Fsearch.OD);
        displayNights(document.Fsearch.CMY, document.Fsearch.CD, document.Fsearch.OMY, document.Fsearch.OD);
}  


function check4empty (sSelect){
        if (sSelect.selectedIndex == '0'){
                sSelect.selectedIndex = '1';
        }
}

function dateInThePast (monthYear, day){
	today = new Date();
	currDay = today.getDate();
    if((monthYear.selectedIndex == 1) && (day.options[day.selectedIndex].value < currDay)) alert(' Check-in date has already passed. \n Please enter a future date.');
}

function checkAll (sSelectMonthIn, sSelectDayIn,sSelectMonthOut, sSelectDayOut, iWhich){
        switch (iWhich) {
        case 1:
        	if (sSelectDayIn.selectedIndex == '0'){
                	resetDate(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
                } else {
                	check4empty (sSelectMonthIn);check4empty (sSelectDayOut);check4empty (sSelectMonthOut);
                	updateCheckOut(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
                	// dateInThePast(sSelectMonthIn,sSelectDayIn);
        	}
        	break;
        case 2:
        	if (sSelectMonthIn.selectedIndex == '0'){
                	resetDate(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
        	} else {
                	check4empty (sSelectDayIn);check4empty (sSelectDayOut);check4empty (sSelectMonthOut);
                	computeDays(sSelectMonthIn,sSelectDayIn);
                	updateCheckOut(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
                	// dateInThePast(sSelectMonthIn,sSelectDayIn);
        	}
        	break;
        case 3: 
        	if (sSelectDayOut.selectedIndex == '0'){
        		resetDate(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
        	} else {
               		check4empty (sSelectMonthIn);check4empty (sSelectDayIn);check4empty (sSelectMonthOut);
               		displayNights(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
        	}
        	break;
        case 4:
        	if (sSelectMonthOut.selectedIndex == '0'){
        		resetDate(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
        	} else {
                	check4empty (sSelectMonthIn);check4empty (sSelectDayOut);check4empty (sSelectDayIn);
                	computeDays(sSelectMonthOut,sSelectDayOut);
                	displayNights(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut);
        	}
        	break;
        }
}

function resetDate(sSelectMonthIn,sSelectDayIn,sSelectMonthOut,sSelectDayOut){
	sSelectDayIn.selectedIndex = '0';
	sSelectMonthIn.selectedIndex = '0';
	sSelectDayOut.selectedIndex = '0';
	sSelectMonthOut.selectedIndex = '0';
	document.Fsearch.NN.value = 1;
	computeDays(sSelectMonthIn, sSelectDayIn);
	computeDays(sSelectMonthOut, sSelectDayOut);
}

function IntOpt(obj,min,max,lead0){
	for(i=min;i<=max;i++){
		if (lead0=='y') 
			{addOpt(obj,make2chars(i),i,false,false);}
		else
			{addOpt(obj,i,i,false,false);}}}

function addMonthYear(obj,max,slash){
	for(i=0;i<max;i++){
		if (slash=='y')
		{addOpt(obj,aSlashMonthYear[i][0],aSlashMonthYear[i][1],false,false);}
		else
		{addOpt(obj,aMonthYear[i][0],aMonthYear[i][1],false,false);}}}
		
function addOpt(obj,sValue,sText,bIsDefault,bIsSelected)
{
	var newOpt = new Option(sText,sValue,bIsDefault,bIsSelected);
	obj.options[obj.length] = newOpt;
}

	var t_date = new Date();
  var t_month = t_date.getMonth();
  var month = new Array(12);
  var t_year = t_date.getFullYear();
  var year = new Array(12);
  var my_value = new Array (12);
  var my_title = new Array (12);
  var my_s_value = new Array (12);
   
   for (i=0;i<12;i++)
   {      
     if ((t_month+i)==12)
      {
      t_date.setMonth(0);
       t_month = t_date.getMonth()-1;
      t_date.setYear(t_year + 1);
      t_year = t_date.getFullYear();
      }
    month[i] = t_month + i + 1;
    year[i] = t_year;
  switch (month[i])
  { 
   case 1:
     my_title[i] = "Jan";
     break
   case 2:
      my_title[i] = "Feb";
     break
   case 3:
     my_title[i] = "Mar";
     break
   case 4:
     my_title[i] = "Apr";
     break
   case 5:
     my_title[i] = "May";
     break
   case 6:
     my_title[i] = "Jun";
     break
   case 7:
     my_title[i] = "Jul";
     break
   case 8:
     my_title[i] = "Aug";
     break
   case 9:
     my_title[i] = "Sep";
     break
   case 10:
     my_title[i] = "Oct";
     break
   case 11:
     my_title[i] = "Nov";
     break
   case 12:
     my_title[i] = "Dec";
     break
  }
  if ((t_month+i) < 10)
  {
   month[i] = "0" + month[i];
  }
  my_title[i] = my_title[i]+" "+year[i];
  my_value[i] = year[i] +""+ month[i];
  my_s_value[i] = month[i]+"/"+year[i];
   } 
 
   var aMonthYear = new Array(
   new Array (my_value[0],my_title[0]),new Array (my_value[1],my_title[1]),new Array (my_value[2],my_title[2]),new Array (my_value[3],my_title[3]),new Array (my_value[4],my_title[4]),new Array (my_value[5],my_title[5]),new Array (my_value[6],my_title[6]),new Array (my_value[7],my_title[7]),new Array (my_value[8],my_title[8]),new Array (my_value[9],my_title[9]),new Array (my_value[10],my_title[10]),new Array (my_value[11],my_title[11])
   );
   var aSlashMonthYear = new Array(
   new Array (my_s_value[0],my_title[0]),new Array (my_s_value[1],my_title[1]),new Array (my_s_value[2],my_title[2]),new Array (my_s_value[3],my_title[3]),new Array (my_s_value[4],my_title[4]),new Array (my_s_value[5],my_title[5]),new Array (my_s_value[6],my_title[6]),new Array (my_s_value[7],my_title[7]),new Array (my_s_value[8],my_title[8]),new Array (my_s_value[9],my_title[9]),new Array (my_s_value[10],my_title[10]),new Array (my_s_value[11],my_title[11])
   );
	 
function addDays(myDate,days) {return new Date(myDate.getTime() + days*24*60*60*1000);}

function setdateto(outday,daytoset,lead,dayctrl,myctrl,slash){
	var compDate = new Date();
	compDate = addDays(compDate,lead-1);
	if (slash == 'y'){
		var newDate = new Date(myctrl[myctrl.selectedIndex].value.substr(3,5),myctrl[myctrl.selectedIndex].value.substr(0,2)-1,outday);}
	else
		{var newDate = new Date(myctrl[myctrl.selectedIndex].value.substr(2,4),myctrl[myctrl.selectedIndex].value.substr(0,2)-1,outday);}
	dayctrl.selectedIndex=daytoset-1;
	if (compDate>newDate){myctrl.selectedIndex=1;}else{myctrl.selectedIndex=0;}}