function validate() {
  var inputElements= document.getElementsByTagName("input");
  var valid= true;
  
  document.getElementById("email_valid").innerHTML= "";
  document.getElementById("email_valid").className= "";
  
  for(i = 0; i < inputElements.length; i++) {
    var inputElement= inputElements[i];
    if (inputElement.className.indexOf('required') != -1) {
      if (inputElement.value == "") {
        var inputValid= document.getElementById(inputElement.name + "_valid");
        inputValid.innerHTML= "*";
        inputValid.className= "invalid";
        valid= false;
      } else {
        var inputValid= document.getElementById(inputElement.name + "_valid");
        inputValid.innerHTML= "";
        inputValid.className= "";
      }
    }
  }
  
  // validate passwords (if applicable)
  var password= document.getElementById("password");
  var confirmPassword= document.getElementById("confirm_password");
  if (password != null && confirmPassword != null) {
    if (password.value != confirmPassword.value) {
      valid= false;
      var inputValid= document.getElementById("confirm_password_valid");
      inputValid.innerHTML= "Doesn't match password";
      inputValid.className= "invalid";
    } else {
      var inputValid= document.getElementById("confirm_password_valid");
      inputValid.innerHTML= "";
      inputValid.className= "";
    }
    if (password.value.length < 6) {
      valid= false;
      var inputValid= document.getElementById("password_valid");
      inputValid.innerHTML= "Password should be at least 6 characters in length";
      inputValid.className= "invalid";
    } else {
      var inputValid= document.getElementById("password_valid");
      inputValid.innerHTML= "";
      inputValid.className= "";
    }
  }
  
  // validate email address
  var emailAddress= document.getElementById("email");
  if (emailAddress != null) {
    if (emailAddress.value != "") {
      if (!checkEmail(emailAddress.value)) {
        valid= false;
        var inputValid= document.getElementById("email_valid");
        inputValid.innerHTML= "Invalid email address";
        inputValid.className= "invalid";
      }
    }
  }
  
  if (!valid) {
    alert('Some required fields were not supplied. ')
  }
  
  return valid;
}

function checkEmail(emailAddress) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailAddress)) {
    return true;
  } else {
    return false;
  }
}