<!--
/*
Author: LET Group. All rights reserved.
www.letgroup.com
These functions were created by LET Group
*/
<!--
$(document).ready(function(){
	$("#startDate").numeric({allow:"/"});
	$("#endDate").numeric({allow:"/"});
	// for date Picker
	$('#startDate').datePicker();
	$('#endDate').datePicker();
	$('#startDate').bind(
		'dpClosed',
		function(e, selectedDates)
		{
			var d = selectedDates[0];
			if (d) {
				d = new Date(d);
				$('#endDate').dpSetStartDate(d.addDays(0).asString());
				$('#endDate').val(c_dateAddFormatted($('#startDate').val(), 1, "MDY", "/", 4, true));
			}
		}
	);
	$('#endDate').bind(
		'dpClosed',
		function(e, selectedDates)
		{
			var d = selectedDates[0];
			if (d) {
				d = new Date(d);
				$('#startDate').dpSetEndDate(d.addDays(0).asString());
			}
		}
	);
})




// from: http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C0800602A52
// modified by LET Group. All rights reserved. www.letgroup.com
function c_isValidDate(dateStr, format) {
	dateStr = c_trim(dateStr);
	
	if (dateStr.length < 6 || dateStr.length > 10) { return false; } 
	if (format == null) { format = "MDY"; }
	format = format.toUpperCase();
	if (format.length != 3) { format = "MDY"; }
	if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || (format.indexOf("Y") == -1) ) { format = "MDY"; }
	if (format.substring(0, 1) == "Y") { // If the year is first
	  var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
	  var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
	} else if (format.substring(1, 2) == "Y") { // If the year is second
	  var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
	  var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
	} else { // The year must be third
	  var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
	  var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
	}
	// If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
	if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }

	var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
	// Check to see if the 3 parts end up making a valid date
	if (format.substring(0, 1) == "M") { var mm = parts[0]; } else if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
	if (format.substring(0, 1) == "D") { var dd = parts[0]; } else if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
	if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
	if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
	if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
	var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
	if (parseFloat(dd) != dt.getDate()) { return false; }
	if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
	return true;
}

