window.onload = initPage;

var warnings = {
  "username10DA" : {
    "required": "Please enter in your 10DA username.",
    "err"     : 0
  },
  "firstname" : {
    "required": "Please enter in your first name.",
    "letters" : "Only letters are allowed in a first name.",
    "err"     : 0
  },
  "lastname" : {
    "required": "Please enter in your last name.",
    "letters" : "Only letters are allowed in a last name.",
    "err"     : 0
  },
  "email" : {
    "required": "Please enter in your e-mail address.",
    "format" : "Please enter your e-mail in the form 'name@domain.com'.",
    "err"     : 0
  },
    "alertpayid" : {
    "required": "Please enter in your e-mail address.",
    "format" : "Please enter your AlertPay ID in the form 'name@domain.com'.",
    "err"     : 0
  }

}

function initPage() {
  var usernameValid = false;
  var passwordValid = false;
  document.getElementById("register").disabled = true;
  document.getElementById("password2").onblur = checkPassword;
  addEventHandler(document.getElementById("username10DA"), "blur", checkUsername);
  addEventHandler(document.getElementById("username10DA"), "blur", fieldIsFilled);
  addEventHandler(document.getElementById("firstname"), "blur", fieldIsFilled);
  addEventHandler(document.getElementById("firstname"), "blur", fieldIsLetters);
  addEventHandler(document.getElementById("lastname"), "blur", fieldIsFilled);
  addEventHandler(document.getElementById("lastname"), "blur", fieldIsLetters);
  addEventHandler(document.getElementById("email"), "blur", fieldIsFilled);
  addEventHandler(document.getElementById("email"), "blur", emailIsProper);
  addEventHandler(document.getElementById("alertpayid"), "blur", fieldIsFilled);
  addEventHandler(document.getElementById("alertpayid"), "blur", emailIsProper);
}



function checkPassword() {
  var password1 = document.getElementById("password1");
  var password2 = document.getElementById("password2");
  password1.className = "thinking";

  // First compare the two passwords
  if ((password1.value == "") || (password1.value != password2.value)) {
    password1.className = "denied";
    return;
  } 

  // Passwords match, so send request to server
  passwordRequest = createRequest();
  if (passwordRequest == null) {
    alert("Unable to create request");
  } else {
    var password = escape(password1.value);
    var url = 'checkPass.php?password=' + password;
    passwordRequest.onreadystatechange = showPasswordStatus;
    passwordRequest.open('GET', url, true);
    passwordRequest.send(null);
  }
}

function showPasswordStatus() {
  if (passwordRequest.readyState == 4) {
    if (passwordRequest.status == 200) {
      var password1 = document.getElementById("password1");
      if (passwordRequest.responseText == 'okay') {
       password1.className = "approved";
       passwordValid = true;
      } else {
       password1.className = "denied";
       password1.focus();
       password1.select();
       passwordValid = false;
      }
      checkFormStatus();
    }
  }
}


//
function checkUsername(e) {
  document.getElementById("username10DA").className = "thinking";
  usernameRequest = createRequest();
  if (usernameRequest == null)
    alert("Unable to create request");
  else {
    var theName = document.getElementById("username10DA").value;
    var username = escape(theName);
    var url= "checkName.php?username=" + username;
    usernameRequest.onreadystatechange = showUsernameStatus;
    usernameRequest.open("GET", url, true);
    usernameRequest.send(null);
  }
}

function showUsernameStatus() {
    if (usernameRequest.readyState == 4) {
     if (usernameRequest.status == 200) {
      if (usernameRequest.responseText == "okay") {
        document.getElementById("username10DA").className = "approved";
		document.getElementById("firstname").focus;
		usernameValid = true;

      } else {
        document.getElementById("username10DA").className = "denied";
        usernameValid = false;
      }
	  checkFormStatus();
    }
  }
}


//



function fieldIsFilled(e) {
  var me = getActivatedObject(e);
  if (me.value == "") {
    warn(me, "required");
  } else {
    unwarn(me, "required");
  }
}

function emailIsProper(e) {
  var me = getActivatedObject(e);
  if (!/^[\w\.-_\+]+@[\w-]+(\.\w{2,4})+$/.test(me.value)) {
    warn(me, "format");
  } else {
    unwarn(me, "format");
  }
}

function fieldIsLetters(e) {
  var me = getActivatedObject(e);
  var nonAlphaChars = /[^a-zA-Z]/;
  if (nonAlphaChars.test(me.value)) {
    warn(me, "letters");
  } else {
    unwarn(me, "letters");
  }
}

function fieldIsNumbers(e) {
  var me = getActivatedObject(e);
  var nonNumericChars = /[^0-9]/;
  if (nonNumericChars.test(me.value)) {
    warn(me, "numbers");
  } else {
    unwarn(me, "numbers");
  }
}
	
function warn(field, warningType) {
  var parentNode = field.parentNode;
  var warning = eval('warnings.' + field.id + '.' + warningType);
  if (parentNode.getElementsByTagName('p').length == 0) {
    var p = document.createElement('p');
    field.parentNode.appendChild(p);
    var warningNode = document.createTextNode(warning);
    p.appendChild(warningNode);
  } else {
    var p = parentNode.getElementsByTagName('p')[0];
    p.childNodes[0].nodeValue = warning;
  }
  document.getElementById("register").disabled = true;
}


function unwarn(field, warningType) {
  if (field.parentNode.getElementsByTagName("p").length > 0) {
    var p = field.parentNode.getElementsByTagName("p")[0];
    var currentWarning = p.childNodes[0].nodeValue;
    var warning = eval('warnings.' + field.id + '.' + warningType);
    if (currentWarning == warning) {
      field.parentNode.removeChild(p);
    }
  }


  var fieldsets = 
    document.getElementById("content").getElementsByTagName("fieldset");
  for (var i=0; i<fieldsets.length; i++) {
    var fieldWarnings = fieldsets[i].getElementsByTagName("p").length;
    if (fieldWarnings > 0) {
      document.getElementById("register").disabled = true;
      return;
    }       
  }
  document.getElementById("register").disabled = false;
}

function checkFormStatus() {
	if(usernameValid && passwordValid) {
		document.getElementById("register").disabled = false;
	
	} else {
		document.getElementById("register").disabled = true;
	}
	
}



