function validPhoneNumber(e)
{
	var phoneNumberPattern = /\(?\d\d\d\)?[-\s]?\d\d\d[-\s]?\d\d\d\d/;
	if (phoneNumberPattern.test(e))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function validEmailAddress(e)
{
	var emailAddressPattern = /\w+\@(\w|-|_)+(\.\w+)+/
	if (emailAddressPattern.test(e))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function validateForm(e)
{
	var done = 0;
	var errorString = "";
	var errorCondition = 0;
	var focusField = "";
// Patterns changed to include MotorGuide serial numbers per WO 199273
// MCB 7/01/2010
//	var serialNumberReg  = /[0-1][A-Z]\d{6}/;     //serial number format
	var serialNumberReg  = /(([0-1][A-Z])|(9[BCDZ]))\d{6}/;     //serial number format

//	var serialReg0       =/[0-1][A-Z]0{6}/;       
	var serialReg0       =/(([0-1][A-Z])|(9[BCDZ]))0{6}/;       

	e.homePhone.value = e.homeArea.value + e.homeNumber.value;
	e.workPhone.value = e.workArea.value + e.workNumber.value;

	// check contact by
	if (e.contactBy.value == "--")
	{
		errorCondition = 1;
		errorString = "You must select a method to be Contacted By.";
		focusField = "contactBy";
	}

	// check Engine Serial Number
	var serialNo = (""+e.serialNumber.value).toUpperCase();
	if (e.serialNumber.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter an Engine Serial Number.";
		focusField = "serialNumber";
	}else if (serialNo.match(serialReg0) != null){
	    errorCondition = 1;
		errorString = "Invalid Engine Serial Number.";
		focusField = "serialNumber";
	   
	}else{ 
	    if (serialNo.match(serialNumberReg) == null)
	    {
		     errorCondition = 1;
		     errorString = "Invalid Engine Serial Number.";
		     focusField = "serialNumber";
	    }
	}

	// check email
	if (e.email.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter an Email Address.";
		focusField = "email";
	}
	else
	{
		// validate email format
		if (!validEmailAddress(e.email.value))
		{
			errorCondition = 1;
			errorString = "Please check the email address you have entered.";
			focusField = "email";
		}
	}

	// check work phone number
	if (e.workPhone.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter a Work Phone Number.";
		focusField = "workArea";
	}
	else
	{
		// validate phone number format
		if (!validPhoneNumber(e.workPhone.value))
		{
			errorCondition = 1;
			errorString = "Please check the Work Area Code and Phone Number you have entered.";
			focusField = "workArea";
		}
	}
	
	// check home phone number
	if (e.homePhone.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter a Home Phone Number.";
		focusField = "homeArea";
	}
	else
	{
		// validate phone number format
		if (!validPhoneNumber(e.homePhone.value))
		{
			errorCondition = 1;
			errorString = "Please check the Home Area Code and Phone Number you have entered.";
			focusField = "homeArea";
		}
	}

	// check zip/postal code
	if (e.zip.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter a Zip/Postal Code.";
		focusField = "zip";
	}

	// check state/province
	if ((e.state.value == "--")||(e.state.value == "-"))
	{
		errorCondition = 1;
		errorString = "You must select a State/Province.";
		focusField = "state";
	}
	
	// check city
	if (e.city.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter a City.";
		focusField = "city";
	}
	
	// check address
	if (e.address.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter an Address.";
		focusField = "address";
	}
	
	// check Name
	if (e.nameLast.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter a Last Name.";
		focusField = "nameLast";
	}
	if (e.nameFirst.value.length == 0)
	{
		errorCondition = 1;
		errorString = "You must enter a First Name.";
		focusField = "nameFirst";
	}
	
	if (errorCondition == 1)
	{
		e.button1.value='save';
		alert(errorString);
		if (focusField != "")
		{
			eval("e." + focusField + ".focus()");
		}
		return false;
	}
	else
	{
		return true;
	}
}

