
function validate() {
  var reqFields = '';
  var reqFields2 = '';

  for (i=0; i < validate.arguments.length; i++) {

    form = (validate.arguments[i])?validate.arguments[i]:document.forms[0];
    required = eval(validate.arguments[i].name + 'R');
    requiredNames = eval(validate.arguments[i].name + 'RN');

    for(j=0; j<required.length; j++) {

      if ((form.elements[required[j]].value == '') || (form.elements[required[j]].value == 'error')) {
        reqFields += requiredNames[j] + '\n';
      }
      else if (required[j] == 'email') {
        bademail = false;
        if (window.RegExp) {
          var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\s)/;                        // not valid
          var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid

          if (reg1.test(form.email.value) || !reg2.test(form.email.value)) {
            bademail = true;
          }
        }
        else if ((form.email.value.indexOf('@') + '' == '-1') || (form.email.value.indexOf('.') + '' == '-1')) {
          bademail = true;
        }
        if (bademail) {
          if (reqFields != '') { reqFields2 += 'Also y'; }
          else { reqFields2 += 'Y'; }
          reqFields2 += 'our email address is invalid.\nPlease make sure it\'s correct!\n';
        }
      }
    }
  }
  if ((reqFields != '') || (reqFields2 != '')) {
    alert('Please provide or fix the following:\n\n'+reqFields+'\n'+reqFields2+'\nThank you.');
    return(false);
  }
  else {
    return(true);
  }
}
