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

/**
 * Objet XHRTimeline utilisable pour effectuer toute
 * requête asynchrone de la page.
 *
 * Cet objet n'accepte que des écouteur de timeline
 * de type requête (XHRMethod).
 *
 * @param {Integer} _delay : délai entre chaque évènement de timeline
 */
function XHRTimeline(_delay){
	var timeline=new Timeline(_delay);
	timeline.start();

	this.stop=function(){
		timeline.stop();
	}

	/**
	 * Permet d'ajouter un écouteur de timeline.
	 *
	 * Cet écouteur doit être de type XHRMethod.
	 *
	 * @param _timelineListener un écouteur de timeline (type requête).
	 * @throws si _timelineListener est indefini
	 * @throws si _timelineListener est nul
	 * @throws si _timelineListener n'est pas une instance de XHRMethod
	 */
	this.addTimelineListener=function(_timelineListener){
		if(_timelineListener==undefined) throw new Error("timelineListener is undefined");
		if(_timelineListener==null) throw new Error("timelineListener is null");
		if(!Classe.isInstanceOf(_timelineListener, XHRMethod)) throw new Error("_timelineListener is not an XHRMethod instance");
		timeline.addTimelineListener(_timelineListener);
	}

	/**
	 * overrides Object#toString()
	 */
	this.toString=function(){
		return "XHRTimeline{"+timeline.toString()+"}";
	}
}
if (typeof(log)=='function') log("XHRTimeline.js ok", "info");
