// Invesco.com Investor Kit Form Validator - validates client side HTML form input before submitting the field values
function formValidator(){
	// Make quick references to our fields
	var salutation = document.getElementById('salutation');
	var firstname = document.getElementById('firstname');
	var lastname = document.getElementById('lastname');
	var email = document.getElementById('email');	
	var address = document.getElementById('address');
	var city = document.getElementById('city');
	var state = document.getElementById('state');
	var zip = document.getElementById('zip');
	var country = document.getElementById('country');

	
	// Check each input in the order that it appears in the form!
	if(madeSelection(salutation, "Please choose the Salutation")){
		if(isAlphabet(firstname, "Please enter the First Name")){
			if(isAlphabet(lastname, "Please enter the Last Name")) {
				if(emailValidator(email, "Please enter a valid Email Address.")){
					if(isAlphanumeric(address, "Please enter a valid Address.")){
						if(isAlphabet(city, "Please enter a City.")){
							if(isAlphabet(state, "Please enter a State.")){
								if(zipCodeValidator(zip, "Please enter a valid Zip Code.")){
									if(madeSelection(country, "Please choose a Country.")){
										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\s\.\#\-]+$/;
	if(elem.value.match(alphaExp)){
		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");
		elem.focus();
		return false;
	}
}

function madeSelection(elem, helperMsg){
	if(elem.value == "-1"){
		alert(helperMsg);
		elem.focus();
		return false;
	}else{
		return true;
	}
}

function zipCodeValidator(elem, helperMsg){
	var alphaExp = /^[0-9a-zA-Z\s\-]+$/;
	if(elem.value.match(alphaExp)){
		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;
	}
}
