// 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();$('inscription').show()});
		Event.observe('formulaireMerci', 'click', function() {$('formulaireMerci').hide();$('formulaireMerci').update('');$('inscription').show()});
		
	/** Listes des fonctions à lancer après chargement de la page **/
	$('formulaireerreur').hide();
	$('formulaireMerci').hide();
	//alert($F('error1'));
	//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+$F('error1');
			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)
	
	{	
		Fmail =  ($F(idFirstM));
		Smail =  ($F(idScndM));

		if ((Fmail != Smail)&&(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').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;			
//		}
//	},

	
	/***
	*	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
	***/
	verifInscription	: function(event)
	{
		this.errorMessage			=	$F('error2');
		this.afficheErrorMessage	=	false;

		this.verifSaisie('civilite', '');
		this.verifSaisie('nom', '');
		this.verifSaisie('prenom', '');
		this.verifSaisie('societe', '');
		this.verifSaisie('tel', '');
		this.verifSaisie('mail', '');
		this.verifSaisie('conf_mail', '');
		this.verifConfMail('mail', 'conf_mail', $F('error3'));
		this.errorMessage			+=	$F('error4');			
		//this.verifSaisie('champ', '');
	/*	this.verifChecked('radio', 'q2', 'Question 2');
		this.verifChecked('radio', 'q3', 'Question 3');
		
		this.verifChecked('checkbox', 'reglement', 'Règlement');*/
		
		
		/** Si une erreur est rencontré, affichage du message d'erreur et on ne valid pas le formulaire **/
		if(this.afficheErrorMessage)
		{
			//alert(this.errorMessage);
			$('inscription').hide();
			$('formulaireerreur').update(this.errorMessage);
			$('formulaireerreur').show();
			return false;
		}else{


		//	this.validationFormAjax($('inscription').serialize(true));
		//	$('inscription').hide();
		//	$('formulaireWait').show();
		//	return false;
		return true;


		}
	},

	validationFormAjax : function(params){		
		$('inscription').request({
		  method: 'post',
		  //parameters: { interests:'JavaScript', 'hobbies[]':['programming', 'music'] },
		  onSuccess: function(){ 
				  $('inscription').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.');
				  $('formulaireWait').hide();
				  $('formulaireMerci').update($F('merci'));
				  $('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();
		  }
})
	}

	
	
	
}