/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// INITIALISATION DU DEVIS                                                                                                                                                         //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////
// VARIABLES //
///////////////
var maxNombreEnfants = 0;     // Nombre maximum d'adultes par chambre
var maxNombreAdultes = 0;     // Nombre maximum d'enfants par chambre
var placesChambre    = 0;     // Nombre maximum de personnes par chambre
var devisEnvoye      = false; // Variable enregistrant si le devis a été envoyé

////////////////////
// INITIALISATION //
////////////////////
$(function(){
	
	// Enregistrement des valeurs concernant l'hôtel
	maxNombreAdultes = parseInt($("input#AdultesParChambre").val()); // Nombre maximum d'adultes par chambre
	maxNombreEnfants = parseInt($("input#EnfantsParChambre").val()); // Nombre maximum d'enfants par chambre
	placesChambre    = maxNombreAdultes + maxNombreEnfants;          // Nombre de places dans la chambre au maximum

});

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// PREMIERE ETAPE DU DEVIS DE DROITE                                                                                                                                               //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////
// ECOUTEUR DE VALIDATION DU PREMIER FORMULAIRE //
//////////////////////////////////////////////////
// Vérification des données entrées lors de la validation du formulaire.
// S'il n'y a pas de problème : envoi du formulaire en ajax pour afficher la seconde étape.
$(function(){$("form#devisDroite").submit(function(){
	
	// Variable de test de conformité de formulaire
	var erreur = false; // D'origine sur faux (inexistante)
	
	//=====================================
	// Vérification du numéro de téléphone
	//=====================================
	var expression = new RegExp(/^[\+\0400123456789]{10,}$/);        // Création de l'expression régulière
	if ($("form#devisDroite input#Phone").val().match(expression)) { // Si la valeur entrée correspond
		$(".erreurTelephone").hide();                                //     Suppression du message d'erreur
	} else {                                                         // Sinon
		$(".erreurTelephone").show();                                //     Affichage du message d'erreur
		erreur = true;                                               //     Enregistrement de l'erreur
	}                                                                // -
	
	//=====================
	// Vérification du nom
	//=====================
	if ($("form#devisDroite input#Name").val().length<2) { // Si le nom est inférieur à deux caractères
		$(".erreurNom").show();                           //     Affichage du message d'erreur
		erreur = true;                                    //     Enregistrement de l'erreur
	} else {                                              // Sinon
		$(".erreurNom").hide();                           //     Suppression du message d'erreur
	}                                                     // -
	
	//=================================
	// Vérification de l'adresse email 
	//=================================
	var expression = new RegExp(/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$/); // Création de l'expression régulière
	if ($("form#devisDroite input#Email").val().match(expression)) { // Si la valeur entrée correspond
		$(".erreurMail").hide();                                     //     Suppression du message d'erreur
	} else {                                                         // Sinon
		$(".erreurMail").show();                                     //     Affichage du message d'erreur
		erreur = true;                                               //     Enregistrement de l'erreur
	}                                                                // -
	
	//===================================
	// Vérification de la date souhaitée 
	//===================================
	var dateChoisie = "";                                          // Initialisation de la variable contenant la date de séjour souhaité
	var valeur8 = $("form#devisDroite select#sejour8").val();      // Récupération de l'éventuelle valeur d'un séjour d'une semaine
	var valeur15 = $("form#devisDroite select#sejour15").val();    // Récupération de l'éventuelle valeur d'un séjour de deux semaines
	var valeurautre = $("form#devisDroite select#sejourautre").val();    // Récupération de l'éventuelle valeur d'un séjour de deux semaines
	
	if (valeur8!=undefined && valeur8!="" && valeur8!="vide") {    // Si la valeur du champs de séjours d'une semaine est valide
		dateChoisie = $("form#devisDroite select#sejour8").val();  //     Enregistrement de la valeur
	}                                                              // -
	if (valeurautre!=undefined && valeurautre!="" && valeurautre!="vide") { // Si la valeur du champs de séjours de deux semaines est valide
		dateChoisie = $("form#devisDroite select#sejourautre").val(); //     Enregistrement de la valeur
	}                                                              // -
	
	if (valeur15!=undefined && valeur15!="" && valeur15!="vide") { // Si la valeur du champs de séjours de deux semaines est valide
		dateChoisie = $("form#devisDroite select#sejour15").val(); //     Enregistrement de la valeur
	}
	
	if (dateChoisie=="") {                                         // Si aucune valeur n'a été enregistrée
		erreur = true;                                             //     Enregistrement de l'erreur
		$(".erreurSejour").show();                                 //     Affichage du message d'erreur
	} else {                                                       // Sinon
		$(".erreurSejour").hide();                                 //     Suppression du message d'erreur
	}                                                              // -
	
	//==========================
	// Validation du formulaire 
	//==========================
	// Uniquement s'il n'y a pas d'erreur
	if (!erreur) {
		
		// Envoi des données en ajax, réception du formulaire de l'étape 2 et affichage
		$.ajax({
			type: 'POST',                                  // Envoi en POST
			url:  '414.html',                              // Page traitant la première étape
			data: {                                        // Envoi de la liste des valeurs à envoyer
				nombreAdultes:$("select#Adults").val(),    //     Nombre d'adultes
				nombreEnfants:$("select#Childrens").val(), //     Nombre d'adultes
				nombreBebes:$("select#Babys").val(),       //     Nombre de bébés
				nombreChambres:$("select#Chambres").val(), //     Nombre de chambres
				idOffre:$("input#LmaOfferID").val(),       //     Id de l'offre
				dates:dateChoisie,                         //     Dates du séjour
				email:$("input#Email").val(),              //     Email
				telephone:$("input#Phone").val(),          //     Téléphone
				nom:$("input#Name").val(),                 //     Nom
				villeDepart:$("select#LmaCitiesID").val()  //     Ville de départ
			},                                             // -
			success: function(resultat) {                  // A la réussite
				$("html, body").scrollTop(0);              //     Scroll de la page vers le haut
				$("div#suiteDevis").html(resultat);        //     Ecriture du resultat
				$("div#suiteDevis").show();                //     Affichage
				initialiseChambres();                      //     Initialisation des répartiteurs dans les chambres
			}                                              // -
		});
		
	}
	
	// Arrêt de l'envoi classique du formulaire
	return false;
	
});});

