/*
  Members specific functions
*/

//if found, return type(so that it can be used if required later). if not found, return false.
function getElementType(strType) {
  var validEType = new Array("text","password","checkbox","radio","select-one");
  for (var idx=0; idx<validEType.length;idx++) {
    if (strType == validEType[idx]) return strType;
  }
  return false;
}

//return false if no prompt
function promptEmpty(strName) {
  var errMsg = new Array();
	
  //define input name and error message pair
  errMsg["PROFILE[EMAIL]"] = "Please enter your email";
  errMsg["PROFILE[USERNAME]"] = "Please enter your username";
  errMsg["PROFILE[NEW_PASSWORD]"] = "Please enter your password";
  errMsg["PROFILE[CONFIRM_PASSWORD]"] = "Please confirm your password";
  errMsg["PROFILE[1000000540]"] = "Please select Profession";
  errMsg["PROFILE[1000000020]"] = "Please select Country";
  errMsg["PROFILE[1000000360]"] = "Please select Gender";
  errMsg["PROFILE[1000000141]"] = "Please select Personal Year of Birth";		
	
  elementErr = errMsg[strName];
  if (errMsg[strName]) {
    alert(elementErr);
    return true;
  }
  return false;
}

function validateAccountForm(formName) {
  for (var i = 0; i < document.forms[formName].elements.length; i++) {
      var elementType = getElementType(document.forms[formName].elements[i].type);
      var elementName = document.forms[formName].elements[i].name;
      var elementValue = document.forms[formName].elements[i].value;
		
      if (elementType && elementName) {		
        switch(elementName) {
          case "PROFILE[EMAIL]":
              if (!isValidEmail(elementName,elementValue)) { return false; }
              break;
          case "PROFILE[USERNAME]":
              if (!isValidUsername(elementName,elementValue)) { return false; }
              break;
         case "PROFILE[NEW_PASSWORD]":
               if (!isEmpty(elementValue) ) {
                 var otherPVal = document.forms[formName].elements["PROFILE[CONFIRM_PASSWORD]"].value;
                 if (isEmpty(otherPVal)) {
                   promptEmpty("PROFILE[CONFIRM_PASSWORD]");
                   return false;
                 } 
                 if (elementValue != otherPVal) {
                   alert("Passwords do not match");
                   return false;
                 } 
                 if (!isValidPassword(elementName,elementValue)) { return false; }
               } 
               break;
         case "PROFILE[CONFIRM_PASSWORD]":
               if (!isEmpty(elementValue) ) {
                 var otherPVal = document.forms[formName].elements["PROFILE[NEW_PASSWORD]"].value;
                 if (isEmpty(otherPVal)) {
                   promptEmpty("PROFILE[NEW_PASSWORD]");
                   return false;
                 } 
                 if (!isValidPassword(elementName,elementValue)) { return false; }
               } 
               break;
         default:
	if (elementType == "select-one") {
	    if (elementValue == "_") elementValue = "";
	}

	if (elementType == "radio") {
                  var rLen = document.forms[formName].elements[document.forms[formName].elements[i].name].length;    
                  var rChecked = 0;
                  for (j=0;j<rLen;j++) {
                  if (document.forms[formName].elements[i+j].checked) rChecked = 1;
                }
                if (!rChecked) { elementValue = ""; }
                   i = i + rLen - 1; //skip elements of this radio group
                }   
							
                if (isEmpty(elementValue)) { 
	  if (promptEmpty(elementName)) return false; 
                }
          } //end switch
      } //end if
  } // end for

  //only for new registration
  if (eval(document.forms[formName].elements["updateType"])) {
    if (document.forms[formName].elements["updateType"].value == "registerAccount") {
      if (isEmpty(document.forms[formName].elements["PROFILE[NEW_PASSWORD]"].value) || isEmpty(document.forms[formName].elements["PROFILE[NEW_PASSWORD]"].value)){
        promptEmpty("PROFILE[NEW_PASSWORD]");
        return false;
      }
    }
  }

  return true;
}