// from: http://www.rgagnon.com/jsdetails/js-0063.html
function c_trim(strValue) {
	var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

// author: LET Group. All rights reserved. www.letgroup.com
function c_isDateInPast(dateStr, format, delimiter) {
	var rightNow = new Date();
	// to eliminate hours, minutes and second to make clean comparison
	var todayDate = new Date(rightNow.getFullYear(), rightNow.getMonth(), rightNow.getDate(), 0, 0, 0);

	dateStr = c_trim(dateStr);
	if ((!c_isDateFieldEmpty(dateStr)) && c_isValidDate(dateStr, format)) {
		var dateToUse = c_prepareDateObject(dateStr, format, delimiter);
		if  (Date.parse(todayDate) > Date.parse(dateToUse)) {
			return true;
		}
	} else {
		return false;
	}
}

// author: LET Group. All rights reserved. www.letgroup.com
function c_isDateFieldEmpty(dateStr) {
	if (c_trim(dateStr) == "") {
		return true;
	} else {
		return false;
	}
}

// author: LET Group. All rights reserved. www.letgroup.com
// This function can customize the label for dates
function c_compareDatesFlex(dateStrStart, dateStrEnd, format, delimiter, labelType) {
	var isRangeOk = false;
	var labelIn = "";
	var labelOut = "";
	
	if (labelType == 1) {
		labelIn = "check in";
		labelOut = "check out";
	} else if (labelType == 2) {
		labelIn = "arrival";
		labelOut = "departure";
	}
	
	dateStrStart = c_trim(dateStrStart);
	dateStrEnd = c_trim(dateStrEnd);
	
	if (c_isDateFieldEmpty(dateStrStart) || c_isDateFieldEmpty(dateStrEnd)) {
		alert("You must enter the " + labelIn + " and " + labelOut + " dates.");
	} else {
		if (!c_isValidDate(dateStrStart, format)) {
			alert("You must enter a valid " + labelIn + " date.");
		} else if (!c_isValidDate(dateStrEnd, format)) {
			alert("You must enter a valid " + labelOut + " date.");
		} else if (c_isDateInPast(dateStrStart, format, delimiter)) {
			alert("The " + labelIn + " date can't be in the past.");
		} else if (c_isDateInPast(dateStrEnd, format, delimiter)) {
			alert("The " + labelOut + " date can't be in the past.");			
		} else if (Date.parse(dateStrStart) == Date.parse(dateStrEnd)) {
			alert("The " + labelOut + " date can't be the same day as the " + labelIn + " date.");	
		} else if (Date.parse(dateStrStart) > Date.parse(dateStrEnd)) {
			alert("The " + labelIn + " date can't be after the " + labelOut + " date.");	
		} else {
			isRangeOk = true;
		}
	}
	return isRangeOk;
}

// author: LET Group. All rights reserved. www.letgroup.com
function c_prepareDateObject(dateStr, format, delimiter) {
	var dateParts = dateStr.split(delimiter);
	
	if (format.substring(0, 1) == "M") { var monthDate = dateParts[0]; } else if (format.substring(1, 2) == "M") { var monthDate = dateParts[1]; } else { var monthDate = dateParts[2]; }
	if (format.substring(0, 1) == "D") { var dayDate = dateParts[0]; } else if (format.substring(1, 2) == "D") { var dayDate = dateParts[1]; } else { var dayDate = dateParts[2]; }
	if (format.substring(0, 1) == "Y") { var yearDate = dateParts[0]; } else if (format.substring(1, 2) == "Y") { var yearDate = dateParts[1]; } else { var yearDate = dateParts[2]; }
	if (parseFloat(yearDate) <= 50) { yearDate = (parseFloat(yearDate) + 2000).toString(); }
	if (parseFloat(yearDate) <= 99) { yearDate = (parseFloat(yearDate) + 1900).toString(); }
	var objDate = new Date(parseFloat(yearDate), parseFloat(monthDate)-1, parseFloat(dayDate), 0, 0, 0);
	
	return objDate;
}

// author: LET Group. All rights reserved. www.letgroup.com
function c_dateDifferenceInDays (dateStrStart, dateStrEnd, format, delimiter) {
	var numDays = 1;
	var oneDay = 1000*60*60*24;
	
	if (c_isDateFieldEmpty(dateStrStart) || c_isDateFieldEmpty(dateStrEnd)) {
		alert("You must enter the check in and check out dates.");
	} else if (!c_isValidDate(dateStrStart, format)) {
		alert("You must enter a valid check in date.");
	} else if (!c_isValidDate(dateStrEnd, format)) {
		alert("You must enter a valid check out date.");
	} else {
		var objDateStart = c_prepareDateObject(dateStrStart, format, delimiter);
		var objDateEnd = c_prepareDateObject(dateStrEnd, format, delimiter);
		var numDays = Math.ceil((objDateEnd-objDateStart)/(oneDay))
		if (numDays < 0) { numDays = 1; }
	}
	return numDays;
}

// author: LET Group. All rights reserved. www.letgroup.com
// receive a date string, validates and then returns a string formatted date
function c_dateAddFormatted(dateStr, numDays, format, delimiter, digitsYear, useLeadingZero) {
	var dateFormatted = dateStr;
	
	if (c_isDateFieldEmpty(dateStr)) {
		alert("You must enter a date.");
	} else if (!c_isValidDate(dateStr, format)) {
		alert("You must enter a valid date.");
	} else {
		if (numDays > 0) {
			var objDate = c_prepareDateObject(dateStr, format, delimiter);
			var objNewDate = new Date(objDate);
			objNewDate.setDate(parseInt(objDate.getDate()) + parseInt(numDays));
			dateFormatted = c_dateFormatToField(objNewDate, format, delimiter, digitsYear, useLeadingZero)
		}
	}
	return dateFormatted;
}

// author: LET Group. All rights reserved. www.letgroup.com
// receive a date object and then returns a string formatted date
function c_dateFormatToField(objDate, format, delimiter, digitsYear, useLeadingZero) {
	monthDate = objDate.getMonth() + 1;
	if (useLeadingZero && monthDate < 10) { monthDate = "0" + monthDate; }
	dayDate =  objDate.getDate();
	if (useLeadingZero && dayDate < 10) { dayDate = "0" + dayDate; }
	yearDate =  objDate.getFullYear();
	
	dateFormatted = format.replace(format.substring(1, 2), delimiter + format.substring(1, 2) + delimiter);
	dateFormatted = dateFormatted.replace("M", monthDate);
	dateFormatted = dateFormatted.replace("D", dayDate);
	if (digitsYear == 4) {
		dateFormatted = dateFormatted.replace("Y", yearDate);
	} else {
		dateFormatted = dateFormatted.replace("Y", yearDate.toString().substring(2, 4));
	}
	return dateFormatted;
}

// author: LET Group. All rights reserved. www.letgroup.com
function doCheckBookingFields(formObj) {
	var isOk = false;
	
	if (c_compareDatesFlex(formObj.startDate.value, formObj.endDate.value, "MDY", "/", 2)) {
		formObj.numberOfNights.value = c_dateDifferenceInDays(formObj.startDate.value, formObj.endDate.value, "MDY", "/");
		formObj.arriveDay.value=formObj.startDate.value.substring(3, 5);
		formObj.arriveMonth.value=formObj.startDate.value.substring(0, 2);
		formObj.arriveYear.value=formObj.startDate.value.substring(6, 10);
		formObj.departDay.value=formObj.endDate.value.substring(3, 5);
		formObj.departMonth.value=formObj.endDate.value.substring(0, 2);
		formObj.departYear.value=formObj.endDate.value.substring(6, 10);
		
		isOk = true;
	}
	return isOk;
}
//-->