function numeralsOnly(evt) {
    evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
	    ((evt.which) ? evt.which : 0));
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
	    alert("You may only enter numerals in this field.");
		return false;
	}
	return true;
}

function lettersOnly(evt) {
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
        ((evt.which) ? evt.which : 0));
    if (charCode > 32 && (charCode < 65 || charCode > 90) && 
        (charCode < 97 || charCode > 122)) {
        alert("Enter letters only.");
        return false;
    }
    return true;
}

function checkFields(form) {
    var time=new Date();
    var year=time.getYear();
	var minLength = 6; //Minimum password length
    if(!unChecked(form.sf_gender)){
      window.alert("Please enter your gender.");
      form.sf_gender[0].focus();
      return false;
    }
    else if ( isBlank(form.sf_first_nme.value) ) {
      window.alert("Please enter your first name.");
      form.sf_first_nme.focus();
      return false;
    }
    else if ( isBlank(form.sf_last_nme.value)) {
      window.alert("Please enter your last name.");
      form.sf_last_nme.focus();
      return false;
    }
    else if ( !checkEmailAddress(form.sf_email_addr.value) ) {
      form.sf_email_addr.value = "";
      window.alert("Please enter a valid email address.");
      form.sf_email_addr.focus();
      return false;
    }
    else if (form.sf_email_addr.value != form.email_addr_confirm.value) {
      form.email_addr_confirm.value = "";
      window.alert("Please verify email address.");
      form.email_addr_confirm.focus();
      return false;
    }
    else if(form.sf_birth_year.value == "none"){
      window.alert("Please select a Birth Year.");
      form.sf_birth_year.focus();
      return false;
    }
    else if(form.sf_birth_month.value == "none"){
      window.alert("Please select a Birth Month.");
      form.sf_birth_month.focus();
      return false;
    }
    else if(form.sf_bday.value == "none") {
				  window.alert("Please select a Birth Day.");
						form.sf_bday.focus();
						return false;
				}
				else if ( isBlank(form.sf_address.value) ) {
						window.alert("Please enter your mailing address.");
						form.sf_address.focus();
						return false;
				}
				else if ( isBlank(form.sf_city.value) ) {
						window.alert("Please enter your city.");
						form.sf_city.focus();
						return false;
				}
							else if(form.sf_state.value == "") {
						window.alert("Please select a state.");
						form.sf_state.focus();
						return false;
				}
				else if ( isBlank(form.sf_postal_cd.value) ) {
						window.alert("Please enter your 5 digit ZIP Code.");
						form.sf_postal_cd.focus();
						return false;
				}
				else if(form.sf_postal_cd.value.length != 5) {
						window.alert("Your ZIP Code must contain 5 digits.");
						form.sf_postal_cd.focus();
						return false;
				}
    else if ( isBlank(form.sf_create_password.value) ) {
      window.alert("Please create a password.");
      form.sf_create_password.focus();
      return false;
    }
    else if (form.sf_create_password.value.length < minLength) {
      window.alert("Password must contain at least six characters.");
      form.sf_create_password.focus();
      return false;
    }
    else if ( isBlank(form.sf_verify_password.value) ) {
      window.alert("Please verify your password.");
      form.sf_verify_password.focus();
      return false;
    }
    else if (form.sf_create_password.value != form.sf_verify_password.value) {
      form.sf_verify_password.value = "";
      window.alert("Please make sure your password is the same in both fields.");
      form.sf_verify_password.focus();
      return false;
    }
    else if(under13(form)){
      setAgeCookie();
      window.location = form.underageURL.value;
      return false;
    }

  function isBlank(s) {
    for( var i=0;i<s.length;i++ ) {
      var c = s.charAt(i);
      if( (c != ' ') && (c != '\n') && (c != '\t') )
        return false;
    }
    return true;
  }

// Will determine if a user is under 13

function under13(form) {

  var now = new Date();
  var thisMonth = now.getMonth()+1;
  var thisDay = now.getDate();
  var thisYear = now.getFullYear();
  var birthMonth = form.sf_birth_month.value;
  var birthDay = form.sf_bday.value;
  var birthYear = form.sf_birth_year.value;
  var user_age = thisYear - birthYear;
  var minimum_year = 13;
  var sameMonth = 0;
  var sameDay = 0;

  if (user_age < minimum_year) {
    return true;
  }
		
  if (user_age >= minimum_year) {
    return false;
  }
		
  if (thisMonth < birthMonth) {
    return true;
  }
		
  if (thisMonth > birthMonth) {
    return false;
  }
		
  if ((birthMonth == thisMonth) && (thisDay < birthDay)) {
	   return true;  
  }
		
  if ((birthMonth == thisMonth) && (thisDay >= birthDay)) {
	   return false;  
  }
  return false;
}

  function checkEmailAddress( emailStr ) {
    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

    var matchArray=emailStr.match(emailPat)

    if (matchArray==null) {
      return false
    }

    var user=matchArray[1]
    var domain=matchArray[2]

    if (user.match(userPat)==null) {
      return false
    }

    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
        if (IPArray[i]>255) {
        return false
        }
      }
      return true
    }

    var domainArray=domain.match(domainPat)
    if (domainArray==null) {
      return false
    }


    var atomPat=new RegExp(atom,"g")
    var domArr=domain.match(atomPat)
    var len=domArr.length
    if (domArr[domArr.length-1].length<2 ||
      domArr[domArr.length-1].length>3) {
       return false
    }

    // Make sure there's a host name preceding the domain.
    if (len<2) {
       return false
    }

    return true;
  }

  function unChecked(s){
    var isSelected = false;
    for (var i = 0; i < s.length; i++)
    {
      if (s[i].checked)
      {
        isSelected = true;
      }
    }
    if(isSelected)
    {
      return true;
    }
    return false;
  }

  function setAgeCookie() {
    today = new Date();
    tomorrow = new Date();
    tomorrow.setTime(today.getTime()+(60*60*24*1000));
    document.cookie='EmailAge=true; path=/; expires=' + tomorrow.toGMTString();
  }

  function checkAgeCookie() {
    underage = document.cookie;
  
    if (underage.indexOf('EmailAge') > -1) {
      // Matt Bennett - I added this check to prevent the under 13 page from getting in a loop.
      if (window.location.search != "/app/HealthyHabits/US/EN_v2/SignUp/Under13.cwsp") { 
        window.location = "/app/HealthyHabits/US/EN_v2/SignUp/Under13.cwsp";  
      }
    }
  }
  checkAgeCookie();
}