// Une fois le chargement de la page terminé ...
$(document).ready( function()
{
	//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	// FONCTIONS DE BASE
	//////////////////////////////////////////////////////////////////////////////////////////////				
	//============================================================================
	// Positionne le focus sur un champ de formulaire
	//============================================================================
	function MC_SetFocus(p_strIdChamp)
	{
		$("#"+p_strIdChamp).focus();
	}
	//============================================================================
	// Vérifie la validité d'une adresse email
	//============================================================================
	function MC_VerifEmail(p_strEmail)  
	{ 
		var RegExp = /^[a-z0-9._-]+@[a-z0-9.-]{1,}[.][a-z]{2,3}$/i; 
		
		return RegExp.test(p_strEmail); //Renvoie Vrai si la chaine vérifie l'expression régulière ci-dessus
	}
	//============================================================================
	// Met en évidence les champs qui sont mal renseignés dans le formulaire
	//============================================================================
	function MC_SignaleErreur(p_strIdChamp, p_blnSignaleErreur)
	{
		if(p_blnSignaleErreur)
		{
			$("#"+p_strIdChamp).css({border: '2px solid red'});
			$("label[for='"+p_strIdChamp+"']").css({color: 'red'});
		}
		else
		{
			$("#"+p_strIdChamp).css({border: '1px solid #333'});
			$("label[for='"+p_strIdChamp+"']").css({color: ''});
		}
	}
	//============================================================================
	// Affiche un message en cas d'erreur de saisie dans le formulaire
	//============================================================================
	function MC_AfficheErreur(p_strIdChamp, p_strMsg)
	{
		$("#"+p_strIdChamp).html(p_strMsg);
		$("#"+p_strIdChamp).show();
	}
	//============================================================================
	// Réactualise l'image codée dans le captcha
	//============================================================================
	function MC_ResetCaptcha(p_strIdCaptcha)
	{
		var dteDate	 = new Date();
		var strImage = $("#"+p_strIdCaptcha).attr('src');
		var objImage = new Image();
		//astuce : ajout du paramètre "idunique" (le nom donné ici importe peu) à la source
		//de l'image ; sa valeur est un n° unique ==> but: forcer le navigateur à recharger
		//l'image depuis le serveur
		//sans cela, l'image n'est pas réactualisée !!
		objImage.src = $("#"+p_strIdCaptcha).attr('src')+"&idunique="+dteDate.getTime();
		$(objImage).load(
			function()
			{
				$("#"+p_strIdCaptcha).attr('src',objImage.src);
			}
		);
	}
	//============================================================================
	// Efface les données du formulaire 
	//============================================================================
	function MC_ResetForm(p_strIdForm)
	{
		var strIdChamp = '';
		
		$("input[type=text]", document.forms[p_strIdForm]).each(function(){					
			$(this).val('');	//Efface le contenu du champ
			
			strIdChamp = $(this).attr("id");
			MC_SignaleErreur(strIdChamp, false);	//Réinitialse le css du champ
		});
		
		$("input[type=radio]:first", document.forms[p_strIdForm]).attr('checked',true);
		
		$("#NL_FormMsg").empty();
	}
	//============================================================================
	// Affichage du formulaire 
	//============================================================================
	function MC_ShowForm(p_strIdForm)
	{	
		MC_ResetForm("NL_Form");
		$("#NL_overlay").show();
		$("#NL_Box").slideToggle("slow", 
			//positionne le focus sur le champ Email
			function()
			{
				MC_SetFocus("NL_txtEmail");
			}
		);
		// if($("#NL_Box").is(':visible')){
			// $("a.classNL").addClass("menu_on");
			// MC_SetFocus("NL_txtEmail");
		// }
		// else{
			// $("a.classNL").removeClass("menu_on");
		// }
	}
	//============================================================================
	// Fermeture du formulaire 
	//============================================================================
	function MC_HideForm(p_strIdForm)
	{
		MC_ResetForm(p_strIdForm);
		$("#NL_Box").slideToggle("slow",function(){
			$("#NL_overlay").hide();		
		});
	}
	//============================================================================
	// Affiche un message à la fin de la soumission du formulaire 
	//============================================================================
	function MC_AfficheMessage(p_strMsg)
	{
		$("#NL_filterBox p").html(p_strMsg);
		$("#NL_filterBox").css({"display":"block"});
		
		$("#NL_filterBox p").fadeTo("slow",1,function(){
			setTimeout(function(){
				$('#NL_filterBox').css({"display":"none"});
				$("#NL_filterBox p").empty();												
				MC_ResetForm("NL_Form");
				MC_ResetCaptcha("NL_imgCaptcha");
				$("#NL_Box").slideToggle("slow");
				$("#NL_overlay").hide();
			}, 500);
		});
	}

	//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	// ACTIONS
	//////////////////////////////////////////////////////////////////////////////////////////////
	//============================================================================
	// Affiche le formulaire
	//============================================================================
	$("a.classNL").click( function (){
		MC_ShowForm("NL_Form");
	});

	//============================================================================
	// Masque le formulaire
	//============================================================================
	$("#NL_Form").bind("reset", function(){
		MC_HideForm("NL_Form");

		return false;
	});

	//============================================================================
	// Réactualise le captcha
	//============================================================================
	$("a.classNL_refreshCaptcha").click(function(){
		MC_ResetCaptcha("NL_imgCaptcha");
	});
	
	//============================================================================
	//Traitement ajax du formulaire
	//============================================================================
	function MC_CheckFormByAjax(p_strIdForm, p_strFormAction, p_strFormParam){
		$.ajax({
			type: "POST",
			url: p_strFormAction,
			data: p_strFormParam,
			success: function(strCodeRetour){
				switch (strCodeRetour)
				{
					case 'OK':
						//Tout est OK : l'inscription ou la désinscription s'est correctement effectuée	
						if($("#"+p_strIdForm+" input[name=NL_optSouhait]:checked").val() == 1)
						{										
							MC_AfficheMessage("Votre demande d'abonnement a été correctement traitée");
						}
						else
						{
							MC_AfficheMessage("Votre demande de désinscription a été correctement traitée");
						}
							
//						MC_ResetForm(p_strIdForm);
//						MC_ResetCaptcha("NL_imgCaptcha");
//						$("#NL_Box").slideToggle("slow");
						break;
						
					case 'CODE':
						//Le code de sécurité fourni ne correspond pas à celui qui a été généré !
						MC_SignaleErreur("NL_txtCode",true);
						MC_AfficheErreur("NL_FormMsg","Le code de sécurité doit être correctement indiqué !");
						MC_SetFocus("NL_txtCode");
						break;

					case 'EMAIL1':
						//Erreur dans l'adresse email !
						MC_SignaleErreur("NL_txtEmail",true);
						MC_AfficheErreur("NL_FormMsg","L'adresse email ne semble pas correctement saisie !");
						MC_SetFocus("NL_txtEmail");
						break;

					case 'EMAIL2':
						//Inscription demandée mais déjà inscrit !
						MC_SignaleErreur("NL_txtEmail",true);
						MC_AfficheErreur("NL_FormMsg","Vous êtes déjà inscrit avec l'adresse indiquée !");
						MC_SetFocus("NL_txtEmail");
						break;

					case 'EMAIL3':
						//Désinscription demandée mais email inexistant !
						MC_SignaleErreur("NL_txtEmail",true);
						MC_AfficheErreur("NL_FormMsg","L'adresse email indiquée n'est pas référencée !");
						MC_SetFocus("NL_txtEmail");
						break;

					default:
						//MC_AfficheErreur("NL_FormMsg","Les données fournies sont incorrectes. Recommencez !");
						MC_AfficheErreur("NL_FormMsg",strCodeRetour);
						MC_SetFocus("NL_txtEmail");
						break;
				}
			}
		});
	}

	//============================================================================
	// Vérification du formulaire
	//============================================================================
	$("#NL_Form").bind("submit", function(){
		var blnSubmit = true;
		var strCasErreurs = '';
		var strMsgErreur = '';
		var strIdChamp = '';
		var strVal = '';
		
		//------------------------------------------------------------------------
		//Vérifie si l'email est correct
		//------------------------------------------------------------------------
		strIdChamp = "NL_txtEmail";
		strVal = $.trim($("#"+strIdChamp).val());
		if(MC_VerifEmail(strVal))
		{
			//OK
			MC_SignaleErreur(strIdChamp, false);
			strCasErreurs += '0';
		}
		else
		{
			//Erreur
			MC_SignaleErreur(strIdChamp, true);
			strCasErreurs += '1';
			strMsgErreur += "L'email doit être correctement saisi !<br />";
			blnSubmit = false;
		}
		
		//-----------------------------------------------------------------------
		//Vérifie si le code de sécurité est saisi
		//-----------------------------------------------------------------------
		strIdChamp = "NL_txtCode";
		strVal = $.trim($("#"+strIdChamp).val());
		if(strVal.length != 0)
		{
			//OK
			MC_SignaleErreur(strIdChamp, false);
			strCasErreurs += '0';
		}
		else
		{
			//Erreur
			MC_SignaleErreur(strIdChamp, true);
			strCasErreurs += '1';
			strMsgErreur += "Le code de sécurité doit être précisé !<br />";
			blnSubmit = false;
		}
							
		if(!blnSubmit)
		{
			MC_AfficheErreur("NL_FormMsg",strMsgErreur);
			switch (strCasErreurs)
			{
				case '10':
				case '11':
					MC_SetFocus("NL_txtEmail");
					break;
					
				case '01':
					MC_SetFocus("NL_txtCode");
					break;
			}
		}
		else
		{
			var strIdForm = $(this).attr("id");
			var strFormAction = $(this).attr("action");
			var strParam = $(this).serialize();
			MC_CheckFormByAjax(strIdForm, strFormAction, strParam);			
		}
		
		return false;
	});
	
	if($("#NL_Box").is(':visible'))
		MC_SetFocus("NL_txtEmail");
});

