/**
 * Surcharge de la mï¿½thode de soumission de formulaire.
 * @param f : formulaire ï¿½ soumettre
 *
 * Convertir les valeurs du formulaire en criteres de recherche
 * Puis lancer une timeline setCritere (qui lance la recherche)
 */
function doSubmitFormMEH3(f) {
	if(typeof(log)=='function') log("définition des criteres...", "info");
	// définition des criteres de recherche
	var criteres=Context().getCriteres();
	if(document.getElementById("lieuIataMEH").value!=null && document.getElementById("lieuIataMEH").value!=""){
		criteres.ville=document.getElementById("lieuIataMEH").value;		
	}
	else{
		criteres.ville=document.getElementById("lieuMEH").value;
	}
	criteres.dateDebut=Date.convertSelectorToStringFr("jourDebutMEH", "moisDebutMEH");
	criteres.dateFin=Date.convertSelectorToStringFr("jourFinMEH", "moisFinMEH");

	criteres.chambres=document.getElementById("chambres").value;
	criteres.paxAdultes=document.getElementById("paxAdultes").value;
	criteres.paxEnfants=document.getElementById("paxEnfants").value;
	criteres.etoiles=document.getElementById("etoiles").value;

	Context().setCriteres();
}	

function launchSearchWithParams(dateDebut, dateFin, ville, paxAdultes, paxEnfants) {
	// définition des criteres de recherche
	var criteres=Context().getCriteres();
	criteres.ville=ville;
	criteres.paxAdultes=paxAdultes;
	criteres.paxEnfants=paxEnfants;
	criteres.dateDebut=dateDebut;
	criteres.dateFin=dateFin;
	Context().setCriteres();
}	

/**
 * Initialise une pile de formulaire pour la placer sur le formulaire MEH
 * Et préparer la soumission du formulaire
 */
function setFormMEH(){
	/**
	 * Surcharge de la méthode de soumission de formulaire.
	 * @param f : formulaire à soumettre
	 */
	doSubmitFormMEH=function(f){
		doSubmitFormMEH3(f);
		return false;
	}
	if(typeof(log)=='function') log("Formulaire MEH3 pret !", "info");
}

/**
 * expression rationnelle pour extraire le contenu d'une balise XML prï¿½fixï¿½e par CDATA
 */
function stripCDATA(expression) {
	var regex = new RegExp(/<!\[CDATA\[([^\]]*)\]\]>/);
	var content = regex.exec(expression);
	return content == null ? expression : content[1];			
}


/**
* permet d'initailaiser les petits formulaire de ME1H
**/
function initFormME1H(_idItem) {
	var formMEH=document.getElementById("formMEH_"+_idItem);
	if(genericNavigator.navigator.id==MSIE) addJavascriptToAttribute(formMEH,"onsubmit","cancelIEEvent();submitFormMEH();");
    else addJavascriptToAttribute(formMEH,"onsubmit","submitFormMEH();return false;");
	// Ajout des calendriers dynamiques (si les icones sont présentes)
	var jourDebutMEH=document.getElementById("jourDebutMEH_"+_idItem);
	var moisDebutMEH=document.getElementById("moisDebutMEH_"+_idItem);
	var jourFinMEH=document.getElementById("jourFinMEH_"+_idItem);
	var moisFinMEH=document.getElementById("moisFinMEH_"+_idItem);
	var calendrierMEHDebutIcon=document.getElementById("calendrierMEHDebutIcon_"+_idItem);
	var calendrierMEHFinIcon=document.getElementById("calendrierMEHFinIcon_"+_idItem);
	var calendrierMEHDebut=document.getElementById("calendrierMEHDebut_"+_idItem);
	var calendrierMEHFin=document.getElementById("calendrierMEHFin_"+_idItem);
	initJours(jourDebutMEH);
	initMois(moisDebutMEH);
	initJours(jourFinMEH);
	initMois(moisFinMEH);
	if(jourDebutMEH!=undefined&&moisDebutMEH!=undefined&&calendrierMEHDebutIcon!=undefined&&calendrierMEHDebut!=undefined) {
		try{
			var calendarMEHdebut=new Calendar(jourDebutMEH,moisDebutMEH,calendrierMEHDebut);
			addJavascriptToAttribute(calendrierMEHDebutIcon,"onclick","calendarPool.get("+calendarMEHdebut.poolIndex+").show(this);");
		}
		catch(e){
		}
	}
	if(jourFinMEH!=undefined&&moisFinMEH!=undefined&&calendrierMEHFinIcon!=undefined&&calendrierMEHFin!=undefined) {
		try{
			var calendarMEHFin=new Calendar(jourFinMEH,moisFinMEH,calendrierMEHFin);
			addJavascriptToAttribute(calendrierMEHFinIcon,"onclick","calendarPool.get("+calendarMEHFin.poolIndex+").show(this);");
		}
		catch(e){
		}
	}

	initME1HDates(_idItem);
	verifyFormME1H(_idItem);
}


