var NodoColumna = new Array;

function crearArbol(num){
	var col;
	var row;
	var maxRow;
	var indice;
	var indicesArray;
	var nivel;
	var nivelesArray;
	var nivelSig;
	var nivelesArraySig;
	var indiceOculto;
	var str;
	var mascara;


	BuscarFinNodos();

	maxRow=DataTree.length;
	//alert(maxRow);

	for(row=0;row<maxRow;row++) {
		nivelesArray=DataTree[row][0].split(".");
		nivel=nivelesArray.length-1;
		indice=nivelesArray[0];

		if (row<(maxRow-1)) {
			nivelesArraySig=DataTree[row+1][0].split(".");
			nivelSig=nivelesArraySig.length-1;
		}


		str = "<div id='linea" + row + "'>";
		str += "<table border=0 cellPadding=0 cellspacing=0>";
		str += "<tr>";

		for(col=0;col<maxLevel;col++) {
			if (col==nivel) {
				str += "<td width=19>";
				if (row==0) {
					//str += "<img src=\"img/folder.gif\" align=\"absbottom\" border=0>";
					str += "<img src=\"images/carpeta.jpg\" align=\"absbottom\" border=0>";
				} else {
					if (row<(maxRow-1)) {
						if (nivelSig>nivel) {
							str += "<a href=\"javaScript:ColExp(" + row +");\">";
							if (NodoColumna[nivel]==row) {
								str += "<img id=imgNodo" + row + " src=\"images/menoscodo.jpg\" align=\"absbottom\" border=0>";
							} else {
								str += "<img id=imgNodo" + row + " src=\"images/menos.jpg\" align=\"absbottom\" border=0>";
							}
							str += "</a>";
						} else {
							if (nivelSig==nivel) {
								//str += "<img src=\"img/joinbottom.gif\" align=\"absbottom\" border=0>";
								str += "<img src=\"images/t.jpg\" align=\"absbottom\" border=0>";
							} else {
								//str += "<img src=\"img/join.gif\" align=\"absbottom\" border=0>";
								str += "<img src=\"images/codo.jpg\" align=\"absbottom\" border=0>";
							}
						}
					} else {
						//str += "<img src=\"img/join.gif\" align=\"absbottom\" border=0>";
						str += "<img src=\"images/codo.jpg\" align=\"absbottom\" border=0>";
					}
				}
				str += "</td>";

				if (row>0) {
					str += "<td>";
					if (nivelSig>nivel) {
						str += "<a href=\"#\">";
						//str += "<img src=\"img/folder.gif\" align=\"absbottom\" border=0>";
						str += "<img src=\"images/carpeta.jpg\" align=\"absbottom\" border=0>";
						str += "</a>";
					} else {
						str += "<a href=\"#\">";
						//str += "<img src=\"img/page.gif\" align=\"absbottom\" border=0>";
						str += "<img src=\"images/pagina.jpg\" align=\"absbottom\" border=0>";
						str += "</a>";

					}
					str += "</td>";
				} else {
					/*
					str += "<td>";
					str += "<img src=\"img/folder.gif\" align=\"absbottom\" border=0>";
					str += "</td>";
					*/
				}


				str += "<td>";
				str += "<a href=\"javascript:Clisk_Lista("+ DataTree[row][4] +");\">";
				str += "<font face=\"Arial\" size=\"1\" color=\"black\">";
				str += DataTree[row][1];
				str += "</font>";
				str += "</a>";
				str += "<font face=\"Arial\" size=\"1\" color=#4682b4>";
				str += " [" + DataTree[row][5] + "]";
				str += "</font>";
				str += "</td>";



				//str += "<A HREF=\"javascript:Clisk_Lista("+ this.ids[i] +");\"><b>" + this.strs[i] + "</b></A>" + " <font color=#4682b4>" + this.nImages[i] + "</font>";
				//str += "<font face=\"Verdana\" size=\"-2\" color=\"black\">"
				//str += "</font>"




			} else {
				if (col>nivel) {
				//	str += "<td width=19>";
				//	str += "<img src=\"img/empty.gif\" align=\"absbottom\" border=0>";
				//	str += "</td>";
				} else {
					str += "<td width=19>";
					if (!isNaN(NodoColumna[col])){
						if (row>NodoColumna[col]) {
							//str += "<img src=\"img/empty.gif\" align=\"absbottom\" border=0>";
							str += "<img src=\"images/vacio.jpg\" align=\"absbottom\" border=0>";
						}else {
							//str += "<img src=\"img/line.gif\" align=\"absbottom\" border=0>";
							str += "<img src=\"images/linea.jpg\" align=\"absbottom\" border=0>";
						}
					} else {
						str += "<img src=\"images/linea.jpg\" align=\"absbottom\" border=0>";
					}
					str += "</td>";
				}
			}
		}

		str += "</tr>";
		str += "</table>";
		str += "</div>";

		//alert(str);

		document.write(str);

	}


	//if (!document.layers) {
	//	mascara="001100";
	//	//Si hay algún nodo colapsado ejecutar la función de colapso.
	//	if (mascara.lastIndexOf("1")>-1) {
	//		AplicarMascara(mascara);
	//	}
	//	//alert(ObteneMascara());
	//}

}

