addLoadListener(init);

function init() {
	document.forms[0].onsubmit = validateFields;
	return true;
}

function validateFields(){
	var elements = document.forms["memsign"].elements;
	//var namePattern = /^[\w\.\-\']+\s?[\w\.\-\']*$/;
	//var orgNamePattern = /^[\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 memIDPattern = /^[\w\.\-]{6,}$/;
	var passwordPattern = /^[\w\.\-]{8,}$/;
	var whiteSpacePattern = /^\s+$/;
	

	var orgNameField = elements["orgname"];
	if((orgNameField.value == "")|| (whiteSpacePattern.test(orgNameField.value))) {
		orgNameField.focus();
		alert("Please enter the name of your organization.");
		return false;
	}
	
	/*if(!orgNamePattern.test(orgNameField.value)) {
			orgNameField.focus();
			alert("The organization 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 orgTypeField = elements["orgtype"];
		if (orgTypeField.value == "") {
			orgTypeField.focus();
			alert("Please choose an organization type.");
			return false;
	}
	
	var address1Field = elements["addr1"];
		if((address1Field.value == "")|| (whiteSpacePattern.test(address1Field.value))) {
			address1Field.focus();
			alert("Please enter your organization's street address here.");
			return false;
	}
	
	var cityField = elements["city"];
		if((cityField.value == "")|| (whiteSpacePattern.test(cityField.value))) {
			cityField.focus();
			alert("Please enter the name of your organization's 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 organization's zip code.");
		return false;
	}
	if(!zipPattern.test(zipField.value)) {
		zipField.focus();
		alert("Invalid zip code. Please enter a 5-digit number.");
		return false;
	}
	
	var orgPhone1Field = elements["phone1"];
	var orgPhone2Field = elements["phone2"];
	var orgPhone3Field = elements["phone3"];
		
	if(orgPhone1Field.value == "") {
		orgPhone1Field.focus();
		alert("Please enter your organization's area code here.");
		return false;
	}
	if(!phone1Pattern.test(orgPhone1Field.value)) {
		orgPhone1Field.focus();
		alert("Invalid area code. Please enter a 3-digit number.");
		return false;
	}
		
	if(orgPhone2Field.value == "") {
		orgPhone2Field.focus();
		alert("Please enter the first 3 digits of your organization's subscriber number here.");
		return false;
	}
	
	if(!phone2Pattern.test(orgPhone2Field.value)) {
		orgPhone2Field.focus();
		alert("Invalid subscriber number. Please enter a 3-digit number here.");
		return false;
	}
		
	if(orgPhone3Field.value == "") {
		orgPhone3Field.focus();
		alert("Please enter the last 4 digits of your subscriber number here.");
		return false;
	}
	
	if(!phone3Pattern.test(orgPhone3Field.value)) {
		orgPhone3Field.focus();
		alert("Invalid subscriber number. Please enter a 4-digit number here.");
		return false;
	}
	
	elements["phone"].value = orgPhone1Field.value + "-" + orgPhone2Field.value + "-" + orgPhone3Field.value;
		
	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 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["pcp"].value = phone1Field.value + "-" + phone2Field.value + "-" + phone3Field.value;
	
	if (elements["pcpx"].value.length > 0) {
		elements["pcp"].value = elements["pcp"].value + "X" + elements["pcpx"].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 memIDField = elements["memid"];
	if(memIDField.value== "") {
		memIDField.focus();
		alert("Please enter a Member ID.");
		return false;
	}
	if(memIDField.value.length < 6) {
		memIDField.focus();
		alert("Your Member ID must have at least 6 characters.");
		return false;
	}
		
	if(!memIDPattern.test(memIDField.value)) {
		memIDField.focus();
		alert("Your Member ID has an invalid character or a space. Valid Member ID characters are letters, numbers, underscores, hyphens, and periods.");
		return false;
	}
	
	var pass1Field = elements["mempass"];
	var pass2Field = elements["mempass2"];
		
	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["memphrase"];
	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();
      };
    }
  }
}