/* author: Christian A. Candela */
/* Creation date: 17/02/03 */

imagenItemComprimido = new Image();
imagenItemComprimido.src = "imagenes/cruz.gif";
imagenItemDesplegado = new Image();
imagenItemDesplegado.src = "imagenes/raya.gif";
imagenItemEspacio = new Image();
imagenItemEspacio.src = "imagenes/espacio.gif"
imagenItemBasio = new Image();
imagenItemBasio.src = "imagenes/basio.gif";
imagenItemEsquina = new Image();
imagenItemEsquina.src = "imagenes/esquina.gif";
imagenItemT = new Image();
imagenItemT.src = "imagenes/t.gif";
numeroItems = 0; 


function MostrarObjeto( objeto )
{
 for( i in objeto )
 {
  alert( i + " = " + objeto[i] );
 }
}

function Menu(x,y)
{
	this.items = new Array();
	this.ComprimirItems = ItemComprimirItems;
	this.Adicionar = ItemAdicionar;
	this.Reposicionar = ItemReposicionar;
	this.RecargarImagenes = ItemRecargarImagenes;
	this.desplegado = true;
	this.x = x == null ? 10 : x;
	this.y = y == null ? 10 : y;
	this.alto  = 20;
	this.ancho = 180;
	this.Cerrar = MenuCerrar;
}

function MenuCerrar()
{
	document.write("</td></tr></tbody></table>");
}

function Item( texto , link , nombre , padre )
{
	this.texto    = texto;
	this.link     = link;
	this.items = new Array(); 
	if( nombre == null )
	{
		this.nombre = "item" + numeroItems;
	}
	else
	{
		this.nombre = nombre;
	}
	numeroItems++;
	if( padre == null )
	{
	 	this.padre = window;
	  this.alto     = 20;
  	this.ancho    = 320;		
	}
	else
	{
		this.padre 			= padre;
	 this.alto     = padre.alto;
	 this.ancho    = padre.ancho;
	}
	
	this.desplegado = false;
	this.x = this.padre.x;
	this.y = this.padre.y + 20 + 20 * this.padre.items.length;
	this.Constructor = document.layers ? ItemConstructorNS : ItemConstructorIE;
	this.Constructor();
	this.Link = ItemLink;
	this.Adicionar = ItemAdicionar;
	this.ComprimirItems = ItemComprimirItems;
	this.DesplegarItems = ItemDesplegarItems;
	this.Desplegar = ItemDesplegar;
	this.Comprimir = ItemComprimir;
	this.Ocultar = ItemOcultar;
	this.Mostrar = ItemMostrar;
	this.AltoTotal = ItemAltoTotal;
	this.Reposicionar = ItemReposicionar;
	this.RecargarImagenes = ItemRecargarImagenes;
	
	eval("padre.items."+nombre+"= this");
	padre.items[ padre.items.length ] = this;
}

function ItemConstructorIE()
{
	this.indiceImagen = document.images.length;
	document.write("<div id = '"+ this.nombre +"'>");
	p = this.padre.padre;
	while( p != null )
	{
		document.write("<img src='imagenes/espacio.gif'>");
		p  = p.padre;		
	}
	document.write("<a class='menulink' id='"+this.nombre+"Link' href='"+this.link+"' onclick='return this.padre.item.Link();'>");
	document.write("<img id='"+this.nombre+"Imagen'></img>");	
 document.write(this.texto);
	document.write("</a>");
 document.write("</div>");

 this.objeto = eval(this.nombre );
 this.objeto.item = this;
	this.objeto.link = eval(this.nombre+"Link");
	this.objeto.link.padre = this.objeto;

	this.objeto.imagen = this.imagen = eval(this.nombre+"Imagen");
	this.imagen.src = imagenItemDesplegado.src;

	this.objeto.style.position = "absolute";
	this.objeto.style.left = this.x;	  
	this.objeto.style.top  = this.y;	
	//this.objeto.link.style.textDecoration = 'none';
	this.objeto.imagen.style.position = "relative";
	this.objeto.imagen.style.top = 5;
	this.objeto.imagen.style.border = 'none';
	this.objeto.noWrap = true;
}

function ItemConstructorNS()
{
	this.indiceImagen = 0;
	document.write("<layer id = '"+ this.nombre +"' width='"+this.ancho+"'>");
	p = this.padre.padre;
	while( p != null )
	{
		document.write("<img src='imagenes/espacio.gif'>");
		p  = p.padre;		
	}
	document.write("<a id='"+this.nombre+"Link' href='"+this.link+"' class='menulink' onclick='return this.padre.item.Link();'>");
	document.write("<img name='"+this.nombre+"Imagen' border='0' ></img>");
	document.write("<layer top='5px' id = '"+ this.nombre +"Ad' class='textolink'><a id='"+this.nombre+"LinkAd' href='"+this.link+"' class='menulink' onclick='return this.padre.item.Link();'>");
	document.write(this.texto);
	document.write("</a></layer>");
	document.write("</a>");
	document.write("</layer>");

	this.objeto = eval("document."+this.nombre );
	this.objeto.item = this;
	this.objeto.objetoAd = eval("document."+this.nombre+".document."+this.nombre + "Ad" );
	this.objeto.link = this.objeto.document.links[0];
	this.objeto.link.padre = this.objeto;
	this.objeto.objetoAd.link = eval( "document."+this.nombre+".document."+this.nombre + "Ad.document."+this.nombre+"LinkAd");
	if( this.objeto.objetoAd.document.links.length )
	{
	 this.objeto.objetoAd.document.links[0].padre = this.objeto;	
	}
	else
	{
  this.objeto.objetoAd.document.layers[0].document.links[0].padre = this.objeto;
	}
	for( var i = 0 ; i < this.objeto.document.images.length ; i++ )
	{
		if( this.objeto.document.images[i].name == (this.nombre+"Imagen") )
		{
			this.objeto.imagen = this.imagen = this.objeto.document.images[i];
			break;
		}
	}	

	this.imagen.src = imagenItemT.src;
	this.objeto.x = this.x;	  
	this.objeto.y = this.y;
}

