nlsMenu = {}; nlsMenuMgr = {}; nlsWinElmt = []; ag0 = navigator.userAgent; nls_isIE = (ag0.indexOf("MSIE") >= 0); nls_isIE5 = (ag0.indexOf("MSIE 5.0") >= 0); nls_isSafari = (ag0.indexOf("Safari") >= 0); nls_isOpera = (ag0.indexOf("Opera") >= 0); if (nls_isOpera) { nls_isIE = false; nls_isIE5 = false }; function NlsMenuManager(mgr) { this.mgrId = mgr; this.menus = {}; this.menubar = null; this.timeout = 1000; this.flowOverFormElement = false; this.assocMenuMgr = []; this.defaultEffect = null; this.icPath = ""; this.memorizeSel = false; this.rt = {}; this.tmId = null; this.setTimeout = function(a, t) { this.tmId = window.setTimeout(a, t); }; this.clearTimeout = function() { if (this.tmId != null) { window.clearTimeout(this.tmId); this.tmId = null } }; nlsMenuMgr[mgr] = this; if (nls_isIE) window.attachEvent("onload", function() { nlsMenuMgr[mgr].init(); }); return this }; NlsMnMgr = NlsMenuManager.prototype; NlsMnMgr.createMenu = function(mId) { var m = new NlsMenu(mId); m.mgr = this; m.mgrId = this.mgrId; m.icPath = this.icPath; m.useEffect(this.defaultEffect); if (this.design) { m.$menuItemClick = NlsMenu.$dsItemClick } this.menus[mId] = m; return m }; NlsMnMgr.createMenubar = function(mbarId) { if (this.menubar) alert("Menubar already exists!"); var m = new NlsMenubar(mbarId); m.mgr = this; m.mgrId = this.mgrId; m.icPath = this.icPath; if (this.design) { m.$menuItemClick = NlsMenu.$dsItemClick } this.menubar = m; return m }; NlsMnMgr.renderMenus = function(plc) { if (plc && plc != "") { var d = NlsMenu.$GE(plc), s = ""; if (!d) { d = document.createElement("SPAN"); d.id = plc; document.body.insertBefore(d, document.body.childNodes[0]); } for (it in this.menus) { s += this.menus[it].renderMenu(); } d.innerHTML = s; d.style.display = "" } else { for (it in this.menus) { document.write(this.menus[it].renderMenu()); } } }; NlsMnMgr.renderMenubar = function(plc, incSub) { if (this.menubar) { var mbar = this.menubar.renderMenubar(); if (plc && plc != "") { var d = NlsMenu.$GE(plc); d.style.display = ""; d.innerHTML = mbar } else { document.write(mbar); } if (incSub != false) { this.renderMenus(this.mgrId); } } if (this.memorizeSel) this.loadPath(); }; NlsMnMgr.hideMenus = function() { for (var it in this.menus) { if (this.menus[it].rt.active) this.menus[it].hideMenu(); } if (this.menubar) this.menubar.hideMenu(); }; NlsMnMgr.addAssocMenuMgr = function(frm, mgrId) { this.assocMenuMgr[this.assocMenuMgr.length] = [frm, mgrId] }; NlsMnMgr.getMenu = function(mId) { return this.menus[mId] }; NlsMnMgr.init = function() { if (this.menubar) this.menubar.init(); }; NlsMnMgr.setMenusProperties = function(opts) { var mn; for (var m in opts) { mn = nlsGetMenu(m); if (mn) mn.setProperties(opts[m]); } }; function listAllWinElmt() { nlsWinElmt = []; var arrWinEl = document.getElementsByTagName("SELECT"); var elm; var tmp; var x; var y; for (var i = 0; i < arrWinEl.length; i++) { elm = arrWinEl[i]; tmp = elm; x = 0; y = 0; while (tmp != null) { x += tmp.offsetLeft; y += tmp.offsetTop; tmp = tmp.offsetParent } nlsWinElmt[nlsWinElmt.length] = { e: elm, x1: x, y1: y, x2: x + elm.offsetWidth, y2: y + elm.offsetHeight} } }; function NlsMenuItem(id, capt, url, ico, enb, xtra, subId, title) { this.id = id; this.intKey = ""; this.capt = capt; this.url = $aonvl(url, ""); this.ico = (ico == null || ico == "" || ico.length == 0) ? null : ico; this.enable = $aonvl(enb, true); this.xtra = xtra; this.stlprf = ""; this.target = null; this.title = title == null ? "" : title; this.itemEffect = null; this.visible = "false"; this.state = 1; this.selected = false; this.subMenuId = $aonvl(subId, ""); this.crsFrame = false; this.subFrame = null; this.subPos = [null, null]; this.subPosAdj = [0, 0]; this.subDir = ["right", "down"]; this.useItemEffect = function(effName) { this.itemEffect = new NlsMenuItemEffect(this.intKey, effName); }; this.rt = { subUrl: null, loaded: 0 }; return this }; function NlsMenuSeparator(cstSeparator) { this.stlprf = ""; this.intKey = ""; this.seprt = $aonevl(cstSeparator, ""); this.render = function() { if (this.seprt != "") return this.seprt; return ("<table border=0 cellpadding=0 cellspacing=0 width='100%' height='0%'><tr>" + "<td class=\"" + this.stlprf + "nlsseparator\"></td>" + "</tr></table>"); }; return this }; function NlsCustomMenuItem(cst) { this.intKey = ""; this.cstMenu = $aonvl(cst, "&nbsp;"); return this }; function NlsMenu(mId) { var o = { lsItm: null, mgrId: "", mgr: null, winElmt: null, container: null, customBorder: null, shadow: new NlsMenuShadow("none", "5px", mId), count: 0, effect: null, srItems: [], rt: { ready: true, active: false }, mId: mId, stlprf: "", subMenuIc: null, target: "_self", icPath: "", itemSpc: "", stretchItem: true, selection: false, showIcon: false, showSubIcon: true, absWidth: "", orient: "V", defItmEff: null, defPos: [0, 0], maxItemCol: 100, zIndex: 100, wnd: window, itemIco: null }; this.setProperties(o); this.items = {}; nlsMenu[mId] = this; return this }; function NlsMenubar(mId) { var mnBar = new NlsMenu(mId); mnBar.isMenubar = true; mnBar.isMenuOpened = false; mnBar.firstClickOnly = true; mnBar.dropOnClick = false; mnBar.renderMenubar = function() { return mnBar.renderMenu(); }; mnBar.rt.active = true; return mnBar }; NLSMENU = NlsMenu.prototype; NLSMENU.addItem = function(key, capt, url, ico, enb, xtra, subId, title) { key = (key ? key : this.count + 1); var intKey = this.mId + "_" + key, it = new NlsMenuItem(key, capt, url, ico, enb, xtra, subId, title); this.add(intKey, it); if (this.defItmEff != null && typeof (NlsMenuItemEffect) != "undefined") { it.useItemEffect(this.defItmEff); } return it }; NLSMENU.addSeparator = function(sepr) { var intKey = "sep_" + this.count; var it = new NlsMenuSeparator(sepr ? sepr : null); it.stlprf = this.stlprf; this.add(intKey, it); return it }; NLSMENU.addSubmenu = function(key, subId, crsFrame, subFrame, subPos, subPosAdj, subDir) { var it = this.getItemById(key); it.subMenuId = subId; it.subFrame = $aonvl(subFrame, null); it.crsFrame = $aonvl(crsFrame, false); it.subPos = $aonvl(subPos, [null, null]); it.subPosAdj = $aonvl(subPosAdj, [0, 0]); it.subDir = $aonvl(subDir, ["right", "down"]); return it }; NLSMENU.addCustomMenu = function(custom) { var intKey = "cst_" + this.count; var it = new NlsCustomMenuItem(custom); this.add(intKey, it); return it }; NLSMENU.add = function(intKey, it) { it.mId = this.mId; it.intKey = intKey; this.items[intKey] = it; this.srItems[this.srItems.length] = it; this.count++ }; NLSMENU.getItemById = function(key) { return this.items[this.mId + "_" + key] }; NLSMENU.setItemStyle = function(key, stlprf) { this.getItemById(key).stlprf = stlprf }; NLSMENU.setItemText = function(key, tx) { var it = this.getItemById(key); it.capt = tx; var oD = NlsMenu.$GE(it.intKey + "x2"); if (oD) oD.innerHTML = tx }; NLSMENU.enableItem = function(key, b) { var it = this.getItemById(key); it.enable = b; setMnStyle(NlsMenu.$GE(it.intKey), (b ? (it.selected ? "S" : "N") : "D"), NlsMenu.getPrf(it, this)); setMnIcon(this, it, "N"); }; NLSMENU.dropShadow = function(pos, offset) { if (this.shadow) { this.shadow.pos = pos; this.shadow.offset = (offset ? offset : "5px"); } else { this.shadow = new NlsMenuShadow(pos, offset, this.mId); } }; NLSMENU.useEffect = function(efN) { if (efN != null && efN != "") { this.effect = new NlsMenuEffect(this.mId, efN); } }; NLSMENU.renderMenu = function() { var scPath = "", sbIc = null; var allScs = (document.getElementsByTagName ? document.getElementsByTagName("SCRIPT") : document.scripts); for (var i = 0; i < allScs.length; i++) { if (allScs[i].src.toLowerCase().indexOf("nlsmenu.js") >= 0) { scPath = allScs[i].src.replace(/nlsmenu.js/gi, ""); } } if (!this.subMenuIc) { sbIc = [scPath + "/img/submenu.gif", scPath + "/img/submenuovr.gif"] } else { sbIc = [this.icPath + this.subMenuIc[0]]; if (this.subMenuIc[1]) sbIc[1] = this.icPath + this.subMenuIc[1] } var cs = "<table cellpadding='0' cellspacing='0' "; var sAbs = (this.absWidth == "" ? "" : "width='" + this.absWidth + "'"); var usel = "unselectable='on' style='-moz-user-select:none;user-select:none;'"; var s = ["<table cellpadding='0' cellspacing='" + $aonevl(this.itemSpc, "0") + "' width='100%'>"]; var tmpCnt = 0, prf, it, mn, ic, j = 1, k = 1, l, ts, isV = (this.orient == "V"); for (var i = 0; i < this.srItems.length; i++) { it = this.srItems[i]; mn = nlsMenu[it.subMenuId]; if (!it.crsFrame) { if (mn) mn.prIt = it.intKey; if (!mn && it.rt && !it.rt.subUrl) { it.subMenuId = "" } } prf = NlsMenu.getPrf(it, this); if (it.constructor == NlsMenuSeparator) { it.stlprf = prf; ts = "<td class='" + prf + "nlsseparatorcontainer'>" + it.render() + "</td>"; s[j++] = (isV ? ("<tr>" + ts + "</tr>") : ts); } else if (it.constructor == NlsCustomMenuItem) { ts = "<td>" + it.cstMenu + "</td>"; s[j++] = isV ? ("<tr>" + ts + "</tr>") : ts } else { if (isV) s[j++] = "<tr>"; else { if (tmpCnt == 0) s[j++] = "<tr>"; tmpCnt++ } l = []; k = 0; l[k++] = "<td align='center' id=\"@itId\" class=\"" + prf + "nlsitemcontainer\" onmouseover=\"$nlsItemOver(event,'@mId','@itId')\" onclick=\"return nlsMenu['@mId'].$menuItemClick(event, '@itId');\" onmouseout=\"$nlsItemOut(event, '@mId')\">"; l[k++] = cs + (this.stretchItem ? "width='100%'" : "") + " height='100%'><tr style=\"cursor:pointer;\" title=\"" + it.title + "\">"; if (this.showIcon) { l[k++] = "<td id=\"@itIdx1\" class=\"" + prf + "nlsiconcell\" align=\"center\" nowrap " + usel + ">"; ic = $aonevl(it.ico, this.itemIco); if (ic) { if (ic[0]) l[k++] = "<img id=\"ic_@itId\" " + (it.enable ? "" : "style='display:none'") + " src=\"" + this.icPath + ic[0] + "\">"; if (ic[1]) l[k++] = "<img id=\"icovr_@itId\" style='display:none' src=\"" + this.icPath + ic[1] + "\">"; if (ic[2]) l[k++] = "<img id=\"icdis_@itId\" " + (!it.enable ? "" : "style='display:none'") + " src=\"" + this.icPath + ic[2] + "\">" } l[k++] = "</td>" } l[k++] = "<td align='left' id=\"@itIdx2\" class=\"" + prf + (it.enable ? "nlsitem\"" : "nlsitemdisable\"") + " nowrap " + usel + ">" + it.capt + "</td>"; if (this.showSubIcon && it.subMenuId != "") { l[k++] = "<td id=\"@itIdx3\" class=\"" + prf + "nlssubmenucell\" align=\"center\" nowrap>" + (it.subMenuId != "" ? "<img id='subic_@itId' src=\"" + sbIc[0] + "\">" + (sbIc.length > 1 ? "<img id='subicovr_@itId' style='display:none' src=\"" + sbIc[1] + "\">" : "") : "") + "</td>" } l[k++] = "</tr></table>"; l[k++] = "</td>"; s[j++] = l.join("").replace(/@itId/g, it.intKey); if (isV) s[j++] = "</tr>"; else if (!isV && tmpCnt == this.maxItemCol) { s[j++] = "</tr>"; tmpCnt = 0 } } } if (!isV && tmpCnt != 0) { if (this.srItems.length > this.maxItemCol) while (++tmpCnt <= this.maxItemCol) s[j++] = "<td class=\"" + prf + "nlsitemcontainer\">&nbsp;</td>"; s[j++] = "</tr>" } s[j++] = "</table>"; l = []; l = [cs + "class='" + this.stlprf + "nlsmenu' " + sAbs + ">"], j = 1; l[j++] = "<tr><td><div id='mcnt_@mId'>" + s.join("") + "</div></td></tr>"; l[j++] = "</table>"; ts = l.join(""); if (this.customBorder != null) ts = this.customBorder.applyBorder(ts, this.stlprf); ts = this.shadow.dropShadow(ts); s = []; j = 0; s[j++] = "<div " + (nls_isIE && !this.isMenubar ? "style='position:absolute;z-index:" + (this.zIndex - 1) + ";'" : "") + ">" + ts; if (!this.isMenubar && nls_isIE && !nls_isIE5 && this.mgr.flowOverFormElement) { s[j++] = "<iframe id='@mIdifrm' scrolling='no' frameborder=0 width='1' height='1' style='position:absolute;top:0px;left:0px;z-index:-1;filter:alpha(opacity=0)' src='" + scPath + "img/blank.gif" + "'></iframe>" } s[j++] = "</div>"; ts = s.join(""); if (arguments[0] == "content") { } else { ts = "<div id='@mId' style=" + (this.isMenubar ? "''" : "'position:absolute;z-index:" + this.zIndex + ";display:none;'") + " onmouseover=\"$nlsMenuOver('" + this.mgrId + "', '@mId')\" onmouseout=\"$nlsMenuOut('" + this.mgrId + "')\">" + ts + "</div>" } return ts.replace(/@mId/g, this.mId); }; NLSMENU.init = function() { var v = this.rt.vshade; if (!v) v = NlsMenu.$GE("vshade_" + this.mId); var itm = this.rt.actmn; if (!itm) itm = NlsMenu.$GE("actmn_" + this.mId); if (v) { var o = itm.childNodes[0].offsetHeight - parseInt(this.shadow.offset); if (o >= 0) v.style.height = o + "px" } this.rt.actmn = itm; this.rt.vshade = v }; function NlsMenuShadow(pos, offset, mId) { this.pos = pos; this.offset = offset; this.mId = mId; this.dropShadow = function(smenu) { var mn = nlsMenu[this.mId]; var cs = "<table cellpadding=0 cellspacing=0 "; var shadow = "<div>" + cs + "id='effwin_" + this.mId + "' height='0px'>"; var hshadow = "<td style='padding-@@PAD:" + this.offset + ";'>" + cs + "width='100%' height='5px' class='" + mn.stlprf + "horzshadow'><tr><td></td></tr></table></td>"; var vshadow = "<td style='padding-@@PAD:" + this.offset + ";height:100%;'>" + cs + "id='vshade_" + this.mId + "' width='5px' height='100%' class='" + mn.stlprf + "vertshadow'><tr><td></td></tr></table></td>"; var menutd = "<td id='actmn_" + this.mId + "'>" + smenu + "</td>"; var cornertd = "<td class='" + mn.stlprf + "cornshadow' width='5px' height='5px'></td>"; var av = [vshadow.replace(/@@PAD/gi, "top"), vshadow.replace(/@@PAD/gi, "bottom")]; var ah = [hshadow.replace(/@@PAD/gi, "left"), hshadow.replace(/@@PAD/gi, "right")]; switch (this.pos) { case "none": shadow += "<tr>" + menutd + "</tr>"; break; case "bottomright": shadow += "<tr>" + menutd + av[0] + "</tr><tr>" + ah[0] + cornertd + "</tr>"; break; case "bottomleft": shadow += "<tr>" + av[0] + menutd + "</tr><tr>" + cornertd + ah[1] + "</tr>"; break; case "topleft": shadow += "<tr>" + cornertd + ah[1] + "</tr><tr>" + av[1] + menutd + "</tr>"; break; case "topright": shadow += "<tr>" + ah[0] + cornertd + "</tr><tr>" + menutd + av[1] + "</tr>"; break } return shadow + "</table></div>" } }; function $mPos(p1, p2, c, m, adj, scr, dr, drIdx, drVal) { var v = 0; if (drVal == "left" || drVal == "up") { if (p2 + m > c) { if (p1 >= m) { v = p1 - m + adj + scr; dr[drIdx] = drVal } else { v = (c < m ? m : c) - m - 1 + scr } } else { v = p2 + scr - adj } } else { if (p1 - m < 0) { if (p2 + m < c) { v = p2 - adj + scr; dr[drIdx] = drVal } else { v = scr } } else { v = p1 - m + adj + scr } } return v } NLSMENU.showMenu = function(x1, y1, x2, y2, orn, subDir, subAdj) { this.mgr.clearTimeout(); if (this.menuOnShow(this.mId) == false) return; var ctx = NlsMenu.$GE(this.mId); if (!ctx) { var dv = document.createElement("div"); dv.innerHTML = this.renderMenu(); document.body.insertBefore(dv, document.body.childNodes[0]); ctx = NlsMenu.$GE(this.mId); }; ctx.style.visibility = "hidden"; ctx.style.display = ""; if (nls_isIE) this.init(); var w = window, d = document.body, de = document.documentElement; var scrOffX = w.scrollX || d.scrollLeft || de.scrollLeft; var scrOffY = w.scrollY || d.scrollTop || de.scrollTop; var cW = w.innerWidth || d.clientWidth, cH = w.innerHeight || d.clientHeight; var mW = ctx.childNodes[0].offsetWidth, mH = ctx.childNodes[0].offsetHeight; var sDir = (subDir ? [subDir[0], subDir[1]] : ["right", "down"]); var adjX = (subAdj ? subAdj[0] : this.defPos[0]), adjY = (subAdj ? subAdj[1] : this.defPos[1]); var dmfrm = NlsMenu.$GE(this.mId + "ifrm"); if (dmfrm) { var actMn = NlsMenu.$GE("actmn_" + this.mId).children[0]; dmfrm.width = actMn.offsetWidth; dmfrm.height = actMn.offsetHeight } var mX = 0, mY = 0; if (orn == "V") { mX = $mPos(x1, x2, cW, mW, adjX, scrOffX, sDir, 0, (sDir[0] == "right" ? "left" : "right")); mY = $mPos(y2, y1, cH, mH, -adjY, scrOffY, sDir, 1, (sDir[1] == "down" ? "up" : "down")); } else { mX = $mPos(x2, x1, cW, mW, -adjX, scrOffX, sDir, 0, (sDir[0] == "right" ? "left" : "right")); mY = $mPos(y1, y2, cH, mH, adjY, scrOffY, sDir, 1, (sDir[1] == "down" ? "up" : "down")); } if (nls_isIE5 || !this.mgr.flowOverFormElement) { if (this.winElmt == null) hideWinElmt(this, { x1: mX, y1: mY, x2: mX + mW, y2: mY + mH }); if (this.winElmt == null) this.winElmt = []; for (var i = 0; i < this.winElmt.length; i++) { this.winElmt[i].style.visibility = "hidden" } } with (ctx.style) { left = mX + "px"; top = mY + "px"; zIndex = this.zIndex; if (this.effect) { with (this.effect) { prop["dir"] = sDir[(orn == "V" ? 0 : 1)]; start(false); visibility = "visible"; run(); } } else { visibility = "visible" } } this.rt.active = true }; function $fInts(o, p) { return ((o.x1 >= p.x1 && o.x1 <= p.x2) || (o.x2 >= p.x1 && o.x2 <= p.x2) || (o.x1 < p.x1 && o.x2 > p.x2)) && ((o.y1 >= p.y1 && o.y1 <= p.y2) || (o.y2 >= p.y1 && o.y2 <= p.y2) || (o.y1 < p.y1 && o.y2 > p.y2)); } function hideWinElmt(mn, p) { var o; for (var i = 0; i < nlsWinElmt.length; i++) { o = nlsWinElmt[i]; if ($fInts(o, p) || $fInts(p, o)) { if (o.e.style.visibility != "hidden") { o.e.style.visibility = "hidden"; if (mn.winElmt == null) mn.winElmt = []; mn.winElmt[mn.winElmt.length] = o.e } } } }; NLSMENU.showMenuAbs = function(x, y) { var ctx = NlsMenu.$GE(this.mId); ctx.style.top = y + "px"; ctx.style.left = x + "px"; ctx.style.display = ""; this.rt.active = true }; NLSMENU.hideMenu = function() { var ctx = NlsMenu.$GE(this.mId); if (!ctx) return; if (!this.isMenubar) { this.rt.active = false; if (this.effect) { this.effect.start(true); if ((nls_isIE && this.effect.effName != "aoslide") || nls_isOpera && this.effect.effName != "aoslide") { ctx.style.visibility = "hidden" } else { this.effect.onHide = function() { ctx.style.visibility = "hidden" } }; this.effect.run(); } else { ctx.style.visibility = "hidden" } this.menuOnHide(this.mId); } else { this.isMenuOpened = false } if (this.lsItm != null) { var it = this.items[this.lsItm.id]; if (it.state != 2 && !it.selected) { setMnStyle(this.lsItm, (it.enable ? "N" : "D"), NlsMenu.getPrf(it, this)); setMnIcon(this, it, "N"); } this.lsItm = null } if (this.winElmt != null && this.winElmt.length > 0) { for (i = 0; i < this.winElmt.length; i++) { this.winElmt[i].style.visibility = "visible" } } $wrtStatus(""); }; NLSMENU.hasSubmenu = function(key) { var it = this.getItemById(key), w = (it.crsFrame ? it.subFrame : window); return w.nlsGetMenu(it.subMenuId); }; function $itemClick(mn, it) { var mgr = nlsMenuMgr[mn.mgrId]; mgr.hideMenus(); $crsFrameDo(mgr, function(f, mg) { f.hideAllNlsMenu(); }); var trgt = it.target; if (trgt == null) trgt = $aonvl(mn.target, "_self"); if (it.url != "") { open(it.url, trgt); } else { return mn.menuOnClick(mn.mId, it.id); } }; NLSMENU.$menuItemClick = function(e, itemId) { var it = this.items[itemId]; if (!it.enable) return; var prf = NlsMenu.getPrf(it, this), oIt = NlsMenu.$GE(itemId), mgr = this.mgr; if (this.isMenubar && this.dropOnClick && (this.hasSubmenu(it.id) || it.rt.subUrl)) { if (!this.isMenuOpened) { NlsMenu.showMenu(this, it); if (this.firstClickOnly) this.isMenuOpened = true } else { mgr.hideMenus(); setMnStyle(oIt, (it.enable ? "O" : "D"), prf); setMnIcon(this, it, "O"); this.isMenuOpened = false; return null } } else { if (it.toggle) { this.setItemState(itemId, (it.state == 1 ? 2 : 1)); } else if (this.selection) { this.setSelection(itemId, true); } else if (mgr.memorizeSel) { mgr.selectPath(this.mId, it.id); mgr.savePath(itemId); } return $itemClick(this, it); } }; NLSMENU.menuOnClick = function(menuId, itemId) { return true }; NLSMENU.menuOnShow = function(menuId) { return true }; NLSMENU.menuOnHide = function(menuId) { return true }; NLSMENU.reload = function(dh) { var ef = this.effect; if (ef) { ef.elm = null; ef.prop["init"] = false } this.lsItm = null; if (dh != true) this.mgr.hideMenus(); var m = NlsMenu.$GE(this.mId); m.innerHTML = this.renderMenu("content"); }; NLSMENU.setProperties = function(obj) { for (var p in obj) { if (p == "items") { for (var it in obj[p]) { this.setItemProperties(it, obj[p][it]); } } else this[p] = obj[p] } }; NLSMENU.setItemProperties = function(id, obj) { var it = this.getItemById(id); for (var p in obj) { it[p] = obj[p] } }; function setMnIcon(mn, mnItm, f) { var tf = (mnItm.enable ? f : "D"), ico = $aonevl(mnItm.ico, mn.itemIco); if (mn.showIcon && ico && ico.length > 1) { var k = mnItm.intKey; var c = NlsMenu.$GE("ic_" + k), o = NlsMenu.$GE("icovr_" + k), d = NlsMenu.$GE("icdis_" + k); c.style.display = (tf == "N" || (tf == "D" && !d) ? "" : "none"); o.style.display = (tf == "O" ? "" : "none"); if (d) d.style.display = (tf == "D" ? "" : "none"); } if (mn.showSubIcon && mnItm.subMenuId != "") { var ic = NlsMenu.$GE("subicovr_" + mnItm.intKey); if (ic) { ic.style.display = (tf == "O" ? "" : "none"); ic = NlsMenu.$GE("subic_" + mnItm.intKey); if (ic) ic.style.display = (tf == "N" || tf == "D" ? "" : "none"); } } }; function setMnStyle(it, s, prefix) { var suff = (s == "O" ? "over" : (s == "S" ? "sel" : "")), cn; it.className = prefix + "nlsitemcontainer" + suff; var r = it.childNodes[0].rows[0], rc = null; for (var i = 0; i < r.cells.length; i++) { rc = r.cells[i]; if (rc.id == it.id + "x1") cn = prefix + "nlsiconcell" + suff; if (rc.id == it.id + "x2") cn = prefix + "nlsitem" + (s == "D" ? "disable" : suff); if (rc.id == it.id + "x3") cn = prefix + "nlssubmenucell" + suff; rc.className = cn } }; function nls_getXY(oIt) { var p = {}; p.x = 0; p.y = 0; p.x2 = 0; p.y2 = 0; var tmp = oIt; var d = document; while (tmp) { p.x += tmp.offsetLeft; p.y += tmp.offsetTop; tmp = tmp.offsetParent }; p.x -= (window.scrollX || d.body.scrollLeft || d.documentElement.scrollLeft); p.y -= (window.scrollY || d.body.scrollTop || d.documentElement.scrollTop); if (oIt) { p.x2 = p.x + oIt.offsetWidth; p.y2 = p.y + oIt.offsetHeight }; return p }; NlsMenu.showMenu = function(mn, it) { if (it.rt.subUrl && it.rt.loaded == 0) { NlsMenuUtil.loadAJAXMenu(mn, it); } else { NlsMenu.$showMenu(mn, it); } }; NlsMenu.$showMenu = function(prMenu, it) { var oIt = NlsMenu.$GE(it.intKey); if (it.subMenuId != "" && it.enable == true) { var p = nls_getXY(oIt), smn; if (it.crsFrame) { var ps = it.subPos; if (ps[0] == "REL") { } else { p.x = ps[0]; p.x2 = p.x } if (ps[1] == "REL") { } else { p.y = ps[1]; p.y2 = p.y } if (!it.subFrame.nlsGetMenu) return; smn = it.subFrame.nlsGetMenu(it.subMenuId); if (!smn) return } else { smn = nlsGetMenu(it.subMenuId); if (!smn) return; if (smn.zIndex <= prMenu.zIndex) { smn.zIndex = prMenu.zIndex + 1 } var ma = prMenu.rt.ma; if (ma) { p.y -= ma.scrollTop; p.y2 -= ma.scrollTop } } smn.showMenu(p.x, p.y, p.x2, p.y2, prMenu.orient, it.subDir, it.subPosAdj); } }; NlsMenu.getPrf = function(it, mn) { return $aonevl(it.stlprf, mn.stlprf); }; function nls_showMenu(mId, oIt, orient, subDir, subPosAdj) { var mn = nlsGetMenu(mId), p; if (!mn) { hideAllNlsMenu(); return } mn.mgr.clearTimeout(); if (mn.rt.active) return; p = nls_getXY(oIt); mn.mgr.hideMenus(); mn.showMenu(p.x, p.y, p.x2, p.y2, orient, subDir, subPosAdj); } function nls_hideMenu(mId) { var m = nlsGetMenu(mId); if (m) $nlsMenuOut(m.mgrId); } function $nlsMenuOver(mgrId, mId) { var mgr = nlsMenuMgr[mgrId], mn = mgr.getMenu(mId); mgr.clearTimeout(); if (mgr.rt.cmId != mId) { clearTimeout(mgr.rt.ctm); mgr.rt.ctm = null } $crsFrameDo(mgr, function(f, mg) { f.clearTimeout(mg.rt.ctm); mg.rt.ctm = null }); if (mgr.rt.cmId != mId) $$nlsItemOver1(null, mId + "_dmy"); }; function $nlsMenuOut(mgrId) { var mgr = nlsMenuMgr[mgrId]; if (mgr.design == true) return; mgr.clearTimeout(); mgr.setTimeout(function() { mgr.hideMenus(); }, mgr.timeout); $crsFrameDo(mgr, function(f, mg) { mg.clearTimeout(); mg.setTimeout(function() { mg.hideMenus() }, mg.timeout); }); }; function $nlsItemOver(e, mId, itId) { $$nlsItemOver1(e, itId); $$nlsItemOver2(mId, itId); e.cancelBubble = true } function $nlsItemOut(e, mId) { var mn = nlsMenu[mId], mgr = mn.mgr; mgr.rt.cmId = mId; mgr.rt.ctm = setTimeout(function() { $$nlsItemOver1(e, mId + "_$dmy") }, 300); } function $$nlsItemOver1(e, itId) { var m = itId.split("_"), mn = nlsMenu[m[0]], mgr = mn.mgr; if (mgr.rt.cmId) { clearTimeout(mgr.rt.ctm); mgr.rt.ctm = null } $crsFrameDo(mgr, function(f, mg) { f.clearTimeout(mg.rt.ctm); mg.rt.ctm = null }); if (mn.mgr.design == true) return; if (!mn.rt.active || !mn.rt.ready) return; var it = null, st = "", nli = null, li = mn.lsItm; if (li != null) { it = mn.items[li.id]; if (!it) return; if (it.intKey == itId) return; if (it.state != 2 && !it.selected) { var st = NlsMenu.getPrf(it, mn); var ef = (it.itemEffect != null); if (ef) { it.itemEffect.init(); } setMnStyle(li, (it.enable ? "N" : "D"), st); setMnIcon(mn, it, "N"); if (ef) { it.itemEffect.start(); } } var w = it.crsFrame ? it.subFrame : window, tmp = null; if (w.nlsGetMenu) tmp = w.nlsGetMenu(it.subMenuId); while (tmp != null) { nli = null; if (tmp.lsItm) { it = tmp.items[tmp.lsItm.id]; w = it.crsFrame ? it.subFrame : tmp.wnd; nli = w.nlsGetMenu(it.subMenuId); } tmp.hideMenu(); tmp = nli } } mn.lsItm = null; var oIt = NlsMenu.$GE(itId); it = mn.items[itId]; if (!it) return; $wrtStatus(it.url); if (it.state != 2 && !it.selected) { if (it.itemEffect != null) { it.itemEffect.init(); } setMnStyle(oIt, (it.enable ? "O" : "D"), NlsMenu.getPrf(it, mn)); setMnIcon(mn, it, "O"); if (it.itemEffect != null) { it.itemEffect.start(); } } if (!mn.isMenubar || (mn.isMenubar && !mn.dropOnClick) || (mn.isMenubar && mn.dropOnClick && mn.isMenuOpened)) { NlsMenu.showMenu(mn, it); } mn.lsItm = oIt }; function $$nlsItemOver2(mId, itId) { var mn = nlsMenu[mId], mgr = mn.mgr; if (mgr.design == true) return; mgr.clearTimeout(); $crsFrameDo(mgr, function(f, mg) { mg.clearTimeout() }); for (var it in nlsMenuMgr) { if (it != mgr.mgrId) { nlsMenuMgr[it].hideMenus(); } } } function $crsFrameDo(mgr, f) { var a = mgr.assocMenuMgr, frm; if (a && a.length > 0) { for (var i = 0; i < a.length; i++) { frm = a[i]; if (!frm[0].nlsMenuMgr) continue; f(frm[0], frm[0].nlsMenuMgr[frm[1]]); } } } function nlsGetMenu(mId) { return nlsMenu[mId] }; function hideAllNlsMenu() { for (it in nlsMenu) { if (nlsMenu[it].rt.active) nlsMenu[it].hideMenu(); } }; function $wrtStatus(s) { if (typeof (window.status) != "undefined") window.status = s } function $aonvl(v, c) { if (v) return v; else return c }; function $aonevl(v, c) { if (!v || v == "") return c; else return v }; NlsMenu.$GE = function(id) { if (document.all) { return document.all(id); } else if (document.getElementById) { return document.getElementById(id); } };
nlsEffectList = { barn: "progid:DXImageTransform.Microsoft.Barn(Duration=0.3,motion=out,orientation=vertical);", blinds: "progid:DXImageTransform.Microsoft.Blinds(Duration=0.3,Bands=8,direction=right);", checkerboard: "progid:DXImageTransform.Microsoft.Checkerboard(Duration=0.3,Direction=right,SquaresX=20,SquaresY=20);", fade: "progid:DXImageTransform.Microsoft.Fade(Duration=0.3,Overlap=1.00);", inset: "progid:DXImageTransform.Microsoft.Inset(Duration=0.3);", iris: "progid:DXImageTransform.Microsoft.Iris(Duration=0.3,irisstyle=CIRCLE,motion=in);", pixelate: "progid:DXImageTransform.Microsoft.Pixelate(Duration=0.3,MaxSquare=10);", radialwipe: "progid:DXImageTransform.Microsoft.RadialWipe(Duration=0.3,wipestyle=WEDGE)", randombars: "progid:DXImageTransform.Microsoft.RandomBars(Duration=0.3,Orientation=horizontal);", randomdissolve: "progid:DXImageTransform.Microsoft.RandomDissolve(duration=0.3);", slide: "progid:DXImageTransform.Microsoft.Slide(Duration=0.3,slidestyle=HIDE,Bands=5);", spiral: "progid:DXImageTransform.Microsoft.Spiral(Duration=0.3,GridSizeX=64,GridSizeY=64);", stretch: "progid:DXImageTransform.Microsoft.Stretch(Duration=0.3,stretchstyle=HIDE);", strips: "progid:DXImageTransform.Microsoft.Strips(Duration=0.3,motion=rightdown);", wheel: "progid:DXImageTransform.Microsoft.Wheel(Duration=0.3,spokes=10);", gradienwipe: "progid:DXImageTransform.Microsoft.GradientWipe(Duration=0.3,GradientSize=0.75,wipestyle=0,motion=forward);", zigzag: "progid:DXImageTransform.Microsoft.Zigzag(Duration=0.3,GridSizeX=8,GridSizeY=8);", itemfade: "progid:DXImageTransform.Microsoft.Fade(Duration=0.2,Overlap=0.75);", itemdissolve: "progid:DXImageTransform.Microsoft.RandomDissolve(duration=0.3);", aoslide: "Duration:2" }; function NlsMenuEffect(mId, effName) { this.mId = mId; this.elm = null; this.effName = effName; this.isOut = false; this.prop = new Object(); this.onShow = function() { }; this.onHide = function() { }; this.start = _defStart; this.run = _defRun; if (effName == "aoslide") { this.start = _slideStart; this.run = _slideRun } return this }; _fadeTm = null; _fadesEff = new Object(); function _defStart(isOut) { var mn = NlsMenu.$GE(this.mId); mn.childNodes[0].style.position = ""; nlsMenu[this.mId].rt.ready = true; this.elm = NlsMenu.$GE("effwin_" + this.mId); if (nls_isIE) { this.elm.style.filter = nlsEffectList[this.effName]; if (this.elm.filters.length > 0) this.elm.filters[0].apply(); } else { this.elm = this.elm.parentNode; this.isOut = (isOut == true); if (!this.prop["init"]) { this.elm.style.MozOpacity = (isOut ? 1 : 0); this.elm.style.opacity = (isOut ? 1 : 0); } this.prop["init"] = true; this.prop["dur"] = 15; this.prop["rng"] = 100; this.prop["spd"] = 10 } }; function _defRun() { if (nls_isIE) { if (this.elm.filters.length > 0) this.elm.filters[0].play(); } else { var me = this; if (this.elm.style.MozOpacity) this.prop["opa"] = "MozOpacity"; else this.prop["opa"] = "opacity"; var p = new Object(); p.x1 = this.elm.style[this.prop["opa"]] * this.prop["rng"]; if (this.isOut) { p.x2 = 0 } else { p.x2 = this.prop["rng"] - 1 } _fc_fade(p); this.prop["pt"] = p; this.prop["sd"] = 0; _fadesEff[this.mId] = this; if (!_fadeTm) _fadeTm = setInterval(function() { _fadeAnimate(); }, this.prop["spd"]); } }; function _fadeAnimate() { var b = true; for (var it in _fadesEff) { var eff = _fadesEff[it]; var p = eff.prop["pt"]; if (eff.prop["sd"] < eff.prop["dur"]) { eff.prop["sd"]++; eff.elm.style[eff.prop["opa"]] = effect_bezier(eff.prop["sd"] / eff.prop["dur"], p.x1, p.x2, p.c1, p.c2) / eff.prop["rng"] } else { eff.elm.style[eff.prop["opa"]] = p.x2 / eff.prop["rng"]; if (eff.isOut) { eff.onHide(); eff.elm.style[eff.prop["opa"]] = 0 } else { eff.onShow(); } delete _fadesEff[eff.mId] } b = false } if (b) { clearInterval(_fadeTm); _fadeTm = null } }; _slideTm = null; _slidesEff = new Object(); function _slideStart(isOut) { var mn = NlsMenu.$GE(this.mId); this.elm = mn.childNodes[0]; if (!isOut && this.prop["init"] != true) { this.elm.style.position = ""; var w = this.elm.offsetWidth; var h = this.elm.offsetHeight; with (mn.style) { overflow = "hidden"; width = w + "px"; height = h + "px" }; with (this.elm.style) { position = nls_isIE ? "absolute" : "relative"; switch (this.prop["dir"]) { case "right": top = "0px"; left = -w + "px"; this.prop["st"] = "left"; break; case "left": top = "0px"; left = w + "px"; this.prop["st"] = "left"; break; case "down": top = -h + "px"; left = "0px"; this.prop["st"] = "top"; break; case "up": top = h + "px"; left = "0px"; this.prop["st"] = "top"; break } }; this.prop["mw"] = w; this.prop["mh"] = h; if (!nls_isIE) this.prop["init"] = true } this.prop["dur"] = parseFloat(nlsEffectList[this.effName].split(":")[1]) * 10; this.prop["spd"] = 15; this.isOut = (isOut == true); nlsMenu[this.mId].rt.ready = false }; function _slideRun() { var me = this; var p = new Object(); var l = parseInt(this.elm.style.left); var t = parseInt(this.elm.style.top); var c = this.isOut ? 1 : 0; switch (this.prop["dir"]) { case "right": p.x1 = l; p.x2 = -this.prop["mw"] * c; break; case "left": p.x1 = l; p.x2 = this.prop["mw"] * c; break; case "down": p.x1 = t; p.x2 = -this.prop["mh"] * c; break; case "up": p.x1 = t; p.x2 = this.prop["mh"] * c; break }; _fc_slide(p); this.prop["pt"] = p; this.prop["sd"] = 0; _slidesEff[this.mId] = this; if (!_slideTm) _slideTm = setInterval(function() { _slideAnimate(); }, this.prop["spd"]); }; function _slideAnimate() { var b = true; for (var it in _slidesEff) { var eff = _slidesEff[it]; var p = eff.prop["pt"]; if (eff.prop["sd"] < eff.prop["dur"]) { eff.elm.style[eff.prop["st"]] = effect_bezier(eff.prop["sd"] / eff.prop["dur"], p.x1, p.x2, p.c1, p.c2) + "px"; eff.prop["sd"]++ } else { eff.elm.style[eff.prop["st"]] = p.x2 + "px"; if (eff.isOut) { eff.onHide(); } else { nlsMenu[eff.mId].rt.ready = true; eff.onShow(); } delete _slidesEff[eff.mId] } b = false } if (b) { clearInterval(_slideTm); _slideTm = null } }; function _fc_fade(p) { p.c1 = p.x1 + (p.x2 - p.x1) * 2 / 3; p.c2 = p.x2 }; function _fc_slide(p) { p.c1 = p.x1 + (p.x2 - p.x1) * 2 / 3; p.c2 = p.x2 }; function _f1(t) { return (1 - t); }; function _f2(t) { return (1 - t) * (1 - t); }; function _f3(t) { return (1 - t) * (1 - t) * (1 - t); }; function _f4(t) { return t * t * t }; function effect_bezier(t, x1, x2, c1, c2) { return _f3(t) * x1 + 3 * t * _f2(t) * c1 + 3 * t * t * _f1(t) * c2 + _f4(t) * x2 }; function NlsMenuItemEffect(itemId, effName) { this.tmId = null; this.itemId = itemId; this.elm = null; this.effName = effName }; NlsMenuItemEffect.prototype.init = function() { if (!nls_isIE) return; if (this.elm == null) this.elm = NlsMenu.$GE(this.itemId); if (nlsEffectList[this.effName]) this.elm.style.filter = nlsEffectList[this.effName]; if (this.elm.filters.length > 0) this.elm.filters[0].apply(); }; NlsMenuItemEffect.prototype.start = function() { if (!nls_isIE) return; if (this.elm.filters.length > 0) this.elm.filters[0].play(); }; NLSMENU.applyBorder = function(bTop, bBottom, bLeft, bRight) { if (!bTop && !bBottom && !bLeft && !bRight) { this.customBorder = null } else { this.customBorder = new NlsMenuBorder(bTop, bBottom, bLeft, bRight); } }; function NlsMenuBorder(bTop, bBottom, bLeft, bRight) { var border = "<table cellpadding=0 cellspacing=0>"; var sTop = "", sBottom = "", sLeft = "", sRight = ""; if (bTop) sTop = "<td><table width='100%' cellpadding=0 cellspacing=0><tr><td class='@stlprf_mtop'></td></tr></table></td>"; if (bBottom) sBottom = "<td><table width='100%' cellpadding=0 cellspacing=0><tr><td class='@stlprf_mbottom'></td></tr></table></td>"; if (bLeft) { sLeft = "<td height='100%' class='@stlprf_mleft' style='font-size:1pt;'>&nbsp;</td>"; if (bTop) sTop = "<td class='@stlprf_mtopleft'></td>" + sTop; if (bBottom) sBottom = "<td class='@stlprf_mbottomleft'></td>" + sBottom } if (bRight) { sRight = "<td height='100%' class='@stlprf_mright' style='font-size:1pt;'>&nbsp;</td>"; if (bTop) sTop += "<td class='@stlprf_mtopright'></td>"; if (bBottom) sBottom += "<td class='@stlprf_mbottomright'></td>" } if (sTop != "") sTop = "<tr>" + sTop + "</tr>"; if (sBottom != "") sBottom = "<tr>" + sBottom + "</tr>"; border += sTop + "<tr height='100%'>" + sLeft + "<td>@menu</td>" + sRight + "</tr>" + sBottom; border += "</table>"; this.applyBorder = function(smenu, stlprf) { var b = border.replace(/@stlprf_/gi, stlprf); return b.replace(/@menu/gi, smenu); }; return this };
NlsMnMgr.loadMenuFromHTML = function(id, wMbar, rep, opts) { var el = NlsMenu.$GE(id), ul = el.getElementsByTagName("UL"), st = 0; if (wMbar) { $loadMenuFromHTML(this, ul[0], true); st = 1 } for (var i = st; i < ul.length; i++) { $loadMenuFromHTML(this, ul[i], false); } if (opts) this.setMenusProperties(opts); if (rep) { ul[0].style.display = "none"; if (wMbar) this.renderMenubar(id, true); else this.renderMenus(this.mgrId); } }; function $loadMenuFromHTML(mgr, el, isMbar) { var mn, ch, li, it; if (isMbar) { mn = mgr.createMenubar(el.id); } else { mn = mgr.createMenu(el.id); } ch = el.childNodes; for (var i = 0; i < ch.length; i++) { it = null; if (ch[i].nodeType == 1 && ch[i].tagName == "LI") { li = ch[i].childNodes; for (var j = 0; j < li.length; j++) { if (li[j].nodeType == 1) { switch (li[j].tagName) { case "DIV": mn.addCustomMenu(li[j].innerHTML); break; case "A": it = mn.addItem(ch[i].id, ""); $parseMnItem(mn, it, li[j]); break; case "UL": if (it) mn.addSubmenu(it.id, li[j].id); $loadMenuFromHTML(mgr, li[j], false); break; case "SPAN": if (li[j].innerHTML == "-") mn.addSeparator(); else mn.addSeparator(li[j].innerHTML); } } } } } }; function $parseMnItem(mn, it, a) { var ac = a.childNodes; for (var i = 0; i < ac.length; i++) { if (ac[i].nodeType == 3) { it.capt = ac[i].nodeValue } else if (ac[i].nodeType == 1) { switch (ac[i].tagName) { case "DIV": case "SPAN": it.capt = ac[i].innerHTML; case "IMG": if (mn.icPath == "") { it.ico = [ac[i].src] } else { it.ico = [ac[i].src.substr(ac[i].src.lastIndexOf("/") + 1)] } } } } it.url = a.href; it.target = $aonevl(a.target, it.target); it.title = $aonevl(a.getAttribute("title"), ""); };