// Prod
var url_CCASfr 			= 'http://www.ccas.fr/application_ccasfrv4.php';
var url_Activ 			= 'http://www.ccas.fr/activ';
var url_EspaceBenef 	= 'http://www.ccas.fr';
var url_journal 		= 'http://journal.ccas.fr';
var url_media = 'http://www.ccas.fr/application_ccas_v4/media';

// Qual
//var url_CCASfr 			= 'http://10.160.0.35/application_ccasfrv4.php';
//var url_media 			= 'http://10.160.0.35/application_ccas_v4/media';
//var url_Activ 			= 'http://10.120.1.106/activ2';
//var url_EspaceBenef 	= 'http://10.160.0.35';
//var url_journal 		= 'http://journal.ccas.fr';

// Dev
// var url_CCASfr = 'http://10.128.0.41/~vaddem/ccasfr/application_ccasfrv4.php';
// var url_media = 'http://10.128.0.41/~vaddem/ccasfr/application_ccas_v4/media';
// var url_Activ = 'http://10.128.0.35/~jgoupille/activ2';
// var url_EspaceBenef = 'http://10.128.0.41/~vaddem/ccasfr';
// var url_journal = '';

var MenuCCAS = function()
{
	this.url = {
		getMenu 		: url_CCASfr+'/bigmenu/ajaxgetmenu/',
		identified 		: url_Activ+'/index.php/ajaxidentification/identified/',
		identification 	: url_Activ+'/index.php/ajaxidentification/identification/',
		deconnexion 	: url_Activ+'/index.php/ajaxidentification/deconnexion/',

		ccasfr 			: url_CCASfr,
		espaceBenef 	: url_EspaceBenef+'/espacebenef.php',
		journalenligne 	: url_journal

		//panier 			: serveurPanier+'/panier_rouge.php/identification/sessionactiv/',
		//espaceActiv 	: serveurPanier+'/panier_rouge.php/identification/sessionactiv/?d=activ',
		//
		//srcCaddy 		: serveurPanier+'/application_panier/views/images/caddy.gif'
	};

	var me = this;
	
	$("body").click(function(e){
		if (objhtml.activAction.hasClass('show')){
			objhtml.activAction.removeClass('show');
			objhtml.activRacourcis.html(''+me.user.nom+' &#916;');
		}
	});

	var objhtml = {
		bigMenu : $('<div></div>').attr('id','bigMenu'),
		onglet : $('<ul></ul>'),
		nav : $(document.createElement('nav')),
		espaceBenef : $('<a></a>').attr({'href':'#'}).html('Espace B&eacute;n&eacute;ficiaires &#916;'),
		identite : $('<div></div>').attr('id','activIdentite'),
		activRacourcis : $('<a></a>').attr({'href':'#','id':'activRacourcis'}),
		activDeconnexion : $('<a></a>').attr({'href':'#','class':'deconnexionActiv'}).html('D&eacute;connexion'),
		activAction : $('<ul></ul>').attr({'id' : 'activAction'}),
		activConnexion : $('<div></div>').attr({'id':'connexionNIA'}),
		activConnexionShow : $('<a></a>').attr('href','#').html('connexion NIA &Delta;'),
		activConnexionFrom : $('<form></form>').append($('<p></p>').append('<input type="text" name="nia" required="" placeholder="nia" maxlength="8" value=""> <input type="text" name="mdp2" placeholder="mot de passe" value="mot de passe" style="display:none"><input type="password" name="mdp" required="" placeholder="mot de passe" value=""> <input class="connexion" type="submit" value="Connexion">'))
	};//&nabla;

	this.user = {
		nom : '',
		nia : '',
		pass : '',
		cmcas : '',
		panier : false
	};

	var error_msg = {
		nia : 'Le nia indiqu&eacute; n\'est pas correct.',
		pass : 'Merci de remplir le champ mot de passe.',
		iden : 'Impossible de vous identifier',
		sess : 'Votre session a  expir&eacute; merci de vous identifier de nouveau.'
	};

	var menuAnim = {
		hideDelay: 500,
		hideDelayTimer: [],
		shown: false,
		obj: null
	}

	this.load = function()
	{

		// Controle que l'utilisateur accepte les cookies.
		cookieTest = navigator.cookieEnabled;
		if (cookieTest === true){
			objhtml.espaceBenef.show();
			me.identified(function(){
				me.showUserName();
			},function(){
				objhtml.activConnexion.show();
			});
		}else{
			objhtml.espaceBenef.hide();
		}

		me.getMenu();

		// Annimation
		objhtml.activRacourcis.click(function(){
			if (objhtml.activAction.hasClass('show')){
				objhtml.activAction.removeClass('show');
				objhtml.activRacourcis.html(''+me.user.nom+' &#916;');
			}else{
				objhtml.activAction.addClass('show');
				objhtml.activRacourcis.html(''+me.user.nom+' &nabla;');
			}
			return false;
		});
		objhtml.activAction.click(function(e) {
			if($(e.target).is("a")){
				return true;
			}else{
				return false;
			}
		});
		objhtml.espaceBenef.click(function(){
			if (objhtml.bigMenu.hasClass('affichable') == true){
				if (objhtml.bigMenu.css('display') == 'block'){
					objhtml.bigMenu.css('display','none');
					objhtml.espaceBenef.html('Espace B&eacute;n&eacute;ficiaires &#916;');
				}else{
					objhtml.bigMenu.css('display','block');
					// objhtml.espaceBenef.html('Espace B&eacute;n&eacute;ficiaires &or;');
					objhtml.espaceBenef.html('Espace B&eacute;n&eacute;ficiaires &#8711;');
				}


			}else
				objhtml.activConnexionShow.click();
			return false;
		});
		objhtml.activConnexionShow.click(function(){
			if (objhtml.activConnexion.hasClass('show')){
				objhtml.activConnexion.removeClass('show');
				objhtml.activConnexionShow.html('connexion NIA &#916;');
			}else{
				objhtml.activConnexion.addClass('show');
				objhtml.activConnexionShow.html('connexion NIA &nabla;');
			}
			return false;
		});
		objhtml.activConnexionFrom.submit(function(e){
			e.stopPropagation();
			if (me.user.cmcas != ''){
				document.location.href = me.url.espaceBenef;
			}else{
				me.user.nia  = $('input[name="nia"]', this).val();
				me.user.pass = $('input[name="mdp"]', this).val();

				$('input[name="nia"]', this).val('');
				$('input[name="mdp"]', this).val('');

				me.identification(function(){
					me.showUserName();
					document.location.href = me.url.espaceBenef;
				});
			}
			return false;
		});
		objhtml.activDeconnexion.click(function(){
			jQuery('#connexionNIA').show();
			jQuery('#activIdentite').hide();
			jQuery('#activAction').removeClass('show');
			jQuery('#bigMenu').hide();
			document.location.href = url_CCASfr;
		});
		/* Deconnexion */

		var objTop = $('<div></div>').attr('id', 'header');
		objhtml.bigMenu.append(objhtml.onglet).append('<span class="clear"></span>');
		objhtml.nav
			.append('<a href="'+me.url.ccasfr+'" class="ccasfr">&nbsp;</a>')
			.append('<a href="'+me.url.ccasfr+'/editorial/?p=33" class="qui">Qui sommes-nous ?</a>')
			.append('<a href="'+me.url.journalenligne+'">Le journal en ligne</a>')
			.append(objhtml.espaceBenef)
			.append(objhtml.identite.append(objhtml.activRacourcis).append(objhtml.activDeconnexion))
			.append(objhtml.activAction)
			.append(objhtml.activConnexion
						.append($('<div></div>').append(objhtml.activConnexionFrom))
						.append($('<p></p>').append(objhtml.activConnexionShow)));
		objTop.append(objhtml.bigMenu).append(objhtml.nav);
		$('body').prepend(objTop);

		if ($.browser.msie){
			var inputNia = $('input[name="nia"]', objhtml.activConnexionFrom);
			inputNia.val(inputNia.attr('placeholder')).focus(function(){
				if (inputNia.val() == inputNia.attr('placeholder'))
					inputNia.val('');
			}).blur(function(){
				if (inputNia.val() == '')
					inputNia.val(inputNia.attr('placeholder'));
			});

			var inputPass = $('input[name="mdp"]', objhtml.activConnexionFrom).hide();
			var inputPassTxt = $('input[name="mdp2"]', objhtml.activConnexionFrom).show();
			inputPassTxt.focus(function(){
				inputPassTxt.hide();
				inputPass.show().focus();
			});
			inputPass.blur(function(){
				if (inputPass.val() == ''){
					inputPassTxt.show();
					inputPass.hide();
				}
			});

		}

	};

	this.getMenu = function()
	{
		$.getJSON(me.url.getMenu + '?callback=?',function(link){
			// Onglet du bigMenu
			var count_onglet = 0;
			$.each(link.onglet.sub, function(i,v){
				var tmp_li = $('<li></li>');
				var tmp_a = $('<a></a>').attr({'class':'o','style':'background-color:'+v.couleur+';border-color:'+v.couleur,'href':v.url}).html(v.label);
				tmp_li.append(tmp_a);

				if (v.sub){
					var tmp_div = $('<div></div>').attr('data',count_onglet).attr('data-img','0');
					menuAnim.hideDelayTimer[count_onglet] = new Array;
					menuAnim.hideDelayTimer[count_onglet]['timer'] = null;
					menuAnim.hideDelayTimer[count_onglet]['gbcolor'] = v.couleur;
					menuAnim.hideDelayTimer[count_onglet]['a'] = tmp_a;
					menuAnim.hideDelayTimer[count_onglet]['d'] = tmp_div;

					$([tmp_a.get(0), tmp_div.get(0)]).hover(function(){
						tmp_a.addClass('activ').css({'background-color':'rgba(186, 185, 173, 0.9)','border-color':'#000000'});
						var x = tmp_div.attr('data');
						hideMenu(x);
						if (menuAnim.hideDelayTimer[x]['timer'])
							clearTimeout(menuAnim.hideDelayTimer[x]['timer']);

						var largeur = ($('dl',tmp_div).length*170+20);//+25
						var left = tmp_a.position().left;

						if (largeur+left > 978){
							left = 0;
						}

						if (tmp_div.attr('data-img') == 1){
							largeur = largeur+170;
						}

						tmp_div.addClass('show').css({'width':largeur, 'left':left});

						return false;
					},function(){
						var x = tmp_div.attr('data');
						if (menuAnim.hideDelayTimer[x]['timer'])
							clearTimeout(menuAnim.hideDelayTimer[x]['timer']);
						menuAnim.hideDelayTimer[x]['timer'] = setTimeout(function(){
							menuAnim.hideDelayTimer[x]['timer'] = null;
							tmp_div.removeClass('show');
							tmp_a.removeClass('activ').css({'background-color':menuAnim.hideDelayTimer[x]['gbcolor'],'border-color':menuAnim.hideDelayTimer[x]['gbcolor']});
						}, menuAnim.hideDelay);
					});


					var tmp_dl;
					var colonnes = new Array;
					$.each(v.sub, function(i2,v2){

						if(!colonnes[v2.colonne-1]){
							colonnes[v2.colonne-1] = new Array;
						}

						if (v2.label.length > 0)
							colonnes[v2.colonne-1][(colonnes[v2.colonne-1]).length] = '<dt>'+v2.label+'</dt>';
						else
							colonnes[v2.colonne-1][(colonnes[v2.colonne-1]).length] = '<dt style="background:none;">'+v2.label+'</dt>';

						if (v2.sub){
							$.each(v2.sub, function(i3,v3){
								colonnes[v2.colonne-1][(colonnes[v2.colonne-1]).length] = '<dd><a href="'+v3.url+'">'+v3.label+'</a></dd>';
							});
						}
					});

					$.each(colonnes, function(key,val){
						tmp_dl= $('<dl></dl>');//.addClass('auto');

						$.each(val, function(kr,vr){
							tmp_dl.append(vr);
						});

						tmp_div.append(tmp_dl);
					});
					tmp_li.append(tmp_div);

					if (v.picto_file != null)
					{
						tmp_img = $('<img></img>').attr('src', url_media+'/bigmenu/'+v.picto_file);
						
						if(v.picto_url != ''){
							tmp_lk = $('<a></a>').attr('href',v.picto_url);
							tmp_lk = tmp_lk.attr('target','_blank');
							tmp_img = tmp_lk.append(tmp_img);
						}
						
						tmp_div.append(tmp_img);
						if (colonnes.length > 2){
							tmp_dl.addClass('auto');
						}else{
							tmp_div.attr('data-img','1');
						}
					}


					count_onglet = count_onglet+1;
				}
				objhtml.onglet.append(tmp_li);
			});

			// Racourse Activ
			for(var i=0; i<link.activ.length; i++){
				objhtml.activAction.append('<li><a href="'+link.activ[i][1]+'">'+link.activ[i][0]+'</a></li>');
			}

		});

		return false;
	}
	function hideMenu(courant)
	{
		$.each(menuAnim.hideDelayTimer, function(x){
			if (x == courant) return true;
			if (menuAnim.hideDelayTimer[x]['timer']){
				clearTimeout(menuAnim.hideDelayTimer[x]['timer']);
				menuAnim.hideDelayTimer[x]['timer'] = null;
				menuAnim.hideDelayTimer[x]['d'].removeClass('show');
				menuAnim.hideDelayTimer[x]['a'].removeClass('activ').css({'background-color':menuAnim.hideDelayTimer[x]['gbcolor'],'border-color':menuAnim.hideDelayTimer[x]['gbcolor']});
			}
		});
	}

	/************************************
	 *  Controle que l'utilisateur est deja identifie.
	 */
	this.identified = function(callbackYes, callbackNo)
	{
		$.getJSON(me.url.identified + '?callback=?',function(json){
			// Si deja identifie.
			if (json.etat == true){
				me.user.nom = json.userName;
				me.user.cmcas = json.userCmcas;
				me.user.panier = json.panier;
				callbackYes();
			}else{
				callbackNo();
			}
		});

		return false;
	};

	/************************************
	 *  Identifi un utilisateur.
	 */
	this.identification = function(callbackYes)
	{
		// Controle du nia
		if (controleNia() === false){
			return false;
		}

		// Controle du mot de passe
		if (controlePassword() === false){
			return false;
		}

		$.getJSON(me.url.identification+'?nia='+me.user.nia+'&pass='+me.user.pass+'&callback=?',function(json){
			if (json.warning !== ''){
				alert(json.warning);
				return false;
			}
			me.user.nom = json.userName;
			me.user.cmcas = json.userCmcas;
			me.user.panier = json.panier;
			callbackYes();
			return false;
		});

		return false;
	};

	/************************************
	 *  Affichage du nom de la personne.
	 */
	this.showUserName = function()
	{
		// Affichage du nom de la personne.
		objhtml.identite.show();
		objhtml.activRacourcis.html(''+me.user.nom+' &#916;');
		objhtml.activConnexionShow.hide();
		objhtml.activConnexionFrom.hide();

		objhtml.bigMenu.addClass('affichable');
		objhtml.espaceBenef.click();

		// Formulaire Resalys.
		$('input[name="Ctrl_XML_NIA"]').val(me.user.nia);
		$('input[name="Ctrl_XML_Password"]').val(me.user.pass);
		$('input[name="Ctrl_XML_CMCAS"]').val(me.user.cmcas);

		objhtml.activDeconnexion.click(function(){
			me.deconnexion();
			me.hideUserName();
			return false;
		});
	}
	this.hideUserName = function()
	{
		// Masque le nom de la personne.
		objhtml.identite.hide();
		objhtml.activRacourcis.html(' ');
		objhtml.activConnexionShow.show();
		objhtml.activConnexionFrom.show();
		objhtml.bigMenu.removeClass('affichable').hide();
		objhtml.activAction.removeClass('show');
	}
	/************************************
	 *  Deconnexion de l'utilisateur.
	 */
	this.deconnexion = function ()
	{
		$.getJSON(me.url.deconnexion + '?callback=?',function(json){
			me.user.nom = '';
			me.user.nia = '';
			me.user.pass = '';
			me.user.cmcas = '';
			me.user.panier = false;
		});
		return false;
	};

	// ----- Fonction de controle ----- //

	/************************************
	 *  Controle le format du nia.
	 */
	function controleNia()
	{
		for (var i=0; i<=(me.user.nia.length-1); i++){
			if (isNaN(parseInt(me.user.nia.charAt(i)))){
				alert(error_msg.nia+' (2)');
				return false;
			}
		}
		return true;
	}

	/************************************
	 *  Controle le format du mot de passe.
	 */
	function controlePassword()
	{
		if (me.user.pass.length < 1){
			alert(error_msg.pass);
			return false;
		}
		return true;
	}
};


jQuery(document).ready(function(){
	leBigMenu = new MenuCCAS();
	leBigMenu.load();
});


