
/**
 **************************************************************************************************************************************
	Load et parse un document XML DU TEMPLATING SYSTEM (i.e. main.php avec ID et table) dans un template XSLT
	
	Paramètres:
	contId: ID du div auquel appender le xsl loadé
	table: table du template
	recId: ID de l'element
	xsltUrl: URL du xslt dans lequel parser le XML

*/

function cLoadXslt(contId, table, recId, xsltUrl, addVars){
	//constructeur vide
}
cLoadXslt.prototype.init = function(contId, table, recId, xsltUrl){
	this.getVars=new Array();//variables additionnelles à passer en GET
	this.table=table;
	this.recId=recId;
	this.xsltUrl=xsltUrl+'?i='+Math.random();
	
	this.contId=contId;
	this.cont=safeFindObj(contId);//trouve le container
}

cLoadXslt.prototype.addGetVars = function(varNom, varVal){
	this.getVars[this.getVars.length]='&'+varNom+'='+varVal;
}

//parse le doc XML loadé en var d'objet dans le template défini par tplUrl************************
cLoadXslt.prototype.parseXSL = function(tplUrl){
	if(!this.xmlDoc){
		return document.createTextNode("Error... Error... xmlDoc inexistant" );
	}
	
	if (window.ActiveXObject) {
		var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
		var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
		var xslProc;
		xslDoc.async = false;
		xslDoc.load(tplUrl);
		
		if (xslDoc.parseError.errorCode != 0) {
			var myErr = xslDoc.parseError;
			return document.createTextNode("Error... Error... " + myErr.reason);
		} else {
			xslt.stylesheet = xslDoc;
				xslProc = xslt.createProcessor();
			xslProc.input = this.xmlDoc;
			xslProc.transform();
			var tx= xslProc.output;
			var result=document.createElement('div');
			result.innerHTML=tx;
			   
		}
		
	} else if (window.XSLTProcessor) {
		var xslt = document.implementation.createDocument("", "", null);
		xslt.async = false;
		xslt.load(tplUrl);
		
		var process = new XSLTProcessor();
		process.importStylesheet(xslt);
		var frag = process.transformToFragment(this.xmlDoc, document);
		var result=document.createElement('div');
		result.appendChild(frag);
		
	}
	return result;
}
	
//load un fichier XML***************************************************************************
cLoadXslt.prototype.loadXsltXml = function(url, table, recId, session){
	
	//load le xml.
	
	//ajoute une val random a la fin pour le cache
	//la langue doit etre settée dans le head du hmtl
	var vars='session='+session+'&t='+table+'&l='+langue+'&i='+recId+'&r='+Math.random();
	
	//ajoute les variables de get settées
	for(var iV in this.getVars){
		vars+=this.getVars[iV];
	}
	
	url=url+'?'+vars;
	
	//_debug(url);
	
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		

	} else if (window.ActiveXObject) {
		req = new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP");
		
	}
	
	if (req) {
		oXmlLoader=this;
		req.onreadystatechange=function(){
			if (req!==false && req.readyState==4) {
			//alert(oXmlLoader);
            //	_debug(req.status);
				if (req.status==200 && req.responseXML) {

					oXmlLoader.xmlDoc=req.responseXML;
					oXmlLoader.output=oXmlLoader.parseXSL(oXmlLoader.xsltUrl);//parse le xml dans le xslt				
					oXmlLoader.apres_parse();//effectue les actions de apres le parse
		
				} else {
					alert('XML : erreur '+req.status);
					return false;
				} 
			}
		};
		req.open("GET", url, true);//
		req.send(null);
	}

}
