

(function () {
	var window = this,
			ev = window.ev;

	if (!ev) { throw 'mev.searchHistoryManager#<init>: Needs ev.core module!'; }
	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') {
					try {
						_doAfter();
					}
					catch (errorOnAfter) {
						ev.log.warn('meh.SetCriteresMethod#<init>: Erreur lors de l\'exécution du callback après SetCriteres : ' + errorOnAfter);
					}
				}
			}
		}

		// invocation
		ev.requestManager.invokeEra(ev.meh.Context().getRjsLocator(), _url, callback);
	};

	ev.log.debug('ev/meh/SetCriteresMethod.js ok');
}());