//////////////////////////////////
// CHANGEMENT DE DATE DE SEJOUR //
//////////////////////////////////
//  Lorsque l'utilisateur change la date de séjour, s'il choisi une date de 8 jours, il faut supprimer les dates de 15 jours, et
// vice-versa.
$(function(){$("select#sejour8, select#sejour15").change(function(){
	
	// Si la fonction est appelée suite à une mise à 0 : on quitte
	if ($(this).val()=="" || $(this).val()=="vide") return false;
	
	// Mise à zero de l'autre select que celui modifié
	if ($(this).attr("id")=="sejour8") {  // Si l'on change sejour8
		$("select#sejour15").val("vide"); //     Raz de sejour15
	} else {                              // Sinon
		$("select#sejour8").val("vide");  //     Raz de sejour8
	}                                     // -

});})

//////////////////////////////////////////
// CALCUL DU NOMBRE MINIMUM DE CHAMBRES //
//////////////////////////////////////////
// Au changement du nombre de personnes participant au voyage ou du nombre de chambre (vérification du nombre minimum)
$(function(){$("select#Adults, select#Childrens, select#Chambres").change(function(){
		
	// Récupération des valeurs
	var nombreAdultes = parseInt($("select#Adults").val());
	var nombreEnfants = parseInt($("select#Childrens").val());
	
	// Calcul du nombre minimum de chambres
	var nombreChambreMiniAdultes = Math.ceil( nombreAdultes / parseInt($("input#AdultesParChambre").val()) );
	var nombreChambreMiniEnfants = Math.ceil( (nombreEnfants+nombreAdultes) / (parseInt($("input#EnfantsParChambre").val())+parseInt($("input#AdultesParChambre").val())) );
	
	// Selection de la chambre minimum si la valeur actuelle est en dessous
	if ( parseInt($("select#Chambres").val()) < Math.max(nombreChambreMiniAdultes, nombreChambreMiniEnfants)) {
		$("select#Chambres").val(Math.max(nombreChambreMiniAdultes, nombreChambreMiniEnfants));
	}
		
});});

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SECONDE ETAPE DU DEVIS DE DROITE                                                                                                                                                //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////
// INITIALISATION DE LA REPARTITION DES PERSONNES //
////////////////////////////////////////////////////
// Initialisation des fonctions du configurateur
function initialiseChambres() {

	//===============================================
	// Fonction d'ajout d'un adulte dans une chambre 
	//===============================================
	$("a.boutonPlusDevisAdultes").mousedown(function(){
															 
		// Récupération des variables nécessaires
		var nombreAdultesActuel = parseInt($("input#nombreAdultes"+$(this).attr("num")).val()); // Nombre d'adultes
		var nombreEnfantsActuel = parseInt($("input#nombreEnfants"+$(this).attr("num")).val()); // Nombre d'enfants
		
		//  Vérification de la possibilité d'ajouter un adulte
		if ((nombreAdultesActuel<maxNombreAdultes)                                                    // S'il reste des places adultes
		&& (parseInt($("input#NombreAdultesRestants").val())>0)                                       // S'il reste des adultes à placer
		&& (placesChambre>(nombreAdultesActuel+nombreEnfantsActuel))) {                               // S'il reste des places dans la chambres
			$("input#NombreAdultesRestants").val(parseInt($("input#NombreAdultesRestants").val()-1)); //     Définition du total d'adultes restant
			$("input#nombreAdultes"+$(this).attr("num")).val(nombreAdultesActuel+1);                  //     Définition de la valeur actuelle
			dessineOccupants($(this).attr("num"));                                                    //     Dessin des occupants
		}                                                                                             // -
		
		return false; // Annulation du lien
		
	});
	
	//======================================================
	// Fonction de suppression d'un adulte dans une chambre 
	//======================================================
	$("a.boutonMoinsDevisAdultes").mousedown(function(){
		
		// Récupération des variables nécessaires
		var nombreAdultesActuel = parseInt($("input#nombreAdultes"+$(this).attr("num")).val()); // Nombre d'adultes
		
		//  Vérification de la possibilité d'ajouter un adulte
		if (nombreAdultesActuel>0) {                                                                  // S'il y a bien un adulte de placé
			$("input#NombreAdultesRestants").val(parseInt($("input#NombreAdultesRestants").val())+1); //     Définition du total d'adultes restant
			$("input#nombreAdultes"+$(this).attr("num")).val(nombreAdultesActuel-1);                  //     Définition de la valeur actuelle
			dessineOccupants($(this).attr("num"));                                                    //     Dessin des occupants
		}                                                                                             // -
		
		return false; // Annulation du lien
		
	});
	
	//===============================================
	// Fonction d'ajout d'un enfant dans une chambre 
	//===============================================
	$("a.boutonPlusDevisEnfants").mousedown(function(){

		// Récupération des variables nécessaires
		var nombreAdultesActuel = parseInt($("input#nombreAdultes"+$(this).attr("num")).val()); // Nombre d'adultes
		var nombreEnfantsActuel = parseInt($("input#nombreEnfants"+$(this).attr("num")).val()); // Nombre d'enfants
		
		//  Vérification de la possibilité d'ajouter un adulte
		if ((parseInt($("input#NombreEnfantsRestants").val())>0)                                      // S'il reste des enfants à placer
		&& (placesChambre>(nombreAdultesActuel+nombreEnfantsActuel))) {                               // S'il reste des places dans la chambres
			$("input#NombreEnfantsRestants").val(parseInt($("input#NombreEnfantsRestants").val()-1)); //     Définition du total d'enfants restant
			$("input#nombreEnfants"+$(this).attr("num")).val(nombreEnfantsActuel+1);                  //     Définition de la valeur actuelle
			dessineOccupants($(this).attr("num"));                                                    //     Dessin des occupants
		}                                                                                             // -
		
		return false; // Annulation du lien
		
	});
	
	//======================================================
	// Fonction de suppression d'un enfant dans une chambre 
	//======================================================
	$("a.boutonMoinsDevisEnfants").mousedown(function(){
		
		// Récupération des variables nécessaires
		var nombreEnfantsActuel = parseInt($("input#nombreEnfants"+$(this).attr("num")).val()); // Nombre d'enfants
		
		//  Vérification de la possibilité d'ajouter un adulte
		if (nombreEnfantsActuel>0) {                                                                  // S'il y a bien un adulte de placé
			$("input#NombreEnfantsRestants").val(parseInt($("input#NombreEnfantsRestants").val())+1); //     Définition du total d'enfants restant
			$("input#nombreEnfants"+$(this).attr("num")).val(nombreEnfantsActuel-1);                  //     Définition de la valeur actuelle
			dessineOccupants($(this).attr("num"));                                                    //     Dessin des occupants
		}                                                                                             // -
		
		return false; // Annulation du lien
		
	});
	
	//============================================
	// Fonction de validation de la seconde étape 
	//============================================
	$("img#imageValidationEtape2").click(function(){
		
		if (parseInt($("input#NombreEnfantsRestants").val())+parseInt($("input#NombreAdultesRestants").val())==0) {
			var nombreChambres = parseInt($("select#Chambres").val());
			var listeChambres = "";
			for (id=1; id<=nombreChambres; id++) {
				if (listeChambres!="") listeChambres += "|";
				listeChambres += $("input#nombreAdultes"+id).val()+","+$("input#nombreEnfants"+id).val();
			}
			$("div#blocPatientez").show();
			$("div#blocEnvoyer").hide();
			devisEnvoye = true;
			$.ajax({
				type: 'POST',
				url:  '414.html',
				data: {
					repartition:listeChambres,
					idDevis:$("input#idDevisEnCours").val(),
					assurance:$("input#assurance").attr("checked")
				},
				success: function(resultat) {
					$("div#resultatEnvoi").html(resultat).show();
					$("div#blocPatientez").hide();
				}
			});
			$("div#erreurEtape2").hide();
		} else {
			$("div#erreurEtape2").show();
		}
		
	});
	
	//==========================
	// Annulation de la demande 
	//==========================
	$("img#annuleDemande").click(function(){
		if (devisEnvoye==false) {
			$.ajax({
				type: 'POST',
				url:  '414.html',
				data: {
					stopDemande:true,
					idDevis:$("input#idDevisEnCours").val()
				}
			});
		}
		$('div#suiteDevis').hide();
	});
	
}

