var codigoFamilia=0;
var nombreCapa = '';
var cliente = 'dpc';


function cambioRama (capa,codfamilia,primer,ultimo) { 
   div = document.getElementById(capa);
   if (div.childNodes ) {
      if ( div.childNodes.length > 1) {
	     while ( div.childNodes.length > 1   ) {
		    div.removeChild(div.childNodes[div.childNodes.length-1]);
		 };
	  } else {
	     if ( capa.indexOf("Familia_Principal") >=0 ) {
		 // si llamamos desde la familia principal devuelve todos los artículos familias y subfamilias	
		    xajax_FSubFamilia(capa,codfamilia,true,primer,ultimo);
		 } else {
		    //en caso contrario solo subfamilias, los articulos ya se visualizarón en la consulta anterior
			xajax_FSubFamilia(capa,codfamilia,false,primer,ultimo);
		 };
   	  };
   };
   document.getElementById("menu_superior").focus();
}


function abrirRamaArbol (codfamilia,capa) { 
	var linkFamilia, arbol, subFamilia, nsubFamilia, nivelSubFamilia, nivelActual, padresFamilia, linkFamilia1;
	linkFamilia = document.getElementById('LinkArbolfamilia' + codfamilia);
	if (linkFamilia == null) {
		linkFamilia = document.getElementById('LinkArbolsubfamilia' + codfamilia);
	};
	if (linkFamilia.className.indexOf('linkCerrado')>=0) {
		linkFamilia.className = 'linkAbierto' + linkFamilia.className.slice(11);
		codigoFamilia = codfamilia;
		nombreCapa    = capa;
		// cambiamos la clase de los links de las familias o subfamilias abiertas a subfamilias cerradas
		arbol = document.getElementById('arbolFamilias');
		links = arbol.getElementsByTagName('a');
		for (x=0;x<=links.length-1;x++) {
			if (links[x].className == 'linkAbiertosubfamilia' || links[x].className == 'linkCerradosubfamilia') {
				links[x].className = 'linkCerradosubfamilia';
			} else {
				if ( links[x].className == 'linkAbiertofamilia' || links[x].className == 'linkCerradofamilia') {
					links[x].className = 'linkCerradofamilia';								
				};
			};
		};
		// borramos todas las subfamilias de nivel superior a la familia actual
		nivelActual = CalcularNivelFamilia(capa + codfamilia);
		if ( arbol != null ) {
			subFamilia = arbol.getElementsByTagName('div');
			nsubFamilia = subFamilia.length;
			for (i=0;i<=nsubFamilia-1;i++) {
			// Sólo se borra si existen subFamilias (es decir nunca en el nivel 1)
				if ( subFamilia[i].id.indexOf('subfamilia')>=0 ) {
					// Borramos todas las subfamilias de nivel > nivelActual y que el Padre no sea la familiaActual
					nivelSubFamilia = CalcularNivelFamilia(subFamilia[i].id);
					if ( nivelSubFamilia > nivelActual ) {
						subFamilia[i].parentNode.removeChild(subFamilia[i]);				
						subFamilia = document.getElementsByTagName('div');
						nsubFamilia = subFamilia.length;
						i = 0;
					};
					
				};
			};
		};
		// mostramos los articulos y subfamilias de la familia actual
		xajax_FActualizarInfCabecera('barraInfCabecera','Inicio -> Busqueda por familia');
		xajax_FSubFamilia(capa + codfamilia,codfamilia);
	} else {
		cerrarRamaArbol(codfamilia,capa);
		//actualizarArbol(codfamilia,capa)
	};
}  


function cerrarRamaArbol (codfamilia,capa) {
		cerrado = false;
		contenidoFamilia = document.getElementById(capa + codfamilia);
		hijo = contenidoFamilia.childNodes;
		i = 0;
   	while (contenidoFamilia.firstChild && cerrado == false) {
			if ( hijo[i].id != codfamilia && hijo[i].id != 'LinkArbol' + codfamilia && hijo[i].id != 'familia' + codfamilia) {
				contenidoFamilia.removeChild(hijo[i]);
				hijo = contenidoFamilia.childNodes;				
				i = 0;
			} else {
				i = i + 1;
			};
			if ( i == hijo.length) {
				cerrado = true;
				linkFamilia.className = 'linkCerrado' + linkFamilia.className.slice(11) ;	
			};			
      };		
		imagenes = document.images;
		for(i=0;i<=(imagenes.length)-1;i++) {
			if (imagenes[i].id == 'imagenArbol' + codfamilia) {
				imagenes[i].src = 'img/' + cliente + '/e02.gif';
			}; 
		};	
}



