/*------------------------------------------------------------------------------------------------------ 
									ARBRE JERÀRQUIC A PARTIR D'<UL><LI>
--------------------------------------------------------------------------------------------------------
	by das - davixyz@gmail.com |||||  08/2005
-------------------------------------------------------------------------------------------------------- 

(x)html + css + unobtrusive Javascript

--------------------------------------------------------------------------------------------------------
Característiques i configuració:

- Accessibilitat: tanta com tingui la llista ul jeràrquica en html. Si no està activat javascript 
  o no suporta DOM l'arbre es veurà com el conjunt de llistes que el formen, amb els estils css 
  que tingui aplicats per defecte

- Funciona correctament amb Mozilla, Opera, IE (últimes versions OK), però mozilla és més eficaç carregant grans 
  blocs de nodes.
  
  .carregaTotOnLoad = false soluciona el problema --> necessita establir .varName

- Càrrega de nodes-fills dinàmicament per XMLHttpRequest. S'ha de programar la plana del servidor que haurà 
  de retornar el nivell d'informació que desitgem i l'objecte l'afegirà a l'arbre existent i aplicarà el disseny. 
  La relació de cerca es fa per l'ID del node <li> i serà el paràmetre que es passarà a la consulta.
  
  .varName: nom de l'instància de l'objecte (no és massa ortodox però... necessitem cridar de nou l'objecte)  
  .XMLrequest: establir a true si volem que faci la comprovació (comprova l'atribut configurat a .attrTeFills del li. Si es !="" 
  																entenem que té fills)
  .XMLplana: passem la plana amb el nom del paràmetre. La funció de l'objecte passarà l'id que tingui assignat el 
  node <li> com a paràmetre "nodes.htm?codi=" + <li id="??"> 
  .attrTeFills: nom de l'attribut que comprovarem per saber si té fills. En el nostre poso "lang='ca'" perquè volem que sigui 
  codi vàlid pel w3c
  
  .missatgeLoad: permet configurar el text o imatge que es mostrarà al node actual per indicar que s'està carrengant 
  una branca (versió 1.1)

- Necessita els estils css amb les imatges per fer els enllaços entre els nodes. En el nostre cas, per exemple:

	.bloc, .bloc_ultim, .bloc_recte, .bloc_mig, .bloc_hor{width:16px; line-height:1.4em; float:left;}
	.bloc_recte{background: url(img/arbre/recte.gif) left no-repeat;}
	.bloc_mig{background: url(img/arbre/mig.gif) left no-repeat}
	.bloc_hor{background: url(img/arbre/hor.gif) left no-repeat}
	.bloc_ultim{background: url(img/arbre/ultim.gif) left no-repeat}
	.void{width:10px; line-height:1.4em; float:left;} -> serveix per igualar un node sense fills

...d'aquesta manera (imatge al background) si augmenta el tamany de lletra la imatge s'adapta 
   a l'alçada de la línia

- Es pot realitzar una indentació extra dels nodes fills assignant un "value" al <li>

  * Propietats pel disseny de l'estructura d'arbre:
  	.id: nom de l'arbre a carregar
	.cssArbre: classe css que s'aplicarà a l'arbre;
	.cssNodeExpandit: classe css del node expandit
	.cssNodeCollapsed: classe css del node col·lapsat
	.srcImgExpand: src de la imatge del node expandit (-)
	.cssImgExpand: css de la imatge del node expandit (-)
	.altImgExpand: alternativa de la imatge del node expandit (-)
	.srcImgCollapse: src de la imatge del node col·lapsat (+)
	.cssImgCollapse: css de la imatge del node col·lapsat (+)
	.altImgCollapse: alt de la imatge del node col·lapsat (+)

	.pintaArbre: dibuixa les línies de l'arbre (defecte true. Podríem no voler pintar-les 
				 en cas de menús verticals)
	.cssImgNodeBloc: css amb el background dels espais de nivell en blanc (indentació)
	.cssImgNodeUltim: css amb el background de l'ultim node d'una branca (<)
	.cssImgNodeMig: css amb el background dels nodes que tenen "germans" (|-)
	.cssImgNodeRecte: css amb el background de la línia que enllacen "germans" desplegats (|)
	.cssImgNodeHoritzontal: css amb el background de la línia horitzontal (indentació) (-)
	.cssImgNodeVoid: css amb el background d'un bloc buit (iguala espai entre (+-) i els que no tenen fills)

  * Altres:
    .nivellOculta: nivell a partir del qual s'amagaran els fills. Defecte s'amaga tot (0)
	.ocultarPrimerNode: permet que el primer node sigui col·lapsable o no
	.indentExtra: serveix per indicar diferents rangs entre els fills d'un node. Es fa en funció del "value" del li
	
  * Mètodes:
  	.loadArbres() -> carregarà l'arbre congifurat a l'id
	.loadArbres([id node amb fills]) -> executarà la petició al servidor i retornarà els fills
										amb les indentacions corresponents (XMLrequest ha de ser true)
------------------------------------------------------------------------------------------ */

