var debug = false;
 
var  XmlTransformToHtml = Class.create();

 XmlTransformToHtml.prototype = {
 
 initialize: function(xslPath, urlDestination, eltDivName, timerRefresh) {

if (debug) {$(eltDivName).innerHTML = 'initialize';}
  	
  	try {
 		this.xslURL = xslPath;
  		this.xsl;
  		this.destination =    urlDestination;
  		this.container = $(eltDivName);
  		
  		this.timer = null;
  		this.infoRefresh = timerRefresh * 1000;

if (debug) {$(eltDivName).innerHTML = 'ajax.request, xslURL = '+this.xslURL;}

  		new Ajax.Request(this.xslURL,
  			{method:'get',
  			onSuccess:this.xslSuccess.bindAsEventListener(this),
  			onFailure:this.xslFailure.bindAsEventListener(this)});
  	} catch(e){
  		$(eltDivName).update('Erreur initialize : '+e.message);
  	}
 }, 
 
 xslSuccess : function(ajaxRequest)
 {
 
if (debug) {this.container.innerHTML = 'xslSuccess';}

 	try {
		this.xsl = xmlParse(ajaxRequest.responseText);
		
if (debug) {this.container.innerHTML = 'xmlParse';}
		
		new Ajax.Request(this.destination,
			{method:'get',
			onSuccess:this.onSuccess.bindAsEventListener(this),
			onFailure:this.onFailure.bindAsEventListener(this)});  
 	} catch(e){
  		this.updateContainer("Erreur : xslSuccess : "+e.message);
 	}
 },
 
 xslFailure : function(ajaxRequest)
 {
  	this.updateContainer("Erreur : impossible de charger le modèle d'affichage");
 }, 
 
 onSuccess : function (ajaxRequest)
 {

if (debug) {this.container.innerHTML = 'onSuccess';}

 	try {
   		var html = xsltProcess(xmlParse(ajaxRequest.responseText), this.xsl);			      
     	this.updateContainer(html);
     	
     	if (this.infoRefresh > 0) {
     		this.timer = window.setInterval(this.refresh.bindAsEventListener(this), this.infoRefresh);
  		}
   	} catch(e) {
   		this.updateContainer('Erreur :  '+e.message);
   	} 
 },
 
 onFailure : function (e)
 {
  this.updateContainer('Erreur : impossible de récupérer les informations : '+this.destination);
 },
 
 refresh : function (e)
 {
//if (debug) {alert('refresh');}

	if (this.timer != null) {window.clearInterval(this.timer);} 
	if (this.infoRefresh > 0) {
	 	new Ajax.Request(this.destination,
 			{method:'get',
 			onSuccess:this.onSuccess.bindAsEventListener(this),
 			onFailure:this.onFailure.bindAsEventListener(this)});
 	}
 },
 
 updateContainer : function(newContent) {

if (debug) {this.container.innerHTML = 'updateContainer';}

	try {
	 	//Effect.Fade(this.container);
	 	this.container.update(newContent);
	 	//Effect.Appear(this.container, { queue: 'end' });
	//	this.container.innerHTML = newContent;
	} catch(e) {
		this.container.innerHTML = 'Erreur updateContainer : '+e.message;
	}
 }
}