// on teste d'abord l'existance des classes nécessaires
Classe.checkDefined("XHRMethod");
Classe.checkDefined("XHRGetMethod");

/**
 * Constructeur de la classe GetCriteresMethod.
 * Il construit une instance de GetCriteresMethod
 * à partir des paramètres donnés.
 *
 * La classe GetCriteresMethod est une extension
 * de la classe XHRGetMethod permettant de
 * récupérer un jeu de critères et est auditeur
 * de timeline.
 *
 * @param {Integer} _timeout : temps accordé pour l'exécution de la requête
 * @param {String} _url : adresse de la page a appeler
 * @param {Criteres} _criteres : jeu de criteres à remplir
 * @param {Function} _doAfterRetreive : méthode à exécuter une fois que la requête est terminée
 * @param {Integer} _retry : la requete sera relancée  _retry fois si le status de retour est différent de 200 ou 300
 */
function GetCriteresMethod(_timeout, _url, _criteres, _doAfterRetreive, _retry){
	// appel du constructeur de XHRMethod
	XHRMethod.call(this, _timeout, _url, _retry);

	// définition des propriétés
	this.criteres=_criteres;
	this.doAfterRetreive=_doAfterRetreive;
}

GetCriteresMethod.prototype={
	/**
	 * Surcharge (Extraction des données reçues).
	 *
	 * @see XHRMethod#parseData()
	 */
	parseData: function(_data){
		// appel de la méthode de base dans XHRMethod (pour gestion des exceptions)
		XHRMethod.prototype.parseData.apply(this, arguments);
			
		/*	
		try {
			// appel de la méthode de base dans XHRMethod (pour gestion des exceptions)
			XHRMethod.prototype.parseData.apply(this, arguments);
		} 
		catch (e) {
			document.getElementById("getCriteresException").style.display = "block";
			throw e;
		}*/
		
		
		// si aucune erreur, alimenter le jeu de criteres courant avec les valeurs contenu dans le document donné
if (typeof(log)=='function') log("criteres reçus", '');
		this.criteres.DOMToObjet(_data);
if (typeof(log)=='function') log("criteres reçus : "+this.criteres.toString(), '');
/*		this.criteres.init();
if (typeof(log)=='function') log("criteres reçus : initialized !", '');
		this.criteres.print();
if (typeof(log)=='function') log("criteres reçus : printed !", '');*/
		if(typeof(this.doAfterRetreive)=='function') this.doAfterRetreive();
	},
	
	catchError: function(_typeError, _message){
		EV.ME.ErrorManager().add(new EV.ME.Error("errorMEHGetCriteres", _typeError, EV.ME.ErrorLevel.FATAL, _message));
	}
}

// déclaration de l'héritage
Classe.extend(GetCriteresMethod, XHRGetMethod);
if (typeof(log)=='function') log("me3/meh/GetCriteresMethod.js ok", "info");

