//Author: Jason Allan
//Date: Feb 5, 2004
//--------------------------------
// Validate
//--------------------------------
function Validate(frm){

	var i;
	var depMnth, depDay, depYear;
	var retMnth, retDay, retYear;
	var depDate, retDate;
	var name, email, phone;
	var msg = "Some of the information you have provided needs to be fine tuned ";
	msg += "so that we may proccess your request more accurately.\n\n";
	var IsValid = true;
	
	//get departure date	
	i = frm.DepMnth.selectedIndex;
	depMnth = frm.DepMnth[i].value - 1;

	i = frm.DepDay.selectedIndex;
	depDay = frm.DepDay[i].value;

	i = frm.DepYear.selectedIndex;
	depYear = frm.DepYear[i].value;

	//get return date	
	i = frm.ArriveMnth.selectedIndex;
	retMnth = frm.ArriveMnth[i].value - 1;

	i = frm.ArriveDay.selectedIndex;
	retDay = frm.ArriveDay[i].value;

	i = frm.ArriveYear.selectedIndex;
	retYear = frm.ArriveYear[i].value;

	depDate = new Date(depYear,depMnth,depDay);
	retDate = new Date(retYear,retMnth,retDay);

	name = frm.Name.value;
	email = frm.Email.value;
	phone = frm.Phone.value;

	if(IsNullField(name)){
		msg += "Please enter your name\n";
		IsValid = false;
	}//end if

	if(IsNullField(phone)){
		msg += "Please enter your phone number\n";
		IsValid = false;
	}//end if

	if(IsNullField(email)){ 
		msg += "Please enter a valid email address\n";
		IsValid = false;
	}else if(!IsValidEmail(email)){
		msg += "Please enter a valid email address\n";
		IsValid = false;
	}//end if

	//Validate departure information
	if(checkDate(depDay,++depMnth,depYear)){
		if(IsSunday(depDate)){
			msg += "The departure date you selected falls on a Sunday. ";
			msg += "Depots are closed on Sundays.\n";
			IsValid = false;
		}//end if
	}else{
		IsValid = false;
		msg += "The departure date you selected is not valid (ex: Feb 31, 2004)\n";
	}//end if

	//Validate return information
	if(checkDate(retDay,++retMnth,retYear)){
		if(IsSunday(retDate)){
			msg += "The return date you selected falls on a Sunday. ";
			msg += "Depots are closed on Sundays.\n";
			IsValid = false;
		}//end if
	}else{
		IsValid = false;
		msg += "The return date you selected is not valid (ex: Feb 31, 2004)\n";
	}//end if

	if(!IsValid){
		alert(msg);
		return false;
	}else{
		//Dealing with milliseconds so lets keep things simple
		var oneMinute = 60 * 1000;
		var oneHour = oneMinute * 60;
		var oneDay = oneHour * 24;
		
		//set target date 3 days from departure date
		var targetDate = new Date();
		var depDateInMS = depDate.getTime();
		depDateInMS += (oneDay * 2);
		targetDate.setTime(depDateInMS);

		if(retDate <= targetDate){
			msg += "There is a minimum 3 day rental on all our units. Please change "
			msg += "your return date appropriately.\n";
			alert(msg);
			return false;
		}else{
			return true;
		}//end if
	}//end if
	
}//end function

//--------------------------------
// SetDefaultDates()
//--------------------------------
function setDefaultDates(){

	var oneMinute = 60 * 1000;
	var oneHour = oneMinute * 60;
	var oneDay = oneHour * 24;
	
	var today = new Date();
	var todayInMS;
	
	if(IsSunday(today)){
		todayInMS = today.getTime() + oneDay;
		today.setTime(todayInMS);	
	}//end if

	var d = today.getDate();
	var m = today.getMonth();
	var y = today.getYear();
	
	document.forms[0].DepMnth.options[m].selected = true;
	
	for(var i=0;i<31;i++){
		if(document.forms[0].DepDay.options[i].value == d){
			document.forms[0].DepDay.options[i].selected = true;
			break;
		}//end if
	}//end for
	
	for(var i=0;i<2;i++){
		if(document.forms[0].DepYear.options[i].value == y){
			document.forms[0].DepYear.options[i].selected = true;
			break;
		}//end if
	}//end for
	
	//return date	
	todayInMS = today.getTime() + (oneDay * 3);
	today.setTime(todayInMS);
	
	if(IsSunday(today)){
		todayInMS = today.getTime() + oneDay;
		today.setTime(todayInMS);	
	}//end if
	
	d = today.getDate();
	m = today.getMonth();
	y = today.getYear();	
	
	document.forms[0].ArriveMnth.options[m].selected = true;
	
	for(var i=0;i<31;i++){
		if(document.forms[0].ArriveDay.options[i].value == d){
			document.forms[0].ArriveDay.options[i].selected = true;
			break;
		}//end if
	}//end for
	
	for(var i=0;i<2;i++){
		if(document.forms[0].ArriveYear.options[i].value == y){
			document.forms[0].ArriveYear.options[i].selected = true;
			break;
		}//end if
	}//end for
	
}//end function

//--------------------------------
// CheckForNull()
//--------------------------------
function IsNullField(field){

	if(Trim(field)=="" || Trim(field)==null){
		return true;
	}else{
		return false;
	}//end if

}//end function

//--------------------------------
// IsValidEmail
//--------------------------------
function IsValidEmail(e){

	var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
	return regex.test(e);

}//end function


//--------------------------------
// IsSunday()
//--------------------------------
function IsSunday(d) {
	
	if(d.getDay()==0){
		return true;
	}else{
		return false;
	}//end if

}//end function


//---------------------------------
// checkDate
//---------------------------------
function checkDate(day, mnth, yr){
  
	var dateIsValid = true;       //init flag

	var d = day;
	var m = mnth;
	var y = yr;
	
	if(d > 28){
		switch(m){
			case 2:  //feb
				if(d != 29){                
					dateIsValid = false;
				}else{                  
					if(y%4 != 0){
						dateIsValid = false;
					}
				}
				break;
			case 4: //april
			case 6: //june
			case 9: //sept
			case 11: //nov
				if(d==31){
					dateIsValid=false;
				}
				break;
			default:
				break;
		}//end switch
	}//end if  

	if(dateIsValid){
		return true;
	}else{
		//alert("ERROR: A date entered is not valid.\nFor example: Febuary can not have 31 days.\n\n");
		return false;
	}//end if dateIsValid

}//end function

//----------------------------------
//LTrim(string)
//----------------------------------
function LTrim(str)
{
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(0)) != -1) {
      
      var j=0, i = s.length;

     while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;

     s = s.substring(j, i);
   }//end if

   return s;

}//end function

//-----------------------------------
// RTrim(string)
//-----------------------------------
function RTrim(str)
{
   var whitespace = new String(" \t\n\r");

   var s = new String(str);

   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
      
      var i = s.length - 1;       // Get length of string

      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
     
      s = s.substring(0, i+1);
   }//end if

   return s;

}//end function

//---------------------------------
// Trim(string) 
//---------------------------------
function Trim(str){
   return RTrim(LTrim(str));
}//end function
