//           _   _ _           
//  ___  ___| |_(_) | ___  ___ 
// / _ \/ __| __| | |/ _ \/ __|
//|  __/\__ \ |_| | | (_) \__ \
// \___||___/\__|_|_|\___/|___/

//colores de fondo sucesivos, a medida que descendemos por el menú
VCHbgcolor=new Array('#EEEEEE','#58ae9c','#58ae9c','#1d2407');
//muestra el arbol plegado o desplegado
VCHarboldesplegado=true;
//salto al primer hijo con URL en caso de seleccionar un objeto sin URL
VCHsaltoURL=true;
//Profundidad del menú horizontal
VCHmenuProfundidad=2;

document.write('<style>');
document.write('.VCHBarra{display:block;width:100%;}'); //cada una de las barras del menú
document.write('.VCHCelda,.VCHCeldaEnfocada,.VCHCeldaDes{width:1px;padding:0px;padding-left:7px;padding-right:7px;vertical-align:top;vertical-align:middle}'); //cada celda visible

document.write('.VCHTree{border:#ffffff 1px solid;width:100%}'); //tabla del árbol
document.write('.VCHArbol{font-family:arial;font-size:11px;white-space:nowrap}'); //texto del árbol

document.write('.VCHCelda,.VCHbloque{border:1px;border-right:1px #FFFFFF solid}'); //borde inferior
document.write('.VCHCeldaEnfocada{border-right:1px #FFFFFF solid}'); //bordes por arriba y los lados
document.write('.VCHCeldaDes{text-align:right;font-size:11px;color:#D1D5C3;font-family:arial;cursor:default;line-height:16px}'); //texto descripcion
document.write('.VCHbloque{width:1px;height:10px;display:block}'); //bloque que marca la altura de las barras

document.write('.VCHSeleccionable,.VCHSeleccionableUP,.VCHSelecto,.VCHSelectoUP,.VCHActivo,.VCHActivoUP{font-family:arial;cursor:pointer;cursor:hand;font-size:11px;white-space:nowrap;vertical-align:middle;line-height:16px}');//textos visibles

document.write('.VCHSeleccionable  {color:#2B324E;}'); //color de los items a seleccionar
document.write('.VCHSeleccionableUP{color:#009900;}');//idem onmouseover
document.write('.VCHSelecto  {color:#2b324e}'); //color de los items selectos
document.write('.VCHSelectoUP{color:#009900}');//idem onmouseover
document.write('.VCHActivo  {color:#000000}'); //color de los items activos
document.write('.VCHActivoUP{color:#009900}');//idem onmouseover
document.write('</style>');


//                 _             
// _ __ ___   ___ | |_ ___  _ __ 
//| '_ ` _ \ / _ \| __/ _ \| '__|
//| | | | | | (_) | || (_) | |   
//|_| |_| |_|\___/ \__\___/|_|   

//***************
function VCHmacro(qobjeto,qtexto,qurl,qdes)
{
if(!qurl) qurl="";
if(!qdes) qdes="";
eval(qobjeto+'=new VCHitem("'+qobjeto+'","'+qtexto+'","'+qurl+'","'+qdes+'")');
}

//***************
function VCHactivarSegunURL(criterio)
{
if(criterio==null) criterio=VCHroot;

if(location.href.indexOf(criterio.url)!=-1 && criterio.url!=null && criterio.url!="") {criterio.activar();return;}
	else
	for(var i=0;i<criterio.colgantes.length;i++) VCHactivarSegunURL(criterio.colgantes[i]);
}

//***************
function VCHAd()
{
for(q=0;q<arguments.length;q++) 
	{
	arguments[q].padre=this;
	this.colgantes.push(arguments[q])
	}
}

//***************
function VCHActivar(){activo=this;foco=this;}

//***************
function VCHActivado(){var q=this.activoporarriba()||this.activoporabajo();return q;}

//***************
function VCHActivoPorAbajo() //devuelve true si el elemento activo está dentro de las ramas del actual
{
if(this.padre==this) return true;
if(activo==this) return true;
	else 
		{
		var q=false;
		for(var i=0;i<this.colgantes.length;i++) 
			q=q||this.colgantes[i].activoporabajo();
		if(q) return true; else return false;
		}
}

