// *********************************************************** GESTION JQUERY
$(document).ready(function(){
						   
						   
	// resize des fenêtres en popup 
	if (window.opener&&$('body').height()>100) {
		//alert($('body').height());
		//modification alex allemagne : dans le cadre de l'allemagne, un texte juridique concernant l'inscription à la newsletter pousse le contenu du formulaire en dehors de la pop up sous IE6, avec cette instruction:
		//window.resizeTo(878,$('body').height()+120);
		//On rajoute donc quelques pixels de hauteur à la pop up
		window.resizeTo(878,$('body').height()+230);
	}
	
						   
						   
	// éviter l'affichage de valeurs undefined dans les champs des formulaires
	$("input[type='text']").each(function () {
        if (this.value == "undefined" ) {
          this.value="";
        } 
      });


	// gestion des encarts flottants des erreurs de saisie sur les formulaires
	if ($("#ouput_msgs")) {
		var errorId = new Array();
		errorId = $("#ouput_msgs").text().split(";");

		for ( i=0; i < errorId.length; i++ ) {
			if (errorId[i] !=  "") { // reenvoyer la première erreur seulement
				$("#intro_error_text").html($("#intro_error_text").html() + "<br/>"+ $("#"+errorId[i]).html());
				break;
			}
			
		}
			// afficher le block d'erreur s'il est rempli
			if ($("#intro_error_text").text() != "") {
				showErrorBlock();
			}
	}

	/* cas d'un repost, si la valeur du mail est déjà saisie, il faut renvoyer à setLogin */
	 var mailField = $("#mailFields :input[type='text'][id$='email']");
	 var errorsText = $("#ouput_msgs").text();

	 // redirection vers des pages annexes au besoin
	if (mailField.val() != "" && mailField.val() != undefined && errorsText.length < 4 ) { // si on a un mail et pas de message d'erreur, c'est un accès d'un user ayant déjà une session, on redirige pour éviter les modifications
		 //_setLogin();
		 // les champs ep1ihPopulation et pageType doivent correspondre, si ce n'est pas le cas, c'est qu'un interne veut modifier son profil en salon ou vice versa
		$("#column_wrapper").hide();
		if ($("#pageType").val() != $(":input[id$='Population']").val()) {
			 location.href = "register_"+$(":input[id$='Population']").val()+".aspx";
		 } else {
		 /* TEMP : vérification des pages, si on a déjà des infos dans le champs email, on renvoie sur la page de fin d'inscription
		tant que la modification des profils n'est pas en place, à cause des rôles : quand le profil est mis à jour, les rôles trainer et strudent sont ajoutés et non updatés
		*/
			location.href="register_success.aspx?from="+$("#pageType").val();
		 }
	 }
	
	
	
	// affectation des textes pour la liste des status en inscription interne
	/*if ($(":input#statutSelect option").length > 0) {	
		$(":input#statutSelect option").each( function(i) {
			$(this).text($("#status_name"+i).text());
		});	
	}*/
	
	/* ménage dans le récap de l'inscription côté client */
	if ($("#rappel_inscription")) {
		$("#rappel_inscription li").each(function() {
			if ($(this).text() == "" || $(this).text() == " ") {
					$(this).remove();
			}
		});
	}
	
	//affectation des rôles
	/*
		s'il existe un bloc d'id "statut" qui contient une combo, on va boucler sur les valeurs pour :
		 - obtenir son role en fonctions de la liste insérée dans le span "status_list"
		 - le localiser
	*/
	if ($("#statut :input")) {
		var roleList = $("#status_list").text().split(","); // récupération des textes localisés
		var optionsList = $("#statut :input option").get(); // liste des statuts ou fonction que ce soit en interne ou en salon
			// localisation des listes déroulantes
			$("#statut :input option").each( function(i) {
				$(this).text($("#status_name"+i).text());
			});	
		
		getUserStatus(); // on doit initialiser la valeur du champ caché au cas où ce soit un repost
		$("#statut :input").change(getUserStatus);
	}
	function getUserStatus() {
		for (i=0; i < optionsList.length ; i++) {
			if (optionsList[i].selected) {
				//alert(roleList[i] + " / " +i );
				$("#select_role").val(roleList[i]);
				break;
			}
		}	
	}
	

	
	
	/* INSCRIPTION EN SALON */
	var storeField = $("input[id$='ep1itstoreCode']");
	if (storeField.val() != "") { // section utile quand la page est affichée à nouveau et que le code salon était déjà saisi
		$("#output_store_code").text(" ("+storeField.val()+")");// indiquer le numéro du salon
		$("#store_code_form").hide();
		$("#fiche_salon").show();
		if ($("#phone_salon").text() == "" ) { // si le téléphone n'est pas renseigné on propose un champ permettant de l'indiquer
			$("#add_salon_phone").show();
		}
	}
	$("#search_salon").click(function() {
		$("#fiche_salon").slideUp("fast");
		$("#valid_register_salon").hide();							 
		if (storeField.val() != "") {
			// on cherche les infos du salon.
			$.ajax({
				url:  $("#store_search_url").val(),
				dataType: "html",
				type: "GET",
				data: {storeCode :storeField.val()},
				success: function(data){
						var salon = new Object();
						var d = jQuery.trim(data).split("&");
						var c ;
						for (i=0; i< d.length; i++) {
							c = d[i].split("=");
							salon[c[0]] = c[1];
						}
							if (salon.statut == "error") { // ole salon n'existe pas
								showErrorBlock($("#no_store_found").text());
								$("#fiche_salon").slideUp("fast");
							} else { // le salon est ok
								$("#output_store_code").text(" ("+storeField.val()+")");// indiquer le numéro du salon
								$("#nom_salon").text(salon.name);
								$("input[id$='ep1ihstoreName']").val(salon.name); // stockage du nom littéraire en propriété dynamique pour le remettre à dispo  facilement par webservice au moment du log de l'utilisateur
								$("#adresse_salon").html(salon.address + "<br/>" + salon.zip + " - " + salon.city);
								// on affiche le champ de saisi d'un numéro de téléphone seulement s'il est vide en base
								if (salon.phone != '' && salon.phone != undefined)  {
									$("#phone_salon").text(salon.phone);
									$("#add_salon_phone").hide();
								} else {
									$("#phone_salon").text("");
									$("#add_salon_phone").show();
									//stocker la session
									initSession();
									
								}
								// échanger l'affichage entre le formulaire et la fiche du salon trouvé
								$("#store_code_form").slideUp("fast", function() {
									$("#fiche_salon").slideDown("slow");
									$("#valid_register_salon").show();
									//passe Nein à checked par défaut ALLEMAGNE ONLY
									if(document.getElementById('_ctl0__ctl0_brandlayout0__ctl0_mainbody0__ctl0__ctl0__ctl1_ep1rlNewsletter_1'))
									{
										document.getElementById('_ctl0__ctl0_brandlayout0__ctl0_mainbody0__ctl0__ctl0__ctl1_ep1rlNewsletter_1').checked=true;
									}
								});
							}
					 }
				 });
			storeField.ajaxError(function(){
				var texte = $("#ajax_msg_error").text() + "\n(" + $("#store_search_url").val() + ")";
				showErrorBlock(texte);	
			 });
			//store_search_url
			// #no_store_found
			
		} else {
			alert($("#no_store_code").text());	
		}
	}
	);
	
	// vérification pour les salons car on  a besoin de stocker le sessionId pour permettre l'accès aux webservices 
	if ($("#output_store_code").text() != "") {
		initSession();
	}
	

	
	// modification du code client pour l'inscription en salons
	// un lien spécial permet à l'utilisateur de changer le code client
	$("#change_store_code_link").click(function() {
		$("#session_id").val("");
		$("#phone_salon").val("");
		$("#fiche_salon").slideUp("fast", function() {
			$("#valid_register_salon").hide();										 
			$("#store_code_form").slideDown("slow");								  
		});
	});
	
	
	// VALIDATION DE L'INSCRIPTION DES SALONS
	// si on a un session_id et qu'un téléphone salon a été saisi, on envoi un email
	$("#salon_valid_link").click(function() {
				capitalizeName(); 
				_setLogin();
						if ($("#session_id").val() != "" && $("#phone_salon_field").val() != "") { // on a un sessionID et un n° de téléphone
								//alert("on envoie un mail");
								var xmlFlux = "<Loreal_Reference_IN_TellAFriend>";
								xmlFlux += "<SessionID>" + $("#session_id").val() + "</SessionID>";
								xmlFlux += "<Customer><FirstName>" + $("input[id$='fname']").val() + " " + $("input[id$='lname']").val() + "</FirstName><Email>\"" + $("input[id$='fname']").val() + "\" " + $("input[id$='email']").val() + "</Email></Customer>";
								xmlFlux += "<Friend>";
								xmlFlux += "<FirstName>" + $("#auto_mail_destinataire").text() + "</FirstName><Email>\"" + $("#auto_mail_destinataire").text() + "\" " + $("#auto_mail_email").text() + "</Email>";
								xmlFlux += "</Friend>";
								xmlFlux += "<Customs>";
								xmlFlux += "<Dest>" + $("#auto_mail_destinataire").text() + "</Dest>";
								xmlFlux += "<Salon>" + $("#nom_salon").text() + "</Salon>";
								xmlFlux += "<StoreCode>" + storeField.val() + "</StoreCode>";
								xmlFlux += "<Phone>" +$("#phone_salon_field").val() + "</Phone>";
								xmlFlux += "<MailSubject>" + $("#auto_mail_subject").text() + " (" + storeField.val() + ")</MailSubject>";
								xmlFlux += "<User>" + $("input[id$='fname']").val() + " " + $("input[id$='lname']").val() + "</User>";
								xmlFlux += "<UserMail>" + $("input[id$='email']").val() + "</UserMail>";
								xmlFlux += "</Customs>";
								xmlFlux += "<TemplateName>" + $("#auto_mail_template_url").val() + "</TemplateName>";
								xmlFlux += "</Loreal_Reference_IN_TellAFriend>";
								
								//alert(xmlFlux + " \envoyé à : " + $("#tell_a_friend_url").val());
								$.ajax({
										url:  $("#tell_a_friend_url").val(),
										dataType: "text/xml",
										type: "GET",
										data : {inputData: xmlFlux},
										success: function(data) {
											//alert("Mail envoyé :\n" + data);
											eval($("#localizer a").attr("href").split("javascript:")[1]);
										}
								});	
							} else {
								//alert("on valide directement");
								//alert($("#localizer a").attr("href").split("javascript:")[1])
								eval($("#localizer a").attr("href").split("javascript:")[1]);
							}
	});
	
	
	// VALIDATION DE L'INSCRIPTION DES INTERNES
	// Vérification du code interne en fonction du statut choisi
	$("#interne_valid_link").click( function() {
		/**
			description : pour éviter de placer un bouton de vérification à côté du code interne, on va placer le lien submit généré côté serveur dans le div localizer. Au moment du click sur la validation du formulaire, on va vérifier l'exactitude du code interne par rapport à la fonction.
			Si le code est bon, on va cherche le contenu de l'attribut href du lien contenu dans le div localizer et en exécuter le contenu.
		*/

			// recherche du statut sélectionné
			/*var statutList = $("#statut :input option").get();
			var s = "";
			for (i=0; i < statutList.length ; i++) {
				if (statutList[i].selected) {
					s = statutList[i].value;
					break;
				}
			}*/
		var s = $("#select_role").val();

		var codeField = $("#loreal_code");
		if (codeField.val() != "") {
			capitalizeName();
			_setLogin();
			// on vérifie le code en fonction du status
			$.ajax({
				url:  $("#check_interne_code_url").val(),
				dataType: "html",
				type: "GET",
				data: {concat_loreal_code : s + "_" + codeField.val()},
				success: function(data){	
						var out = jQuery.trim(data);
						if ( out == "OK" ) {
							eval($("#localizer a").attr("href").split("javascript:")[1]);	
						} else {
							showErrorBlock($("#no_match_code_statut").text());
						}
					 }
				 });
			codeField.ajaxError(function(){
				var texte = $("#ajax_msg_error").text() + "\n(" + $("#check_interne_code_url").val() + ")";
				showErrorBlock(texte);	
			 });
			//store_search_url
			// #no_store_found
			
		} else {
			alert($("#no_loreal_code").text());	
		}
		
		
	});


	// lancement du service pour récupérer l'id de session
	function initSession() {
		// iniSession pour le ws TellAFriend
		//alert("initSession");
		$.ajax({
			url:  $("#init_session_url").val(),
			dataType: "text/xml",
			type: "GET",
			data : {},
			success: function(data) {
				// on attribue la valeur de sessionID
				var r = jQuery.trim(data.toLowerCase()).split("sessionid")[1];
				var s = r.substring(1,r.length);
				var t = s.substring(0,s.length-2);
					$("#session_id").val(t);
			}
		});
	}

// afficher le bloc d'erreur en surimpression sur la page
function showErrorBlock(txt) {
	if (txt) $("#intro_error_text").text(txt);
	$("#intro_error_display").fadeIn("slow", function() {
		//alert( $(document).height());

			//TODO : masquer les listes déroulantes pour les IE6-
		// bouton de fermeture
		$("#close_intro_error_btn").click(function() {
							clearTimeout();
						   $("#intro_error_display").fadeOut("fast");
			//TODO : afficher toutes les listes déroulantes
		});	
		// fermeture au bout de quelques secondes
		
		setTimeout(function(){ 
				//TODO : afficher toutes les listes déroulantes
							$("#intro_error_display").fadeOut("fast"); }, 5000);
	});	
}

// passer le nom en majuscule et forcer la majuscule de la première lettre du prénom
function capitalizeName() {
	var prenom = $("input[id$='fname']").val();
	$("input[id$='fname']").val(prenom.substring(0,1).toUpperCase() + prenom.substring(1,prenom.length)); 
	var nom = $("input[id$='lname']").val();
	$("input[id$='lname']").val(nom.toUpperCase());
}

/* ajout à la fonction de SetLogin Alsy qui n'était déclenchée que sur un onBlur*/
function _setLogin() {
	SetLogin(mailField.val());
}

});
// *********************************************************** FIN GESTION JQUERY	



// fonctions standard sans jQuery
function inscription(url,h) { // ouverture des popups d'inscription
	var pop = null;
	var param;
	if (h == undefined ) {
		h = 535;
	}
	param = "width=878,height="+h;
	pop = window.open(url,"popup",param);
	//modification Alex allemagne : en cas de présence de texte juridique supplémentaire, le formulaire sort de la pop up telle qu'elle etait configurée auparavant par cette instruction:
	//pop.resizeTo(878,h+70);
	//On rajoute donc quelques pixels à la hauteur de la pop up pour voir large
	pop.resizeTo(878,h+90);
	pop.focus();
}



////////////////////// fonctions standards Alsy (pour ne plus les voir dupliquées sur les pages) //////////////////////////
 function SetLogin(loginname) { // permet d'affecter l'email au champ caché de login
	var mf = GetMainFormName();
	if (mf==null) return;
	var login = GetElementName("login",mf)
	if (login!= null)
	document.forms[mf].elements[login].value = loginname;
} 