// JavaScript Document

/**
 * Global variables
 */
 
var gMandatoryFieldIdsForLogin = new Array("email", "password");
var gMandatoryFieldIdsForForgotPassword = new Array("email");
var gMandatoryFieldIdsForRegister = new Array();
var gMissingFieldIds = new Array();


/**
 * Useful tools
 */
 
function show(toShow) {
 if (toShow)
  toShow.style.visibility = "visible";
}

function hide(toHide) {
 if (toHide)
  toHide.style.visibility = "hidden";
}

function trim(string) {
  return string.replace(/^\s*|\s*$/g,"");
}

function isBlank(string) {
 return ((string == null) || (trim(string) == ""));
}

function addParamToURL(url, paramName, paramValue) {
 return url + ((url.indexOf("?", 0) > -1) ? "&" : "?") + paramName + "=" + paramValue;
}

function addParamsToURL(url, params) {
 for (var i=0 ; i<params.length ; i+=2) {
  url = addParamToURL(url, params[i], params[i+1]);
 }
 return url;
}

function ValidateMandatoryFields(fieldIds) {
 // clean previous missing error messages, if any...
 while (gMissingFieldIds.length>0) {
  hide(document.getElementById(gMissingFieldIds.pop() + "_missing"));
 }
 // get the mising fields...
 for (var i=0 ; i<fieldIds.length ; i++) {
  var fieldId = fieldIds[i];
  var field = document.getElementById(fieldId);
  if (field && isBlank(trim(field.value))) {
   gMissingFieldIds.push(fieldId);
  }
 }
 // display related missing error messages...
 var nbOfMissingFields = gMissingFieldIds.length;
 for (var i=0 ; i<nbOfMissingFields ; i++) {
  show(document.getElementById(gMissingFieldIds[i] + "_missing"));
 }
 // return the result of validation...
 return (nbOfMissingFields == 0);
}


/**
 * Login sniplet tools
 */

function Login() {
 return ValidateMandatoryFields(gMandatoryFieldIdsForLogin);
}

function ForgotPassword(email, forgotPasswordUrl) {
 if (ValidateMandatoryFields(gMandatoryFieldIdsForForgotPassword)) {
  window.open(addParamToURL(forgotPasswordUrl, "e", email),
              "w_forgot_password",
              'width=400,height=200,left=50,top=100,scrollbars=no');
 }
 return false;
}

function Register(registrationUrl) {
 if (ValidateMandatoryFields(gMandatoryFieldIdsForRegister)) {
  location.href = registrationUrl;
 }
 return false;
}