////////////////////////////////////////
// DESSIN DES OCCUPANTS D'UNE CHAMBRE //
////////////////////////////////////////
function dessineOccupants(idChambre) {
	
	// Calculs préparatoires
	var nombreAdultes          = parseInt($("input#nombreAdultes"+idChambre).val());
	var nombreEnfants          = parseInt($("input#nombreEnfants"+idChambre).val());
	var placesAdultesRestantes = Math.min((maxNombreAdultes-nombreAdultes), (placesChambre-nombreEnfants-nombreAdultes));
	var placeRestantes         = placesChambre - nombreAdultes - nombreEnfants - placesAdultesRestantes;
	
	// Remise à zero du visuel
	$("td#dessinsChambre"+idChambre).html("");
	
	// Ajout du nombre d'adultes placés
	for (var nombre = 0; nombre<nombreAdultes; nombre++) {                   // Pour tous les adultes
		$("td#dessinsChambre"+idChambre).append($("div#baseAdulte").html()); //     Ajout d'un adulte
	}                                                                        // -
	
	// Ajout du nombre de places adultes restantes
	for (var nombre = 0; nombre<placesAdultesRestantes; nombre++) {             // Pour tous les adultes
		$("td#dessinsChambre"+idChambre).append($("div#baseAdulteoff").html()); //     Ajout d'un adulte
	}                                                                           // -
	
	// Ajout du nombre d'enfants placés
	for (var nombre = 0; nombre<nombreEnfants; nombre++) {                   // Pour tous les adultes
		$("td#dessinsChambre"+idChambre).append($("div#baseEnfant").html()); //     Ajout d'un adulte
	}                                                                        // -
	
	// Ajout du nombre de places restantes
	for (var nombre = 0; nombre<placeRestantes; nombre++) {                     // Pour tous les adultes
		$("td#dessinsChambre"+idChambre).append($("div#baseEnfantoff").html()); //     Ajout d'un adulte
	}                                                                           // -
	
	// Affichage du total
	dessineRestes();
	
}

