var aDOM = 0, ieDOM = 0, nsDOM = 0; var stdDOM = document.getElementById;

if (stdDOM) aDOM = 1; else {ieDOM = document.all; if (ieDOM) aDOM = 1; else {
var nsDOM = ((navigator.appName.indexOf('Netscape') != -1)
&& (parseInt(navigator.appVersion) ==4)); if (nsDOM) aDOM = 1;}}

function xDOM(objectId, wS) {
if (stdDOM) return wS ? document.getElementById(objectId).style:
document.getElementById(objectId);
if (ieDOM) return wS ? document.all[objectId].style: document.all[objectId];
if (nsDOM) return document.layers[objectId];
}                  

function objWidth(objectID) {var obj = xDOM(objectID,0); if(obj.offsetWidth) return  obj.offsetWidth; if (obj.clip) return obj.clip.width; return 0;}

function objHeight(objectID) {var obj = xDOM(objectID,0); if(obj.offsetHeight) return  obj.offsetHeight; if (obj.clip) return obj.clip.height; return 0;}

function objLeft(objectID) {var obj = xDOM(objectID,0);var objs = xDOM(objectID,1); if(objs.left) return objs.left; if (objs.pixelLeft) return objs.pixelLeft; if (obj.offsetLeft) return obj.offsetLeft; return 0;} 

function objTop(objectID) {var obj = xDOM(objectID,0);var objs = xDOM(objectID,1); if(objs.top) return objs.top; if (objs.pixelTop) return objs.pixelTop; if (obj.offsetTop) return obj.offsetTop; return 0;} 

function objRight(objectID) {return objLeft(objectID)+objWidth(objectID);} function objBottom(objectID) {return objTop(objectID)+objHeight(objectID);} 

function objLayer(objectID) {var objs = xDOM(objectID,1); if(objs.zIndex) return objs.zIndex; return 0;} 

function objVisible(objectID) {var objs = xDOM(objectID,1); if(objs.visibility == 'hide' || objs.visibility == 'hidden') return 'hidden'; return 'visible';}


/* NO HACE FALTA CAMBIAR NADA A PARTIR DE AQUI */
/* Variables */
   var TemporizadorDestino = null
   var origen = -1
   var destino = -1


   function PosicionaMenu( nombre_menu, x, y ) {  
      if (document.getElementById) {              //DOM2 browsers  
         document.getElementById(nombre_menu).style.left = x
         document.getElementById(nombre_menu).style.top = y 
      } else if (document.all) {              //IE4+  
         document.all[nombre_menu].style.pixelLeft = x  
         document.all[nombre_menu].style.pixelTop = y  
      }  
   }  

/*
LanzaMenu() muestra o esconde un menu. nombre_menu especifica que
menu debe ser mostrado o escondido. El argumento on es boolean. Si vale 
1 se muestra el menu. Si vale 0 se oculta.
*/
   function LanzaMenu(nombre_menu, on) {

      if ( on ) { 							//Mostrar menu
         var xx = objLeft('AP') + objLeft('AP1') + 10
         var yy = objTop('AP') + objTop('AP1') + 18
         if ( nombre_menu == 'Menu1' ) {
            PosicionaMenu( 'Menu1',  xx, yy )
         } else if ( nombre_menu == 'Menu2' ) {
            PosicionaMenu( 'Menu2', xx + 10, yy + 20 )
         } else {
            PosicionaMenu( 'Menu3', xx + 10, yy + 40 )
         }
         if (document.getElementById) {				//DOM2 browsers
            document.getElementById(nombre_menu).style.visibility = "visible"
         } else if (document.all) {				//IE4+
            document.all[nombre_menu].style.visibility = "visible"
         }
      } else {							//Ocultar menu
         if (document.getElementById) {				//DOM2 browsers
            document.getElementById(nombre_menu).style.visibility = "hidden"
         } else if (document.all) {				//IE4+
            document.all[nombre_menu].style.visibility = "hidden"
         }
      }
   }

/*MarcaOrigen() registra el menu desde el cual se ha movido el puntero del raton a otro menu.
Se invoca desde onMouseOut en el elemento div*/
   function MarcaOrigen( menu ) {
	if (TemporizadorDestino)
		clearTimeout(TemporizadorDestino)
	origen = menu
	destino = -1
	TemporizadorDestino = setTimeout('CompruebaDestino()', 250)
   }

/*MarcaDestino() registra el menu al cual se ha movido el puntero del raton desde otro meno.
Se invoca con onMouseOver en el elemento div*/
   function MarcaDestino( menu ) {
	destino = menu
   }

/*Esta funcion establece la logica de ocultacion de menus, en base al origen/destino del
movimiento del raton*/
   function CompruebaDestino( menu ) {
	if ( destino == -1 ) {
		Ocultar( 0 )			//Oculta todos
	} else if ( destino < origen ) {
		Ocultar( destino )		//Oculta hijos de destino
	} else if ( destino == origen ) {
		Ocultar( destino )		//Oculta hijos de destino
	}
   }

/*Ocultar() se encarga de hacer no visible uno o varios menus*/
   function Ocultar( menuID ) {
	//Recorre la lista de menus y los oculta
	for (contador = menuID; contador < lista_menus.length; contador++) {
		eval("LanzaMenu('" + lista_menus[contador] + "', 0)")
	}
   }

/*EscribeMenu() crea el codigo HTML para la capa del menu. Los parametros son:
nombre_menu, el string que da nombre al menu.
numero_menu, el identificador del menu (de acuerdo al orden en el array lista_menus).
datos_menu, el nombre del array con los datos del menu.*/
   function EscribeMenu( nombre_menu, numero_menu, datos_menu ) {
	var espacio = / /gi;
	var mayorque = />/gi;
	var literal;
	var cadena_menu = '<div class="SubMenu" id="' + nombre_menu + '" onMouseOut="MarcaOrigen(' + numero_menu + ');"          OnMouseOver="MarcaDestino(' + numero_menu + ');"><table class="TabMenu">\n'
	for( contador = 0; contador < datos_menu.length; contador = contador + 2 ) {
		literal = new String( datos_menu[contador+1] )
		datos_menu[contador+1] = literal.replace(espacio, " ")
		literal = new String( datos_menu[contador+1] )
		datos_menu[contador+1] = literal.replace(mayorque, ">")
		cadena_menu += '<tr><td><a class="MenuItem"  href="' + datos_menu[contador] + '">' + datos_menu[contador+1] +             '</a></td></tr>\n'
	}
	cadena_menu += '</table></div>\n'
	document.write(cadena_menu)
   }