//***************
function VCHActivoPorArriba() //devuelve true si el elemento activo está por encima del actual
{
if(this.padre==this) return false;
if(activo==this) return true;
if(this.padre.activoporarriba()) return true;
return false;
}

//***************
function VCHEnfocado(){var q=this.enfocadoporarriba()||this.enfocadoporabajo();return q;}

//***************
function VCHEnfocadoPorAbajo() //devuelve true si el elemento activo está dentro de las ramas del actual
{
if(this.padre==this) return true;
if(foco==this) return true;
	else 
		{
		var q=false;
		for(var i=0;i<this.colgantes.length;i++) 
			q=q||this.colgantes[i].enfocadoporabajo();
		if(q) return true; else return false;
		}
}

//***************
function VCHEnfocadoPorArriba() //devuelve true si el elemento activo está por encima del actual
{
if(this.padre==this) return false;
if(foco==this) return true;
if(this.padre.enfocadoporarriba()) return true;
return false;
}

//***************
function VCHProfundidad(prof)
{
if(prof==null) var prof=0;
var i;
var maxprof=0;
var c=this.colgantes.length;
if(c>0)
	{
	prof+=1;
	for(i=0;i<c;i++)
		if(this.colgantes[i].profundidad(prof)>maxprof)
			maxprof=this.colgantes[i].profundidad(prof);
	if(maxprof>0) prof=maxprof;
	}
return prof;
}

//***************
function VCHbgcol(q)
{
if(q>=VCHbgcolor.length) q=VCHbgcolor.length-1;
return ' class=VCHCeldaEnfocada style="background-color:'+VCHbgcolor[q-1]+'" ';
}

//***************
function VCHArbolDesplega(iden)
{
estado=document.getElementById(iden).style.display;
if(estado=="none") 
	{//abrimos
	document.getElementById(iden).style.display="";
	document.getElementById(iden+"_img").src="img/folder_opened.gif";
	}
	else 
	{//cerramos
	document.getElementById(iden).style.display="none";
	document.getElementById(iden+"_img").src="img/folder_closed.gif";
	}
}

var idenunico=0;

//***************
function VCHArbol(iteracion,maxiter)
{
if(iteracion==null)	{iteracion=1;maxiter=this.profundidad();idenunico=0}
idenunico++;
if(iteracion>maxiter) return "";

var siguiente=false;
var q='';
var des="&nbsp"; 
var margenizq='margin-left:'+(iteracion-1)*10+'px;';

q+='<table class=VCHtree cellspacing=0 style="'+margenizq+'">';
for(var i=0;i<this.colgantes.length;i++)
	{
	var item=this.colgantes[i];
	var hijos=item.colgantes.length;
	var identificador="VCHarbol"+idenunico;
//  comprobamos cuántos hijos tiene y seleccionamos imagen: folder o item
	var folderimage='<img src="img/folder_item.gif" width=8 height=8>';
	if(hijos>0) 
		folderimage='<img width=20 height=8 src="'+(VCHarboldesplegado?"img/folder_opened.gif":"img/folder_closed.gif")+'" id='+identificador+'_img class=mano onclick=VCHArbolDesplega("'+identificador+'")>';
//  comprobamos si hay URL asociada
	var tex=item.texto;
	if(item.activoporabajo()) tex="<b>"+tex+"</b>";
	if(item.url!="") tex='<a class=VCHArbol href="javascript:top.VCHSalta(&quot;'+item.name+'&quot;);" target=cuerpo>'+tex+'</a>';

	q+='<tr><td class=VCHArbol>'+folderimage+' '+tex+' <div id='+identificador+' '+(VCHarboldesplegado?'':'style="display:none"')+'>'+item.arbol(iteracion+1)+'</div></td></tr>';
	}
q+='</table>';

return q;
}

