// 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)
	{
		//alert(labelChamps);
		$('msgBox').hide();
		
		this.errorMessage			=	'<span style="font-weight:bold">Les champs suivants ne sont pas correctement saisis:</span><br />';
		this.afficheErrorMessage	=	false;


		this.verifChecked('radio', 'civilite', 'Civilité');
		this.verifMail('mail', 'Adresse Email');
		this.verifSaisie('pwd', 'mot de passe');
		this.verifSaisie('nom', 'Nom');
		this.verifSaisie('prenom', 'Prénom');
		this.verifSaisie('date_naissance', 'Date de Naissance');
		this.verifSaisie('adr1', 'Adresse postale');
		this.verifNumber('cp', 'Code postal',5);
		this.verifSaisie('ville', 'Ville');
		this.verifSaisie('pays', 'Pays');
	
		this.verifSelected('nb_personnes_foyer', 'Nombre de personnes dans votre foyer');
		this.verifSelected('nb_enfants_foyer', 'Nombre enfants dans votre foyer');
		
		/** 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.verifSaisie('texte', 'Message');
		this.verifChecked('radio', 'civilite', 'Civilité');
		this.verifMail('mail', 'Adresse Email');
		this.verifSaisie('nom', 'Nom');
		this.verifSaisie('prenom', 'Prénom');
		this.verifSaisie('date_naissance', 'Date de Naissance');
		this.verifSaisie('adr1', 'Adresse');
		this.verifNumber('cp', 'Code postal',5);
		this.verifSaisie('ville', 'Ville');
		this.verifSaisie('pays', 'Pays');
		this.verifSaisie('nb_personnes_foyer', 'Nombre de personnes dans votre foyer');
		this.verifSaisie('nb_enfants_foyer', 'Nombre enfants dans votre foyer');
		//alert('ok');
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			//alert('titi');
			$('msgBox').update(this.errorMessage);
			$('msgBox').show();
			return false;
		}
		else{
			//alert('toto');
			$('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.verifSaisie('texte', 'Message');
		
		this.verifChecked('radio', 'civilite', 'Civilité');
		this.verifMail('mail', 'Adresse Email');
		this.verifSaisie('nom', 'Nom');
		this.verifSaisie('prenom', 'Prénom');
		this.verifSaisie('date_naissance', 'Date de Naissance');
		this.verifSaisie('adr1', 'Adresse postale');
		this.verifNumber('cp', 'Code postal',5);
		this.verifSaisie('ville', 'Ville');
		this.verifSaisie('pays', 'Pays');
		this.verifSaisie('nb_personnes_foyer', 'Nombre de personnes dans votre foyer');
		this.verifSaisie('nb_enfants_foyer', 'Nombre enfants dans votre foyer');

		
		
		/** 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();
		}
	}
}
