
// LOGIN & LOGOUT =============================================================

var sessionId = "";
var onLoginSuccess = null;
var forcedNewslettersApp = false;

function login()
{
  setCookie("sessionId", null, 1);
  ajaxPostText(mainApp + "?content=login", "", serializeForm(document.loginForm), loadingSignalId,
    function() {
    	document.loginForm.reset();
		  eval("var result = " + ajaxResponseText);
  	  sessionId = result.sessionId;
			switch (sessionId)
      {
        case "BAD_USR_PWD":
  			  alert("Los datos de acceso que ha ingresado no son correctos.");
          break;
        case "USR_DISABLED":
   			  alert("Su permiso de acceso se encuentra suspendido.");
          break;
        default:
          setCookie("sessionId", sessionId, 1);
          setCookie("usrName", result.usrName, 1);
          setCookie("clientCount", 1, 1);
          updateLoginControls();
          //hideLoginDialog();
          ajaxGetText(newslettersApp + "?content=userHasSuscriptions", "", "", 
            function() {
              eval("var result = " + ajaxResponseText);
              if (result.resultCode == "FALSE")
                ajaxGetText(mainApp + "?content=menu", "", "", 
                  function() {
                    updatePanelContent("leftPanel", ajaxResponseText);
                    forcedNewslettersApp = true;
                    loadNewslettersApp();
                  }
                );
              else if (currentApp == registrationApp || onLoginSuccess == undefined)
                loadHome();
              else
                ajaxGetText(mainApp + "?content=menu", "", "", 
                  function() {
                    updatePanelContent("leftPanel", ajaxResponseText);
                    if (onLoginSuccess) onLoginSuccess();
                  }
                );
            }
          );
          break;
      }
    }
  );
}

function autoLogin()
{
  if (!sessionId)
  {
    var s = getCookie("sessionId");
    if (s)
    {
      sessionId = s;
      updateLoginControls();
      var i = parseInt(getCookie("clientCount")) + 1;
      setCookie("clientCount", i, 1);
    }
  }
  return(sessionId != "");
}

function updateLoginControls()
{
  if (sessionId)
  {
    document.getElementById("offSession").style.display = "none";
    document.getElementById("usrName").innerHTML = getCookie("usrName");
    document.getElementById("onSession").style.display = "block";
  }
  else
  {
    document.getElementById("onSession").style.display = "none";
    document.getElementById("offSession").style.display = "block";
  }
}

function loadApp(appFunc)
{
  if (forcedNewslettersApp)
    alert("Por favor, seleccioná al menos un tema y hacé clic en Enviar.");
  else
    if (sessionId)
    {
      if (appFunc != loadDigitalPubsApp)
        menu.collapseExpanded();
      appFunc();
    }
    else
      showLoginDialog(appFunc);
}

function logout()
{
  if (sessionId)
  {
    var i = parseInt(getCookie("clientCount"));
    if (i > 1)
      setCookie("clientCount", i - 1, 1);
    else
    {
      setCookie("sessionId", "", 1);
      setCookie("usrName", "", 1);
      setCookie("clientCount", 0, 1);
      ajaxSynchronousGetText(mainApp + "?sessionId=" + sessionId + "&content=logout", "");
    }
  }
  forcedNewslettersApp = false;
  sessionId = "";
  updateLoginControls();
}

// LOGIN DIALOG ===============================================================

function showLoginDialog(onLoginSuccessFunc)
{
  ajaxGetText(mainApp + "?content=loginForm", "", loadingSignalId,
    function() {
      updatePanelContent("mainPanel", ajaxResponseText);
      document.loginForm.usr.focus();
      onLoginSuccess = onLoginSuccessFunc;
    }
  );
}
function oldShowLoginDialog(onLoginSuccessFunc)
{
  document.getElementById("dialogBackgnd").style.visibility = "visible";
  fade("loginDialog", true,
    function () {
      document.loginForm.usr.focus();
      onLoginSuccess = onLoginSuccessFunc;
    }
  );
}

function hideLoginDialog()
{
  document.loginForm.usr.blur(); // needed by mozilla!!
  document.loginForm.pwd.blur();
  fade("loginDialog", false,
    function() {
      document.getElementById("dialogBackgnd").style.visibility = "hidden";
    }
  );
}

function sendPasswordRemainder()
{
  if (document.loginForm.email.value)
    ajaxGetText(mainApp + "?content=sendPasswordRemainder&usr=" + encodeURIComponent(document.loginForm.email.value), 
      "", loadingSignalId,
      function() {
  		  eval("var result = " + ajaxResponseText);
    	  switch (result.resultCode)
        {
          case "OK":
            alert("Te hemos enviado un e-mail con los datos de acceso correspondientes.");
            break;
          case "BAD_ID":
            alert("La cuenta espeficada no se encuentra en nuestros registros.")
            break;
          case "ERROR":
            alert("Ha ocurrido un error al enviarte un e-mail con la contraseña.\n\n Por favor, volvé a intentarlo más tarde.\n\n Si el problema persiste, no dudes en comunicate con nosotros por teléfono o mediante la página de contacto.")
            break;
        }
      }
    );
  else
    alert("Por favor, ingresá tu e-mail y volvé a intentarlo.");
}

// SESSION HANDLING ===========================================================

function validAccess()
{
  switch (ajaxResponseText)
  {
    case "BAD_PERMISSION":
      alert("No tiene permiso de acceso a este sector del sitio.");
      break;
    case "SESSION_EXPIRED":
      alert("El Servidor ha cerrado la sesion. Debe realizar nuevamente el ingreso a este sector.");
      logout();
      break;
    default: 
      return(true);
      break;
  }
  loadHome();
  return(false);
}

function doLogout()
{
  logout();
  loadHome();
//  document.getElementById("mainMenuHomeItem").onclick();
}


