// should use validation api instead
//} else if(!elem.value.match(/^\s/)) {

// Thank you tizag.com for some of this code

function isEmpty(elem, helperMsg) {
	if(elem.value.length === 0 || elem.value.match(/^\s/)) {
		alert(helperMsg);
		elem.focus();
		return false;
	} else {
		if(elem.value.match(/\s{2,}/)) {
			alert(helperMsg);
			elem.focus();
			return false;
		} else {
			return true;
		}
	}
}

function isName(elem, helperMsg) {
	var alphaExp = /^[A-Za-z\s\/\-]+$/;
	if(elem.value.match(alphaExp)) {
		return true;
	} else {
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isPhone(elem, helperMsg) {
	var numericExpression = /^\d{3}[\-]\d{3}[\-]\d{4}$/;
	if(elem.value.match(numericExpression)) {
		return true;
	} else {
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isNumeric(elem, helperMsg){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression) || elem.value === ""){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function emailValidator(elem, helperMsg){
	var emailExp = /^[\w\.\+\-]+\@[a-zA-Z0-9\.]+\.[a-zA-z0-9]{2,4}$/;
	if(elem.value.match(emailExp) || elem.value === ""){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function lengthRestriction(elem, min, max) {
	var uInput = elem.value;
	if(uInput.length >= min && uInput.length <= max) {
		return true;
	} else {
		alert("Please enter between " +min+ " and " +max+ " characters for " +elem.name);
		elem.focus();
		return false;
	}
}

function formValidator() {
	// Make quick references to our fields
	var fname = document.getElementById("fname");
	var lname = document.getElementById("lname");
	var title = document.getElementById("title");
	var phone = document.getElementById("phone");
	var extension = document.getElementById("extension");
	var email = document.getElementById("email");
	
        // check for correct input & lengths
	if(isEmpty(fname, "The first name field is empty or contains too much whitespace")) {
		if(isName(fname, "Please enter only letters for first name")) {
			if(lengthRestriction(fname, 1, 20)) {
				if(isEmpty(lname, "The last name field is empty or contains too much whitespace")) {
					if(isName(lname, "Please enter only letters for last name")) {
						if(lengthRestriction(lname, 1, 20)) {
							if(isEmpty(title, "The title field is empty or contains too much whitespace")) {
								if(isName(title, "Please enter only letters for title")) {
									if(lengthRestriction(title, 1, 40)) {
										if(isEmpty(phone, "The phone field is empty or contains too much whitespace")) {
											if(isPhone(phone, "Please enter a phone number in this format: 555-555-1212")) {
												if(lengthRestriction(extension, 0, 6)) {
													if(isNumeric(extension, "Please enter only numbers for extension")) {
														if(emailValidator(email, "Please enter an email address (example: sandy@sanjaeco.com)")) {
															return true;
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	} else {
		return false;
	}
}
