

//------------------------------------------------------------------------------
//-- function to check valid date entry
function check_dateEntered(field,formName){

var dateValid = false;
var checkstr = "0123456789";
var DateField = field;
var Datevalue = "";
var DateTemp = "";
var seperator = "/";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
   err = 0;
   DateValue = DateField.value;
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   if (DateValue.length == 6) {
      DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   /* if 00 ist entered, no error, deleting the entry */
   if ((day == 0) && (month == 0) && (year == 00)) {
      err = 0; day = ""; month = ""; year = ""; seperator = "";
   }
   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
   if (err == 0) {
      DateField.value = day + seperator + month + seperator + year;
      dateValid = true;
   }
   /* Error-message if err != 0 */
   else {
		dateValid = false;
      //alert("Date is incorrect!");
      DateField.value = dateValid;
      //DateField.select();
			//DateField.focus();
	}
	
	/*===============================================
	//-- use this bit to check two dates only -------
	//-- check if both dates filled in and valid
	if(dateValid){
		//-- check both fields are populated
		if(eval("document."+formName+".dateArrive.value") != "" && eval("document."+formName+".dateDepart.value") != ""){
			checkDateDiff(formName)
		}
	}
	*/
}

//------------------------------------------------------------------------------
//-- function to check the difference between the two dates entered
function checkDateDiff(formName){

	var validDates = true;
	var err = 0;
	
	//- get the two date values
	eDate = eval("document."+formName+".dateArrive.value")
	lDate = eval("document."+formName+".dateDepart.value")
	
	//-- split values into respective day, month, year
	eDay = eDate.substr(0,2);
	eMonth = eDate.substr(3,2);
	eYear = eDate.substr(6,4);

	lDay = lDate.substr(0,2);
	lMonth = lDate.substr(3,2);
	lYear = lDate.substr(6,4);

	//-- Set the two dates from the values
	//-- NOTE: Month is 0-11 in JavaScript
	var dateArrive = new Date(eYear, eMonth-1, eDay)
	var dateDepart = new Date(lYear, lMonth-1, lDay)

	//dateDepart=new Date()
	//Get 1 day in milliseconds
	var one_day=1000*60*60*24

	//Calculate difference btw the two dates, and convert to days
	dateDiff = Math.ceil((dateDepart.getTime()-dateArrive.getTime())/(one_day))

	if(dateDiff == 0){
		validDates = false;
		err = 1;
	}
	if(dateDiff < 0){
		validDates = false;
		err = 2;
	}

	//-- compare start date with todays date
	var dateToday = new Date();
	dayToday = dateToday.getDate();
	monthToday = dateToday.getMonth();
	yearToday = dateToday.getYear();
	//alert(dayToday+"/"+monthToday+"/"+yearToday)
	//alert(eDay+"/"+eMonth+"/"+eYear)

	if(eYear < yearToday){
		validDates = false;
		err = 3;
	} else if(eYear == yearToday && eMonth < monthToday){
		validDates = false;
		err = 3;
	}else if(eYear == yearToday && eMonth == monthToday && eDay < dayToday){
		validDates = false;
		err = 3;
	}
	if(!validDates){
		if(err == 1){ errMsg = "The two dates are the same."}
		if(err == 2){ errMsg = "The start date cannot be after the end date."}
		if(err == 3){ errMsg = "The Start date cannot be in the past."}
		alert(errMsg);
		//-- if the start date is incorrect - select it for the user
		if(err == 2 || err == 3){
			dateArriveField = eval("document."+formName+".dateArrive")
			dateArriveField.select();
			dateArriveField.focus();
		}
	}else{
		//-- if all is ok then populate field holding number of days requested
		dateDiffField = eval("document."+formName+".dateDiff")
		dateDiffField.value = dateDiff;	
	}

}