function ValidateTollForm (theForm) {

	var errors = '';
	
	
	if(theForm.MyPassType.value == 'SP')
	{
		errors += errors + VehicleDetailsValidation() + ValidateSPDate() + ValidateContactDetails() + ValidateEmailDetails() + ValidateAddressDetails();
	}

	
	if(theForm.MyPassType.value == 'NP')
	{
		errors += errors + VehicleDetailsValidation() + ValidateContactDetails() + ValidateEmailDetails() + ValidateAddressDetails();
	}
	
	// Duration validation
	
	ValidateSPDate();
		
	if (errors.length > 0) 
	{
		alert('Please check following field(s) :\n\n'+errors);
		return false;
	}
	else
	{	
		return true;
	}	
}

function VehicleDetailsValidation()
{
	var errors = '';
	
	// Vehicle details validation				

	if (document.getElementById('myVDetails_txtRegPlate').value == "")
	{
		errors += "-- License Plate Number is required\n";
	}
	if (document.getElementById('myVDetails_txtRegConfirm').value == "")
	{
		errors += "-- Confirm Plate Number is required\n";
	}
	else if (document.getElementById('myVDetails_txtRegConfirm').value 
		!= document.getElementById('myVDetails_txtRegPlate').value)
	{
		errors += "-- Confirm Plate Number should be the same with License Plate Number \n";
	}
		
	if (document.getElementById('myVDetails_drpVehicleMake').value == "" || 
		document.getElementById('myVDetails_drpVehicleMake').value == "-- select --")
	{
		errors += "-- Make of Vehicle is required\n";
	}
	if (document.getElementById('myVDetails_drpVehicleModel').value == "" ||
	document.getElementById('myVDetails_drpVehicleModel').value == "-- select --")
	{
		errors += "-- Vehicle Model is required\n";
	}
	if (document.getElementById('myVDetails_drpVehicleType').value == "" ||
	document.getElementById('myVDetails_drpVehicleType').value == "-- select --")
	{
		errors += "-- Vehicle Class is required\n";
	}
		if (document.getElementById('myVDetails_drpState').value == "" ||
	document.getElementById('myVDetails_drpState').value == "-- select --")
	{
		errors += "-- Vehicle Registration State is required\n";
	}
	
	return errors;
}


// Validation function for PaymentDetails.aspx
function ValidatePaymentDetails (theForm) {

	var errors = '';
	if (!theForm.read_terms.checked)
	{
		errors = '-- Please confirm you have read the terms and conditions.\n';
	}	
	
	var temp = CreditCardDivVal(theForm);
	if(temp.length > 0)
	{
		errors += temp
	}
	
	if (errors.length > 0) 
	{
		alert('Please check following field(s):\n\n'+errors);
		return false;
	}
	else
	{	
		return true;
	}	
}

function ValidateAddressDetails () {

	var errors = '';
	var strTemp =  " of Postal Address is required\n";
	
	if (!document.getElementById('MySOption_chk55').checked )
		return errors;		

	if (document.getElementById('myPAddress_reg_street_num').value == "")
	{
		errors += "-- Street Number" + strTemp;
	}
	if (document.getElementById('myPAddress_reg_suburb').value == "")
	{
		errors += "-- Suburb" + strTemp;
	}
	if (document.getElementById('myPAddress_reg_suburb').value == "")
	{
		errors += "-- State" + strTemp;
	}
	if (document.getElementById('myPAddress_reg_postcode').value == "")
	{
		errors += "-- Postcode" + strTemp;
	}
		
	
	return errors;
}

function ValidateEmailDetails () {

	var errors = '';
	var strEmail = document.getElementById('MyEDetails_reg_email').value;
	
	if (!document.getElementById('MySOption_chk23').checked )
		return errors;		

	if (strEmail == "")
	{
		errors += "-- Email address is required\n";
	}
	else if (!isValidEmail(strEmail))
	{
		errors += "-- Email address is not valid\n";
	}

	
	return errors;
}

function ValidateContactDetails (theForm) {

	var errors = '';
	if (document.getElementById('MyCName_txtFirstName').value == "")
	{
		errors += "-- First Name is required\n";
	}
	if (document.getElementById('MyCName_txtLastName').value == "")
	{
		errors += "-- Last Name is required\n";
	}
		
	if (document.getElementById('MyCName_drpTitle').value == "" )
	{
		errors += "-- Contact Title is required\n";
	}
	
	if (document.getElementById('MyCNumber_reg_contact_number').value == "" )
	{
		errors += "-- Contact Number is required\n";
	}
	return errors;
}

function CreditCardDivVal(iF)
{
	var errors = '';
	var credit_card = document.getElementById('myCCDetails_cc_number_' + '1').value;
	 credit_card += document.getElementById('myCCDetails_cc_number_' + '2').value;
	 credit_card += document.getElementById('myCCDetails_cc_number_' + '3').value 
	 credit_card += document.getElementById('myCCDetails_cc_number_' + '4').value;
	 
	var expiry_date = new Date('20'+document.getElementById('myCCDetails_cc_expiry_yyyy').value, document.getElementById('myCCDetails_cc_expiry_mm').value, 1);
	var current_date = new Date();

	if (isNaN(credit_card) || credit_card.length < 12)
		errors += '-- Invalid credit card number.\n';
	
	if( expiry_date < current_date)
		errors += '-- Invalid expiry date.\n';
		
	if(document.getElementById('myCCDetails_cc_ccv').value.length != 3 )
		errors += '-- Invalid card verification number.\n'
		
	if (iF.myCCDetails_cc_name.value.length <= 0)
		errors += '-- Name on credit card is required.\n';
		
	return errors;
}


