// variables globales
var portada="../htm/lf01.htm";  		// direccion de portada
var nodos=new Array();
var carpeta_open="../img/abierto.gif";  	// imagen de abierto
var carpeta_close="../img/cerrado.gif"; 	// imagen de cerrado
var dibujo_hoja="../img/file.gif"; 		// imagen de hoja del arbol de carpetas
var dibujo_hoja_privada="../img/file3.gif"; 	// imagen de hoja del arbol privada
//colores
var col_6087df = "#6087df";
var col_ffffff = "#ffffff";
var col_f0f0f0 = "#f0f0f0";
var col_336699 = "#336699";

// variables globales que no se usan
var num_nodos=1;			       /* numero de nodos */
var numero_hojas=0;

/****************************************************************** 
   TNODO                                                            
   Crear el objeto tnodo con sus hijos, 
   todos los atributos vienen calculados (pe de excel)                  
   E id, numero del nodo	
   E nombre, nombre del nodo                                        
   E estado, si esta abierto o cerrado                              
   E valor, campo texto para poner algun valor                                                        
   E esraiz(solo debe haber uno)                                    
   E eshoja, indicador de si es hoja o no                           
   E padre, indice del nodo padre                                   
   E enlace, link de las hojas					     
   E num_hijos, numero de hijos 
   E hijos, array con los indices de los hijos 
   E numhoja, numeracion de las hojas 
   E altura, profundidad del nodo 
   S tnodo --> el objeto nodo                                       
*******************************************************************/
 
function tnodo(id,nombre,estado,valor,esraiz,eshoja,padre,enlace,altura,num_hijos,numhoja,hijos)
       {

       	this.id=id;			
       	this.nombre=nombre;        
	this.abierto=estado;       
	this.valor=valor;          
	this.esraiz=esraiz;        
	this.eshoja=eshoja;			
	this.padre=padre;		
	this.enlace=enlace;		
	this.altura=altura;
	this.num_hijos=num_hijos;
	this.numhoja=numhoja;
	
	if (this.eshoja==false)
		{this.hijos=new Array();
		for (i=11;i<tnodo.arguments.length;i++)
			{
			this.hijos[i-11+1]=tnodo.arguments[i];
			}
		}
	
	this.dibujar=dibujar_nodo_js;
	this.pulsar=pulsar_nodo_js;
//	this.altura_calcul=altura_calcular_js;
	this.cerrar_nodo=cerrar_nodos_js;

	}

/****************************************************************** 
   TNODO                                                            
   Crear el objeto tnodo con sus hijos, si no posee hijos           
   entonces no se le pasara nada en el campo nodos                  
   E id, numero del nodo	
   E nombre, nombre del nodo                                        
   E estado, si esta abierto o cerrado                              
   E valor, campo texto para poner algun valor                                                        
   E esraiz(solo debe haber uno)                                    
   E eshoja, indicador de si es hoja o no                           
   E padre, indice del nodo padre                                   
   E enlace, link de las hojas					     
   I num_hijos, numero de hijos (se calcula al asociar_hijos)
   I hijos, array con los indices de los hijos (se carga al asociar_hijos)
   I numhoja, numeracion de las hojas (se calcula en numerar_hojas)
   I altura, profundidad del nodo (se calcula en altura calcular)
   S tnodo --> el objeto nodo                                       
*******************************************************************/
function tnodo_old(id,nombre,estado,valor,esraiz,eshoja,padre,enlace)
       {this.id=id;				/* numero de nodo */
       	this.nombre=nombre;               /*identificador del nodo*/
	this.abierto=estado;           /*si esta abierto o cerrado*/
	this.valor=valor;                    /*valor que se guarda*/
	this.esraiz=esraiz;                /*si es el primero o no*/
	this.eshoja=eshoja;			 /*si es hoja o no*/	
	this.padre=padre;		   /*numero del nodo padre*/
	this.enlace=enlace;			       /*link hoja*/
	this.numhoja=0;			          /*numero de hoja*/
					
	if (this.eshoja)
	    {		      
	    this.abierto=false;
	    this.num_hijos=0;}
	else{			
//	     this.num_hijos=tnodo.arguments.length-7;
	     this.num_hijos=0;	
	     this.hijos=new Array();	     
		}
	this.dibujar=dibujar_nodo_js;
	this.pulsar=pulsar_nodo_js;
	this.altura_calcul=altura_calcular_js;
	this.cerrar_nodo=cerrar_nodos_js;
	this.altura=0;}

