var styleSelected = "";
var v = new Array();
var sItemSelected = "";

function getChildsCount(nTreeId){
	str = "v";
	if ( nTreeId != '' )
	{
		vInd = nTreeId.split( "_" );
	
		for ( var j=0; j < vInd.length; j++ )
		{
			str+= "[" + vInd[j] + "]";
		}
	}
	return (eval(str + ".length"))-1;
}





function Item(nId,sName, sType, bOpen, scriptMas, script, scriptName, nTreeId )
{
	this.sName = sName;
	this.nId = nId;
	this.sType = sType;
	this.bOpen = bOpen;
	this.javaMas = scriptMas;
	this.java = script;
	this.javaName = scriptName;
	this.nTreeId = nTreeId;

	return this;
}

function AddItem(nId, nTreeId, sName, sType, bOpen, scriptMas, script, scriptName )
{
	/*alert(nId);
	alert(nTreeId);
	alert(sName);
	alert(sType);
	alert(bOpen);
	alert(scriptMas);
	alert(script);
	alert(scriptName);*/
	
	vInd = nTreeId.split( "_" );
	
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
	{
		str+= "[" + vInd[j] + "]";
	}
	eval( str + " = new Array();" );
	nTreeId+= "_0";
	eval( str + "[0] = new Item(nId, sName, sType, bOpen, scriptMas, script, scriptName, nTreeId );" );
}


function WriteLayer( t )
{
	if ( document.all ){
		document.all.directorio.innerHTML = t;
		}
	else
	{
		document.getElementById( "directorio" ).innerHTML = t;//.directorio.document.write( t );
		document.getElementById( "directorio" )//.directorio.document.close();
	}
}

function setStyleItemSelected( s )
{
	styleSelected = s;
}

function Show( SelectedItem )
{
	
	sItemSelected = SelectedItem;
	Tr = Tree( v, 0 );
	WriteLayer( Tr );
}

function Tree( v, celdas )
{
	tRdo="";
	tRdo+= "<table border='0' cellspacing='0' cellpadding='0' >";
	tRdo+="<tr><td>";
	tRdo+="<img border='1' src='" + sImgFolderRoot.src + "' width='15' height='1'>";
	tRdo+="</td>";
	tRdo+='<td colspan="100"><font face="Arial"><b>' + sRoot + "</b></font></td></tr>"
	var initUltimo = "";
	rama( v, celdas, initUltimo );
	tRdo+= "</table>";
return( tRdo );
}

function Write( t )
{
	tRdo+= t;
}