function actualizarArbol(codFamiliaActual,nombreCapaActual) {
		var familia,nivelActual,subFamilia,nsubFamilia,arbol,nivelSubFamilia,existe;
		var padresFamilia = new Array();
		var padresSubFamilia = new Array();
		familia = nombreCapaActual + codFamiliaActual;
		// Calculamos el nivel de la familia actual		
		nivelActual = CalcularNivelFamilia(familia);
		padresFamilia = PadreFamiliaActual(familia);		
		for (x=0;x<=padresFamilia.length-1;x++) {
			linkFamilia = document.getElementById('LinkArbolsubfamilia' + padresFamilia[x].slice(10));
			if (linkFamilia != null) {
				linkFamilia.className = 'linkAbiertosubfamilia';
			} else {
				linkFamilia = document.getElementById('LinkArbolfamilia' + padresFamilia[x].slice(7));
				if (linkFamilia != null) {
					linkFamilia.className = 'linkAbiertofamilia';								
				};
			};
		};
		// Buscamos todas las subfamilias y familias dentro de la capa arbolFamilias
		arbol = document.getElementById('arbolFamilias');
		if ( arbol != null ) {
			subFamilia = arbol.getElementsByTagName('div');
			nsubFamilia = subFamilia.length;
			for (i=0;i<=nsubFamilia-1;i++) {
				// Sólo se borra si existen subFamilias (es decir nunca en el nivel 1)
				if ( subFamilia[i].id.indexOf('subfamilia')>=0 ) {
					// Borramos todas las subfamilias de nivel >= nivelActual y que el Padre no sea la familiaActual
					nivelSubFamilia = CalcularNivelFamilia(subFamilia[i].id);
					existe = false;
					padresSubFamilia = PadreFamiliaActual(subFamilia[i].id);				
					for (x=0;x<=padresSubFamilia.length-1;x++) {
						for (y=0;y<=padresFamilia.length-1;y++) {
							if (padresFamilia[y] == padresSubFamilia[x]) {existe = true};
						};						
					};
					if ( existe == false && nivelSubFamilia > nivelActual ) {
						linkFamilia = document.getElementById('LinkArbolsubfamilia' + subFamilia[i].parentNode.id.slice(10));
						if (linkFamilia != null) {
							linkFamilia.className = 'linkCerradosubfamilia';
						} else {
							linkFamilia = document.getElementById('LinkArbolfamilia' + subFamilia[i].parentNode.id.slice(7));
							if (linkFamilia != null) {
								linkFamilia.className = 'linkAbiertofamilia';								
							};
						};						
						imagenes = document.images;
						for(x=0;x<=(imagenes.length)-1;x++) {
							var codigo = subFamilia[i].parentNode.id.slice(7)
							if (imagenes[x].id == 'imagenArbolfamilia' +  codigo || imagenes[x].id == 'imagenArbolsubfamilia' + codigo) {
								imagenes[x].src = 'img/' + cliente + '/e02.gif';
							}; 
						};	
						subFamilia[i].parentNode.removeChild(subFamilia[i]);				
						subFamilia = document.getElementsByTagName('div');
						nsubFamilia = subFamilia.length;
						i = 0;
					} else {
						// AQUI TENGO QUE BUSCAR TODOS LOS PADRES DE LA SUBFAMILIA Y PONER EL LINK ABIERTO

						imagenes = document.images;
						for(x=0;x<=(imagenes.length)-1;x++) {
							if (imagenes[x].id == 'imagenArbolfamilia' + codFamiliaActual || imagenes[x].id == 'imagenArbolsubfamilia' + codFamiliaActual) {
								imagenes[x].src = 'img/' + cliente + '/e02dow.gif';
							} else if (imagenes[x].id.indexOf('imagenArbol')>=0 ) {
								imagenes[x].src = 'img/' + cliente + '/e02.gif';					
							}; 
						};					
					};
				};
			};
		};
}

// Esta función calcula en nivel de la familia pasada
function CalcularNivelFamilia(elemento) {
	var nivel = 0;
	capaActual = document.getElementById(elemento);
	if (capaActual != null) {
		var i = 100;
		while (capaActual.id.indexOf('arbolFamilias')==-1 ) {
			i = i + 1;
			nivel = i;
			capaActual = document.getElementById(capaActual.parentNode.id);
		};
	};
	return nivel;
}


function PadreFamiliaActual(subfam) {
	var familia;
	var listaPadres = new Array();
	familia = document.getElementById(subfam);
	if (familia.id != null && familia.parentNode.id != null ) {
		var i = 0;
		while (familia.id.indexOf('arbolFamilias')==-1 ) {
			if ( familia.id != null ) {
				listaPadres[i] = familia.id;			
			};
			i = i + 1;
			familia = document.getElementById(familia.parentNode.id);
		};
	};
	return listaPadres;
}