function QuoteBox( sMonth, sDay, tMonth, tDay, adults, numKids, kid1, kid2, kid3, kid4, departGateway, dest )
{
	
  if (dest){
	obj = document.getElementById("qbRegion");
	
	for ( i=0; i<=obj.length; i++ ) {
		if(obj[i].value == dest) {
			obj.selectedIndex = i;
			break;
		}
	}
  }
  
  prepYYYYMD( document.getElementById("qbSMonth"), document.getElementById("qbSDay"), 0, 2 );
  prepYYYYMD( document.getElementById("qbTMonth"), document.getElementById("qbTDay"), 0 );
  advanceTDate();
  
  setSelectedDates( document.getElementById("qbSMonth"), sMonth, document.getElementById("qbSDay"), sDay, document.getElementById("qbTMonth"), tMonth, document.getElementById("qbTDay"), tDay);
  
  document.getElementById("qbAdults").selectedIndex = adults - 1;
  document.getElementById("qbNumKids").selectedIndex = numKids;
  
  for ( var i=1; i<=4; i++ ) {
	if(eval('kid'+i) > 0) {
		document.getElementById("qbDivKidAge"+i).style.display = "block";
		document.getElementById("qbKidAge"+i).selectedIndex = eval('kid'+i);	
	}
  }
  
  obj = document.getElementById("qbGateway");

  if(departGateway != 'NYC') {	
	for ( i=0; i<=obj.length; i++ ) {
		if(obj[i].value == departGateway) {
			obj.selectedIndex = i;
			break;
		}
	}
  } else {
	obj.selectedIndex = 0;  
  }
  
  document.getElementById("qbSMonth").onchange = advanceTDate;
  document.getElementById("qbSDay").onchange = advanceTDate;
  
  document.getElementById("qbNumKids").onchange = function() {
    var obj = null;
    
    for ( var i=1; i<=4; i++ ) {
      obj = document.getElementById("qbKidAge"+i);
      if ( this.value < i ) obj.selectedIndex = 0;
      document.getElementById("qbDivKidAge"+i).style.display = ( this.value >= i )? "block" : "none";
    }
  }

  if ( document.getElementById("qbHotelOnly") )
    document.getElementById("qbHotelOnly").onclick = priceHotelOnly;

  if ( document.getElementById("qbHotelAir") )
    document.getElementById("qbHotelAir").onclick = priceHotelWithAir;
}

//----------------------------------------------------------------------
// Begin form submission routines
//----------------------------------------------------------------------

function priceHotelOnly()
{
  var obj = document.getElementById("qbSearchType");
  obj.value = "HOTEL";

  validateNumKidsOptions();
  validateSelections();
  validateDates();

  return ( obj.value != "" );
}

//----------------------------------------------------------------------

function priceHotelWithAir()
{
  var obj = document.getElementById("qbSearchType");
  obj.value = "AIR";
  
  validateNumKidsOptions();
  validateSelections();
  validateDates();

  if ( obj.value != "" )
    validateGatewayOption();
  
  return ( obj.value != "" );
}

//----------------------------------------------------------------------

