//Incluir ocmoscap.js, menus.js y global.js
//Incluir estilosmenus.css

var menus=new Array();
var idTemp=null;
var espera=500;	//tiempo hasta que el submenú desaparece en ms.
var indMenuActivo=0;

//******************************************************************************
//clase menú
function menu(idCapa,posx,posy,ancho,margenIzq,alinVert,nivel){
 this.idCapa=idCapa;
 this.estilo="position:absolute;visibility:hidden;z-index:40;";
 this.posx=posx;//entero
 this.posy=posy;//entero
 this.ancho=ancho;
 this.margenIzq=margenIzq;
 this.alinVert=alinVert;//booleano
 this.nivel=nivel;//entero (0 para el principal)
 this.elementos=new Array();
 //métodos
 this.esVisible=esVisible;
 this.oculMosMenu=oculMosMenu;
 this.introElemMenu=introElemMenu;
 this.escribirEnDoc=escribirEnDoc;
 //inicializar
}

//clase elemento de menú
function elemMenu(textoElemMenu,idMenuPadre,enlace,paramEnlace){
 this.textoElemMenu=textoElemMenu;
 this.idMenuPadre=idMenuPadre;//id menú al que pertenece
 this.enlace=enlace;//url ó id submenú que mostrar
 this.paramEnlace=paramEnlace; //parámetros a pasar en la url. Ej.:?var=5
 this.idElemMenu=id_unico("elem");
 //inicializar
}

//****************************************************
//implementación métodos
function esVisible(){
 return visible(this.idCapa);
}

function oculMosMenu(){
 OculMosCapa(this.idCapa);
} 

function introElemMenu(objElemMenu){
 this.elementos.push(objElemMenu);
}

function escribirEnDoc(){
 var objMenu,objCuerpoTabla,objEL,objEnl,objText,esSubmenu;
 var nav=new Browser();
 var capaMenu=d.createElement("div");
 capaMenu.setAttribute("id",this.idCapa);
 if(this.alinVert) objMenu=d.createElement("ul");//crear lista
 else{
  objMenu=d.createElement("table");//crear tabla
	objCuerpoTabla=d.createElement("tbody");//crear cuerpo tabla
	objMenu.appendChild(objCuerpoTabla);
	var objFila=d.createElement("tr");//crear fila
	objCuerpoTabla.appendChild(objFila);
 }
 capaMenu.appendChild(objMenu);
 
 for(var i=0;i<this.elementos.length;i++){
  esSubmenu=false;
  if(this.alinVert){
	 objEL=d.createElement("li");//crear elemento de lista
	 objMenu.appendChild(objEL);
	}
	else{
	 objEL=d.createElement("td");//crear celda de tabla
	 objFila.appendChild(objEL);
	}
		
	objEnl=d.createElement("a");//crear enlace
	objEnl.setAttribute("id",this.elementos[i].idElemMenu);
	if(nav.isIE) objEnl.style.width=this.ancho+"px";			//ancho menú IE
	else objEnl.style.width=(this.ancho-this.margenIzq)+"px";			//ancho menú otros
	objEnl.style.paddingLeft=this.margenIzq;
	if(this.elementos[i].enlace=="") objEnl.setAttribute("href","#");
	else{
	 for(var j=0;j<menus.length;j++){
		if(menus[j].idCapa==this.elementos[i].enlace){
		 objEnl.setAttribute("href","#");
		 esSubmenu=true;
		 break;
		}
	 }
	 if(!esSubmenu){
	  objEnl.setAttribute("href",this.elementos[i].enlace+this.elementos[i].paramEnlace);
		if(d.URL.indexOf(this.elementos[i].enlace)!=-1){
		 objEnl.setAttribute("className","doc_actual");//IE
     objEnl.setAttribute("class","doc_actual");//otros
		}
	 }
	}
	objEnl.onmouseover=resolverEnlace;   //abrir submenú ó cerrar los abiertos
	objEL.appendChild(objEnl);
	if(this.elementos[i].textoElemMenu!="-") objText=d.createTextNode(this.elementos[i].textoElemMenu);//crear el texto
	else{
	 objText=d.createElement("span");//crear separador
	 objText.style.width=(this.ancho-this.margenIzq)+"px";
	}
	objEnl.appendChild(objText);
 }
 capaMenu.style.cssText=this.estilo;
 capaMenu.style.left=this.posx+"px";
 capaMenu.style.top=this.posy+"px";
 capaMenu.setAttribute("className","menu");//IE
 capaMenu.setAttribute("class","menu");//otros
 capaMenu.onmouseout=lanzarCerrarMenus;
 d.body.appendChild(capaMenu);
}

//******************************************************************************
//funciones
function crearMenu(idCapa,posx,posy,ancho,margenIzq,alinVert,nivel){
 var nuevoMenu=new menu(idCapa,posx,posy,ancho,margenIzq,alinVert,nivel);
 menus.push(nuevoMenu);
}

function crearElemMenu(textoElemMenu,idMenuPadre,enlace,paramEnlace){
 for(var i=0;i<menus.length;i++){
  if(menus[i].idCapa==idMenuPadre){
	 var objElemMenu=new elemMenu(textoElemMenu,idMenuPadre,enlace,paramEnlace);
	 menus[i].introElemMenu(objElemMenu);
	 break;
	}
 }
}

function escribirMenus(){
 for(var i=0;i<menus.length;i++){
  menus[i].escribirEnDoc();
	if(menus[i].nivel==0) menus[i].oculMosMenu();
 }	
}

function cerrarMenusPunta(){
 idTemp=null;
 for(var i=0;i<menus.length;i++){
	if((menus[i].esVisible())&&(menus[i].nivel>menus[indMenuActivo].nivel)){
	 menus[i].oculMosMenu();
	}
 }
}

function cerrarMenus(){
 indMenuActivo=0;
 cerrarMenusPunta();
}

//******************************************************************************
//manejadores de eventos
function resolverEnlace(){
 var elMe;
 if(idTemp){
  clearTimeout(idTemp);
	idTemp=null;
 }
 for(var i=0;i<menus.length;i++){
  for(var j=0;j<menus[i].elementos.length;j++){
	 elMe=menus[i].elementos[j];
	 if(this.id==elMe.idElemMenu){
	  indMenuActivo=i;
	  if(elMe.enlace==""){
		 cerrarMenusPunta();
		 return;
		}
	  for(var k=0;k<menus.length;k++){
		 if(menus[k].idCapa==elMe.enlace){
		  if(!menus[k].esVisible()){
			 cerrarMenusPunta();
			 menus[k].oculMosMenu();
			}
		  return;
		 }
		}
	 }
	}
 }
 cerrarMenusPunta();
}

function lanzarCerrarMenus(){
 if(idTemp) clearTimeout(idTemp);
 idTemp=setTimeout("cerrarMenus()", espera);
}



