// JavaScript Document

function formValidator(){
	// Make quick references to our fields
	var memberid = document.getElementById('memberid');
	var firstname = document.getElementById('firstname');
	var lastname = document.getElementById('lastname');
	var degree = document.getElementById('degree');
	var title = document.getElementById('title');
	var institution = document.getElementById('institution');
	var department = document.getElementById('department');
	var address = document.getElementById('address');
	var city = document.getElementById('city');
	var zip = document.getElementById('zip');
	var phone = document.getElementById('phone');
	var email = document.getElementById('email');
	
	// Check each input in the order that it appears in the form!
	if(isNumeric(memberid, "Please enter a valid membership ID.")){
		if(isAlphabet(firstname, "Please enter a valid first name.")){
			if(isAlphabet(lastname, "Please enter a valid last name.")){
				if(isDegree(degree, "Please enter a valid degree.")){
					if(isTitle(title, "Please enter a valid title.")){
						if(isAlphabet(institution, "Please enter your institution.")){
							if(isAlphabet(department, "Please enter your department.")){
								if(isAlphanumeric(address, "Please enter the address of your institution.")){
									if(isAlphabet(city, "Please enter the city of your institution.")){
										if(isNumeric(zip, "Please enter the zip code.")){	
											if(phoneValidator(phone, "Please enter a valid phone number.")){			
												if(emailValidator(email, "Please enter a valid email address.")){
													return true;
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	
	
	return false;
	
}

function notEmpty(elem, helperMsg){
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus(); // set the focus to this input
		return false;
	}
	return true;
}

function isNumeric(elem, helperMsg){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlphabet(elem, helperMsg){
	var alphaExp = /[a-zA-Z]+/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlphanumeric(elem, helperMsg){
	var alphaExp = /[0-9a-zA-Z]+/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isDegree(elem, helperMsg){
	var degreeExp = /PhD|MS|MA|BS|BA/;
	if(elem.value.match(degreeExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isTitle(elem, helperMsg){
	var titleExp = /.*Professor$/;
	if(elem.value.match(titleExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function phoneValidator(elem, helperMsg){
	var phoneExp = /^[0-9]{3}\-[0-9]{3}\-[0-9]{4}$/;
	if(elem.value.match(phoneExp)){
		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)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}