function validateDates()
{  
  if (document.getElementById("qbSMonth").value.length == 5) {
  	var startMonth = document.getElementById("qbSMonth").value.charAt(4);
  } else {
  	var startMonth = document.getElementById("qbSMonth").value.substr(4,2);
  }
  
  if (document.getElementById("qbTMonth").value.length == 5) {
	var toMonth = document.getElementById("qbTMonth").value.charAt(4);
  } else {
	var toMonth = document.getElementById("qbTMonth").value.substr(4,2);
  }
  
  var startYear = document.getElementById("qbSMonth").value.substr(0,4);
  var toYear = document.getElementById("qbTMonth").value.substr(0,4);
  
  var startDay = document.getElementById("qbSDay").value;
  var toDay = document.getElementById("qbTDay").value;
  
  //start valid date test   
  var selStartDate = new Date(startYear, startMonth-1, startDay);		
  var selEndDate = new Date(toYear, toMonth-1, toDay);
  
  if (selStartDate.getDate() != startDay) {
  	document.getElementById("qbSearchType").value = "";
  	alert('Please enter a valid Check In date');
	return false;
  }
  
  if (selEndDate.getDate() != toDay) {
  	document.getElementById("qbSearchType").value = "";
  	alert('Please enter a valid Check Out date');
	return false;
  }
  //end valid date test
  
  var now = new Date();  
  
  if (daysApart(now.getDate(), now.getMonth()+1, now.getFullYear(), startDay, startMonth, startYear) < 1) {
  	document.getElementById("qbSearchType").value = "";
  	alert("Check In date cannot be in the past");
	return false;
  }
  
  if (!leave_lt_arrive(startDay, startMonth, startYear, toDay, toMonth, toYear)) {
	document.getElementById("qbSearchType").value = "";
	alert("Your Check In date must be before your Check Out date");
	return false;
  }
  
  if (daysApart(now.getDate(), now.getMonth()+1, now.getFullYear(), toDay, toMonth, toYear) < 1) {
  	document.getElementById("qbSearchType").value = "";
  	alert("Check Out date cannot be in the past");
	return false;
  }
}

function selectedDate(tempDay, tempMonth, tempYear){
	var sdate= new Date(tempYear,tempMonth-1,tempDay);
	return sdate;
}

function daysApart(startDay, startMonth, startYear, toDay, toMonth, toYear) {
	var startDay = new selectedDate(startDay, startMonth, startYear);
	var endDay = new selectedDate(toDay, toMonth, toYear);
	var one_day = 1000*60*60*24;
	intDaysApart=Math.ceil((endDay.getTime()-startDay.getTime())/(one_day));
	return intDaysApart;
}

function leave_lt_arrive(startDay, startMonth, startYear, toDay, toMonth, toYear) {
	var sdate=new Date(startYear,startMonth-1,startDay);
	var tdate=new Date(toYear,toMonth-1,toDay);
	
	if (sdate >= tdate) {
		return false;
	} else {
		return true;
	}
}

//----------------------------------------------------------------------

function validateNumKidsOptions()
{
  for ( var i=1; i<=parseInt( document.getElementById("qbNumKids").value ); i++ ) {
    if ( !document.getElementById("qbKidAge"+i).selectedIndex ) {
      document.getElementById("qbSearchType").value = "";
      alert( "Please select age for each child." );
      break;
    }
  }
}

//----------------------------------------------------------------------

function validateSelections() {	
	if (document.getElementById("qbRegion").value == '') {
		document.getElementById("qbSearchType").value = "";
		alert( "Please select an Island" );	
	}
}

//----------------------------------------------------------------------

function validateGatewayOption()
{
  if ( document.getElementById("qbGateway").value == "" ) {
    document.getElementById("qbSearchType").value = "";
    alert( "Please select an airport to continue." );
  }
}

//----------------------------------------------------------------------
// End form submission routines
//----------------------------------------------------------------------

//----------------------------------------------------------------------
// Begin date-related routines
//----------------------------------------------------------------------

function verifyYYYYMD( objMonth, objDay )
{
  if ( objMonth && objDay ) {
    var iYYYY = parseInt( objMonth.value.substr(0, 4) );
    var iMM = parseInt( objMonth.value.substr(4, objMonth.value.length-4) );
    var iDD = parseInt( objDay.value );
    var dCheck = new Date( iYYYY, iMM-1, iDD );

    if ( dCheck.getDate() != iDD )
      setYYYYMD( objMonth, objDay, dCheck );
  }
}

//----------------------------------------------------------------------

function setYYYYMD( objMonth, objDay, dDate )
{
  if ( objMonth && objDay ) {
    var sYYYYM = dDate.getFullYear() + "" + (dDate.getMonth() + 1);

    if ( matchOptionByValue( objMonth.id, sYYYYM ) != "" )
      matchOptionByValue( objDay.id, dDate.getDate() );
    else
      setYYYYMD( objMonth, objDay, new Date( dDate.getFullYear(), dDate.getMonth(), 1, -1, 0, 0 ) );
  }
}

//----------------------------------------------------------------------

