(function(){
	// Si les namespaces/classes nécessaires ne sont pas chargées : exception
	if(!window.ev){throw new Error("Le namespace 'ev' doit exister");}
	if(!ev.rjs){throw new Error("Le namespace 'ev.rjs' doit exister");}
	// On s'assure que le namespace ev.meh existe
	if(!ev.meh){ ev.meh={}; }
	//Si la classe ev.meh.LaunchWithCritere est définie on sort
	if(ev.meh.LaunchWithCritere){return;}

	/**
	 * Constructeur de la classe LaunchWithCritere.
	 * Il construit une instance de LaunchWithCritere
	 * à partir des paramètres donnés.
	 *
	 * @param {Object} _url : url d'une page capable d'enregistrer les critères en session
	 * @param {Object} _criteres : jeu de critères à enregistrer en session
	 * @param {Function} _doAfterRetrieve : méthode à exécuter une fois que la requête est terminée
	 */
	ev.meh.LaunchWithCritere=function(_url, _doAfterRetrieve){
	

			function callback(r){
			if(r && r.exception){
				// si les criteres n'ont pas été acceptés, on doit afficher les propositions disponibles	
				if(typeof(ev.meh.Recherche)=='undefined') throw new Error("Le namespace 'ev.meh.recherche' n'est pas défini!");
		
				// et on récupère la liste de lieux proposés			
				ev.meh.Recherche.getListeLieux();
			}
			else{ //si pas d'erreur dans les criteres
//				_criteres.ville=r.ville;
//				_criteres.chambres=r.chambres;
//				_criteres.etoiles=r.etoiles;
//				_criteres.paxAdultes=r.paxAdultes;
//				_criteres.paxEnfants=r.paxEnfants;
//				_criteres.dateDebut=r.dateDebut;
//				_criteres.dateFin=r.dateFin;
//				_criteres.crikey=r.crikey;
				if (typeof(_doAfterRetrieve) == 'function') {
					_doAfterRetrieve();
				}
			}
		};
		
			ev.requestManager.invokeEra(ev.meh.Context().getRjsLocator(), _url, callback);		
	}
	
	ev.log.info("ev/meh/LaunchWithCritere.js ok");

})();
