/*
 * Contrôle et envoi d'un formulaire
 *
 */
// ******************************************************************************
// Paramètres
var Psr1; // espace de nom
if (!Psr1) Psr1 = {};
// Données du formulaire : id, requis, regexp, message  ///^(-[a-z0-9]+\.)*(-[a-z0-9]+)@((-[a-z0-9]+)\.)+[a-z]{2,6}$/i
Psr1.input = [
	{id:"#nom", requis:true, reg:"", messageRequis:"Nom obligatoire", messageReg:""},
	{id:"#email", requis:true, reg:/^([a-z0-9-]+\.)*([a-z0-9-]+)@(([a-z0-9-]+)\.)+[a-z]{2,6}$/i, messageRequis:"Email obligatoire", messageReg:"Email Syntaxe incorrecte"},
	{id:"#codepostal", requis:false, reg:/^[0-9]{5}$/i, messageRequis:"", messageReg:"Code postal incorrect"}
];
Psr1.form = "#form1";  // Id formulaire
Psr1.btn = "#btn1";	 // Id bouton d'envoi
Psr1.message = "#message"; // Id espace de message 
Psr1.classError = "inputError"; // Classe d'erreur		  
Psr1.script = "include/PSR_Form.php"; // Script PHP de traitement
Psr1.container = "#mainContent"; // conteneur de l'ensemble
  
// ******************************************************************************
// Traitement
$(Psr1.form).submit ( function() { return false } ) ; //  ne pas envoyer le formulaire par submit
$(Psr1.btn).click( function() {

	// Effacer des CSS erreur dans le formulaire - formulaire OK
	$(Psr1.form + " :input").removeClass(Psr1.classError);
		
	// function afficher le message - masquer le formulaire
	Psr1.afficher = function (messageHtml){
		$(Psr1.container).css("height",$(Psr1.container).height() + "px" ); // Fixer la hauteur du conteneur
		heightFom = $(Psr1.form).height();// Hauteur du formulaire à remplacer
		$(Psr1.message).html("<p>" + messageHtml + "</p>");
		$(Psr1.message + " p").css({ 
			textAlign:"center",
			marginTop: (heightFom/2 - 70) + "px"
		});
		$(Psr1.form).css("display","none");
	}
	// Tester les données du formulaire
	var tabError = new Array();	// tableau des erreurs
	// Détecter les erreurs
	for(i=0; i < Psr1.input.length; i++) {
		if ($(Psr1.input[i].id).val() == "" ) {
			if (Psr1.input[i].requis == true ){ // champ requis
				tabError.push({name:Psr1.input[i].id , message: Psr1.input[i].messageRequis });
				$(Psr1.input[i].id).addClass(Psr1.classError);
			}
		} else {
			if ( Psr1.input[i].reg != "" &&  ! Psr1.input[i].reg.test( $(Psr1.input[i].id).val() ) ){ // champ regexp
				tabError.push({name:Psr1.input[i].id , message: Psr1.input[i].messageReg });
				$(Psr1.input[i].id).addClass(Psr1.classError);
			}
		}
	}
	// Tester et afficher les erreurs
	if (tabError.length > 0) {
		var messageOut = "";					
		for(i in tabError) {
			messageOut += tabError[i].message + "\n" ;
		}
		alert(messageOut);
		return false; // sortir si il y a des erreurs
	}
					   
	// Envoyer le formulaire					   
	var out = $(Psr1.form).serialize() ; 
	Psr1.afficher("En envoi..."); //  charger le message d'attente
	//$(Psr1.btn).attr("disabled","disabled"); // désactiver le bouton
	 $.ajax({
	   type: "POST",
	   url: Psr1.script,
	   data: out,
	   dataType : "xml",
	   timeout: 6000,
	   success: function(objXML, textStatus){
		   var reponse = $("message",objXML).text() ;
		   if (reponse == "OK") {
			   Psr1.afficher( "Merci pour votre envoi !" );
		   } else {
				Psr1.afficher(reponse);   
		   }
   		},
		error: function(XHR, textStatus){
		   Psr1.afficher("Erreur état : " + textStatus );
   		}	
	});
});
