var nMENU_VERTICAL = 1; var nMENU_HORIZONTAL = 2; var nPLEGADO = -1; var nDESPLEGADO = 1; var nMAXNIVEL = 2; var nPAUSA; function getId (sParID) { var x = document.getElementById (sParID); return (x); } function Menu(sParID, nParPausa, bParSoloUnaDesplegada, nParOrientacion) { this.a = getId (sParID); this.a.menu = this; this.sID = sParID; this.top = this; this.aoItems = new Array(); this.oPadre = null; this.oActual = null; this.sLabel = ""; this.nEstado = nPLEGADO; this.nNivel = -1; this.nNivelClase = -1; this.nOrden = 1; this.nOrientacion = (nParOrientacion == null) ? nMENU_VERTICAL : nParOrientacion; this.nPausa = (nParPausa == null) ? 0 : nParPausa; this.bSoloUnaDesplegada = (bParSoloUnaDesplegada == null) ? true : bParSoloUnaDesplegada; this.bPlegar = true; this.aoExpandirAlAbrir = new Array(); this.aoEjecutarAlAbrir = new Array(); this.a.Click = a_Click; this.a.Ocultar = a_Ocultar; this.a.Mostrar = a_Mostrar; this.ClickVertical = menu_ClickVertical; this.AddItem = menu_AddItem; this.Plegar = menu_Plegar; this.Desplegar = menu_Desplegar; this.Dentro = menu_Dentro; this.ExpandirMarcados = menu_ExpandirMarcados; this.EjecutarMarcados = menu_EjecutarMarcados; } function menu_AddItem (sParID, bParPlegar, bParExpandirAlAbrir, bParEjecutarAlAbrir, sParTarget) { var item = new Menu (sParID, this.nPausa, this.bSoloUnaDesplegada); item.oPadre = this; item.top = this.top; item.nNivel = item.oPadre.nNivel + 1; item.nOrden = this.aoItems.length; item.nNivelClase = (item.nNivel > 2) ? 2 : item.nNivel; item.bPlegar = (bParPlegar == null) ? this.bPlegar : bParPlegar; item.a.style.display = "none"; item.a.className = "N" + item.nNivelClase; item.a.onmouseover = a_Over; item.a.onfocus = a_Over; item.a.onmouseout = a_Out; item.a.onblur = a_Out; item.a.onclick = a_Click; if (bParExpandirAlAbrir) { this.top.aoExpandirAlAbrir [this.top.aoExpandirAlAbrir.length] = item; } if (bParEjecutarAlAbrir) { if (sParTarget != "") item.a.target = sParTarget; this.top.aoEjecutarAlAbrir [this.top.aoEjecutarAlAbrir.length] = item; } // Pone el objeto creado como hijo del actual, y lo devolvemos this.aoItems[this.aoItems.length] = item; return item; } function menu_Plegar() { var x; var aDentro = this.Dentro(); for (var i=0; i < aDentro.length; i++) { if (this.Pausa == 0) { aDentro[i].a.style.display = "none"; } else { n = this.nPausa * i; aDentro[i].a.Ocultar (n); } } } function menu_Desplegar (nParDemora) { var x; var nDemora = (nParDemora == null) ? 0 : nParDemora; var aDentro = this.Dentro(); for (var i=0; i < aDentro.length; i++) { if (this.nPausa == 0) { aDentro[i].a.style.display="block"; } else if (this.top.a.style.display!="block") { aDentro[i].a.style.display="block"; } else { n = this.nPausa* (i + nDemora); aDentro[i].a.Mostrar (n); } } } function a_Over () { var t = this.menu; if (t != t.oPadre.oActual) { t.a.className = "O" + t.nNivelClase; var o = document.getElementById( "i" + t.sID ); if (o) { if(o.src.indexOf('wMas1.gif') > 0) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); o.src=dir+'wMas2.gif'; } if(o.src.indexOf('wMenos1.gif') > 0) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); o.src=dir+'wMenos2.gif'; } if(o.src.indexOf('wOpc1.gif') > 0) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); o.src=dir+'wOpc2.gif'; } } } } function a_Out () { var t = this.menu; if (t != t.oPadre.oActual) { t.a.className = "N" + t.nNivelClase; var o = document.getElementById( "i" + t.sID ); if (o) { if(o.src.indexOf('wMas2.gif') > 0) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); o.src=dir+'wMas1.gif'; } if(o.src.indexOf('wMenos2.gif') > 0) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); o.src=dir+'wMenos1.gif'; } if(o.src.indexOf('wOpc2.gif') > 0) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); o.src=dir+'wOpc1.gif'; } } } } function a_Click(bParExpandir, bParEjecutar) { // Lanza la función ClickHorizontal o ClickVertical del menú, según esté configurado bParExpandir = (bParExpandir == null) ? true : bParExpandir; bParEjecutar = (bParEjecutar == null) ? true : bParEjecutar; var t = this.menu; if (t.nOrientacion == nMENU_VERTICAL) t.ClickVertical(bParExpandir, bParEjecutar); else t.ClickHorizontal(); } function menu_Dentro () { var aux; var aDentro = new Array(); for (var i = 0; i < this.aoItems.length; i++) { aDentro[aDentro.length] = this.aoItems[i]; if (this.aoItems[i].nEstado == nDESPLEGADO) { aux = this.aoItems[i].Dentro(); if (aux.length > 0) aDentro = aDentro.concat(aux); } } return aDentro; } function menu_ClickVertical (bParExpandir, bParEjecutar) { var t = this; var nDemora = 0; bParExpandir = (bParExpandir == null) ? true : bParExpandir; bParEjecutar = (bParEjecutar == null) ? true : bParEjecutar; if (bParExpandir) { if (t.aoItems.length > 0) { if (t.bSoloUnaDesplegada && t.nEstado == nPLEGADO && t.oPadre != null) { for (var i = 0; i < t.oPadre.aoItems.length; i++) { var oHijo; oHijo = t.oPadre.aoItems[i]; if (oHijo != t && oHijo.nEstado == nDESPLEGADO && oHijo.bPlegar) { oHijo.Plegar(); oHijo.nEstado = nPLEGADO; var o = document.getElementById( "i" + oHijo.sID ); if (o) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); if(o.src.indexOf('wMenos2.gif') > 0) o.src=dir+'wMas2.gif' else o.src=dir+'wMas1.gif' } nDemora = oHijo.Dentro().length; break; } } } // Pliego o despliego la opción según el estado actual if (t.nEstado == nPLEGADO) { t.Desplegar (nDemora); t.nEstado = - t.nEstado; var o = document.getElementById( "i" + t.sID ); if (o) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); if (t != t.oPadre.oActual) o.src=dir+'wMenos1.gif' else o.src=dir+'wMenos2.gif' } } else if (t.bPlegar) { t.Plegar(); t.nEstado = - t.nEstado; var o = document.getElementById( "i" + t.sID ); if (o) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); if (t != t.oPadre.oActual) o.src=dir+'wMas1.gif' else o.src=dir+'wMas2.gif' } } } } if (bParEjecutar) { // Plegar la opción anteriormente desplegada si es el caso if (t.bSoloUnaDesplegada && t.nEstado == nPLEGADO && t.oPadre != null) { for (var i = 0; i < t.oPadre.aoItems.length; i++) { var oHijo; oHijo = t.oPadre.aoItems[i]; if (oHijo != t && oHijo.nEstado == nDESPLEGADO && oHijo.bPlegar) { oHijo.Plegar(); oHijo.nEstado = nPLEGADO; var o = document.getElementById( "i" + oHijo.sID ); if (o) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); if(o.src.indexOf('wMenos2.gif') > 0) o.src=dir+'wMas2.gif' else o.src=dir+'wMas1.gif' } nDemora = oHijo.Dentro().length; break; } } } if (t.a.href != 'javascript:;' && t.oPadre && (t != t.oPadre.oActual || t.oActual)) { for (var oThis = t.top; oThis != null; ) { var o = document.getElementById( "i" + oThis.sID ); if (o) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); if(o.src.indexOf('wMas2.gif') > 0) o.src=dir+'wMas1.gif'; else //if(o.src.indexOf('wOpc2.gif') > 0) // o.src=dir+'wOpc1.gif' if(o.src.indexOf('wOpc3.gif') > 0) o.src=dir+'wOpc1.gif' } oThis.a.className = "N" + oThis.nNivelClase; oAux = oThis.oActual; oThis.oActual = null; oThis = oAux; } for (var oThis = t; oThis != null; oThis = oThis.oPadre) { oThis.a.className = "C" + oThis.nNivelClase; if (oThis.oPadre != null){ oThis.oPadre.oActual = oThis; var o = document.getElementById( "i" + oThis.sID ); if (o) { var dir = o.src.substring( 0, o.src.lastIndexOf('/')+1 ); if(o.src.indexOf('wMenos1.gif') > 0) o.src=dir+'wMenos2.gif' else //if(o.src.indexOf('wOpc1.gif') > 0) // o.src=dir+'wOpc2.gif' if(o.src.indexOf('wOpc2.gif') > 0) o.src=dir+'wOpc3.gif' } } } } } } function menu_ExpandirMarcados () { for (var i = 0; i < this.top.aoExpandirAlAbrir.length; i++) { var oAExpandir = this.top.aoExpandirAlAbrir[i].a; oAExpandir.onclick(true, false); } } function menu_EjecutarMarcados () { for (var i = 0; i < this.top.aoEjecutarAlAbrir.length; i++) { var oAEjecutar = this.top.aoEjecutarAlAbrir[i].a; oAEjecutar.onclick(false, true); if (oAEjecutar.target == '?') { oAEjecutar.target = document.forms[0].menuMarcoDestino.value; parent.frames[ oAEjecutar.target ].location = oAEjecutar.href; } else if (oAEjecutar.target == '') { } else { parent.frames[ oAEjecutar.target ].location = oAEjecutar.href; } } } function a_Ocultar (nParRetardo) { var s = 'var x = window.document.getElementById ("' + this.id + '")'; setTimeout (s + '; x.style.display="none"', nParRetardo); } function a_Mostrar (nParRetardo) { var s = 'var x = window.document.getElementById ("' + this.id + '")'; setTimeout (s + '; x.style.display="block"; ', nParRetardo); }