/***************************************************************
 *
 *    Ici se trouve les fonctions et comportements de base 
 *    de la #toolbar 
 * 
 *    commun a toutes les pages du site
 *
 ****************************************************************/
  
/**
 *
 * Gestion du formulaire d'identification
 * present dans la #toolbar
 *
 */
 
var User = {
	_listeners: [],			/** liste de callbacks appelé lorsque l'utilisateur se loggue / deloggue */
	_infos: {},				/** liste des variables disponibles pour le User courant */
	_login: null,			/** login du User */
	login: function(login) {
		if (this._login !== login) {
			this._login = login;
			this._call_listeners();
		}
	},
	logout: function() {
		this._login = null;
		this._call_listeners();
	},
	assign: function(name, value) {
		this._infos[name] = value;
	},
	get: function(name) {
		return (this._infos[name]);
	},
	isLogged: function() {
		return (this.login !== null);
	},
	addListener: function(listener) {
		for (var i in this._listeners)
			if (this._listeners[i] == listener)
				return ;
		this._listeners.push(listener);
	},
	_call_listeners: function() {
		for (var i in this._listeners)
			this._listeners[i]();
	},
	formLogin: function(form) {
		if (form.tagName == 'FORM')
			form = jQuery(form);
//		else if (form._form && form._form.tagName == 'FORM')
//			form = form._form;

		form.attr('action', '/user/index/login?json');
		NForm(form).ajaxSubmit({
			success: function(json, code) {
				
				for (var i in json)
					User.assign(i, json[i]);
					
				User.login('login');
				
			}
		});
	}
};




jQuery(function() {
	/** Associe une action au click sur #login_ok_toolbar */
	jQuery('#go_connexion').click(function () {
		var form = jQuery(this).parents('form');
		if (form.attr('action').indexOf(window.location.href) < 0)
        	return true;
		try
		{
			User.formLogin(form);
		} catch (e)
		{
			return true;
		}
	
		return false; // rend le lien inactif 
	});

	jQuery('#password_forgotten').click(function() {
		try {
			/** ouverture de la popup */
			jQuery('#PopupAskPassword').alert({
				/** définition des boutons standards de la fenetre (certains seront caché) */
				buttons: {
					/** bouton OK, sera caché la première fois */
					'OK': function() {
						jQuery('#PopupAskPassword').close();
					},
					/** bouton annuler (ferme la fenetre) */
					'Annuler': function() {
						jQuery('#PopupAskPassword').close();
					},
					/** bouton Valider (lance la requete de recup de l'email coté serveur) */
					'Valider': function() {
						/** vidage du message d'erreur */
						jQuery('#PopupAskPassword .error').html('');
						/** lancement de la requete */
						jQuery.ajax({
							url: '/user/index/retreive_password?json',
							dataType: 'json',
							type: 'post',
							data: 'email='+escape(jQuery('#retreive_pass_email').val()),
							success: function(json) {
								/** a la reception, si OK, on affiche un joli message provenant du serveur, on cache
								 *  les boutons valider et annuler, on affiche le bouton OK */
								if (json.response === true) {
									jQuery('#PopupAskPassword .button.Annuler').hide();
									jQuery('#PopupAskPassword .button.Valider').hide();
									jQuery('#PopupAskPassword .button.OK').show().val('Fermer');
									jQuery('#PopupAskPassword .error').html(json.message);
								}
								else {
									/** en cas d'erreur, on affiche un message dans la zone prévue */
									jQuery('#PopupAskPassword .error').html(json.response);
								}
							},
							error: function() {
								/** en cas d'erreur serveur, on ferme la fenetre (attention pas une erreur de login, une erreur technique)
								 *  mais j'avoue c un peu gore */
								jQuery('#PopupAskPassword').close();
							}
						});
					}
				}
			});
			/** à l'init de la popup, on clear le message d'erreur, on affiche les boutons annuler et valider et on cache le bouton OK
			 * 	(au cas ou le mec ferme et réouvre la fenetre, ou qu'il lance plusieurs recherches de password) */
			var popup = jQuery('#PopupAskPassword');
			jQuery('.error', popup).html('');
			jQuery('.button.Annuler, .button.Valider', popup).show();
			jQuery('.button.OK', popup).hide();
		}
		catch(e){}
		return (false);
	});
	
});

var old_espacePerso = null;
User.addListener(function() {
	/** quand le user se loggue ou se deloggue (en fait, le logout est en synchrone, donc pas de gestion de deloggue) */
	if (User.isLogged()) {
		var espacePerso = User.get('espacePerso');
		/** on recupere la chaine envoyé sous le nom de espacePerso, ce sera le code HTML du bloc Espace Personnel */

		/** on met a jour la toolbar */
		/** petite ani */
		jQuery('#toolbar .zone#espacePerso').fadeOut(1000, function() {

			old_espacePerso = jQuery(this);
			old_espacePerso.remove();
			espacePerso = jQuery(espacePerso).hide();
			
			espacePerso.prependTo('#toolbar');
			//espacePerso.SlideInUp(1000);
			espacePerso.fadeIn(1000);
		});
		
	}
	
	
});