/******************************************************************/
/* DIBUJAR_NODO_JS                                                */
/* Retornar la informacion que se debera pintar cuando se pulsa   */
/* Es una funcion recursiva ya que necesita redibujar el resto de */
/* los hijos                                                      */
/* Al definir el onclick se debe poner la instruccion:            */
/* event.cancelBubble=true; para que el evento no se propague a   */
/* los nodos padres                                               */
/******************************************************************/
function dibujar_nodo_js()
	{var indexe,ancho1,signo;
	
	ancho1="";
	for(indexe=1;indexe<=this.altura;indexe++)
		{ancho1=ancho1 + "&nbsp;&nbsp;&nbsp;&nbsp;"}
		
	if (this.abierto==true)
		{ 
         	  signo="<img src=" + carpeta_open + ">&nbsp;&nbsp;";
                }
	else	
		{ 
            	  signo="<img src=" + carpeta_close + ">&nbsp;&nbsp;";
                }         	  
	if (this.eshoja) 
		{
		if (this.valor==1)
		{ signo="<img src=" + dibujo_hoja_privada + ">&nbsp;&nbsp;";
		}
		else
		{ signo="<img src=" + dibujo_hoja + ">&nbsp;&nbsp;";
		}
//		informacion=ancho1 + signo + "<b>" + this.nombre + "</b>" ; }
		informacion=ancho1 + signo +  this.nombre ; }		
	else    {
//		informacion=ancho1 + signo + this.nombre + " [" + this.num_hijos + "]"; 
		informacion=ancho1 + signo + "<b>" + this.nombre + "</b>" ; 		
		}
	if (this.abierto==true)		
		{		
		for(indexe=1;indexe<=this.num_hijos;indexe++)		
			{

			informacion = informacion + "<div id=div" + nodos[this.hijos[indexe]].id + " " +
			               "onclick=nodos[" + this.hijos[indexe] + "].pulsar();event.cancelBubble=true;" + 
                                       ">" + 			               
			               eval("nodos[" + this.hijos[indexe]+ "].dibujar()") + 
			               "</div>";		               
			}
		}
	return informacion;
	}

/******************************************************************/
/* PULSAR_NODO_JS                                                 */
/* Cambiar el estado del nodo, de plegado a no plegado o alreves  */
/* Solo se puede cambiar si posee hijos, es decir, si es una hoja */
/* nunca se cambia el estado del nodo                             */
/******************************************************************/	
function pulsar_nodo_js()
	{
	
	if(this.eshoja==false)
	       {this.abierto=!this.abierto;
		if (this.abierto==false)  {this.cerrar_nodo();};
		
//              particularidad para que el nodo root siempre este abierto. 		
		if (this.id==1) {this.abierto=true;}

//              particularidad para que click en root vaya a portada
		if (this.id==1) {parent.w3.document.location= portada;}
		
		eval("div" + this.id + ".innerHTML='" + this.dibujar() + "'");
	       }
	else   {
//		parent.w3.w3div.innerHTML="<img src='" + this.enlace + "'>";       
		parent.w3.document.location= this.enlace ;       		
	       }       
	}
/******************************************************************
   CERRAR_NODOS_JS                                                 
   cierra todos los nodos a partir de un nodo
*****************************************************************/	
function cerrar_nodos_js()
	{ var i;
	if(this.eshoja==false)
		{this.abierto=false;
// de momento no se cierran los nodos en cascada, para que cuando se abra el padre, quede tal cual estaba.
//		for(i=1;i<=this.num_hijos;i++)		
//			{nodos[this.hijos[i]].cerrar_nodo()};
		}	
	}

/******************************************************************/
/* ALTURA_CALCULAR_JS                                             */
/* Calcular la altura de cada uno de los nodos                    */
/******************************************************************/	
function altura_calcular_js(altura1)
	{var indexe;
	
	this.altura=altura1;
	altura1=altura1+1

	for(indexe=1;indexe<=this.num_hijos;indexe++)		
		{eval("nodos[" + this.hijos[indexe] + "].altura_calcul(" + altura1 + ");");}
	}
	
/******************************************************************/
/* ASOCIAR_HIJOS                                                  */
/* asigna a cada padre sus hijos                                  */
/******************************************************************/	
function asociar_hijos()
	{var i,p;
	for(i=1;i<=num_nodos;i++)		
		{if (nodos[i].esraiz==false)
			{p=nodos[i].padre;
               		 nodos[p].num_hijos++;
			 nodos[p].hijos[nodos[p].num_hijos]=i;	
			}
		}
	}	
	
/******************************************************************
  NUMERAR_HOJAS
  numera las hojas para poder realizar recorridos secuenciales 
  por las hojas. parte del nodo raiz (normalmente:1)
  es llamada desde menu pral como numerar_hojas(1)
******************************************************************/	
function numerar_hojas(nodo)
	{var i;
	if (nodos[nodo].eshoja==false)
		{
		for(i=1;i<=nodos[nodo].num_hijos;i++)		
			numerar_hojas(nodos[nodo].hijos[i]);
		}
	else	{	
		nodos[nodo].numhoja=++numero_hojas;
		}
	}		
	
function mOvrTxt(src,clrOver,clrText){ 
	if (!src.contains(event.fromElement)){
		src.style.cursor = 'default';  
		src.bgColor = clrOver; 
		src.style.color=clrText;
	}
}	 
function mOvr(src,clrOver,clrText){ 
// mouse over: se pone bgcolor y manita
	if (!src.contains(event.fromElement)){ 
                src.style.cursor = 'hand'; 
		src.bgColor = clrOver; 
		src.style.color=clrText;
	} 
} 
function mOut(src,clrIn,clrText){ 
// mouse out: se pone bgcolor y se quita la manita
	if (!src.contains(event.toElement)){ 
		src.style.cursor = 'default'; 
		src.bgColor = clrIn; 
		src.style.color=clrText;
	} 
} 
		