// Validator
var d1, d2;

function validator() {
	var frmName = document.reservationForm;

	var adult;

	adult = frmName.adultTotal.value;

	frmName.adults.value = adult;

	var child;

	child = frmName.childTotal.value;

	frmName.children.value = child;

	var rate;
	
	rate = frmName.promoCode.value;
	
	frmName.rateCode.value = rate;
	
	var arrive;

	arrive = frmName.chkInDate.value;

	if(arrive == "mm/dd/yyyy") {
		alert("Please enter check in date.");
		return false;
	}
	else {
		//split the date and extract month, day, year
		var month, day, year;

		var k, y;

		k = arrive.indexOf("/");

		month = arrive.substring(0,k);

		y = arrive.indexOf("/",k+1);

		day = arrive.substring(k+1,y);

		year = arrive.substring(y+1);

		if (year.length == 2)
		{
			year = "20" + year;
		}
				
		//set the date values of the form hidden variables.

		frmName.arriveDate.value = day;

		frmName.arriveMonth.value = month;

		frmName.arriveYear.value = year;

		d1 = new Date(frmName.arriveYear.value, frmName.arriveMonth.value-1, frmName.arriveDate.value);
	}

	var depart;

	depart = frmName.chkOutDate.value;

	if(depart == "mm/dd/yyyy") {
		alert("Please enter check out date.");

		return false;
	}
	else {
		//split the date and extract month, day, year
		var month, day, year;

		var k, y;

		k = depart.indexOf("/");

		month = depart.substring(0,k);

		y = depart.indexOf("/",k+1);

		day = depart.substring(k+1,y);

		year = depart.substring(y+1);

		if (year.length == 2)
		{
			year = "20" + year;
		}
			
		//set the date values of the form hidden variables.

		frmName.departDate.value = day;

		frmName.departMonth.value = month;

		frmName.departYear.value = year;

		d2 = new Date(frmName.departYear.value, frmName.departMonth.value-1, frmName.departDate.value);
	}

	// The number of milliseconds in one day
	var oneDay = 1000 * 60 * 60 * 24;

	// Convert both dates to milliseconds
	var date1_ms = d1.getTime();
	var date2_ms = d2.getTime();

	// Calculate the difference in milliseconds
	var difference = Math.abs(date1_ms - date2_ms);

	// Convert back to days and return
	frmName.numberOfNights.value = Math.round(difference/oneDay);
}

function select_date(return_obj) { 
 date_win=window.open("./content-templates/popupCalendar.html?return_obj="+return_obj,"SelectDate","toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,top="+((screen.availHeight/2)-100)+",left="+((screen.availWidth/2)-100)+",width=234,height=163");
 date_win.focus();
}

function validateSynxisReservation() {
 var x = 1;
 switch(x) {
  case 1:
   if(!isValidDate(document.getElementById('chkInDate'))) {
    alert("Please enter a valid date in the following format: MM/DD/YYYY");
	document.getElementById('chkInDate').focus();
	return false;
   }
  case 2:
   if(!isValidDate(document.getElementById('chkOutDate'))) {
    alert("Please enter a valid date in the following format: MM/DD/YYYY");
	document.getElementById('chkOutDate').focus();
	return false;
   } 
  case 3:
   if(!isValidRange(document.getElementById('chkInDate'),document.getElementById('chkOutDate'))) {
    alert("Your check out date must be greater then your check in date.");
	document.getElementById('chkOutDate').focus();
	return false;
   }     
 }
 return true; 
}

function synxisReservation() { 
 if(validateSynxisReservation()) {
  var sdateComponents=document.getElementById('chkInDate').value; 
  var edateComponents=document.getElementById('chkOutDate').value;  
  synxisUrl+='&Arrive='+sdateComponents+'&Depart='+edateComponents+'&Adult='+document.getElementById('adultTotal').options[document.getElementById('adultTotal').selectedIndex].value+'&Child='+document.getElementById('childTotal').options[document.getElementById('childTotal').selectedIndex].value+'&Step=2';
  if(document.getElementById('promoCode').value != "") {  
  synxisUrl+='&promo='+document.getElementById('promoCode').value;
  }
  synxis_win = window.open(synxisUrl);
  synxis_win.focus();  
 }
}

function isValidDate(strDateObj) {
 var date1 = new Date();
 var dateComponents=strDateObj.value.split("/");
 if(dateComponents.length == 3) {  
  if(!isNaN(dateComponents[0]) && !isNaN(dateComponents[1]) && !isNaN(dateComponents[2])) {   
   if(dateComponents[0] < 13 && dateComponents[2] >= date1.getFullYear()) {    
    date1.setMonth(dateComponents[0]-1);	
	date1.setFullYear(dateComponents[2]);	
	if(dateComponents[1] <= totalDaysInMonth(date1)) {	 
	 return true;
	}
	else {	 
	 return false;
	}
   }
   else {
    
    return false;
   }
  }
  else  {
   return false;
  }
 }
 else {
  return false;
 }
}

function totalDaysInMonth(dateObj) { 
  var endDate = new Date();
  dateObj.setDate(1);
  endDate.setDate(1);
  endDate.setMonth(dateObj.getMonth()+1);  
  if(dateObj.getMonth() != 11) {
   endDate.setFullYear(dateObj.getFullYear());
  }
  else {
   endDate.setFullYear(dateObj.getFullYear()+1);
  } 
  return Math.ceil((endDate.getTime()-dateObj.getTime())/(1000*60*60*24));    
}

function isValidRange(date1,date2) {
 sdate = new Date();
 edate = new Date();
 var sdateComponents=date1.value.split("/");
 var edateComponents=date2.value.split("/"); 
 sdate.setMonth(sdateComponents[0]-1);
 sdate.setDate(sdateComponents[1]);
 sdate.setFullYear(sdateComponents[2]); 
 edate.setMonth(edateComponents[0]-1);
 edate.setDate(edateComponents[1]);
 edate.setFullYear(edateComponents[2]); 
 if(Date.parse(sdate) < Date.parse(edate)) {
  return true;
 }
 else {
  return false;
 }
}

function bookSpecial(code, today, tomorrow){
 document.getElementById('chkInDate').value = today;
	document.getElementById('chkOutDate').value = tomorrow;
 document.getElementById('promoCode').value = code;
	synxisReservation();
}
