// 
// Define Validate class Constructor
// 
function Validate (){}

Validate.prototype.isValidPhoneNum = function (telephoneNum) {
var validPNum = /^\d{3}-\d{3}-\d{4}$/;
var isValid = validPNum.test(telephoneNum);
return isValid;
}

Validate.prototype.isValidExt = function (ext) {
var validExt = /^\d{3,4}$/;
var isValid = validExt.test(ext);
return isValid;
}

Validate.prototype.isValidEmail = function (email) {
var validEmail = /^\w(\.?\w)*@\w(\.?[-\w])*\.([a-z]{3}(\.[a-z]{2})?|[a-z]{2}(\.[a-z]{2})?)$/i;
var isValid = validEmail.test(email);
return isValid;
}

Validate.prototype.isFnameValid = function (fname) {
var validFname = /[^a-z]/i;
var isValid = !validFname.test(fname);
return isValid;
}

Validate.prototype.isLnameValid = function (lname) {
var validLname = /[^a-z-?\'?]/i;
var isValid = !validLname.test(lname);
return isValid;
}

Validate.prototype.isNumber = function (thenum) {
var validNum = /\D/;
var isValid = !validNum.test(thenum);
return isValid;
}

Validate.prototype.isAlphaValid = function (sField) {
var validAlpha = /[^a-z]/i;
var isValid = !validAlpha.test(sField);
return isValid;
}

Validate.prototype.isAddress = function (sField) {
var validAddress = /[^a-z0-9-?\'?\s*]/i;
var isValid = !validAddress.test(sField);
return isValid;
}


// Begin Function 
function checkForm(contactForm){

// Define variables

var telephone = contactForm.phone.value;
var thefname = contactForm.fname.value;
var lastname = contactForm.lname.value;
var email = contactForm.email.value;
var message = contactForm.message.value;
var validator = new Validate();
var theElement;
var isFormValid = true;

	for (var counter = 0; counter < contactForm.length; counter++) {
		theElement = contactForm.elements[counter];
			
		if (theElement.value == ""){
			alert ("Please fill complete all fields");
			isFormValid = false;
			break;
		}		
	}	
			
	if (isFormValid){
		if (validator.isFnameValid(thefname)) {	
			if (validator.isLnameValid(lastname)) {
				if (validator.isValidEmail(email)) {
					if (validator.isValidPhoneNum(telephone)){
						alert ("Your message has been submitted. Thank You.");
						isFormValid = true;
					}
					else {
						alert ("There is an error. Please re-enter your Phone Number. It must be in ###-###-#### format.");
						isFormValid = false;
					}
				}					
				else {
					alert ("There is an error. Please re-enter your Email address.");
					isFormValid = false;
				}
			}	
			else {
				alert ("There is an error. Please re-enter your Last Name.");
				isFormValid = false;
			}
		}
		else {
			alert ("There is an error. Please re-enter your First Name");
			isFormValid = false;
		}
	}
	else {
		isFormValid = false;
	}
return isFormValid;
}


 
function checkReg(regForm) {
	var telephone = regForm.reg_phone.value;
	var thefname = regForm.reg_fname.value;
	var lastname = regForm.reg_lname.value;
	var address = regForm.reg_add.value;
	var theCity = regForm.reg_city.value;
	var theState = regForm.reg_state.value;
	var theZip = regForm.reg_zip.value;
	var email = regForm.reg_email.value;
	var validator = new Validate();
	var theElement;
	var isFormValid = true;
	var message = "";

	for (var counter = 0; counter < regForm.length; counter++) {
		theElement = regForm.elements[counter];
			
		if (theElement.value == ""){
			alert ("Please fill complete all fields");
			isFormValid = false;
			break;
		}		
	}	
	
	//Input syntax validation
	if (isFormValid){
	
		if (!validator.isFnameValid(thefname)) {	
			message = message+"First Name\n";
		}
		
		if (!validator.isLnameValid(lastname)) {
			message = message+"Last Name\n";
		}
		
		if (!validator.isAddress(address)) {
			message = message+"Address\n";
		}
		
		if (!validator.isAlphaValid(theCity)) {
			message = message+"City\n"
		}
		
		if (!validator.isAlphaValid(theState)) {
			message = message+"State\n"
		}
		
		if (!validator.isNumber(theZip)) {
			message = message+"Zip Code\n";
		}
		
		if (!validator.isValidPhoneNum(telephone)){
			message = message+"Phone Number, it must be in ###-###-#### format.\n";
		}
		
		if (!validator.isValidEmail(email)) {
			message = message+"Email Address\n";
		}	
	}
	
	if (message != "") {
		isFormValid = false;
		alert("Errors have occured. Please re-enter the following: \n\n"+message);
	} 
	
return isFormValid;
}