function CheckMandatoryTrainStatusFields(statusForm) {
var errorMsg ="";
var fieldList = "";
var origin = statusForm.wdf_origin.value;
var destination = statusForm.wdf_destination.value;
var trainNumber = statusForm.wdf_trainNumber.value;
if(eval("statusForm.wdf_trainNumber.value") == "optional") {
trainNumber = "";
}
if (trainNumber == "" && origin == "" && destination == "")
fieldList = "Problem with Departure and Arrival Station/City: Please provide a valid departure and arrival station or city name and resubmit. \n[Error ID: 573S]" + "\n";
if (trainNumber == "" && origin != "" && destination == "")
fieldList = fieldList + "Problem with Arrival Station/City or Train Number: Please provide a valid arrival station/city or train number and resubmit. \n[Error ID: 574S]" + "\n";
if (trainNumber == "" && origin == "" && destination != "")
fieldList = fieldList + "Problem with Departure Station/City or Train Number: Please provide a valid departure station/city or train number and resubmit. \n[Error ID: 575S]" + "\n";
if (trainNumber != "" && origin == "" && destination == "")
fieldList = fieldList + "Problem with Departure or Arrival Station/City: Please provide a valid departure or arrival station or city name and resubmit. \n[Error ID: 576S]" + "\n";
if ((trainNumber != "") && (!IsNumber(trainNumber)))
fieldList = fieldList + "Problem with Train Number: Sorry, we cannot find the train number you provided. Please check for accuracy and re-enter. Or, delete the train number and provide a departure and arrival station/city. To find a specific station, please click on the \'Station List\' link and select a station from the list provided. \n[Error ID: 577S]" + "\n";
if (fieldList != "") {
errorMsg = "The following information is needed to process your request:" + "\n\n" + fieldList;
}
if (errorMsg != "") {
alert(errorMsg);
return false;
}
}
function CheckMandatoryScheduleFields(statusForm) {
var errorMsg ="";
var fieldList = "";
var origin = statusForm.wdf_origin.value;
var destination = statusForm.wdf_destination.value;
if (origin == "" && destination == "")
fieldList = "Problem with Departure and Arrival Station/City: Please provide a valid departure and arrival station or city name and resubmit. \n[Error ID: 573S]" + "\n";
if (origin != "" && destination == "")
fieldList = fieldList + "Problem with Departure and Arrival Station/City: Please provide a valid departure and arrival station or city name and resubmit. \n[Error ID: 573S]" + "\n";
if (origin == "" && destination != "")
fieldList = fieldList + "Problem with Departure and Arrival Station/City: Please provide a valid departure and arrival station or city name and resubmit. \n[Error ID: 573S]" + "\n";
if (fieldList != "") {
errorMsg = "The following information is needed to process your request:" + "\n\n" + fieldList;
}
if (errorMsg != "") {
alert(errorMsg);
return false;
}
}
function CheckMandatoryMyTripFields(theForm) {
var errorMsg ="";
var fieldList = "";
if ($('mytrip_res_num').value.empty()) {
fieldList += " -- reservation number\n";
}
if ($('mytrip_res_email').value.empty() && $('mytrip_res_zip').value.empty()) {
fieldList += " -- email address or telephone number\n";
}
if (fieldList != "") {
errorMsg="The following information is needed to process your request:" + "\n" + fieldList+ "\n\n";
alert(errorMsg);
return false;
}
}
function CheckMandatoryMyTripFields(theForm) {
var errorMsg ="";
var fieldList = "";
if ($('mytrip_res_num').value.empty()) {
fieldList += " -- reservation number\n";
}
if ($('mytrip_res_email').value.empty() && $('mytrip_res_zip').value.empty()) {
fieldList += " -- email address or telephone number\n";
}
if (fieldList != "") {
errorMsg="The following information is needed to process your request:" + "\n" + fieldList+ "\n\n";
alert(errorMsg);
return false;
}
}
function CheckMandatoryLoginFields(theForm) {
var errorMsg ="";
var fieldList = "";
if(eval("theForm.wdf_username.value") == "") {
fieldList += " -- username\n";
}
if(eval("theForm.wdf_password.value") == "") {
fieldList += " -- password\n";
}
if (fieldList != "") {
errorMsg="The following information is needed to process your request:" + "\n" + fieldList+ "\n\n";
alert(errorMsg);
return false;
}
}