function ShowVehicles(iF)
{
	for (loop = 0 ; loop < 3 ; loop ++ )
	{
		if (loop < parseInt(iF.vehicle_count.value))
			document.getElementById('vehicles_div_' + parseInt(loop + 1)).style.display = '';
		else
			document.getElementById('vehicles_div_' + parseInt(loop + 1)).style.display = 'none';
	}
	
}

function ShowStatementFrequency(iF)
{
	if(iF.statement_type[0].checked || iF.statement_type[1].checked)
	{
		document.getElementById('statement_frequency_div').style.display='';
	}
	else
	{
		document.getElementById('statement_frequency_div').style.display='none';
	}
}

function handlePress()
{
	document.getElementById('div_reg_pin').innerHTML = document.fTolling.pin_hidden.value;
	document.getElementById('div_reg_pin_text').innerHTML = "release";
}

function handleRelease()
{
	document.getElementById('div_reg_pin').innerHTML = "****";
	document.getElementById('div_reg_pin_text').innerHTML = "show";	
}

		function getParseDateString(y_obj,m_obj,d_obj)
		{
			var y = y_obj.options[y_obj.selectedIndex].value;
			var m = m_obj.options[m_obj.selectedIndex].value;
			var d = d_obj.options[d_obj.selectedIndex].value;
			if (y=="" || m=="") { return null; }
			if (d=="") { d=1; }
			return str= m+'-'+d+'-'+y;
		}
		
function dateDifference(strDate1,strDate2){
     datDate1= Date.parse(strDate1);
     datDate2= Date.parse(strDate2);
     return ((datDate2-datDate1)/(24*60*60*1000));
     
}

function ValidateSPDate()
{
	error = '';
	
	if (document.fTolling.MyPassType.value == "SP")
	{
	
		var dfrom =getParseDateString(document.fTolling.dateFrom_yyyy,document.fTolling.dateFrom_mm,document.fTolling.dateFrom_dd);
		var dto=getParseDateString(document.fTolling.dateTo_yyyy,document.fTolling.dateTo_mm,document.fTolling.dateTo_dd);
		var dtoday = GetTodayString();
		
		var df1 = dateDifference(dfrom, dtoday);
		if (df1 > 0){
			error += "-- Start Date should be greater than today\n";
		}
		
		df1 =dateDifference(dto, dtoday);
		if (df1 > 0)
		{
			error += "-- End Date should be greater than today\n";
		}
		
		df1 = dateDifference(dto, dfrom);
		if (df1 > 0)
		{
			error += "-- End Date should be greater than Start Date\n";
		}
		
		df1 =dateDifference( dfrom, dto);
		if (df1 > 31)
		{
			error += "-- Duration should be less than 31 days\n";
		}
		
	}
	return error;
}

function GetTodayString(){
   var now         = new Date();
   var monthnumber = now.getMonth() + 1;

   var monthday    = now.getDate();
   var year        = now.getYear();
   if(year < 2000) { year = year + 1900; }
   var dateString = monthnumber +
                    '-' +
                    monthday +
                    '-' +
                    year;
   return dateString;
   }
   
   
 function isValidEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
 
}
   

///////////////////////////// MM Scripts  ////////////////////////////

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

///////////////////////////// Don't know where to use this - just keep it ////////////////////////////

function checkDate () {
	var start_month = document.getElementById('from_date_month').value;
	var end_month = document.getElementById('to_date_month').value;
	var start_year = document.getElementById('from_date_year').value;
	var end_year = document.getElementById('to_date_year').value;
	
	if (end_year < start_year) {
		alert ("Invalid date range specified");
		return false;
	}
	
	if (start_month > end_month && end_year == start_year ) {
		alert ("Invalid date range specified");
		return false;
	}
	
	return true;
}

function displayDownload() {
	
	if (document.getElementById('download').value.length == 0) {
		document.getElementById('download_pdf').style.display = 'none';
	}
	else {
	var download_array = document.getElementById('download').value
	var download_array = download_array.split(",");
	
		document.getElementById('download_pdf').style.display = 'block';
		document.getElementById('download_pdf').href = 'download.cfm?f='+download_array[0] ;
		
	var download_name = download_array[1];
	
		//document.getElementById('submit_download').value='Download '+download_name +' File';		
		var txt = document.createTextNode('Download '+download_name +' File');
		//document.getElementById('download-display').appendChild(txt); 
		if (document.getElementById("download-display").firstChild) {
			document.getElementById("download-display").removeChild(document.getElementById("download-display").firstChild);
		}
		document.getElementById('download-display').appendChild(txt); 
	}
}

function howHigh(shell) 
{
	if (navigator.appName.indexOf("Microsoft")!=-1) {
			var window_height = document.body.offsetHeight;
			var shell_height = document.getElementById('shell_1').offsetHeight;
			
			if (shell_height <= window_height) {
				var window_height = window_height - 263;
				document.getElementById(shell).style.height = window_height+"px";
			}			

	}
	else {
			//var window_height = document.body.offsetHeight;
			//var shell_height = document.getElementById('shell_1').offsetHeight;
			var window_height = window.innerHeight;
			var shell_height = document.getElementById('shell_1').offsetHeight;

			
			if (shell_height <= window_height) {
				var window_height = shell_height +  (window_height - shell_height) - 256;
				document.getElementById(shell).style.minHeight = window_height+"px";
			}			
		
	}

//alert ('shell_1 -> '+shell_height+' body height -> '+window_height);
//document.getElementById(shell).style.height = window_height+"px";
}

		var h,w;
		h=700;	
		w=875;		
		top.window.resizeTo(w,h);
		top.window.moveTo((screen.availWidth-w)/2,((screen.availHeight-h)/2)+40);