function formValidator(){
	// Make quick references to our fields
	var email = document.getElementById('email');
	var confirmemail = document.getElementById('confirm-email');
	var firstname = document.getElementById('first-name');
	var lastname = document.getElementById('last-name');
	var address = document.getElementById('street-address');
	var city = document.getElementById('city');
	var zip = document.getElementById('zip-postal');
	var state = document.getElementById('state-province');
	var country = document.getElementById('country');
	var telephone = document.getElementById('telephone');
	var subject = document.getElementById('subject');
	var proposalsubject = document.getElementById('proposal-subject');
	var proposaltext = document.getElementById('proposal-text');
	var confirmbox = document.getElementById('confirm');
	
	
 // Check each input in the order that it appears in the form!
  if(emailValidator(email, "Please enter a valid email address")){	
   if(emailValidator(confirmemail, "Please confirm your email address")){	
    if(isAlphabet(firstname, "Please enter your first name")){
     if(isAlphabet(lastname, "Please enter your last name")){
      if(isAlphanumeric(address, "Please enter your address")){
       if(isAlphabet(city, "Please enter a city")){
        if(madeSelection(state, "Please select a state")){
         if(isAlphanumeric(zip, "Please enter a valid zip code")){
          if(isAlphabet(country, "Please enter your country")){
           if(isNumeric(telephone, "Please enter a valid telephone number")){
            if(madeSelection(subject, "Please select a subject")){
             if(enteredProposal(proposalsubject, "Please enter a proposal subject")){
              if(enteredProposal(proposaltext, "Please enter your proposal text")){
               if(checkedConfirm(confirmbox, "Please confirm you understand that this does not constitute an agreement to publish your work")){
                return true;
               }
              }
             }
            }
           }
          }
         }
        }
       }
      }
     }
    }
   }
 }
	
 return false;
	
}

function isEmpty(elem, helperMsg){
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus(); // set the focus to this input
		return true;
	}
	return false;
}

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-z -.'A-Z\s]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}



function isAlphanumeric(elem, helperMsg){
	var alphaExp = /^[0-9 -.'a-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 == ""){
		alert(helperMsg);
		elem.focus();
		return false;
	}else{
		return true;
	}
}

function checkedConfirm(elem, helperMsg){
	if(elem.checked == false){
		alert(helperMsg);
		elem.focus();
		return false;
	}else{
		return true;
	}
}

function enteredProposal(elem, helperMsg){
	if(elem.value == ""){
		alert(helperMsg);
		elem.focus();
		return false;
	}else{
		return true;
	}
}

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;
	}
}