function getField(name,id){
	 return document.getElementById(name+id);
	}
	 
	function fieldExists(id){
	 return (document.getElementById('wdfdate'+id)!=null);
	}
	 
	function setDateDate(id,dt){
	 setDate(id,dt.getFullYear(),dt.getMonth()+1,dt.getDate());
	}
	 
	function setDate(id,year,month,day){
	 var dateInput=getField('wdfdate',id);
	 if (year==0 || month==0 || day==0){
	   dateInput.value="";
	 }else{
	     var inputFieldName = dateInput.name;
	      var dateInputFormat = inputFieldName.substring(inputFieldName.lastIndexOf(".") + 1, inputFieldName.length);
	       if (dateInputFormat == "eudate") { // DMY
	           dateInput.value=leadingZero(day)+'/'+leadingZero(month)+'/'+year;
	       }
	       if (dateInputFormat == "usdate") { // MDY
	        dateInput.value=leadingZero(month)+'/'+leadingZero(day)+'/'+year;
	       }
	       if (dateInputFormat == "isodate") { // YMD
	        dateInput.value=year+'/'+leadingZero(month)+'/'+leadingZero(day);
	       }
	     }
	}
	 
	function leadingZero(value){
	 if (value<10) value="0"+value;
	 return value;
	}
	 
	function getValidatedDateArray(id){
	 var array=getDateArray(id);
	 var year = parseInt(array[0],10);
	 var month = parseInt(array[1],10);
	 var day = parseInt(array[2],10);
	 if (year!=-1 && year<100){
	  year += 2000;
	 }
	 if (isNaN(year)||year<1900||year>9999){
	  year=0;
	 }
	 if (isNaN(month)||month<1||month>12){
	  month=0;
	 }
	 if (isNaN(day)||day<1||day>31){
	  day=0;
	 }
	 
	  
	 var Tdt=new Date(year,month-1,day,0,0,0,1);
	 
	 var iCal = window['itd_cal'+id];
	 if (iCal.toString().include('CalendarGroup')) {
	   // Do we need to check isDateOOB for the CalendarGroup
	 }
	 else {
	   // use the relevant calendar instance to check if the date is within the valid range for that calendar control
	   if( iCal.isDateOOB(Tdt) ) {
		 // set year to zero, this will trigger the setErrorOn display
		 year = 0;
	   }
	  }
	 return new Array(year,month,day);
	}
	 
	function getDateArray(id){
	 var date=getField('wdfdate',id).value;
	 var amdate = date;
	 date=date.replace(/[^0-9]/g,"/");   // only allow numbers and slashes
	 date=date.replace(/[\/]+/g,"/");   // only single slashes
	 var values = date.split("/");
	 
	 var inputFieldName = getField('wdfdate',id).name;
	 var dateInputFormat = inputFieldName.substring(inputFieldName.lastIndexOf(".") + 1, inputFieldName.length);
	   if (dateInputFormat == "eudate") { // DMY
	    return new Array(values[2],values[1],values[0]);
	   }
	   if (dateInputFormat == "usdate") { // MDY
	    return new Array(values[2],values[0],values[1]);
	   }
	   if (dateInputFormat == "isodate") { // YMD
	    return new Array(values[0],values[1],values[2]);
	   }
	   if (dateInputFormat == "date") { // YMD
	    if (date.blank()) {
	      return new Array(values[0],values[1],values[2]);
	    }
	    else {
	      values = amdate.split(", ");
	      var dvalues = values[1].split(" ");
	      var month = gsMonthNamesAbbr.indexOf(dvalues[0]) + 1;
	    
	      return new Array(values[2],month,dvalues[1]);
	    }
	   }
	}
	 
	function isValidDate(array) {
	 return (array[2]!=0 && array[1]!=0 && array[0]!=0);
	}
	 
	var timer=false;
	function dateChangedTimer(id){
	 doDateChanged(id,-1);
	 if (!timer){
	  window.setTimeout('timer=false;dateChangedTimer('+id+');',1000);
	  timer=true;
	 }
	}
	 
	function dateChangedComplete(id,daysGap){
	 var returnradio = document.getElementById('wdfreturnradio');
	 if (returnradio!=null && returnradio.checked){
	  doDateChanged(id,daysGap);
	 }
	}
	 
	function doDateChanged(id,daysGap){
	 var str=getField('wdfdate',id).value;
		 if (str.length>0){
			  var array=getValidatedDateArray(id);
				  if (!isValidDate(array)){
				    setErrorOn(id);
				  }else{
					   var dt=new Date(array[0],array[1]-1,array[2],0,0,0,1);
					   if (array[2]!=dt.getDate()){
					     setErrorOn(id);
					   }else{
					    setErrorOff(id);
					        // The second field is not updated at all if -1 is found.
					        // if zero or greater is found, then the second field would be updated to the value of the firstField plus daysGap
						    if (daysGap>=0){
						     setDate(id,array[0],array[1],array[2]);
							     if (getField('wdfdate',id+1)!=null){
							      dt=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()+daysGap,0,0,0,1);
							      
							      //Commented out on 01/14/2009 so that first date selection will not update the second date input box
							      //setDateDate(id+1,dt);
							      
							      
	 
							    }
						   }
					  }
			      }
		 }
	 updateDateState();
	}
	 
	function setErrorOn(id){
	 var cls=getField('wdfdate',id).className;
	 if (cls.indexOf('invalid')==-1){
	  getField('wdfdate',id).className=cls+' invalid';
	 }
	}
	 
	function setErrorOff(id){
	 var cls=getField('wdfdate',id).className;
	 if (cls.indexOf('invalid')>=0){
	  getField('wdfdate',id).className=cls.substring(0,cls.indexOf('invalid'));
	 }
	}
	 
	function updateDateState(){
	 if (self.updateRadioState) updateRadioState();
	 if (self.updateDowState) updateDowState();
	 if (self.updateTimeState) updateTimeState();
	}
	
	