/**
* Initialise les dates par défaut en utilisant l'horloge du client, la règle est la suivante pour la date début: c'est le
* prochain vendredi jusqu'au mercredi, et le vendredi en 8 à partir du jeudi. La date de fin est le jour suivant
* la date de début (par défaut on a une nuit).
* On faire abstraction des dates par défaut précédentes et fixer les dates aller et retour en les passant en paramètre 
* au format jj/mm/aaaa
**/
var JOUR=24*60*60*1000;
function initME1HDates(_idItem,dateDebutTexte,dateFinTexte) {
	var jourDebutMEH=document.getElementById("jourDebutMEH_"+_idItem);
	var moisDebutMEH=document.getElementById("moisDebutMEH_"+_idItem);
	var jourFinMEH=document.getElementById("jourFinMEH_"+_idItem);
	var moisFinMEH=document.getElementById("moisFinMEH_"+_idItem);
	if(jourDebutMEH==undefined||moisDebutMEH==undefined||jourFinMEH==undefined||moisFinMEH==undefined) return;
	
	var jourDebut;
	var moisDebut;
	var anneeDebut;
	var jourFin;
	var moisFin;
	var anneeFin;

	var now=new Date();
	var day=now.getDay();
	var delta=5-day;
	if(delta<=1) delta+=7;
	var dateDebut=new Date();
	dateDebut.setTime(now.getTime()+delta*JOUR);
	var dateFin=new Date();
	dateFin.setTime(dateDebut.getTime()+1*JOUR);

	if(dateDebutTexte!=undefined&&dateDebutTexte.match(/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/)){
		jourDebut=dateDebutTexte.replace(/\/[0-9]{2}\/[0-9]{4}$/,"");
		moisDebut=dateDebutTexte.replace(/^[0-9]{2}\//,"");
	}
	else{
		jourDebut=""+dateDebut.getDate();
		if(dateDebut.getDate()<10) jourDebut="0"+dateDebut.getDate();
		moisDebut=""+(dateDebut.getMonth()+1);
		if(dateDebut.getMonth()<9) moisDebut="0"+(dateDebut.getMonth()+1);
		moisDebut+="/"+dateDebut.getFullYear();
	}
	
	if(dateFinTexte!=undefined&&dateFinTexte.match(/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/)){
		jourFin=dateFinTexte.replace(/\/[0-9]{2}\/[0-9]{4}$/,"");
		moisFin=dateFinTexte.replace(/^[0-9]{2}\//,"");
	}
	else{
		jourFin=""+dateFin.getDate();
		if(dateFin.getDate()<10) jourFin="0"+dateFin.getDate();
		moisFin=""+(dateFin.getMonth()+1);
		if(dateFin.getMonth()<9) moisFin="0"+(dateFin.getMonth()+1);
		moisFin+="/"+dateFin.getFullYear();
	}
	
	jourDebutMEH.value=jourDebut;
	moisDebutMEH.value=moisDebut;
	jourFinMEH.value=jourFin;
	moisFinMEH.value=moisFin;
}

/**
* Cette fonction vérifie la cohérence des données du formulaire MEH et active éventuellement les messages d'erreur.
* Cette fonction retourne aussi un booléen qui indique si le formulaire est sans erreur, donc retourne true si aucune
* erreur n'est présente, false dans le cas contraire
**/
function verifyFormME1H(_idItem) {
	var error=false;
	var errorMEHDateDebutErronee=document.getElementById("errorMEHDateDebutErronee_"+_idItem);
	var jourDebutMEH=document.getElementById("jourDebutMEH_"+_idItem).value;
	var moisDebutMEH=document.getElementById("moisDebutMEH_"+_idItem).value.replace(/\/[0-9]{4}$/,"");
	var anDebutMEH=document.getElementById("moisDebutMEH_"+_idItem).value.replace(/^[0-9]{2}\//,"");
	if(isValidDate(jourDebutMEH,moisDebutMEH,anDebutMEH)){
		if(errorMEHDateDebutErronee!=undefined) errorMEHDateDebutErronee.style.display="none";
	}
	else{
		if(errorMEHDateDebutErronee!=undefined) errorMEHDateDebutErronee.style.display="";
		error=true;
	}
	var errorMEHDateFinErronee=document.getElementById("errorMEHDateFinErronee_"+_idItem);
	var jourFinMEH=document.getElementById("jourFinMEH_"+_idItem).value;
	var moisFinMEH=document.getElementById("moisFinMEH_"+_idItem).value.replace(/\/[0-9]{4}$/,"");
	var anFinMEH=document.getElementById("moisFinMEH_"+_idItem).value.replace(/^[0-9]{2}\//,"");
	if(isValidDate(jourFinMEH,moisFinMEH,anFinMEH)){
		if(errorMEHDateFinErronee!=undefined) errorMEHDateFinErronee.style.display="none";
	}
	else{
		if(errorMEHDateFinErronee!=undefined) errorMEHDateFinErronee.style.display="";
		error=true;
	}
	var errorMEHDatesInversees=document.getElementById("errorMEHDatesInversees_"+_idItem);
	if(!error){
		var dateDebutMEH=createDate(jourDebutMEH,moisDebutMEH,anDebutMEH);
		var dateFinMEH=createDate(jourFinMEH,moisFinMEH,anFinMEH);
		if(dateDebutMEH.getTime()<dateFinMEH.getTime()){
			if(errorMEHDatesInversees!=undefined) errorMEHDatesInversees.style.display="none";
		}
		else{
			if(errorMEHDatesInversees!=undefined) errorMEHDatesInversees.style.display="";
			error=true;
		}
	}
	else{
		if(errorMEHDatesInversees!=undefined) errorMEHDatesInversees.style.display="none";
	}
	
	return !error;
}