function dasArbre(){
	this.id = "";
	this.cssArbre = "";
	this.cssNodeExpandit = "";
	this.cssNodeCollapsed = "";

	this.indentExtra = false ;
	
	/*Primer node --> si l'arbre és molt gran IE triga molt en ocultar i mostrar. Posar a true*/
	this.ocultarPrimerNode = false;

	/*Nivell a partir del qual ocultem*/
	this.nivellOculta = 0;

	/*Més i menys*/
	this.srcImgExpand = "";
	this.cssImgExpand = "";
	this.altImgExpand = "";
	this.srcImgCollapse = "";
	this.cssImgCollapse = "";
	this.altImgCollapse = "";
	this.srcImgLoading = "";

	/*Imatges per fer l'enllaç entre pares i fills*/
	this.pintaArbre = true;
	this.cssImgNodeBloc = "";
	this.cssImgNodeUltim = "";
	this.cssImgNodeMig = "";
	this.cssImgNodeRecte = "";
	this.cssImgNodeHoritzontal = "";
	this.cssImgNodeVoid = ""; //bloc del mateix tamany que la imatge (+) i (-)

	/*Nodes no precarregats inicialment*/
	this.varName = "";
	this.carregaTotOnLoad = false;

	/*connexió dinàmica amb XMLHttpRequest*/
	this.XMLrequest = false;
	this.XMLplana = "";
	this.attrTeFills = "lang";
	this.missatgeLoad = "&nbsp;&nbsp;<i><b>(carregant...)</b></i>";

	//var arrArbres = new Array()
	var self = this;
	var idArbreActual = "";
	var ns = (navigator.appName.toLowerCase().indexOf("netscape")>-1?true:false);
	var ps = (ns?".previousSibling":"");
	var strClass = (ns || navigator.userAgent.toLowerCase().indexOf("opera")>-1?"class":"className");
	var objDocument = document;
	var nivellOriginal = 0; //Ho necessitem per la càrrega dinàmica de nodes

	this.nouArbre = function(){
		/*if(arguments.length>0){	
			arrArbres[arrArbres.length] = arguments[0]
		}*/
		this.id = arguments[0];
	}
	
	function objXMLHttpRequest(){
		var xmlhttp = false
		/*@cc_on @*/
		/*@if (@_jscript_version >= 5)
		  try {xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")} catch (e) {
			  try {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")} catch(E){ xmlhttp=false}
		 }
		@else 
			xmlhttp=false
		@end @*/
		if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		 try {xmlhttp = new XMLHttpRequest();}catch(e){xmlhttp=false;}
		}
		return xmlhttp;
	}
	
	function loadXMLrequest(idParent){
		var idFill = "";
		var xmlhttp = objXMLHttpRequest();
		var nivell = 0 ;
		var strCadena = "";
	
		if(xmlhttp){
			xmlhttp.open("GET", self.XMLplana + idParent, true);
			//xmlhttp.open("GET", "nodes/" + idParent + ".htm", true);

			xmlhttp.onreadystatechange = function(){

				if (xmlhttp.readyState==4){
					if(document.getElementById(idParent).getElementsByTagName("ul").length==0){
						document.getElementById(idParent).innerHTML=document.getElementById(idParent).innerHTML + xmlhttp.responseText;
						ImatgeExpandCollapse(document.getElementById(idParent),"-",1);
						try{idFill = document.getElementById(idParent).getElementsByTagName("ul")[0].id}catch(e){idFill=false;}
						if(idFill){	
							document.getElementById(idFill).style.display = "none";
							document.getElementById(idParent).setAttribute(strClass,self.cssNodeExpandit);
							strCadena = ObteCadenaNivell(document.getElementById(idParent), "");
							nivell = strCadena.split("|").length;
							//nivellOriginal = nivell
							//nivell = ObteNivell(document.getElementById(idFill).parentNode, 0)
							CreaBranques(document.getElementById(idFill), nivell+1, strCadena);
							document.getElementById(idFill).style.display = "block";
							var nodeLoad = document.getElementById("loading_tag_das_arbre");
							if(nodeLoad) nodeLoad.parentNode.removeChild(nodeLoad);
						}
					}
				}					
			}
			xmlhttp.send(null);	
		}
	}

	function DesplegaParent(obj){
		if(obj.parentNode.parentNode.nodeName.toLowerCase()=="li" && obj.parentNode.id!=idArbreActual){
			obj.parentNode.style.display="block";
			obj.parentNode.data=2;
			obj.parentNode.parentNode.setAttribute(strClass,self.cssNodeExpandit);
			obj.parentNode.parentNode.getElementsByTagName("img")[0].src = self.srcImgCollapse;
			DesplegaParent(obj.parentNode.parentNode);
		}
		obj = null;
	}
	
	/*Obté el nivell dels nodes inclosos dinàmicament
	  Ara no s'utilitza*/
	function ObteNivell(obj, nivell){
		if(obj.parentNode.parentNode.nodeName.toLowerCase()=="li" && obj.parentNode.id!=self.id)
			nivell = ObteNivell(obj.parentNode.parentNode, nivell+1);

		return nivell;
	}


	/*Obté la cadena de nivell dels nodes inclosos dinàmicament*/
	function ObteCadenaNivell(obj, strCadena){
		var nouNivell = "";

		if(parseInt(obj.value)>-1){
			for(x=0; x<parseInt(obj.value); x++)
				nouNivell += "x";
		}

		var testPs = ""
		if(obj.parentNode.lastChild.nodeName=="#text") testPs = ps;

		if(obj==eval("obj.parentNode.lastChild" + testPs)) 	nouNivell = "." + nouNivell;
		else												nouNivell = "-" + nouNivell;

		if(obj.nodeName.toLowerCase()=="li" && obj.parentNode.id!=self.id)
			strCadena = ObteCadenaNivell(obj.parentNode.parentNode, nouNivell + "|" + strCadena);
		
		return  strCadena;
	}


	/*Inclou la imatge que fa la petició per XMLHttpRequest*/
	function nodeImgXMLhttp(objNfill){
		var strCss=self.cssImgExpand;
		var strSrc=self.srcImgExpand;
		var strAlt=self.altImgExpand;
		
		var objA=objDocument.createElement("a");
		if(ns) objA.setAttribute("href","#" + objNfill.id);
		else   objA.setAttribute("href","#");
		objA.setAttribute(strClass,strCss);
		objA.data = self.varName + ".loadArbres(\"" + objNfill.id + "\");";
		objA.onclick = function(){
			eval(this.data);
			return false;
		};

		var objImg=objDocument.createElement("img");
		objImg.setAttribute("src",strSrc);
		objImg.setAttribute(strClass,strCss);
		objImg.setAttribute("alt",strAlt);
		objImg.setAttribute("title",strAlt);

		objA.appendChild(objImg);
		
		objNfill.insertBefore(objA, objNfill.childNodes[0]);
		
		objA = null;
		objImg = null;
		objNfill = null;
	}

	/*Imatge pel load d'un nivell, existent, però no carregat inicialment*/
	function ImgLoadNode(objNfill){
		var strCss=self.cssImgExpand;
		var strSrc=self.srcImgExpand;
		var strAlt=self.altImgExpand;
		
		var objA=objDocument.createElement("a");
		if(ns) objA.setAttribute("href","#" + objNfill.id);
		else   objA.setAttribute("href","#");
		objA.setAttribute(strClass,strCss);
		objA.data = self.varName + ".loadArbres(this.parentNode);";
		objA.onclick = function(){
			eval(this.data);
			return false;
		};

		var objImg=objDocument.createElement("img");
		objImg.setAttribute("src",strSrc);
		objImg.setAttribute(strClass,strCss);
		objImg.setAttribute("alt",strAlt);
		objImg.setAttribute("title",strAlt);

		objA.appendChild(objImg);
		
		objNfill.insertBefore(objA, objNfill.childNodes[0]);

		objA = null;
		objImg = null;
		objNfill = null;
	}

	/*Imatge que controla si un node està col·lapsat o expandit*/
	function ImatgeExpandCollapse(){
		var objNfill=arguments[0];
		var mesMenys=arguments[1];

		var strCss=(mesMenys=="+"?self.cssImgExpand:self.cssImgCollapse);
		var strSrc=(mesMenys=="+"?self.srcImgExpand:self.srcImgCollapse);
		var strAlt=(mesMenys=="+"?self.altImgExpand:self.altImgCollapse);
		
		var objA=objDocument.createElement("a");
		objA.setAttribute("href","#");
		objA.setAttribute(strClass,strCss);

		objA.data = "var objNode = this.parentNode.getElementsByTagName('ul')[0];"+
		"		if(objNode.data!=1){"+
		"			objNode.style.display='none';"+
		"			objNode.data=1;"+
		"			this.childNodes[0].src='" + self.srcImgExpand + "';"+
		"			this.childNodes[0].alt='" + self.altImgExpand + "';"+
		"			this.childNodes[0].title='" + self.altImgExpand + "';"+
		"			this.parentNode.className='" + self.cssNodeCollapsed + "';"+
		"		}else{"+		
		"			objNode.style.display='block';"+
		"			objNode.data=2;"+
		"			this.childNodes[0].src='" + self.srcImgCollapse + "';"+
		"			this.childNodes[0].alt='" + self.altImgCollapse + "';"+
		"			this.childNodes[0].title='" + self.altImgCollapse + "';"+
		"			this.parentNode.className='" + self.cssNodeExpandit + "';"+
		"		}";
			
		objA.onclick = function(){
			eval(this.data);
			return false;
		}

		var objImg=objDocument.createElement("img");
		objImg.setAttribute("src",strSrc);
		objImg.setAttribute(strClass,strCss);
		objImg.setAttribute("alt",strAlt);
		objImg.setAttribute("title",strAlt);

		objA.appendChild(objImg);

		/*Podem fer que el primer nivell no s'amagui mai 
		  (útil en cas d'arbres molt grans perquè IE triga massa)*/
		if(objNfill.parentNode.id==idArbreActual && self.ocultarPrimerNode){
			objImg.setAttribute(strClass,"");
			objImg.onclick = "";
			objImg.data = "";
			objNfill.insertBefore(objImg, objNfill.childNodes[0]);
		}else{
			if(arguments[2]==1) //venim de loadXML
				objNfill.replaceChild(objA, objNfill.getElementsByTagName("a")[0]);
			else
				objNfill.insertBefore(objA, objNfill.childNodes[0]);
		}
		
		objA = null;
		objImg = null;
		objNfill = null;
	}
	
	/*Línies de l'arbre*/
	function AfegeixNodeBloc(objNode, strCSS, strText){
		var objDiv=objDocument.createElement("span");
		objDiv.setAttribute(strClass,strCSS);
		objDiv.innerHTML = strText;
		objNode.insertBefore(objDiv, objNode.childNodes[0]);
		
		objDiv = null;
		objNode = null;
	}
	
	/*GestioImatges calcula les imatges que formen l'arbre dinàmicament (loadXMLrequest)
	  Ara no s'utilitza perquè es gestionen igual tots els nodes siguin dinàmics o estàtics.*/
	function GestioImatges(objNpare, objNfill, nivell){
	var strCSS = "";
	var strParent ="";
	var strParent2 ="";
	var indentPare=-1;
	var testStr = "";
	var x=0;
	
			if(self.pintaArbre){

				var objAtribut = objDocument.createAttribute('indentacio');
				objNfill.setAttributeNode(objAtribut);

				/*Indentació extra*/
				if(parseInt(objNfill.value)>-1){
					for(x=0; x<parseInt(objNfill.value); x++){
						AfegeixNodeBloc(objNfill,self.cssImgNodeHoritzontal,"&nbsp;");
					}
				}

				/*última imatge	*/
				if(nivell>0){
					if(objNfill==eval("objNpare.lastChild"+ps)){
						AfegeixNodeBloc(objNfill,self.cssImgNodeUltim,"&nbsp;");
					}
					else{
						AfegeixNodeBloc(objNfill,self.cssImgNodeMig,"&nbsp;");
					}
				}

				/*Indentacio extra Parent*/
				if(parseInt(objNfill.parentNode.parentNode.value)>-1){
					objNfill.setAttribute("indentacio", objNfill.parentNode.parentNode.value);
				}

				/*línies corresponents al nivell del pare*/
				for(x=0; x<nivell-1; x++){
					strParent += ".parentNode.parentNode";

					var testPs = "";
					//if(eval("objNpare" + strParent + ".lastChild")=="#text") testPs = ps

					if(eval("objNpare" + strParent.slice(0, strParent.lastIndexOf(".")))!=eval("objNpare" + strParent + ".lastChild" + testPs))
						strCSS = self.cssImgNodeRecte;
					else
						strCSS = self.cssImgNodeBloc;

					/*fa la indentació heretada del pare*/
					testStr = eval("objNfill" + strParent2 + ".getAttribute('indentacio')");
					if(!isNaN(testStr)){
						indentPare = testStr;
						strParent2 += ".parentNode.parentNode";
						for(var k=0;k<indentPare;k++){
							AfegeixNodeBloc(objNfill,self.cssImgNodeBloc,"&nbsp;");
						}
					}
					
					AfegeixNodeBloc(objNfill,strCSS,"&nbsp;");
				}

			objAtribut = null;
			objNfill = null;

		}
	}
	
	/*Mateix resultat que GestioImatges però amb una lògica diferent*/
	function GestioNivell(objNfill, strCadenaNivell, nivell){
		var nouNivell = "";
		var arrNivells = strCadenaNivell.split("|");
		var x=0;
		
		if(self.pintaArbre){
			/*Indentació extra*/
			if(parseInt(objNfill.value)>-1 && self.indentExtra){
				for(x=0; x<parseInt(objNfill.value); x++){
					AfegeixNodeBloc(objNfill,self.cssImgNodeHoritzontal,"&nbsp;");
					nouNivell += "x";
				}
			}

			/*última imatge	*/
			if(nivell>0){
				
				var testPs = "";
				if(objNfill.parentNode.lastChild.nodeName=="#text") testPs = ps;
		
				if(objNfill==eval("objNfill.parentNode.lastChild" + testPs)){
					AfegeixNodeBloc(objNfill,self.cssImgNodeUltim,"&nbsp;");
					nouNivell = "." + nouNivell;
				}else{
					AfegeixNodeBloc(objNfill,self.cssImgNodeMig,"&nbsp;");
					nouNivell = "-" + nouNivell;
				}
			}
		
			for(x=arrNivells.length-1; x>=0; x--){
				if(arrNivells[x].length>0){
					var lCadena = arrNivells[x].slice(1).length;
					
					if(self.indentExtra){
						for(var z=0; z<lCadena; z++) AfegeixNodeBloc(objNfill,self.cssImgNodeBloc,"&nbsp;");
					}
		
					switch(arrNivells[x].slice(0,1)){
						case "-":
							AfegeixNodeBloc(objNfill,self.cssImgNodeRecte,"&nbsp;");
							break;
						case ".":
							AfegeixNodeBloc(objNfill,self.cssImgNodeBloc,"&nbsp;");
							break;
					}
				}
			}
	
			objNfill = null;

			return nouNivell + "|";
		}
	
	}

	//function CreaBranques(obj, nivell){
	function CreaBranques(obj, nivell, strNivell){
		var strNouNivell = "";

		for(var i=0, j=obj.childNodes.length; i<j; i++){
			if(obj.childNodes[i].nodeName.toLowerCase()=="li"){

				var testFills = obj.childNodes[i].getElementsByTagName("ul")
		
				//Comprovem fills per mostrar o ocultar
				if(obj.childNodes[i].nodeName.toLowerCase()=="li"){
					
					if(nivell>=self.nivellOculta && obj.childNodes[i].getAttribute(strClass)==self.cssNodeExpandit) //Despleguem des d'aquí cap amunt
						DesplegaParent(obj.childNodes[i]);
					
					if(nivell>=self.nivellOculta && testFills.length>0){
						
						if(obj.childNodes[i].className!=self.cssNodeExpandit){
							testFills[0].data = 1;
							testFills[0].style.display="none";
							obj.childNodes[i].className = self.cssNodeCollapsed;
							
							//Comprovem les condicions de càrrega total o no
							if((!self.carregaTotOnLoad && nivell<nivellOriginal+1) || self.carregaTotOnLoad || nivell<=self.nivellOculta)
								ImatgeExpandCollapse(obj.childNodes[i],"+");
							else
								ImgLoadNode(obj.childNodes[i]);
								
						}else
							ImatgeExpandCollapse(obj.childNodes[i],"-");
						
					}else{
						if(testFills.length>0){
							obj.childNodes[i].className = self.cssNodeExpandit;
							ImatgeExpandCollapse(obj.childNodes[i],"-");
						}else{
							if(obj.childNodes[i].lang=="" || !self.XMLrequest) 
								AfegeixNodeBloc(obj.childNodes[i],self.cssImgNodeVoid,"&nbsp;"); 
						}
					}
		
					if(testFills.length>0){
						strNouNivell = GestioNivell(obj.childNodes[i], strNivell, nivell);
						//Comprovem les condicions de càrrega total o no
						if((!self.carregaTotOnLoad && nivell<nivellOriginal+1) || self.carregaTotOnLoad || nivell<=self.nivellOculta
							|| obj.childNodes[i].getAttribute(strClass)==self.cssNodeExpandit){
							//GestioImatges(obj, obj.childNodes[i], nivell)						
							CreaBranques(testFills[0], nivell+1, strNivell + strNouNivell);
						}
					}else {
						if(obj.childNodes[i].className != self.cssNodeExpandit)
							obj.childNodes[i].className = self.cssNodeCollapsed;
						
						if(eval("obj.childNodes[i]." + self.attrTeFills)!="" && self.XMLrequest) //si estem fent peticions per XMLHttpRequest
							nodeImgXMLhttp(obj.childNodes[i]);
						
						//GestioImatges(obj, obj.childNodes[i], nivell)
						GestioNivell(obj.childNodes[i], strNivell, nivell);
					}
		
				}	
			}
		}

		obj = null;

	}
	
	
	this.preLoadImg = function(){
		for(var i=0; i<arguments.length; i++){
			var objImgPre = document.createElement("img");
			objImgPre.setAttribute("src",arguments[i]);
		}
		
		objImgPre = null;
	}
	
	this.loadArbres = function(){
		
		if(document.getElementById && document.getElementById(this.id)){
			
			var continuar = true;
					
			if(this.XMLrequest){
				if(this.XMLplana==""){alert(".XMLplana no està establert"); continuar=false;}
				if(this.varName=="") {alert(".varName no està establert"); continuar=false;}
				if(this.attrTeFills=="") {alert(".attrTeFills no està establert"); continuar=false;}
			}

			if(!this.carregaTotOnLoad){
				if(this.varName=="") {
					alert(".varName no està establert i és necessari si carregaTotOnLoad=false"); continuar=false;
				}
			}

			if(continuar){
				if(arguments.length==0){
					//Si no suporta XMLHttpRequest, no farà res
					if(!objXMLHttpRequest()) this.XMLrequest = false;
					if(ns) document.getElementById(this.id).style.display="none";
					idArbreActual = this.id;
					CreaBranques(document.getElementById(this.id), 0, "");
					document.getElementById(this.id).className=this.cssArbre;
					if(ns) document.getElementById(this.id).style.display="block";
					
				}else{ //Carrega una branca de l'arbre dinàmicament
					if(typeof arguments[0]=="object"){
						arguments[0].setAttribute(strClass,self.cssNodeExpandit);
						ImatgeExpandCollapse(arguments[0],"-",1);
						var strCadena = ObteCadenaNivell(arguments[0], "");
						var nivell = strCadena.split("|").length;
						nivellOriginal=nivell;
						CreaBranques(arguments[0].getElementsByTagName("ul")[0], nivell+1, strCadena);
						arguments[0].getElementsByTagName("ul")[0].style.display = "block";
						arguments[0].getElementsByTagName("ul")[0].data = 2;
					}else{
						if(document.getElementById(arguments[0])){
							idArbreActual = arguments[0];
							if(!document.getElementById("loading_tag_das_arbre")){
								var nodeLoad = document.createElement("span");
								nodeLoad.setAttribute("id","loading_tag_das_arbre");
								nodeLoad.innerHTML = this.missatgeLoad;
								document.getElementById(arguments[0]).appendChild(nodeLoad);
								var imgAct = document.getElementById(arguments[0]).getElementsByTagName("img")[0];
								imgAct.setAttribute("src",this.srcImgLoading);
								imgAct.setAttribute(self.strClass,"");
								imgAct.setAttribute("alt","...");
								imgAct.setAttribute("title","...");
								document.getElementById(arguments[0]).getElementsByTagName("a")[0].onclick = function(){return false;}
								imgAct = null;
							}
							loadXMLrequest(arguments[0]);
						}
					}
				}
			}
		}
	}
}