var sErrorMsg;
sErrorMsg = "";

function checkPostCode(pcode,thefield)
{
	var result = true;
	pcode = trim(pcode,thefield);
	
	if(pcode.length < 1)
	{
		sErrorMsg = sErrorMsg + 'Must supply a value for Postcode.\n';		
		result = false;
		return result;
	}
	if(pcode.length < 4)
	{
		sErrorMsg = sErrorMsg + 'Postcode field has a minimum length of 4 digits.\n';
		result = false;
		return result;
	}

	if(pcode.match(/[0-9]*/).toString().length!=pcode.length){
		sErrorMsg = sErrorMsg + 'Postcode field has a minimum length of 4 digits, no characters allowed.\n';
		result = false;		
		return result;
   }

	return result;

}

function checkPhone(homePhone,fieldtitle,thefield) 
{
var result = true;
homePhone = trim(homePhone,thefield);
homePhone = homePhone.toUpperCase()
var iChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ*|\"\':<>,[],%#!@$^&.?";

if (homePhone.length < 1) {
		sErrorMsg = sErrorMsg + 'Must enter your phone number.\n';
		result = false;
}
else {
	if (homePhone.length > 15 || homePhone.length < 8)
	{
		sErrorMsg = sErrorMsg + fieldtitle + ' phone field is invalid, Should be at least 9 digits (sample: 0411 234 567 or 03 911 2345.\n';
		result = false;
		
	}
	else {
		for (var i=0;i<homePhone.length ;i++ )
		{
			if (iChars.indexOf(homePhone.charAt(i)) != -1)
			{
			sErrorMsg = sErrorMsg + ' Only digits allowed for phone number.The following characters are not allowed in the ' + fieldtitle + ' field ' + iChars + '\n';			
			result = false;
			}
		}
	}
}

return result;
}

function trim(inputString,thisfield) {
   // Removes leading and trailing spaces from the passed string. Also removes
   // consecutive spaces and replaces it with one space. If something besides
   // a string is passed in (null, custom object, etc.) then return the input.
   // use: result = trim(inputString);
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   thisfield.value = retValue
   return retValue; // Return the trimmed string back to the user
} 


function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		//alert('Please enter a value for the "' + fieldLabel +'" field.');
		sErrorMsg = sErrorMsg + 'Please enter a value for the "' + fieldLabel +'" field.\n';
		//formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789.");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		//alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		sErrorMsg = sErrorMsg + "Please enter a complete email address in the form: yourname@yourdomain.com\n";
		//formField.focus();
		result = false;
	}
   
  return result;

}