function rama( vector, celEsp, nTreeId )
{
	var vec = vector;
	var cel = celEsp;

	for ( var k = 1; k < vec.length; k++ )
	{
		Write("<tr>");
		celd = "";
		for ( var i = 0; i < cel; i++ )
		{
			str = "v";
			if ( nTreeId != '' )
			{
				vInd = nTreeId.split( "_" );
			
				//str = "v";
				for ( var j=0; j < i; j++ )
				{
					str+= "[" + vInd[j] + "]";
				}
			}
			cantHijos = 0;
			str += ".length"
			cantHijos = eval( str ) - 1;

			celd+="<td>" //+ str + "-H:" + cantHijos + " -I:" + nTreeId + " -ubic:" + vInd[i] + " el i: " + i;
			if ( vInd[i] < cantHijos ) // si en nro de hijo q es mi padre es < cant hijos q tiene mi padre...
				celd+="<img border='0' src='" + sImgLine.src + "' width='16' height='22'>";
			//else cel+="-&nbsp;";
			celd+="</td>";//celdas vacias
		}
		Write( celd );

		var imag = new Image();


/* ************************ MODIFICATIONS 09-01-2005 ****************************** */

var strTypeFolder = "" + vec[k][0].sType;
strTypeFolder = strTypeFolder.substring( 0, strTypeFolder.indexOf( "_" ) );
//alert( strTypeFolder );

		if (strTypeFolder == "folder" )// If it is folder we painted folder icon
		{
			// *************We painted the folder icon (open or close)
			if ( vec[k][0].bOpen )
			{
				strFolderName = vec[k][0].sType + "_open"
			}
			else
			{
				strFolderName = vec[k][0].sType + "_close"
			}
			eval( "imag.src = img_" + strFolderName + ".src" );
		}
		else
		{
			eval( "imag.src = img_" + vec[k][0].sType + ".src" );
		}
/* ********************* END MODIFICATIONS 09-01-2005 ****************************** */



/*
		if (vec[k][0].sType == "folder" )// Si es carpeta pintamos icono de carpeta
		{
			// *************Dibujamos el icono de carpeta (ab o cerr) y el nombre
			if ( vec[k][0].bOpen ) imag.src = sImgFolderOpen.src; else imag.src = sImgFolderClose.src;
		}
		else
		{
			eval( "imag.src = img_" + vec[k][0].sType + ".src" );
		}
*/




		var imagLink = new Image();
		if ( vec[k].length > 1 ) //si tiene subdirectorios
		{
			if ( k == vec.length-1 )//si es la ultima carpeta
			{
				if ( vec[k][0].bOpen ) imagLink.src = sImgCloseFolderEnd.src; else imagLink.src =sImgOpenFolderEnd.src;
			}
			else
			{
				if ( vec[k][0].bOpen ) imagLink.src = sImgCloseFolder.src; else imagLink.src =sImgOpenFolder.src;
			}
		}
		else
		{
			if ( k == vec.length-1 )//si es la ultima carpeta
			{
				imagLink.src = sImgEmptyFolderEnd.src;
			}
			else
			{
				imagLink.src = sImgEmptyFolder.src;
			}
		}

		d="";
		d+="<td>";
	var ind = vec[k][0].nTreeId;

		if ( vec[k].length > 1 ) //si tiene subdirectorios
			d+='<a href="#" onClick="abrirMas(\'' + ind + '\'); return false;">';
		d+="<img border='0' src='" + imagLink.src + "'" + " width='16' height='22'" + ">";
		if ( vec[k].length > 1 ) //si tiene subdirectorios
			d+="</a>";
		d+="</td>";

		d+="<td>";
	d+='<a href="#" onClick="abrirCarp(\'' + ind + '\'); return false;">';
		d+="<img border='0' src='" + imag.src + "'" +/* " width='16' height='13'" +*/ ">";
	d+="</a>";
		d+="</td>";
		Write( d );
		d="";
		
		idThisElement = vec[k][0].nTreeId; //.substring( 0, v[k][0].nTreeId.length - 2 );
		d+="<td colspan='100' " //+ idThisElement; /*+ vec[k].length*/ 
		d+=">";
	d+='<a href="#" onClick="abrirName(\'' + ind + '\'); return false;">';
		d+= "<span "
		if ( sItemSelected + "_0" == idThisElement )
			d+= " style='" + styleSelected + "' ";	
		d+= ">"
		d+=vec[k][0].sName;
		d+= "</span>";
	d+="</a>";
		d+="</td>";
		Write( d );
		Write( "</tr>" );
		//alert( vec[k].length );
		if ( ( vec[k].length > 1 ) && ( vec[k][0].bOpen ) )
		{
			//alert( "por llamar a rama", ultimo );
			ncel=cel+1;
			rama( vec[k], ncel, vec[k][0].nTreeId );
		}
	}
}



//llamada al hacer click en carpeta
function abrirCarp( nTreeId )
{
	abrir( nTreeId, ".java" );
}

//llamada al hacer click en el mas o el menos
function abrirMas( nTreeId )
{
	abrir( nTreeId, ".javaMas" );
}

//llamada al hacer click en el nombre del arch o carp
function abrirName( nTreeId )
{
	sItemSelected = nTreeId.substring( 0, nTreeId.length - 2 );
	abrir( nTreeId, ".javaName" );
}


function abrir( nTreeId, scriptJ )
{
	//alert( "por abri a: " + nTreeId );
	//alert( nTreeId.split( "_" ) );
	vInd = nTreeId.split( "_" );
	
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
	{
		str+= "[" + vInd[j] + "]";
	}
	strName = str + ".sName";
	strOpen = str + ".bOpen";
	var strJava = str + scriptJ//".java";

	//str = "abrirVec[0].sName";
	////////////eval( "alert(" + strName + ")" );
	////////////eval( "alert(" + strOpen + ")" );
	//eval( "alert(" + strJava + ")" );

if ( scriptJ != ".javaName" )
	eval( strOpen + " = !" + strOpen );//establecemos esta carpeta como ab o cerr
	//eval( strJava + "(" + strName + ");" );
	////////////eval( "alert(" + strOpen + ")" );


	//abrirVec[0].bOpen = !abrirVec[0].bOpen;
/*
	if ( document.all )
	{
		//alert( document.all.directorio.style.innerHTML );
		document.all["directorio"].innerHTML = Tree( v, 0 );
	}
*/
WriteLayer( Tree( v, 0 ) );
	eval( "eval(" + strJava + ");" );
	//rama( v, 0 )
}

