

/**
 * Closure oo0 !_! 0oo
 */
(function() {
	var window = this,
			ev = window.ev,
			LOG = ev && ev.log;

	if (!ev){
		throw 'XHRMethod#<init>: needs ev.core module!';
	}

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

	/**
 * Constructeur de la classe XHRPostMethod.
 * Il construit une instance de XHRPostMethod à partir des paramètres
 * donnés.
 *
 * La classe XHRPostMethod est une extension de la classe XHRMethod
 * permettant d'effectuer des resuêtes XML HTTP asynchrones en POST
 * et est auditeur de timeline.
 *
 * @param {number} _timeout : temps accordé pour l'exécution de la requête.
 * @param {string} _url : adresse de la page a appeler.
 * @param {string} _xml : contenu de la requête (XML).
 * @param {number} _retry : la requete sera relancée  _retry fois si le status de retour est différent de 200 ou 300.
 */
	window.XHRPostMethod = function(_timeout, _url, _xml, _retry) {
		// appel du constructeur de XHRMethod
		window.XHRMethod.call(this, _timeout, _url, _retry);

		// définition de propriété
		this.xml = _xml;
	};

	/**
 * Prototype de la classe
 */
	window.XHRPostMethod.prototype = {
		/**
	 * Exécuion de la requête.
	 *
	 * @see XHRMethod#execute(XHRequest)
	 * @param {Object} _xhrequest : objet XHRequest valide permettant d'effectuer la requête.
	 */
		execute: function(_xhrequest) {
			// exécution de la requête asynchrone en POST, avec paramètres
			_xhrequest.post(this.xml);
		}
	};

	// déclaration de l'héritage
	window.Classe.extend(window.XHRPostMethod, window.XHRMethod);
	LOG.info('XHRPostMethod.js ok');
}());

