(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.SetCriteresMethod est définie on sort
	if(ev.meh.SetCriteresMethod){return;}

	/**
	 * Constructeur de la classe SetCriteresMethod.
	 * Il construit une instance de SetCriteresMethod
	 * à partir des paramètres donnés.
	 *
	 * La classe SetCriteresMethod est une classe 
	 * permettant de récupérer un jeu de criteres.
	 *
	 * @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} _doAfter : méthode à exécuter une fois que la requête est terminée
	 */
	ev.meh.SetCriteresMethod=function(_url, _criteres, _doAfter){
		function callback(r){
			//if(r.criteres && r.constructor===Error){
			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.criteres.ville;
//				_criteres.chambres=r.criteres.chambres;
//				_criteres.etoiles=r.criteres.etoiles;
//				_criteres.paxAdultes=r.criteres.paxAdultes;
//				_criteres.paxEnfants=r.criteres.paxEnfants;
//				_criteres.dateDebut=r.criteres.dateDebut;
//				_criteres.dateFin=r.criteres.dateFin;
//				_criteres.crikey=r.criteres.crikey;
				if(typeof(_doAfter)==='function'){
					_doAfter();
				}
			}
		};

		// invocation
		ev.requestManager.invokeEra(ev.meh.Context().getRjsLocator(), _url, callback);		
	};
	
	ev.log.debug("ev/meh/SetCriteresMethod.js ok");
}());