function closeDir( nTreeId )
{
	str = "v";
	if ( nTreeId != '' )
	{
		vInd = nTreeId.split( "_" );
	
		//str = "v";
		for ( var j=0; j < vInd.length; j++ )
		{
			str+= "[" + vInd[j] + "]";
		}
	}
	
	for ( var h = 1; h < eval( str + ".length" ); h++ )
		eval( str + "["+ h + "][0].bOpen= false" )
/*
	if ( document.all )
	{
		//alert( document.all.directorio.style.innerHTML );
		document.all["directorio"].innerHTML = Tree( v, 0 );
	}	
*/
WriteLayer( Tree( v, 0 ) );
}


function setItemName( TreeId, sName ){
	vInd = TreeId.split( "_" );
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
		str+= "[" + vInd[j] + "]";

	strName = str + "[0].sName";
	eval( strName + " = '" + sName + "'" );
}


function getStatusTree( nId )
{
	str = "v";
	if ( nId != 0 )
	{
		vInd = nId.split( "_" );
	
		for ( var j=0; j < vInd.length; j++ )
		{
			str+= "[" + vInd[j] + "]";
		}
	}
	return sItemSelected+"~"+eval( "getStatus( " + str + " ) " );
}

function getStatus( vector )
{
	var vec = vector;	
	var statusReturn = "";
	for ( var k = 1; k < vec.length; k++ )
	{
		var sTreeId="";
		sTreeId+=vec[k][0].nTreeId;
		sTreeId=sTreeId.substring(0,sTreeId.length-2);
		statusReturn+= sTreeId + "|" + vec[k][0].nId + "|"+ vec[k][0].sType + "|" + vec[k][0].bOpen + "#";
		if ( vec[k].length > 1 )
		{
			statusReturn+=getStatus( vec[k], vec[k][0].nTreeId );
		}
	}
	return statusReturn
}



function getItemId(nTreeId)
{
	vInd = nTreeId.split( "_" );
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
	{
		str+= "[" + vInd[j] + "]";
	}
	return eval( str + "[0].nId" );
}



//<input type="button" value="Get TreeId By Id" 
//onClick="alert( 'El TreeId es: ' + getTreeIdById( '8','carpeta' ) + '*' )">
/* ****************** getTreeIdById() ************************** */
/*Obtiene el TreeId en base al nId(de BD) y el tipo*/
function getCsvTreeId( id, type )
{
	var csvTreeId=getCsvTreeId_Private( v, id, type );
	csvTreeId=Trim(csvTreeId);
	if(csvTreeId.length>0)csvTreeId=csvTreeId.substring(0,csvTreeId.length-1);
	return csvTreeId;
}

function getCsvTreeId_Private( vector, id, type )
{
	var vec = vector;	
	var TreeIdReturn = "";
	for ( var k = 1; k < vec.length; k++ )
	{
		strType = "" + vec[k][0].sType;
		strId = "" + vec[k][0].nId;
		strTreeId = "" + vec[k][0].nTreeId;
		strTreeId = strTreeId.substring( 0, strTreeId.length - 2 )
		if ( ( strId == id ) && ( strType == type ) )
		{
			TreeIdReturn+= strTreeId + ",";
		}
		if ( vec[k].length > 1 )
		{
			TreeIdReturn+= getCsvTreeId_Private( vec[k], id, type );
		}
		
	}
	return TreeIdReturn;
}

function getTreeId( id, type )
{
	var sTreeId=getTreeId_Private( v, id, type );
	return sTreeId;
}


function getTreeId_Private( vector, id, type )
{
	var vec = vector;	
	var TreeIdReturn = "";
	for ( var k = 1; k < vec.length; k++ )
	{
		strType = "" + vec[k][0].sType;
		strId = "" + vec[k][0].nId;
		strTreeId = "" + vec[k][0].nTreeId;
		strTreeId = strTreeId.substring( 0, strTreeId.length - 2 )

		if ( ( strId == id ) && ( strType == type ) )
			return ( strTreeId );
		if ( vec[k].length > 1 )
		{
			TreeIdReturn = getTreeId_Private( vec[k], id, type );
			if ( TreeIdReturn != "" ) return TreeIdReturn
		}
	}
	return TreeIdReturn;
}

/*  */






