// 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('enfant', 'change', function() {controlFormulaire.afficheAge($F('enfant'))});
		Event.observe('formulaireerreur', 'click', function() {$('formulaireerreur').hide();});
		Event.observe('formulaireMerci', 'click', function() {$('formulaireMerci').hide();$('formulaireMerci').update('');});
		
	/** Listes des fonctions à lancer après chargement de la page **/
	$('formulaireerreur').hide();
	$('formulaireMerci').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)
	{
		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)
	{
//		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;
		
		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){	
			//alert (idFirstM);	
		Fmail =  ($F(idFirstM));
		Smail =  ($F(idScndM));

		if ((Fmail != Smail)){
		//alert ($F(idScndM));			
			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	=	$('form_contact').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
	***/
	verifContact	: function(event)
	{
		
		this.errorMessage			=	"<span style='color:#f00'><b>Attention!</b></span>";
		
		this.afficheErrorMessage	=	false;
		this.errorMessage			+=	"<br><br>Vous avez oubli&eacute; de nous indiquer :<br><br>";
		//alert (this.errorMessage);
		//this.verifChecked('radio', 'civilite', '-&nbsp;Votre civilit&eacute;');
		
		//this.verifConfMail('mail','conf_mail', '<br><br>Le champ de confirmation d\'email est incorect ou manquant');		
		this.verifSaisie('nom', '-&nbsp;Votre nom<br>');
		this.verifSaisie('prenom', '-&nbsp;Votre pr&eacute;nom<br>');
		this.verifMail('mail', '-&nbsp;Votre email (incorrect ou manquant)<br>');
		this.verifSaisie('besoin', '-&nbsp;Votre message<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)
		{
			//$('inscription').hide();
			$('erreurContent').update(this.errorMessage);
			$('formulaireerreur').show();
			//$('form_contact').disable();
			return false;
		}else{
			this.validationFormAjax($('form_contact').serialize(true));
			return false;
		}
	},

	validationFormAjax : function(params){		
		$('form_contact').request({
		  method: 'post',
		  //parameters: { interests:'JavaScript', 'hobbies[]':['programming', 'music'] },
		  onSuccess: function(){ 
				  $('form_contact').reset();
				  //$('choix1').update('');
				  //$('choix2').update('');
				  //$('choixInput1').value='';
				  //$('choixInput2').value='';
				  //alert('Merci, votre demande a bien \351t\351 prise en compte par la centrale de r\351servation de Morzine.');
				  $('merciContent').update('Votre message a bien été envoyé.');
				  $('formulaireMerci').show();
				 // alert('Form data saved!') 
		  },
		  onFailure: function(response){
			  $('formulaireerreur').hide();
			  $('formulaireMerci').update(response.text);
			  $('formulaireMerci').show();
		  },
		  onException: function(response){
			  $('formulaireerreur').hide();
			  $('formulaireMerci').update(response.text);
			  $('formulaireMerci').show();
		  }
})
	}
	
}