addLoadListener(init);

function init() {
	document.forms[0].onsubmit = validateFields;
	return true;
}

function validateFields(){
	var elements = document.forms["techsign"].elements;
	//var namePattern = /^[\w\.\-\']+\s?[\w\.\-\']*$/;
  	var emailPattern = /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/;
  	var zipPattern = /^\d{5}$/;
  	var phone1Pattern = /^\d{3}$/;
 	var phone2Pattern = /^\d{3}$/;
	var phone3Pattern = /^\d{4}$/;
	var userIDPattern = /^[\w\.\-]{6,}$/;
	var passwordPattern = /^[\w\.\-]{8,}$/;
	var whiteSpacePattern = /^\s+$/;
	
	

	var firstNameField = elements["firstn"];
	if((firstNameField.value == "")|| (whiteSpacePattern.test(firstNameField.value))) {
		firstNameField.focus();
		alert("Please enter your first name.");
	 	return false;
	}

	/*if(!namePattern.test(firstNameField.value)) {
			firstNameField.focus();
			alert("The first name you entered has an invalid character, an extra space, or only spaces. Valid characters are letters, numbers, underscores, hyphens, apostrophes, and periods.");
		 	return false;
	}*/
	
	var lastNameField = elements["lastn"];
	if((lastNameField.value == "")|| (whiteSpacePattern.test(lastNameField.value))) {
		lastNameField.focus();
		alert("Please enter your last name.");
	 	return false;
	}
	
	/*if(!namePattern.test(lastNameField.value)) {
		lastNameField.focus();
		alert("The last name you entered has an invalid character, an extra space, or only spaces. Valid characters are letters, numbers, underscores, hyphens, apostrophes, and periods.");
		return false;
	}*/
	
	var occupationField = elements["occupation"];
	if(occupationField.value == "") {
		occupationField.focus();
		alert("Please choose an occupation.");
		return false;
	}
	
	var address1Field = elements["addr1"];
	if((address1Field.value == "")|| (whiteSpacePattern.test(address1Field.value))) {
		address1Field.focus();
		alert("Please enter your street address here.");
		return false;
	}
	
	var cityField = elements["city"];
	if((cityField.value == "")|| (whiteSpacePattern.test(cityField.value))) {
		cityField.focus();
		alert("Please enter the name of a city or town.");
		return false;
	}
	
	var stateField = elements["state"];
		if(stateField.value == "") {
			stateField.focus();
			alert("Please choose a state.");
			return false;
	}
	
	var zipField = elements["zip"];
	if(zipField.value == "") {
			zipField.focus();
			alert("Please enter your zip code.");
			return false;
	}
	if(!zipPattern.test(zipField.value)) {
		zipField.focus();
		alert("Invalid zip code. Please enter a 5-digit number.");
	 	return false;
	}
	
	var phone1Field = elements["contactnum1"];
	var phone2Field = elements["contactnum2"];
	var phone3Field = elements["contactnum3"];
	
	if(phone1Field.value == "") {
			phone1Field.focus();
			alert("Please enter your area code here.");
			return false;
	}
	if(!phone1Pattern.test(phone1Field.value)) {
		phone1Field.focus();
		alert("Invalid area code. Please enter a 3-digit number.");
		return false;
	}
	
	if(phone2Field.value == "") {
		phone2Field.focus();
		alert("Please enter the first 3 digits of your subscriber number here.");
		return false;
	}

	if(!phone2Pattern.test(phone2Field.value)) {
		phone2Field.focus();
		alert("Invalid subscriber number. Please enter a 3-digit number here.");
		return false;
	}
	
	if(phone3Field.value == "") {
		phone3Field.focus();
		alert("Please enter the last 4 digits of your subscriber number here.");
		return false;
	}

	if(!phone3Pattern.test(phone3Field.value)) {
		phone3Field.focus();
		alert("Invalid subscriber number. Please enter a 4-digit number here.");
		return false;
	}
	
	

	elements["phone"].value = phone1Field.value + "-" + phone2Field.value + "-" + phone3Field.value;
	
	var emailField = elements["email"];
	if(emailField.value == "") {
			emailField.focus();
			alert("Please enter your e-mail address");
		 	return false;
	}
	if(!emailPattern.test(emailField.value)) {
		emailField.focus();
		alert("Invalid e-mail address.");
	 	return false;
	}

	var userIDField = elements["userid"];
	if(userIDField.value== "") {
		userIDField.focus();
		alert("Please enter a user ID.");
		return false;
	}
	if(userIDField.value.length < 6) {
		userIDField.focus();
		alert("Your user ID must have at least 6 characters.");
		return false;
	}
	
	if(!userIDPattern.test(userIDField.value)) {
			userIDField.focus();
			alert("Your user ID has an invalid character or a space. Valid user ID characters are letters, numbers, underscores, hyphens, and periods.");
		 	return false;
	}
	
	var pass1Field = elements["userpass"];
	var pass2Field = elements["userpass2"];
	
	
	if(pass1Field.value =="") {
		pass1Field.focus();
		alert("Please enter a password.");
		return false;
	}
	
	if(pass1Field.value.length < 8) {
		pass1Field.focus();
		alert("Your password must have at least 8 characters.");
	 	return false;
	}
	
	if(!passwordPattern.test(pass1Field.value)) {
			pass1Field.focus();
			alert("Your password has an invalid character or a space. Valid password characters are letters, numbers, underscores, hyphens, and periods.");
		 	return false;
	}
	
	if (pass2Field.value =="") {
		pass2Field.focus();
		alert("Please re-enter your password here.");
	 	return false;
	}
	
	if (pass2Field.value.length < 8) {
			pass2Field.focus();
			alert("A password must have at least eight characters.");
		 	return false;
	}
	
	if(!passwordPattern.test(pass2Field.value)) {
			pass2Field.focus();
			alert("Your password has an invalid character or a space. Valid password characters are letters, numbers, underscores, hyphens, and periods.");
		 	return false;
	}
	
	if(pass2Field.value != pass1Field.value) {
			pass2Field.focus();
			alert("Your passwords do not match.");
		 	return false;
	}
	
	var phraseField = elements["userphrase"];
	if((phraseField.value == "")|| (whiteSpacePattern.test(phraseField.value))) {
		phraseField.focus();
		alert("Please enter a phrase.");
		return false;
	}

	return true;
}
function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}