//***************
function VCHMuestra(iteracion,maxiter)
{
if(iteracion==null)	{iteracion=1;maxiter=this.profundidad();}
if(iteracion>maxiter) return "";

var siguiente=false;
var q='';
var des="&nbsp"; 

q+='<table class=VCHbarra '+VCHbgcol(iteracion)+' cellspacing=0><tr>';

for(var i=0;i<this.colgantes.length;i++)
	{
	var item=this.colgantes[i];
	var tex=item.texto; //para abreviar
	var arbolactivo=item.activoporabajo()&&item.enfocadoporarriba(); //true para aquellos elementos pertenecientes al árbol activo

	if(item.url!=null && item.url!="")
		if(this.colgantes[i]==activo)
			{//si el elemento es el activo, se muestra especial pero sin opción de selección
			tex='<a class=VCHActivo style="cursor:default"><b>'+tex+'</b></a>';
			}
			else
			{//si no es el activo, se da la opción de clicar en él para cambiar de URL
			tex='<a class=VCHSeleccionable  onclick=VCHSalta("'+item.name+'") onmouseover=this.className="VCHSeleccionableUP" onmouseout=this.className="VCHSeleccionable">'+tex+'</a>';
			}

	//se muestran aquellos elementos por encima del enfocado, pero no por debajo
	if(item.enfocadoporabajo()) {siguiente=this.colgantes[i];}
	//a no ser que se haya seleccionado cualquiera del árbol activo, que entonces se muestra en su totalidad.
	if(arbolactivo) {siguiente=this.colgantes[i];}

	if(siguiente) if (siguiente.descripcion!="") {des=siguiente.descripcion;}

	if(item.activoporabajo())
			{//elementos pertenecientes a la página actual
			q+='<td '+(item.enfocadoporabajo()||arbolactivo?VCHbgcol(iteracion+1):' class=VCHCelda')+' ><a onclick=VCHConmuta("'+item.name+'") class=VCHActivo onmouseover=this.className="VCHActivoUP" onmouseout=this.className="VCHActivo"><b>'+tex+'</b></a></td>';
			}
			else
			{//elementos clicables y navegables que no coinciden con lo seleccionado
			if(item.enfocadoporabajo())
				{//elemento enfocado
				q+='<td '+VCHbgcol(iteracion+1)+'><a onclick=VCHSalta("'+item.name+'") class=VCHSelecto>'+tex+'</a></td>';
				}
				else
				{//los otros
				q+='<td class=VCHCelda><a onclick=VCHSalta("'+item.name+'") class=VCHSeleccionable onmouseover=this.className="VCHSelectoUP" onmouseout=this.className="VCHSelecto">'+tex+'</a></td>';
				}
			}

	}

q+='<td class=VCHCeldaDes style="width:100%" nowrap>'+des+'</td><td class=VCHBloque></td></tr></table>';

raya='<table class=VCHBarra '+VCHbgcol(iteracion+1)+' cellspacing=0><tr><td style="padding:0px"><span width=100% height=2px style="display:block;background-color:'+VCHbgcolor[iteracion]+'"></span></td></tr></table>';
q+=raya;

if(siguiente) q+=siguiente.muestra(iteracion+1,maxiter);
	else for(var j=iteracion+1;j<=maxiter;j++)	
		q+='<table class=VCHbarra '+VCHbgcol(j)+' cellspacing=0><tr><td class=VCHBloque></td><td class=VCHCelda style="width:100%"><span class=VCHSelecto style="cursor:default">&nbsp;</span></td></tr></table>'+raya;

return q;
}


//***************
function VCHBuscaURL(objeto)
{
if(objeto.colgantes.length==0) return null;
for(i=0;i<objeto.colgantes.length;i++)
	{
	if(objeto.colgantes[i].url!="") return objeto.colgantes[i];
	}
VCHBuscaURL(objeto.colgantes[0]);
}


//***************
function VCHConmuta(item)
{
foco=eval(item);

if(VCHsaltoURL) //si está activo, busca la primera URL que cuelgue de él.
	{
	objetoconurl=VCHBuscaURL(foco);
	if(objetoconurl!=null) {VCHSalta(objetoconurl);return}
	}

	if(foco.colgantes.length==1) VCHConmuta(foco.colgantes[0].name);

VCHMenuDraw();
}