function ColExp(num){
	OcultarItems(0);
	AplicarEstados(num,0);
	MostrarItems(0);
}



function AplicarEstados(num, estadoPadre){
	var nivelesArray;
	var indiceOculto;
	var divItem;
	var nivelOculto;
	var maxRow;
	var row;
	var nivelesArray;
	var nivel;
	var indice;
	var objImgNodo;



	if (document.getElementById) {
		objImgNodo = document.getElementById("imgNodo"+num);
	}else if (document.all) {
		objImgNodo = document.all["imgNodo"+num];
	}

	if (DataTree[num][2] == 0) {
		//alert("Cambiar la imagen de imgNodo"+num+" por img_colapsado. " + objImgNodo.src);
		if (objImgNodo.src.lastIndexOf("images/menos.jpg")>-1) {
			objImgNodo.src = "images/mas.jpg";
		} else {
			//objImgNodo.src = "img/plusbottom.gif";
			objImgNodo.src = "images/mascodo.jpg";
		}
	} else {
		//alert("Cambiar la imagen de imgNodo"+num+" por img_expand. " + objImgNodo.src);
		if (objImgNodo.src.lastIndexOf("images/mas.jpg")>-1) {
			objImgNodo.src = "images/menos.jpg";
		} else {
			objImgNodo.src = "images/menoscodo.jpg";
		}
	}


	nivelesArrayOculto=DataTree[num][0].split(".");
	nivelOculto=nivelesArrayOculto.length;
	//alert("Ocultar/Mostrar los items de nivel igual a " + nivelOculto );

	maxRow=DataTree.length;

	if (DataTree[num][2] == 0) {
		DataTree[num][2]=1;
	} else {
		DataTree[num][2]=0;
	}


	num++;
	for(row=num;row<maxRow;row++) {
		nivelesArray=DataTree[row][0].split(".");
		nivel=nivelesArray.length-1;

		if (nivel == nivelOculto) {
			//******************************************************************
			//alert("Ocultar " + row + " nivel:"+nivel);

			if (row<(maxRow-1)) {
				nivelesArraySig=DataTree[row+1][0].split(".");
				nivelSig=nivelesArraySig.length-1;
			} else {
				nivelSig=nivelOculto-1;
			}


			if( (DataTree[num-1][2] == 0) && (estadoPadre==0) ){
				//alert("Mostrar el DIV " + row +", Colapsado="+pacrecolapsado + " nivel="+nivel);
				DataTree[row][3]=1;
			} else {
				//alert("Ocultar el DIV " + row +", indice="+indice+" nivel="+nivel);
				DataTree[row][3]=0;
			}


			// Si el siguiente item tiene un nivel inferior al que se ha hecho click, se terminará la búsqueda.
			if (nivelSig<nivelOculto) {
				//alert("cambio de nivel que determina el fin en " + (row+1));
				break;
			} else {
				if (nivelSig>nivel) {
				//	alert("___ Me encuentro el nodo anidado " + row);
					AplicarEstados(row, DataTree[num-1][2]);
				}
			}

			//******************************************************************
		}
	}


}







