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

	/**
	 * Constructeur de la classe GetPropositionsMethod.
	 * Il construit une instance de GetPropositionsMethod
	 * à partir des paramètres donnés.
	 *
	 * La classe GetPropositionsMethod permet de récupérer
	 * un jeu de propositions de Lieu.
	 *
	 * @param {string} _url adresse de la page a appeler.
	 * @param {Function} _doAfterRetrieve méthode à exécuter une fois que la requête est terminée.
	 */
	ev.meh.GetPropositionsMethod = function(_url, _doAfterRetrieve) {
		function callback(r) {
			var propositions = r.propositions;
			// FIXME peut-être une variable locale 'lieux' ??? 
			window.lieux = new ev.me.Lieux();
			for (var i = 0; i < propositions.length; i++) {
				//ev.log.debug("ev.meh.GetPropositionsMethod > Lieux de proposition: " + propositions[i].toString());
				if (propositions[i].parametre === 'LIEU' && propositions[i].lieux && (propositions[i].lieux.length > 0)) {
					for (var j = 0; j < propositions[i].lieux.length; j++) {
						//ev.log.debug("ev.meh.GetPropositionsMethod > lieu : " + propositions[i].lieux[j]);
						window.lieux = propositions[i];

						// si aucune erreur, on lance le callback (s'il y en a un)
						if (typeof(_doAfterRetrieve) === 'function') {
							_doAfterRetrieve(window.lieux);
						}
					}
				}
				else {
					ev.log.warn('ev.meh.GetPropositionsMethod > pas de lieu proposé dans la proposition '+i+' > NOT Good : ' + r);
				}
			}
		}
		ev.requestManager.invokeEra(ev.meh.Context().getRjsLocator(), _url, callback);
	};

	ev.log.info('meh.GetPropositionsMethod module ok');
}());

