function validate() {
  var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
  var f   = document.forms['signup'];
  email   = f.elements['data[User][email]'];
  passwd  = f.elements['data[User][password]'];
  cpasswd = f.elements['data[User][cpassword]'];
  captcha = f.elements['data[captcha]'];

  if (email.value == "") {
    alert('You must enter an email address.');
    email.focus();
    return false;
  }
  if (!filter.test(email.value)) {
    alert('Please provide a valid email address.');
    email.focus();
    return false;
  }
  if (J$('ContestantfieldField9').value == "") {
    alert('You must confirm email address.');
    J$('ContestantfieldField9').focus();
    return false;
  }
  if (!filter.test(J$('ContestantfieldField9').value)) {
    alert('Please provide a valid email address.');
    J$('ContestantfieldField9').focus();
    return false;
  }
  if (email.value != J$('ContestantfieldField9').value) {
    alert('The email addresses you entered do not match. Please try again.');
    J$('ContestantfieldField9').focus();
    return false;
  }
  if (passwd.value == "") {
    alert('You must enter a password.');
    passwd.focus();
    return false;
  }
  if (cpasswd.value == "") {
    alert('You must confirm password.');
    cpasswd.focus();
    return false;
  }
  if (passwd.value != cpasswd.value) {
    alert('The passwords you entered do not match. Please try again.');
    passwd.focus();
    return false;
  }
  if (J$('ContestantfieldField1').value == "") {
    alert('You must enter a first name.');
    J$('ContestantfieldField1').focus();
    return false;
  }
  if (J$('ContestantfieldField2').value == "") {
    alert('You must enter a last name.');
    J$('ContestantfieldField2').focus();
    return false;
  }
  if (J$('ContestantfieldField3').value == "") {
    alert('You must enter an address.');
    J$('ContestantfieldField3').focus();
    return false;
  }
  if (J$('ContestantfieldField5').value == "") {
    alert('You must enter a city.');
    J$('ContestantfieldField5').focus();
    return false;
  }
  if (J$('ContestantfieldField6').value == "") {
    alert('You must enter a state.');
    J$('ContestantfieldField6').focus();
    return false;
  }
  if (J$('ContestantfieldField7').value == "") {
    alert('You must enter a zip code.');
    J$('ContestantfieldField7').focus();
    return false;
  }
  if (isNaN(J$('ContestantfieldField7').value)) {
    alert('You must enter a valid zip code.');
    J$('ContestantfieldField7').focus();
    return false;
  }
  if(J$('ContestantfieldField7').value.length < 5) {
    alert('You must enter a valid zip code.');
    J$('ContestantfieldField7').focus();
    return false;
  }
  if (J$('ContestantfieldField8').value == "") {
    alert('You must enter a telephone number with area code.');
    J$('ContestantfieldField8').focus();
    return false;
  }
  if (isNaN(J$('ContestantfieldField8').value)) {
    alert('You must enter a telephone number with area code.');
    J$('ContestantfieldField8').focus();
    return false;
  }
  if(J$('ContestantfieldField8').value.length < 10) {
    alert('You must enter a telephone number with area code.');
    J$('ContestantfieldField8').focus();
    return false;
  }
  if(J$('UserDobMonth').value == "") {
    alert('You must enter a date of birth.');
    J$('UserDobMonth').focus();
    return false;
  }
  if(J$('UserDobDay').value == "") {
    alert('You must enter a date of birth.');
    J$('UserDobDay').focus();
    return false;
  }
  if(J$('UserDobYear').value == "") {
    alert('You must enter a date of birth.');
    J$('UserDobYear').focus();
    return false;
  }
  if (captcha.value == "") {
    alert('Please enter text for the image.');
    captcha.focus();
    return false;
  }
  if (f.elements['chkRules'].checked == false) {
    alert('You must read and agree to the Official Rules.');
    f.elements['chkRules'].focus();
    return false;
  }
  return true;
}