//***************
function VCHJerarquiaSalto(objeto)
{
objeto.activar();
//alert("saltando a : "+objeto.url);
//es necesario decidir que cosa va en cada frame
//en el framework necesariamente va framework.hps
//en el cuerpo, el último de todos: el activo
//en el subnavegador, el objeto de segundo orden <-- este hay que decidirlo
secuencia=new Array();

var objeto2=objeto;
while(objeto2.padre && objeto2.padre!=objeto2)	{secuencia.push(objeto2); objeto2=objeto2.padre}
secuencia.reverse();
//for(i=0;i<secuencia.length;i++)	alert(i+","+secuencia[i].name);
var objeto3=secuencia[VCHmenuProfundidad-1]; //nos interesa construir el árbol a partir del último item del menú horizontal, si existe!!

var arbolnavegacion="";
var hayarbol=false;
//top.columnaCerrar();

if(objeto3!=null)
	{
	arbolnavegacion=objeto3.arbol();
	if(arbolnavegacion.length>0) hayarbol=true;

	arbolnavegacion="<div class=textobazul style='white-space:nowrap'><b>"+objeto3.texto+"</b></div>"+arbolnavegacion;
//	top.document.getElementById("buffersubnavegador").innerHTML="";
	top.document.getElementById("buffersubnavegador").innerHTML=arbolnavegacion;

	ancho=parseInt(top.document.getElementById("buffersubnavegador").offsetWidth);
	//alert(ancho);
//	ancho=parseInt(top.subnavegador.document.getElementById("subnav_tabla").offsetWidth);

	top.subnavegador.document.getElementById("interiorcolumna").innerHTML=arbolnavegacion;
	top.document.getElementById("subnavegadorid").style.width=ancho+12;
//	top.document.getElementById("cuerpoid").style.width=top.document.body.clientWidth-ancho-9;
	}

	if(hayarbol)
		{if(top.document.getElementById("subnavegadorid").style.display=="none") top.columnaAbrir();} 
	else 
		{if(top.document.getElementById("subnavegadorid").style.display=="") top.columnaCerrar()}

top.VCHMenuDraw();
top.cuerpo.location.href=objeto.url;
}

//***************
function VCHSalta(item)
{
objeto=eval(item);
if(objeto.url) 
	{
	VCHJerarquiaSalto(objeto);
	}
	else 
	{
	VCHConmuta(item);
	top.VCHMenuDraw();
	}
}

//***************
function VCHMenuDraw() {
	if(document.getElementById("VCHmenu"))
		document.getElementById("VCHmenu").innerHTML=VCHroot.muestra(1,VCHmenuProfundidad);
}

//***************
function VCHarbolenlaces()
{
var q=(this.url!=""?'<a href="'+this.url+'">'+this.texto+"</a><br>":"");
for(var i=0;i<this.colgantes.length;i++)
	{
	q+=this.colgantes[i].arbolenlaces();
	}
return q;
}

//***************
//CONSTRUCTOR
function VCHitem(name,texto,url,descrip)
{
if(!descrip) descrip="";
if(!url) url="";

//atributos
	this.name=name;
	this.texto=texto;
	this.url=url;
	this.descripcion=descrip;
	this.colgantes=new Array();
	this.padre=this;

//atributos globales
	activo=false;
	foco=false;

//métodos
	this.ad=VCHAd;
	this.muestra=VCHMuestra;
	this.arbol=VCHArbol;
	this.arbolenlaces=VCHarbolenlaces;

	this.profundidad=VCHProfundidad;

	this.activar=VCHActivar;

	this.activoporarriba=VCHActivoPorArriba;
	this.activoporabajo=VCHActivoPorAbajo;
	this.activado=VCHActivado;

	this.enfocadoporarriba=VCHEnfocadoPorArriba;
	this.enfocadoporabajo=VCHEnfocadoPorAbajo;
	this.enfocado=VCHEnfocado;

}

//***************
//creamos el objeto raíz
VCHmacro("VCHroot","");

//***************
//javascript:VCHmapaHTML()
function VCHmapaHTML()
{
q="<textarea style='width:1000;height:600;font-family:verdana;font-size:10px'><style>.cultao{display:none}</style><div class=cultao>"+VCHroot.arbolenlaces()+"</div></textarea>";
document.write(q);
}
