var login = {

  init : function(){

		var elmMessage = $('message');
		if(elmMessage)
			login.displayError(elmMessage.innerHTML);

		if($('logout-submit-lnk'))
			$('logout-submit-lnk').observe('click', login.onDisconnectLnk);

		if($('remember'))
			$('remember').observe('click', login.onRememberClick);

		if($('forgot-pwd-lnk'))
			$("forgot-pwd-lnk").observe('click', login.onForgotLnk);
		  
		if($('login-form'))
			$("login-form").observe('submit', login.onFormSubmit);
  },
  
  
  // clear / restore text fields value
  // On retarde la reecriture du input pour tenter d'utiliser les fonctions de memorisation form du navigateur
  // semble insuffisant sur IE et Opera
  onLoad: function () {
		if ($('login-form')){

      var elmPwd = $('pwd');
      var defaultPwd = I18N._('profil.formValues','password');

      // On n'indique "Mot de passe" dans le champ password uniquement s'il n'y a pas une
      // mémorisation des champs du formulaire sur la navigateur
      if (!elmPwd.value) {
  	 	   Element.replace(elmPwd, '<input id="pwd" type="text" name="password" maxlength="20" value="' + defaultPwd + '" />');
         elmPwd = $('pwd');
  	 	}
      //Element.observe(elmPwd, "focus", login.onPasswordFocus); // pas defer
      login.passwordObserve.defer();


      var elmLogin = $('login');
      // On n'indique "Identifiant" dans le champ login uniquement s'il n'y a pas une valeur connue par cookie remember
      // ou mémorisation des champs du formulaire sur la navigateur
      var defaultLogin = I18N._('profil.formValues','login');
      if (!elmLogin.value)
  	 	   elmLogin.value = defaultLogin;

      elmLogin.observe('focus', function() {
        if(this.value==defaultLogin)
          this.value = "";
      });

      elmLogin.observe('blur', function() {
        if (this.value=="")
          this.value = defaultLogin;
      });

		}
  },
  

  onPasswordFocus: function () {
    var elmPwd = $('pwd');
    
    if (elmPwd.type=="text") {
      Event.stopObserving(elmPwd, "focus", login.onPasswordFocus);
      Element.replace(elmPwd,'<input id="pwd" type="password" name="password" maxlength="20" />') ;
      login.passwordReset.defer();
    }

    // reset d'un mdp precedemment saisi ou de "Mot de passe"
    if (elmPwd.value)
      elmPwd.value = "";

  },
  
  passwordReset: function (evt) {
    var elmPwd = $('pwd');
    elmPwd.focus();
    Element.observe(elmPwd, "focus", login.onPasswordFocus); // defer
  },
  
  passwordObserve: function (evt) {
    Element.observe('pwd', "focus", login.onPasswordFocus); // defer
  },

  // Appele par login.jsp dans le cas ou le service authentification est desactive (submit login / deconnexion)
  down: function () {
		login.displayError("generic.error.service.down");
  },

	displayError: function (msgKey) {

		var elmError = $('msg-error');
		var elmMessage = $('message');

		if(elmError && elmMessage && msgKey) {

  		elmMessage.innerHTML = I18N._('profil.errors', msgKey);

      var wrapper = $('eLogin').select('div.eLogin')[0];
      if (!wrapper)
        var wrapper = $('eLogin').select('div.eAuthentified')[0];

      var refHeight = Number(wrapper.scrollHeight);
  		elmError.style.width = (wrapper.scrollWidth-6)+"px";
  		elmError.style.height = (refHeight-6)+"px";
  		elmError.style.top = "-" + (refHeight+20)+"px";

  		var msgHeight = Number(elmMessage.scrollHeight);
  		var msgPadding = (refHeight/2)-(msgHeight/2)-8;
  		elmMessage.setStyle({paddingTop: msgPadding+'px'});

  		new Effect.Move(elmError, { x: 0, y: 0, mode: 'absolute' });

  		Event.observe(elmError, 'click', function(e){
  		  Event.stop(e);
  		  new Effect.Move(elmError, { x: 0, y: -1*(refHeight+20), mode: 'absolute' });
  		});
		}
	},

  onRememberClick : function (evt) {
		var elmSvcUrl = $("login-svc-url");
		var URL = login.removeParamFromURL(elmSvcUrl.value, "remember");
		if(this.checked == true)
		  URL += "&remember=true";
		elmSvcUrl.value = URL;
  },

  onDisconnectLnk: function (evt) {
    evt.stop();
    $("logout-form").submit();
  },

  onForgotLnk: function(evt) {
		evt.stop();
		window.open(this.readAttribute('href'),this.getAttribute('title'),'toolbar=no,directories=no,menubar=no,resizable=no,scrollbars=no,status=no,width=551,height=400');
  },

  removeParamFromURL : function(URL, param) {
    var regex = new RegExp( "\\&" + param + "=[^&]*&?", "gi");
    URL = String(URL);
    URL = URL.replace(regex,'&');
    URL = URL.replace(/(\?|&)$/,'');
    regex = null;
    return URL;
  },
  
	onFormSubmit : function(event) {
		if ( ($('pwd').value== I18N._('profil.formValues','password') && $('login').value == I18N._('profil.formValues','login')) || $('pwd').value=='' || $('pwd').value=='' ) {
			Event.stop(event);
		}
	}

}

document.observe('dom:loaded', login.init);
Event.observe(window, 'load', login.onLoad);


