// Form Validation Functions  v1.0
// http://www.dithered.com/javascript/form_validation/index.html
// code by Chris Nott (chris@dithered.com)


// Check that an email address is valid based on RFC 821 (?)

function ValidateFields(TheForm) 
{

var arrFields = new Array();
var ThisForm = document.forms[TheForm];
var y;

switch(TheForm){
	case 'erepform':
	case 'ayoq':
	case 'hotline':
	case 'search':
	case 'value':
	case 'showing':
	case 'EzContact':
		arrFields[0] = ThisForm.Email.value;
		arrFields[1] = ThisForm.Fname.value;
		arrFields[2] = ThisForm.Lname.value;
		arrFields[3] = ThisForm.City.value;
		arrFields[4] = ThisForm.State.value;
		arrFields[5] = ThisForm.Zip.value;
		arrFields[6] = ThisForm.Hphone.value;
		switch(TheForm){
			case 'erepform':
			case 'ayoq':
			case 'EzContact':
				arrFields[7] = ThisForm.Rcity.value;
				arrFields[8] = ThisForm.Rstate.value;
				break;
			default:
				arrFields[7] = ThisForm.Best_Call_Time.value;
				arrFields[8] = ThisForm.Delivery_Method.value;
				break;
				
		}
		y = 8;
		break;	

	case 'gateway':
		arrFields[0] = ThisForm.Email.value;		
		arrFields[1] = ThisForm.Fname.value;
		arrFields[2] = ThisForm.Lname.value;
		y = 2;
		break;
		
	case 'service':
		arrFields[0] = ThisForm.Email.value;
		arrFields[1] = ThisForm.Fname.value;
		arrFields[2] = ThisForm.Lname.value;
		arrFields[3] = ThisForm.interest.value;		
		y = 3;
		break;	
	case 'ReferAFriend':
	case 'ForwardReport':
		arrFields[0] = ThisForm.Email.value;
		arrFields[1] = ThisForm.Fname.value;
		arrFields[2] = ThisForm.Lname.value;
		arrFields[3] = ThisForm.Name2.value;
		y = 3;
		break;
}
//
var FailCondition = "The form could not be submitted due to the following reasons:\r\r";
var test = "ok";

//Test If Every Field Is Filled
var x=0; 
for (x=0; x<y; x++) 
{ 
	if (arrFields[x] == "") {
		FailCondition = FailCondition + "All Fields marked in red must be filled.\r";
		test = "bad";
		break;}
} 

//Make sure that Email is a valid email address
var IsEmail = isValidEmail(arrFields[0])
if (IsEmail != true) {test = "bad"; FailCondition = FailCondition + "Email address is not a valid address.\r";}


//If Everything test "ok" Then Submit Form Else Display Error
if (test == "bad"){
	alert(FailCondition);
	return false;
} else {
	return true;
}
	
}

function isValidEmail(address) {
	
	var domainArray = new Array(9);
	var x = 0;
	domainArray[0] = ".com";
	domainArray[1] = ".net";
	domainArray[2] = ".org";
	domainArray[3] = ".info";
	domainArray[4] = ".biz";
	domainArray[5] = ".co.uk";
	domainArray[6] = ".tv";
	domainArray[7] = ".ws";
	domainArray[8] = ".cc";

	var test = "bad";
	for (x=0; x<9; x++) 
	{ if (address.indexOf(domainArray[x]) > -1) {test = "ok"; break; }}
	if (test == "bad")  return false; 
	if (address.indexOf('@') < 3) return false;
	var name = address.substring(0, address.indexOf('@'));
	var domain = address.substring(address.indexOf('@') + 1);
	if (name.indexOf('(') != -1 || name.indexOf(')') != -1 || name.indexOf('<') != -1 || name.indexOf('>') != -1 || name.indexOf(',') != -1 || name.indexOf(';') != -1 || name.indexOf(':') != -1 || name.indexOf('\\') != -1 || name.indexOf('"') != -1 || name.indexOf('[') != -1 || name.indexOf(']') != -1 || name.indexOf(' ') != -1) return false;
	if (domain.indexOf('(') != -1 || domain.indexOf(')') != -1 || domain.indexOf('<') != -1 || domain.indexOf('>') != -1 || domain.indexOf(',') != -1 || domain.indexOf(';') != -1 || domain.indexOf(':') != -1 || domain.indexOf('\\') != -1 || domain.indexOf('"') != -1 || domain.indexOf('[') != -1 || domain.indexOf(']') != -1 || domain.indexOf(' ') != -1) return false;
	return true;
}