var signupForm = document.getElementById("signup_form");

function validateUsername(el)
{
  var username = new Username(el.id, el.value, "username_err");
  username.setRequired();
  return username.verify();
}

function validateName(el)
{
  var state = new ValidateInput(el.id, el.value, el.name + '_err');
  state.setRequired();  // optional
  return state.verify();		
}

function validateEmail(el)
{
  var email = new Email(el.id, el.value, "email_err");
  email.setRequired();
  return email.verify();
}

/**
 *  On-submit event handler to check for blank fields.
 *  @type boolean
 */
signupForm.onsubmit = function()
{
  var els = signupForm.elements;
  var fields = new Array();
  var el, val;
  
  fields.push("first_name");
  fields.push("last_name");
  fields.push("email");
  fields.push("password");
  //fields.push("referrer");
  //fields.push("agree_terms");

  if (user == "e") {
    fields.unshift("username");
  }

  for (var i = 0; i < fields.length; i++) {
    document.getElementById(fields[i] + "_err").style.visibility = 
      "hidden";

    switch (fields[i]) {
      case "username":
        el = els["username"];
        val = validateUsername(el);
        if (val !== false) {
          el.value = val;
        }
        else {
          el.value = "";
          el.focus();
          return false;
        }
        break;

      case "first_name":
        el = els["first_name"];
        val = validateName(el);
        if (val !== false) {
          el.value = val;
        }
        else {
          el.value = "";
          el.focus();
          return false;
        }
        break;

      case "last_name":
        el = els["last_name"];
        val = validateName(el);
        if (val !== false) {
          el.value = val;
        }
        else {
          el.value = "";
          el.focus();
          return false;
        }
        break;
		
      case "email":
        el = els["email"];
        val = validateEmail(el);
        if (val !== false) {
          el.value = val;
        }
        else {
          el.value = "";
          el.focus();
          return false;
        }
        break;
		
	  case "password":
	  	el1 = els["password"];
		el2 = els["password2"];
		document.getElementById('password_err').innerHTML = '';
	    document.getElementById('password_err').style.visibility = "hidden";

		if ( el1.value == '' ) {
			document.getElementById('password_err').innerHTML = 'Please enter a password.';
		    document.getElementById('password_err').style.visibility = "visible";
			el1.focus();
			return false;
		}

		if ( el1.value.length < 6 ) {
			document.getElementById('password_err').innerHTML = 'Please enter a password of at least 6 characters.';
		    document.getElementById('password_err').style.visibility = "visible";
			el1.focus();
			return false;
		}

		if ( el1.value != el2.value ) {
			document.getElementById('password_err').innerHTML = 'Your password does not match.';
		    document.getElementById('password_err').style.visibility = "visible";
			el1.focus();
			return false;
		}
	    break;

      /*case "referrer":
        el = els["referrer"];
        val = el.selectedIndex;
        if (val !== 0) {
		  document.getElementById('referrer_err').innerHTML = '';
  		  document.getElementById('referrer_err').style.visibility = "hidden";
          el.value = val;
        }
        else {
          el.value = "";
		  document.getElementById('referrer_err').innerHTML = 'This field is required.';
  		  document.getElementById('referrer_err').style.visibility = "visible";
          el.focus();
          return false;
        }
        break;*/

      /*case "agree_terms":
        if (!els[fields[i]].checked) {
          document.getElementById("agree_terms_err").style.visibility = 
            "visible";
		  document.getElementById("agree_terms_err").style.display = 
            "";
          return false;
        }
        break;*/
    }
  }
  return true;
};

