// JavaScript Document// 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('formulaireerreur', 'click', function() {$('formulaireerreur').hide();});
		Event.observe('formulaireMerci', 'click', function() {$('formulaireMerci').hide();});
		
	/** Listes des fonctions à lancer après chargement de la page **/
	$('formulaireerreur').hide();
	$('formulaireMerci').hide();
});



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)
	{
		if(!$(idChamps).present())
		{
			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)
	{
		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;
		
		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 2 mails sont identiques
	*	@param		String		idFirstM : l'id du champs du 1er mail.
	*	@param		String		idScndM : l'id du champs du 2eme mail.	
	*	@param		String		labelChamps : le label du champs.
	***/
	verifConfMail	: function(idFirstM, idScndM, labelChamps){	
		Fmail =  ($F(idFirstM));
		Smail =  ($F(idScndM));

		if ((Fmail != Smail)){
			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)
	{
		var test	=	$('form_devis').getInputs(typeInput, nameChamps).find(function(re) { return re.checked; });
		if(!$(test))
		{		
			this.errorMessage			+=	labelChamps+"<br />";
			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;			
//		}
//	},

	
	/***
	*	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
	***/
	verifDevis	: function(event)
	{
		
		this.errorMessage			=	"<span style='color:red;'>Attention!</span>";
		this.afficheErrorMessage	=	false;
		this.errorMessage			+=	"<br><br>Vous avez oubli&eacute; de nous indiquer :<br><br>";
		this.verifChecked('radio', 'civilite', '-&nbsp;Votre civilit&eacute;');
		this.verifMail('mail', '-&nbsp;Votre email (incorrect ou manquant)<br>');
		
		this.verifSaisie('nom', '-&nbsp;Votre nom<br>');
		this.verifSaisie('prenom', '-&nbsp;Votre pr&eacute;nom<br>');
		this.verifSaisie('adresse', '-&nbsp;Votre adresse<br>');
		this.verifSaisie('cp', '-&nbsp;Votre code postal<br>');
		this.verifSaisie('ville', '-&nbsp;Votre ville<br>');
		this.verifSaisie('tel', '-&nbsp;Votre t&eacute;l&eacute;phone<br>');		
		this.verifSaisie('travaux', '-&nbsp;La nature des travaux<br>');
		this.verifSaisie('besoin', '-&nbsp;Votre besoin<br>');
		this.verifSaisie('societe', '-&nbsp;La soci&eacute;t&eacute; la	plus proche de chez vous<br>');
		

		
		
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			$('erreurContent').update(this.errorMessage);
			$('formulaireerreur').show();
			return false;
		}else{
			this.validationFormAjax($('form_devis').serialize(true));
			return false;
		}
	},

	validationFormAjax : function(params){		
		$('form_devis').request({
		  method: 'post',
		  onSuccess: function(){ 
				  $('form_devis').reset();
				  $('merciContent').update('<br>Nous avons bien reçu votre demande de devis que nous étudions dans les meilleurs délais. <br><br>Nous vous remercions de votre confiance.');
				  $('formulaireMerci').show();
		  },
		  onFailure: function(response){
			  $('formulaireerreur').hide();
			  $('formulaireMerci').update(response.text);
			  $('formulaireMerci').show();
		  },
		  onException: function(response){
			  $('formulaireerreur').hide();
			  $('merciContent').update(response.text);
			  $('formulaireMerci').show();
		  }
})
	}
	
}