// JavaScript Document
document.observe("dom:loaded", function() {
	/**	Liste des observe à lancer après chargement de la page 
		Event.observe('idAOberser', 'actionAObserver', function() {fonctionALancer()}); 
	**/		
		//Event.observe('enfant', 'change', function() {controlFormulaire.afficheAge($F('enfant'))});
		//Event.observe('msgBox', 'click', function() {$('msgBox').hide();});
		
	/** Listes des fonctions à lancer après chargement de la page **/
	//$('msgBox').hide();
	//$('ageenfantzone').hide();
	
	//controlFormulaire.load();
});



controlFormulaire = {
	/***
	*	function	initilalise les variables de l'objet
	***/
	load	: function()
	{
	},

	/***
	*	function	control qu'un contenu existe pour un élément et prépare le message d'erreur
	*	@param		String		idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifSaisie	: function(idChamps, labelChamps)
	{
		//alert(labelChamps);
		if(!$(idChamps).present())
		{
			this.errorMessage			+=	labelChamps+", ";
			this.afficheErrorMessage	=	true;			
		}
	},
	
	
	verifSelected: function(idChamps, labelChamps)
	{
		//alert(labelChamps);
		if(!$(idChamps).value != "")
		{
			this.errorMessage			+=	labelChamps+", ";
			this.afficheErrorMessage	=	true;			
		}
	},

	/***
	*	function	control qu'une date est valide
	*	@param		String		idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifDate	: function(idChamps, labelChamps)
	{
//		alert(labelChamps);
		var dateRegEx = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
		
		if(!$F(idChamps).match(dateRegEx))
		{
			this.errorMessage			+=	labelChamps+", ";
			this.afficheErrorMessage	=	true;			
		}
	},

	/***
	*	function	control que l'e-mail est valide
	*	@param		String		idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifMail	: function(idChamps, labelChamps)
	{
		erreur	=	false;
//		alert(labelChamps);
//		ok = "/1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";
//		for(i=0; i < $F(idChamps).length ;i++)
//		{ 
//			if(ok.indexOf($F(idChamps).charAt(i))<0)
//			{ 
//				erreur	=	true;
//			} 
//		} 
//		test	=	$F(idChamps);
//		re 		= 	/(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
//		re_two 	= 	/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{2,6})(\]?)$/;
		//alert(test.match(re_two));
		
		var regEmail = /^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@([a-zA-Z0-9-]{2,}[.])+[a-zA-Z]{2,}$/;
		var verifEmail = regEmail.test($F(idChamps));

		if (!verifEmail)
		{
			this.errorMessage			+=	labelChamps+", ";
			this.afficheErrorMessage	=	true;			
		}
		
	},

	/***
	*	function	control que l'un des champs radio ou checkbox est coché et prépare le message d'erreur
	*	@param		String		typeInput : le type de l'input (radio/checkbox)
	*	@param		String		nameChamps : le name du champs input
	*	@param		String		labelChamps : le label du champs.
	***/
	verifChecked : function(typeInput, nameChamps, labelChamps)
	{
	//	alert(labelChamps);
		var test	=	$('formulaire').getInputs(typeInput, nameChamps).find(function(re) { return re.checked; });
		if(!$(test))
		{		
			this.errorMessage			+=	labelChamps+", ";
			this.afficheErrorMessage	=	true;			
		}
	},
	
	/***
	*	function	control que la saisie soit numérique et de la taille attendu et prépare le message d'erreur
	*	@param		String		nbChiffre : le nombre de chiffre que doit comporter la saisie si > 0.
	*	@param		String		idChamps : idChamps : l'id du champs à controler.
	*	@param		String		labelChamps : le label du champs.
	***/
	verifNumber : function(idChamps, labelChamps, nbChiffre)
	{
		if(isNaN($F(idChamps)) || Math.round($F(idChamps)) != $F(idChamps) || $F(idChamps).length != nbChiffre )
		{		
//			alert(labelChamps);
			this.errorMessage			+=	labelChamps+", ";
			this.afficheErrorMessage	=	true;			
		}
	},
	
	
	verifEgality : function(idChamps1, idChamps2, labelChamps)
	{
		if($(idChamps1).value !=  $(idChamps2).value || !$(idChamps1).present())
		{		
//			alert(labelChamps);
			this.errorMessage			+=	labelChamps+", ";
			this.afficheErrorMessage	=	true;			
		}
	},

	
	/***
	*	function	effectue divers controles sur les champs du formulaire
	*	@return		Boolean		retourne true, si tous les controles sont passés / False : affiche un message d'erreur indiquant les champs erronés
	***/
	verifFormulaire	: function(num)
	{
		$('msgBox').hide();
		
		this.errorMessage			=	'<span style="font-weight:bold">Les champs suivants ne sont pas correctement saisis:</span><br />';
		this.afficheErrorMessage	=	false;

		this.verifEgality('sMdp','sMdp2','Mots de passe')

		this.verifMail('sMail', 'Adresse email');
		this.verifSaisie('sNom', 'Nom');
		this.verifSaisie('sPrenom', 'Prénom');
		this.verifSaisie('sRue', 'Adresse postale');
		this.verifNumber('sCP', 'Code postal',5);
		this.verifSaisie('sVille', 'Ville');
		
		this.verifNumber('sAnneeN', 'Date de naissance',4);
		
		//this.verifDate('votrenaissance', 'Votre date de naissance');
		
		this.verifChecked('checkbox', 'mentions_leg', 'Mentions légales');
		
		
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			
			$('msgBox').update(this.errorMessage);
			$('msgBox').show();
			return false;
		}
		else{
			$('msgBox').update("");
			$('msgBox').show();
			valid_form_inscription();
		}
	},
	
	
	verifFormulaireContact	: function()
	{
		$('msgBox').hide();
		
		this.errorMessage			=	'<span style="font-weight:bold">Les champs suivants ne sont pas correctement saisis:</span><br />';
		this.afficheErrorMessage	=	false;

		this.verifMail('email', 'Adresse email');
		this.verifSaisie('nom', 'Nom');
		this.verifSaisie('prenom', 'Prénom');
		this.verifSaisie('adresse', 'Adresse postale');
		this.verifNumber('cp', 'Code postal',5);
		this.verifSaisie('ville', 'Ville');
		this.verifSaisie('tel', 'Téléphone');
		
		
		this.verifSaisie('texte', 'Message');
		
		
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			
			$('msgBox').update(this.errorMessage);
			$('msgBox').show();
			return false;
		}
		else{
			$('msgBox').update("Envoi en cours...");
			$('msgBox').show();
			
			valid_form_contact();
			
		}
	},
	
	
	
	verifFormulaireReclam	: function()
	{
		$('msgBox').hide();
		
		this.errorMessage			=	'<span style="font-weight:bold">Les champs suivants ne sont pas correctement saisis:</span><br />';
		this.afficheErrorMessage	=	false;
		
		this.verifSelected('produit', 'Produit');
		this.verifSelected('conditionnement', 'Conditionnement');
		this.verifSelected('contenance', 'Contenance');
		this.verifSelected('grammage', 'Grammage');

		this.verifMail('email', 'Adresse email');
		this.verifEgality('email','email2','Les emails doivent être indentiques');
		this.verifSaisie('nom', 'Nom');
		this.verifSaisie('prenom', 'Prénom');
		this.verifSaisie('adresse', 'Adresse postale');
		this.verifNumber('cp', 'Code postal',5);
		this.verifSaisie('ville', 'Ville');
		
		
		this.verifNumber('jour', 'Jour (date limite)',2);
		this.verifNumber('mois', 'Mois (date limite)',2);
		this.verifNumber('annee', 'Année (date limite)',2);
		
		this.verifSaisie('lettre', 'Lettre attenante à la DLC');
		this.verifSaisie('numero_1', 'Numéro de lot');
		this.verifSaisie('numero_2', 'Numéro de l\'ovale sanitaire');
		
		this.verifSaisie('texte', 'Message');
		
		
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			
			$('msgBox').update(this.errorMessage);
			$('msgBox').show();
			return false;
		}
		else{
			$('msgBox').update("Envoi en cours...");
			$('msgBox').show();
			valid_form_contact();
		}
	}
}