function delItemPhysical( id )
{
	vInd = id.split( "_" );
	
	str = "v";
	for ( var j=0; j < vInd.length-1; j++ )
	{
		str+= "[" + vInd[j] + "]";
	}
	lenFather = eval( str + ".length" ) - 1;
	var k = lenFather;
	//alert( str + " - " + lenFather );
	for ( var i = (lenFather - 1); i >= vInd[ vInd.length - 1 ]; i-- )
	{
		k = parseInt( i ) + parseInt( 1 );
		//alert( str + "[" + k + "][0].nTreeId = " + str +  "[" + i + "][0].nTreeId" );
		//alert( eval( str + "[" + k + "][0].sName " ) + " = " + eval( str +  "[" + i + "][0].sName" ) );
		eval( str + "[" + k + "][0].nTreeId = " + str +  "[" + i + "][0].nTreeId" );
		//eval( str + "[" + i + "] = " + str +  "[" + k + "]" );
		//eval( str + "[" + i + "][0] = " + str +  "[" + k + "][0]" );
	}
	for ( var i = vInd[ vInd.length - 1 ]; i <= (lenFather - 1); i++ )
	{
		k = parseInt( i ) + parseInt( 1 );
		//alert( str + "[" + k + "][0].nTreeId = " + str +  "[" + i + "][0].nTreeId" );
		//alert( eval( str + "[" + k + "][0].sName " ) + " = " + eval( str +  "[" + i + "][0].sName" ) );
		//eval( str + "[" + k + "][0].nTreeId = " + str +  "[" + i + "][0].nTreeId" );
		eval( str + "[" + i + "] = " + str +  "[" + k + "]" );
		//eval( str + "[" + i + "][0] = " + str +  "[" + k + "][0]" );
	}
	
	eval( str + "[" + k + "] = null" );
	//newLenFather = lenFather - 1;
	eval( str + ".length = " + lenFather );
	
	for ( var i = vInd[ vInd.length - 1 ]; i < lenFather; i++ )
	{
		idFather = eval( str +"[" + i + "]" + "[0].nTreeId" );
		idFather = idFather.substring( 0, idFather.length - 2 );
		eval( "upDatePostDelNode_Private( " + str + "[" + i + "],'" + idFather + "' )" );
	}
	//alert( eval( str + ".length" ) - 1 );
	//alert( lenFather );
	//strName = str + "[0].sName";
	//alert(strName);
}


function upDatePostDelNode_Private( vector, idFather )
{
	//alert( vector[0].sName );
	var vec = vector;	
	var statusReturn = "";
	for ( var k = 1; k < vec.length; k++ )
	{
		//statusReturn+= vec[k][0].nTreeId + "#" + vec[k][0].sName + "#" + vec[k][0].open + "|";
		strTreeId = "" + vec[k][0].nTreeId;
		newTreeId = idFather + strTreeId.substring( idFather.length )
		//alert(idFather);
		/////alert( "item: " + vec[k][0].sName + " old: " + vec[k][0].nTreeId + " new: " + newTreeId );
		vec[k][0].nTreeId = newTreeId;
		
		if ( vec[k].length > 1 )
		{
			upDatePostDelNode_Private( vec[k], idFather );
		}
	}
	//return statusReturn
}


function delItemLogical( TreeId )
{
	vInd = TreeId.split( "_" );
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
		str+= "[" + vInd[j] + "]";
	sType = str + "[0].sType";
	eval("if ("+sType+"=='folder_common')" + sType + "='folder_green'" );
	eval("if ("+sType+"=='item')"+ sType + "='item_disabled'" );
	eval("if ("+sType+"=='subitem')"+ sType + "='subitem_disabled'" );
}


function undelItemLogical( TreeId )
{
	vInd = TreeId.split( "_" );
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
		str+= "[" + vInd[j] + "]";
	sType = str + "[0].sType";
	//alert(sType);
	eval("if ("+sType+"=='folder_green')" + sType + "='folder_common'" );
	eval("if ("+sType+"=='item_disabled')"+ sType + "='item'" );
	eval("if ("+sType+"=='subitem_disabled')"+ sType + "='subitem'" );
}



function isOpen(nTreeId)
{
	vInd = nTreeId.split( "_" );
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
	{
		str+= "[" + vInd[j] + "]";
	}
	return eval( str + "[0].bOpen" );
}

function getType(nTreeId)
{
	vInd = nTreeId.split( "_" );
	str = "v";
	for ( var j=0; j < vInd.length; j++ )
	{
		str+= "[" + vInd[j] + "]";
	}
	return eval( str + "[0].sType" );
}