function ItemLink()
{
	if( this.desplegado )
	{
		this.Comprimir();
	}
	else
	{
		this.Desplegar();
	}
	return this.link != null;
}

function ItemAdicionar( texto , link , nombre )
{
	a = new Item(texto,link,nombre,this);
	if( this.padre )
	{
		this.items[ this.items.length - 1 ].Ocultar();
	 	if( this.items.length == 1 )
		{
		 this.imagen.src = imagenItemComprimido.src;
		}
	}	
}

function ItemComprimirItems ()
{
	for( var i = 0 ; i < this.items.length ; i++ )
	{
		if( this.items[i].desplegado )
		{		
			this.items[i].Comprimir();
		}	
	}
}

function ItemComprimir()
{
	for( var i = 0 ; i < this.items.length ; i++ )
	{
		this.items[i].Comprimir();
		this.items[i].Ocultar();
	}
	if( i != 0 )
	{
	 	this.imagen.src = imagenItemComprimido.src;
		this.desplegado = false;
	}
	var padre = this.padre;
	var hijo = this;		
	while( padre )
	{
		for( var i = 0 ; i < padre.items.length && hijo != padre.items[i] ; i++ );
		padre.Reposicionar( i );
		hijo = padre;
		padre = padre.padre;
	}
}

function ItemDesplegarItems()
{	
	for( var i = 0 ; i < this.items.length ; i++ )
	{
		this.items[i].Mostrar();
		this.items[i].Reposicionar();		
	}	
}

function ItemDesplegar()
{
	if( this.items.leng != 0 )
	{
		this.padre.ComprimirItems();
		this.desplegado = true;
		this.DesplegarItems();
		this.imagen.src = this.items.length == 0 ? this.padre.items[ this.padre.items.length - 1 ] == this ? imagenItemEsquina.src : imagenItemT.src : imagenItemDesplegado.src;
		var padre = this.padre;
		var hijo = this;		
		while( padre )
		{
			for( var i = 0 ; i < padre.items.length && hijo != padre.items[i] ; i++ );
			padre.Reposicionar( i );
			hijo = padre;
			padre = padre.padre;
		}
	}	
}

function ItemOcultar()
{
	if( document.layers )
	{
		this.objeto.visibility = 'hidden';
	}
	else
	{
		this.objeto.style.visibility = 'hidden';
	}	
}

function ItemMostrar()
{
	this.objeto.visibility = 'inherit';
	if( document.layers )
	{
		this.objeto.visibility = 'inherit';
	}
	else
	{
		this.objeto.style.visibility = 'inherit';
	}	
}

function ItemAltoTotal ()
{
	var oculto = document.layers ? this.objeto.visibility != 'inherit' : this.objeto.style.visibility == 'hidden';
	if( oculto )
	{
		return 0;
	}

	var alto = 20;//document.layers ? this.objeto.height : this.objeto.clientHeight ;
	//alto = alto <= 22 ? 20 : alto - 2 ;
	for( var i = 0 ; i < this.items.length ; i++ )
	{
		alto += this.items[i].AltoTotal();
	}	
	return alto;
}

function ItemReposicionar( item )
{
	if( this.padre && item == null )
	{
		var oculto = document.layers ? this.objeto.visibility != 'inherit' : this.objeto.style.visibility == 'hidden';
		if( oculto )
		{
			return;
		}
	 	this.y = this.padre.y + 20;
		for( var i = 0 ; i < this.padre.items.length ; i++ )
		{
		 	if( this.padre.items[i] != this )
			{
				this.y += this.padre.items[i].AltoTotal();
			}
			else
			{
				break;
			}
		}
		if( document.layers )
		{
			this.objeto.y = this.y;
		}
		else
		{
			this.objeto.style.top = this.y;
		}					
	}
			
	for( var j = item == null ? 0 : item ; j < this.items.length && this.desplegado ; j++ )
	{
		this.items[j].Reposicionar();
	}
}


function ItemRecargarImagenes(nivel,imagenes)
{
	if( this.padre )
	{
		imagenes[ nivel ] = this.padre.items[ this.padre.items.length - 1 ] == this ? 0 : 1; 
	}
	for( var i = 0 ; i < nivel ; i++ )
	{
		this.objeto.document.images[ i + this.indiceImagen ].src = imagenes[i] == 1 ? imagenItemEspacio.src : imagenItemBasio.src;
	}
	for( i = 0 ; i < this.items.length ; i++ )
	{
		this.items[i].RecargarImagenes(nivel+1,imagenes);
	} 
	if( this.items.length == 0 && this.padre )
	{
		if( this.padre.items[ this.padre.items.length - 1 ] == this )
		{
			this.imagen.src = imagenItemEsquina.src;
		}
		else
		{
			this.imagen.src = imagenItemT.src;
		}	
	}
}