function validateReg(form) {
  if (isValidRadio(form.salutation,"Please select your Salutation")) {
    if (isNotEmpty(form.firstname,"Please enter your First Name")) {
      if (isNotEmpty(form.lastname,"Please enter your Last Name")) {
        if (isNotEmpty(form.street,"Please enter your Mailing Address")) {
          if (isNotEmpty(form.city,"Please enter your City")) {
            if (isChosen(form.state,"Please select your State")) {
              if (isNotEmpty(form.zip,"Please enter your Zip code")) {
                if (validZip(form.zip)) {
                  if (isNotEmpty(form.email,"Please enter your Email Address")) {
                    if (isEmailAddy(form.email)) {
                      if (confirmValuesLower(form.email,form.confirm_email,"Please confirm your Email Address")) {
                        if (validLength(form.password,6,20,"Password must be between 6 and 20 characters in length and can contain both letters and/or numbers")) {
                          if (confirmValuesLower(form.password,form.confirm_password,"Please confirm your Password")) {
                            if (isChosen(form.birthmonth,"Please enter your Birth Month")) {
                              if (isChosen(form.birthday,"Please enter your Birth Day")) {
                                if (isChosen(form.birthyear,"Please enter your Birth Year")) {
                                  return true;
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return false;
}


function isNotEmpty(elem,msg) {
  var str = elem.value;
  if (str == null || str.length == 0) {
    if (msg) {
      alert(msg);
    }
    else {
      alert("Please fill in the required field.");
    }

    setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
    return false;
  }
  else {
    return true;
  }
}

function isChosen(select,msg) {
  if (select.selectedIndex == 0) {
    if (msg) {
      alert(msg);
    }
    else {
      alert("Please fill in the required field.");
    }

    return false;
  }
  else {
    return true;
  }
}

function isValidRadio(radio,msg) {
  var valid = false;
  for (var i = 0; i < radio.length; i++) {
    if (radio[i].checked) {
      return true;
    }
  }

  if (msg) {
    alert(msg);
  }
  else {
    alert("Please fill in the required radio buttons.");
  }

  return false;
}

function isValidCheckbox(checkbox,msg) {
  var valid = false;
  for (var i = 0; i < checkbox.length; i++) {
    if (checkbox[i].checked) {
      return true;
    }
  }

  if (msg) {
    alert(msg);
  }
  else {
    alert("Please fill in the required check box.");
  }

  return false;
}

function isEmailAddy(elem) {
  var str = elem.value;
  var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
  if (!str.match(re)) {
    alert("Please verify your Email Address format");
    setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
    return false;
  }
  else {
    return true;
  }
}

function validPhone(elem) {
  var str = elem.value;
  var result = str.replace(/-/g, ''); // strip dashes
  result = result.replace(/\(/g, ''); // strip open parens
  result = result.replace(/\)/g, ''); // strip close parens
  result = result.replace(/\s/g, ''); // strip whitespace
  result = result.replace(/\./g, ''); // strip periods
  if (result.length<10 || result.length>11) {
    alert("Please verify your Phone Number");
    setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
    return false;
  }

  for (var i = 0; i < result.length; i++) {
    oneChar = result.charAt(i).charCodeAt(0);
    if (oneChar < 48 || oneChar > 57) {
      alert("Please verify your Phone Number");
      return false;
    }
  }
  return true;
}

function validZip(elem) {
  var str = elem.value;
  if (str.length!=5) {
    alert("Please verify your Zip Code");
    setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
    return false;
  }

  for (var i = 0; i < str.length; i++) {
    oneChar = str.charAt(i).charCodeAt(0);
    if (oneChar < 48 || oneChar > 57) {
      alert("Please verify your Zip Code");
      return false;
    }
  }

  return true;
}

function confirmValues(elem1,elem2,msg) {
  var str1 = elem1.value;
  var str2 = elem2.value;
  if (str1 != str2) {
    if (msg) {
      alert(msg);
      setTimeout("focusElement('" + elem2.form.name + "', '" + elem2.name + "')", 0);
      return false;
    }
    else {
      alert("Please confirm value");
      setTimeout("focusElement('" + elem2.form.name + "', '" + elem2.name + "')", 0);
      return false;
    }
  }
  
  return true;
}

function confirmValuesLower(elem1,elem2,msg) {
  var str1 = elem1.value.toLowerCase();
  var str2 = elem2.value.toLowerCase();
  if (str1 != str2) {
    if (msg) {
      alert(msg);
      setTimeout("focusElement('" + elem2.form.name + "', '" + elem2.name + "')", 0);
      return false;
    }
    else {
      alert("Please confirm value");
      setTimeout("focusElement('" + elem2.form.name + "', '" + elem2.name + "')", 0);
      return false;
    }
  }
  
  return true;
}

function validLength(elem,min_length,max_length,msg) {
  var str = elem.value;
  if (str.length < 6 || str.length > 20) {
    if (msg) {
      alert(msg);
      setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
      return false;
    }
    else {
      alert("Please verify the length is between " + min_length + " and " + max_length + " characters");
      setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
      return false;
    }
  }
  
  return true;
}

function focusElement(formName,elemName) {
  var elem = document.forms[formName].elements[elemName];
  elem.focus( );
  elem.select( );
}

function validateRAF(form) {
  for (i=0;i<form.email.length;i++) {
    if (form.email[i].value.length > 0) {
      if (!isEmailAddyCustom(form.email[i],i)) {
        return false;
      }
    }
  }
  
  return true;
}

function isEmailAddyCustom(elem,num) {
  var str = elem.value;
  var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
  if (!str.match(re)) {
    alert("Please verify your address format for email #" + (num+1));
    return false;
  }
  else {
    return true;
  }
}

function openBrWindow(theURL,winName,features) {
  window.open(theURL,winName,features);
}