////////////////////////////////////
// AFFICHAGE DES PLACES RESTANTES //
////////////////////////////////////
function dessineRestes() {
	
	// Raz
	$("div#listeAdultes").html("");
	$("div#listeEnfants").html("");
	
	// Calcul des valeures
	var adultesRestants     = parseInt($("input#NombreAdultesRestants").val());
	var nombreAdultesPlaces = parseInt($("input#NombreTotalAdultes").val()) - adultesRestants;
	var enfantsRestants     = parseInt($("input#NombreEnfantsRestants").val());
	var nombreEnfantsPlaces = parseInt($("input#NombreTotalEnfants").val()) - enfantsRestants;
	
	// Adultes restants
	for (var nombre = 0; nombre<adultesRestants; nombre++) {      // Pour tous les adultes
		$("div#listeAdultes").append($("div#baseAdulte").html()); //     Ajout d'un adulte
	}                                                             // -
	
	// Adultes placés
	for (var nombre = 0; nombre<nombreAdultesPlaces; nombre++) {     // Pour tous les adultes
		$("div#listeAdultes").append($("div#baseAdulteoff").html()); //     Ajout d'un adulte
	}                                                                // -
	
	// Enfants restants
	for (var nombre = 0; nombre<enfantsRestants; nombre++) {      // Pour tous les adultes
		$("div#listeEnfants").append($("div#baseEnfant").html()); //     Ajout d'un adulte
	}                                                             // -
	
	// Enfants placés
	for (var nombre = 0; nombre<nombreEnfantsPlaces; nombre++) {     // Pour tous les adultes
		$("div#listeEnfants").append($("div#baseEnfantoff").html()); //     Ajout d'un adulte
	}                                                                // -
	
}