function AplicarMascara(mascara) {
	var nivelesArray;
	var maxRow;
	var row;
	var nivel;
	var pos=0;

	maxRow=DataTree.length;

	OcultarItems(0);

	for(row=0;row<maxRow;row++) {
		nivelesArray=DataTree[row][0].split(".");
		nivel=nivelesArray.length-1;

		if (row<(maxRow-1)) {
			nivelesArraySig=DataTree[row+1][0].split(".");
			nivelSig=nivelesArraySig.length-1;
		} else {
			//nivelSig=nivelOculto-1;
		}


		if (nivelSig>nivel) {
			if (mascara.charAt(pos) == "1") {
				DataTree[row-1][2]=1;
				AplicarEstados(row,0);
			}
			pos++;
		}

	}

	MostrarItems(0);
}



function ObteneMascara() {
	var nivelesArray;
	var maxRow;
	var row;
	var nivel;
	var mascara="";
	var val;

	maxRow=DataTree.length;

	for(row=0;row<maxRow;row++) {
		nivelesArray=DataTree[row][0].split(".");
		nivel=nivelesArray.length-1;


		if (row<(maxRow-1)) {
			nivelesArraySig=DataTree[row+1][0].split(".");
			nivelSig=nivelesArraySig.length-1;
		} else {
			//nivelSig=nivelOculto-1;
		}


		if (nivelSig>nivel) {
			mascara += DataTree[row-1][2];
		}

	}

	return(mascara);
}








function OcultarItems(desde){
	var maxRow;
	var row;
	var divItem;

	maxRow=DataTree.length;

	for(row=desde;row<maxRow;row++) {
	//for(row=maxRow-1;row>=desde;row--) {
		if (document.getElementById) {
			divItem = document.getElementById("linea" + row).style;
		}else if (document.all) {
			divItem = document.all["linea"+row].style;
		}
		if (divItem) {
			divItem.display = "none";
			//alert("Ocultar: " + row);
		} else {
			//alert("linea" + row + " no existe");
		}

	}
}

function MostrarItems(desde){
	var maxRow;
	var row;
	var divItem;

	maxRow=DataTree.length;

	//for(row=desde;row<maxRow;row++) {
	for(row=maxRow-1;row>=desde;row--) {
		if (document.getElementById) {
			divItem = document.getElementById("linea" + row).style;
		}else if (document.all) {
			divItem = document.all["linea"+row].style;
		}

		if(DataTree[row][3]==1) {
			divItem.display = "inline";
		} else {
			divItem.display = "none";
		}
	}
}




// Buscar en que fila acaba el último item de cada columna(si tiene).
function BuscarFinNodos(){
	var row;
	var maxRow;
	var nivel;
	var nivelesArray;
	var nivelSig;
	var nivelesArraySig;

	maxRow=DataTree.length;


	for(row=0;row<maxRow;row++) {
		nivelesArray=DataTree[row][0].split(".");
		nivel=nivelesArray.length-1;

		//if (row<(maxRow-1)) {
			NodoColumna[nivel]=row;
		//}
	}

	/*
	for (col=0;col<maxLevel;col++) {
		if (!isNaN(NodoColumna[col]))  {
			alert("La columna " + col + " alcanza su valor máximo en la fila " + NodoColumna[col]);
		}
	}
	*/
}