function validNum(formField,fieldLabel,required,minVal,maxVal)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			//alert('Please enter a number for the "' + fieldLabel +'" field.');
			sErrorMsg = sErrorMsg + 'Please enter a number for the "' + fieldLabel +'" field.\n';
			//formField.focus();		
			result = false;
		}
		else {
			//Check against the min values
			if (parseFloat(formField.value) < minVal )
			{
				//Value does not meet the min requirements
				//alert('Minimum value for  "' + fieldLabel +'" field is' + minVal + ' .');
				sErrorMsg = sErrorMsg + 'Minimum value for  "' + fieldLabel +'" field is ' + minVal + ' .\n';
				//formField.focus();		
				result = false;
			}
			//Check against the min values
			if (maxVal != "")
			{
				if (parseFloat(formField.value) > maxVal )
				{	
				//Value does not meet the max requirements
				//alert('Minimum value for  "' + fieldLabel +'" field is' + minVal + ' .');
				sErrorMsg = sErrorMsg + 'Maximum value for  "' + fieldLabel +'" field is ' + maxVal + ' .\n';
				//formField.focus();		
				result = false;
				}
			}
			
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field. No negative values allowed');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
 			var month = parseInt(elems[0],10);
  			var day = parseInt(elems[1],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}

function validateFormCarDetails(theForm)
{
	var bSubmit
	bSubmit = true;

	if (!validNum(theForm.txtPurchasePrice,"Purchase Price",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtIntRate,"Interest Rate",true,0,100))
		bSubmit = false;
	if (!validNum(theForm.txtAcc,"Accessories",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtSparePartsDisc,"Spare Parts Discount",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtDealerDelivery,"Dealer Delivery Fee",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtBusinessInsurance,"Business Insurance",true,0,""))
		return false;
	if (!validNum(theForm.txtDaysPrivateUse,"Days Private Use",true,0,365))
		bSubmit = false;
	if (!validNum(theForm.txtAvLabourCosts,"Average Labour Costs",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtPercPrivUse,"Percentage Private Use",true,0,100))
		bSubmit = false;
	if (!validNum(theForm.txtFuelCost,"Fuel Cost",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtEmployeeCost,"Employee Contributions",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtRoadServFee,"Road Service  Membership Fee",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtAdminFee,"Administration Fee",true,0,""))
		bSubmit = false;

	if (bSubmit == false)
	{
		alert(sErrorMsg);
		sErrorMsg = '';
		return false;
	}
	else {
		return true;
	}

	// <--------- End
	
	//return true;
}

function validateFormCar2Details(theForm)
{
	var bSubmit
	bSubmit = true;

	if (!validNum(theForm.txtPurchasePrice_2,"Purchase Price",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtIntRate_2,"Interest Rate",true,0,100))
		bSubmit = false;
	if (!validNum(theForm.txtAcc_2,"Accessories",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtSparePartsDisc_2,"Spare Parts Discount",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtDealerDelivery_2,"Dealer Delivery Fee",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtBusinessInsurance_2,"Business Insurance",true,0,""))
		return false;
	if (!validNum(theForm.txtDaysPrivateUse_2,"Days Private Use",true,0,365))
		bSubmit = false;
	if (!validNum(theForm.txtAvLabourCosts_2,"Average Labour Costs",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtPercPrivUse_2,"Percentage Private Use",true,0,100))
		bSubmit = false;
	if (!validNum(theForm.txtFuelCost_2,"Fuel Cost",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtEmployeeCost_2,"Employee Contributions",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtRoadServFee_2,"Road Service  Membership Fee",true,0,""))
		bSubmit = false;
	if (!validNum(theForm.txtAdminFee_2,"Administration Fee",true,0,""))
		bSubmit = false;

	if (bSubmit == false)
	{
		alert(sErrorMsg);
		sErrorMsg = '';
		return false;
	}
	else {
		return true;
	}

	// <--------- End
	
	//return true;
}

function validateUserEdit(theForm)
{
	var bSubmit
	bSubmit = true;

	if (!validRequired(theForm.txtCompany,"Company Name"))
		bSubmit = false;
	if (!validRequired(theForm.txtFirstName,"First Name"))
		bSubmit = false;
	if (!validRequired(theForm.txtLastName,"Last Name"))
		bSubmit = false;
	if (!validRequired(theForm.txtABN,"ABN"))
		bSubmit = false;
	if (!validRequired(theForm.txtAddr1,"Address 1"))
		bSubmit = false;
	if (!validEmail(theForm.txtEmail,"Email Address",true))
		bSubmit = false;
	if (!validRequired(theForm.txtUsername,"Username"))
		bSubmit = false;
	if (!validRequired(theForm.txtPassword,"Password"))
		bSubmit = false;
	if (!validNum(theForm.txtDay,"Day",true,0,31))
		bSubmit = false;
	if (!validNum(theForm.txtMth,"Month",true,0,12))
		bSubmit = false;
	if (!validNum(theForm.txtYr,"Year",true,2004,3000))
		bSubmit = false;

	if (!checkPostCode(theForm.txtPostcode.value,theForm.txtPostcode))
		bSubmit = false;

	if (!checkPhone(theForm.txtPhone.value,"Contact Phone",theForm.txtPhone) )
		bSubmit = false;

	if (bSubmit == false)
	{
		alert(sErrorMsg);
		sErrorMsg = '';
		return false;
	}
	else {
		return true;
	}

	// <--------- End
	
	//return true;
}

function validateAddUser(theForm)
{
	var bSubmit
	bSubmit = true;

	if (!validRequired(theForm.txtCompany,"Company Name"))
		bSubmit = false;
	if (!validRequired(theForm.txtFirstName,"First Name"))
		bSubmit = false;
	if (!validRequired(theForm.txtLastName,"Last Name"))
		bSubmit = false;
	if (!validRequired(theForm.txtABN,"ABN"))
		bSubmit = false;
	if (!validRequired(theForm.txtAddr1,"Address 1"))
		bSubmit = false;
	
	if (!validRequired(theForm.txtPhone,"Contact phone number"))
		bSubmit = false;
	if (!validEmail(theForm.txtEmail,"Email Address",true))
		bSubmit = false;
	if (!validRequired(theForm.txtUsername,"Username"))
		bSubmit = false;
	if (!validRequired(theForm.txtPassword,"Password"))
		bSubmit = false;
	if (!validNum(theForm.txtDay,"Day",true,0,31))
		bSubmit = false;
	if (!validNum(theForm.txtMth,"Month",true,0,12))
		bSubmit = false;
	if (!validNum(theForm.txtYr,"Year",true,2004,3000))
		bSubmit = false;

	if (!checkPostCode(theForm.txtPostcode.value,theForm.txtPostcode))
		bSubmit = false;

	if (!checkPhone(theForm.txtPhone.value,"Contact Phone",theForm.txtPhone) )
		bSubmit = false;



	if (bSubmit == false)
	{
		alert(sErrorMsg);
		sErrorMsg = '';
		return false;
	}
	else {
		return true;
	}

	// <--------- End
	
	//return true;
}

function validateLogin(theForm) {
	var bSubmit
	bSubmit = true;

	if (!validRequired(theForm.txtUsername,"Username"))
		bSubmit = false;
	if (!validRequired(theForm.txtPassword,"Password"))
		bSubmit = false;

	if (bSubmit == false)
	{
		alert(sErrorMsg);
		sErrorMsg = '';
		return false;
	}
	else {
		return true;
	}


}