function advanceTDate()
{
  var objSMonth = document.getElementById("qbSMonth");
  var objSDay = document.getElementById("qbSDay");
  verifyYYYYMD( objSMonth, objSDay );

  var iYYYY = parseInt( objSMonth.value.substr(0, 4) );
  var iMM = parseInt( objSMonth.value.substr(4, objSMonth.value.length-4) );
  var iDD = parseInt( objSDay.value );
  var dSDate = new Date( iYYYY, iMM - 1, iDD );
  
  var objTMonth = document.getElementById("qbTMonth");
  var objTDay = document.getElementById("qbTDay");
  verifyYYYYMD( objTMonth, objTDay );

  iYYYY = parseInt( objTMonth.value.substr(0, 4) );
  iMM = parseInt( objTMonth.value.substr(4, objTMonth.value.length-4) );
  iDD = parseInt( objTDay.value );
  dTDate = new Date( iYYYY, iMM - 1, iDD );
  
  var daysApart = 7;
  setYYYYMD( objTMonth, objTDay, new Date( dSDate.getFullYear(), dSDate.getMonth(), dSDate.getDate() + daysApart ) );

}

//--------------------------------------------------------------------
// Today+2: set iDefault = 0
// Any Day: set iDefault = number
// 1st Option: set iDefault = null
//--------------------------------------------------------------------

function prepYYYYMD( objMonth, objDay, iDefault, iOffset )
{
  if ( iOffset === null )
    iOffset = 0;

  var dCurrMM = new Date();
  var dDayNum = new Date( dCurrMM.getFullYear(), dCurrMM.getMonth(), dCurrMM.getDate() + iOffset );

  var iYYYY = dCurrMM.getFullYear();
  var iMM = dCurrMM.getMonth();
  var iDD = dCurrMM.getDate();
  var sMMM_YY = "";
  var sYYYYM = "";
  
  if ( objMonth.length < 12 ) {
	  for ( var i=0; i<12; i++ ) {
		dCurrMM.setYear(iYYYY);
		dCurrMM.setMonth(iMM);
		dCurrMM.setDate(15);
	
		sMMM_YY = dCurrMM.toGMTString().substr(8, 3);
		sYYYYM = dCurrMM.getFullYear() + "" + (dCurrMM.getMonth() + 1);
		objMonth.options[objMonth.length] = new Option( sMMM_YY, sYYYYM );
	
		if ( sYYYYM == dDayNum.getFullYear() + "" + (dDayNum.getMonth() + 1) )
		  objMonth.selectedIndex = i;
	
		iMM++;
		if ( iMM == 12 ) {
		  iYYYY++; iMM = 0;
		}
	  }  
  }
  
  iDD = parseInt( dDayNum.getDate() );

  if (objDay.length < 31) {
  	for (i = 1; i <= 31; i++) {
  		objDay.options[objDay.length] = new Option(i, i);
  		
  		if (iDefault !== null && i == iDD) 
  			objDay.selectedIndex = i - 1;
  	}
  	
  	if (iDefault === null || !(iDefault + iOffset)) 
  		objDay.selectedIndex = 0;
  }
}

function setSelectedDates( objSMonth, sMonth, objSDay, sDay, objTMonth, tMonth, objTDay, tDay) {

	for ( i=0; i<=objSMonth.length; i++ ) {
		if(objSMonth[i].value == sMonth) {
			objSMonth.selectedIndex = i;
			break;
		}
	}

	for ( i=0; i<=objSDay.length; i++ ) {
		if(objSDay[i].value == sDay) {
			objSDay.selectedIndex = i;
			break;
		}
	}
	
	for ( i=0; i<=objTMonth.length; i++ ) {
		if(objTMonth[i].value == tMonth) {
			objTMonth.selectedIndex = i;
			break;
		}
	}

	for ( i=0; i<=objTDay.length; i++ ) {
		if(objTDay[i].value == tDay) {
			objTDay.selectedIndex = i;
			break;
		}
	}
}

//----------------------------------------------------------------------
// End date-related routines
//----------------------------------------------------------------------
