ncbi_menu_dyn.js
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:39k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * Menu 0.8 990602
  3.  * by gary smith, July 1997
  4.  * Copyright (c) 1997-1999 Netscape Communications Corp.
  5.  *
  6.  * Netscape grants you a royalty free license to use or modify this
  7.  * software provided that this copyright notice appears on all copies.
  8.  * This software is provided "AS IS," without a warranty of any kind.
  9.  * -------------------------------------------------------------------
  10.  *
  11.  * Modified by Vladimir Ivanov, NIH, NCBI, February 2002
  12.  *    Added support dynamic menu (all menus use one container).
  13.  *    Added automaticaly adjustment menu in the browsers window.
  14.  *    Fixed some errors.
  15.  */
  16. // By default dynamic menu is off
  17. window.useDynamicMenu = false;
  18. // NOTE:
  19. // By default all menu use one container if "useDynamicMenu == TRUE"
  20. // Accordingly only a one menu can be shown at a time.
  21. //
  22. // Dynamic menus work only in browsers that support property innerHTML
  23. // (Internet Explorer > 4.x & Netscape Navigator > 6.x) 
  24. function dynamiccontentNS6(el, content)
  25. {
  26.   if (document.getElementById){
  27.     rng = document.createRange();
  28.     rng.setStartBefore(el);
  29.     htmlFrag = rng.createContextualFragment(content);
  30.     while (el.hasChildNodes())
  31.       el.removeChild(el.lastChild);
  32.     el.appendChild(htmlFrag);
  33.   }
  34. }
  35. function Menu(label) 
  36. {
  37.     this.version = "0.8 [menu.js; Menu; 990602]";
  38.     this.type = "Menu";
  39.     this.fontSize = 12;
  40.     this.fontWeight = "plain";
  41.     this.fontFamily = "arial,helvetica,espy,sans-serif";
  42.     this.fontColor = "#000000";
  43.     this.fontColorHilite = "#ffffff";
  44.     this.bgColor = "#555555";
  45.     this.menuBorder = 1;
  46.     this.menuItemBorder = 1;
  47.     this.menuItemBgColor = "#cccccc";
  48.     this.menuLiteBgColor = "#ffffff";
  49.     this.menuBorderBgColor = "#777777";
  50.     this.menuHiliteBgColor = "#000084";
  51.     this.menuContainerBgColor = "#cccccc";
  52.     this.childMenuIcon = "images/arrows.gif";
  53.     this.childMenuIconHilite = "images/arrows2.gif";
  54.     this.items = new Array();
  55.     this.actions = new Array();
  56.     this.colors = new Array();
  57.     this.mouseovers = new Array();
  58.     this.mouseouts = new Array();
  59.     this.childMenus = new Array();
  60.     this.addMenuItem = addMenuItem;
  61.     this.addMenuSeparator = addMenuSeparator;
  62.     this.writeMenus = writeMenus;
  63.     this.showMenu = showMenu;
  64.     this.onMenuItemOver = onMenuItemOver;
  65.     this.onMenuItemOut = onMenuItemOut;
  66.     this.onMenuItemDown = onMenuItemDown;
  67.     this.onMenuItemAction = onMenuItemAction;
  68.     this.hideMenu = hideMenu;
  69.     this.hideChildMenu = hideChildMenu;
  70.     this.mouseTracker = mouseTracker;
  71.     this.setMouseTracker = setMouseTracker;
  72.     if (!window.menus) window.menus = new Array();
  73.     this.label = label || "menuLabel" + window.menus.length;
  74.     this.number = window.menus.length;
  75.     window.menus[this.label] = this;
  76.     window.menus[window.menus.length] = this;
  77.     if (!window.activeMenus) window.activeMenus = new Array();
  78.     if (!window.menuContainers) window.menuContainers = new Array();
  79.     if (!window.mDrag) {
  80.         window.mDrag    = new Object();
  81.         mDrag.startMenuDrag = startMenuDrag;
  82.         mDrag.doMenuDrag    = doMenuDrag;
  83.         this.setMouseTracker();
  84.     }
  85.     if (window.MenuAPI) MenuAPI(this);
  86. }
  87. function addMenuItem(label, action, color, mouseover, mouseout) 
  88. {
  89.     this.items[this.items.length] = label;
  90.     this.actions[this.actions.length] = action;
  91.     this.colors[this.colors.length] = color;
  92.     this.mouseovers[this.mouseovers.length] = mouseover;
  93.     this.mouseouts[this.mouseouts.length] = mouseout;
  94. }
  95. function addMenuSeparator() 
  96. {
  97.     this.items[this.items.length] = "separator";
  98.     this.actions[this.actions.length] = "";
  99.     this.menuItemBorder = 0;
  100. }
  101. function getMenuItemID(menu_index, item_index) 
  102. {
  103. return menu_index * 1000 + item_index + 1;
  104. }
  105. function getMenuContent(container, index) 
  106. {
  107. menu = container.menus[index];
  108. if (!menu) return '';
  109.     var proto = menu.prototypeStyles || this.prototypeStyles || menu;
  110.     var mouseOut = '';
  111.     if (!document.getElementById) mouseOut = ' onMouseOut="hideMenu(this);"';
  112.     var content = ''+
  113.     '<DIV ID="menuLayer'+ index +'" STYLE="position:absolute;left:0;top:0;visibility:hidden;cursor:pointer;cursor:hand;">'+
  114.     '  <DIV ID="menuLite'+ index +'" STYLE="position:absolute;left:'+ proto.menuBorder +';top:'+ proto.menuBorder +';visibility:hide;"'+mouseOut+'>'+
  115.     '    <DIV ID="menuFg'+ index +'" STYLE="position:absolute;left:1;top:1;visibility:hide;">';
  116. proto.menuWidth = 0;
  117.     if (!document.layers) {
  118. proto.menuWidth = proto.menuWidth || proto.menuItemWidth + (proto.menuBorder * 2) + 2 || 200;
  119. }
  120.     for (var i=0; i<menu.items.length; i++) {
  121.         var item = menu.items[i];
  122.         var childMenu = false;
  123.         var defaultHeight = 20;
  124.         var defaultIndent = 15;
  125. var id = getMenuItemID(index,i);
  126.         if (item.label) {
  127.             item = item.label;
  128.             childMenu = true;
  129. //        } else if (item.indexOf(".gif") != -1 && item.indexOf("<IMG") == -1) {
  130. //            item = '<IMG SRC="' + item + '" NAME="menuItem'+ id +'Img">';
  131. //            defaultIndent = 0;
  132. //            if (document.layers) {
  133. //                defaultHeight = null;
  134. //            }
  135.         }
  136.     proto.menuItemHeight = proto.menuItemHeight || defaultHeight;
  137. h4 = proto.menuItemHeight/4;
  138.      proto.menuItemIndent = proto.menuItemIndent || defaultIndent;
  139.         var itemProps = 'visibility:hide;font-Family:' + proto.fontFamily +';font-Weight:' + proto.fontWeight + ';fontSize:' + proto.fontSize + ';';
  140.         if (document.all || document.getElementById)
  141.          itemProps += 'font-size:' + proto.fontSize + ';" onMouseOver="onMenuItemOver(null,this);" onMouseOut="onMenuItemOut(null,this);" onClick="onMenuItemAction(null,this);';
  142.         var dTag  = '<DIV ID="menuItem'+ id +'" STYLE="position:absolute;left:0;top:'+ (i * proto.menuItemHeight) +';'+ itemProps +'">';
  143.         var dText = '<DIV ID="menuItemText'+ id +'" STYLE="position:absolute;left:' + proto.menuItemIndent + ';top:0;color:'+ proto.fontColor +';">'+ item +'</DIV><DIV ID="menuItemHilite'+ id +'" STYLE="position:absolute;left:' + proto.menuItemIndent + ';top:0;color:'+ proto.fontColorHilite +';visibility:hidden;">'+ item +'</DIV>';
  144.         if (item == "separator") {
  145. //            content += ( dTag + '<DIV ID="menuSeparator'+ id +'" STYLE="position:absolute;left:1;top:2;"></DIV><DIV ID="menuSeparatorLite'+ id +'" STYLE="position:absolute;left:1;top:3;"></DIV></DIV>');
  146.             content += ( dTag + '<DIV ID="menuSeparator'+ id +'" STYLE="position:absolute;left:1;top:'+(h4-1)+';width:'+proto.menuWidth+';height:1;"></DIV>'+
  147. '<DIV ID="menuSeparatorLite'+ id +'" STYLE="position:absolute;left:1;top:'+(h4)+';width:'+proto.menuWidth+';height:1;"></DIV></DIV>');
  148.         } else if (childMenu) {
  149.             content += ( dTag + dText + '<DIV ID="childMenu'+ id +'" STYLE="position:absolute;left:0;top:3;'+ itemProps +'"><IMG SRC="'+ proto.childMenuIcon +'"></DIV></DIV>');
  150.         } else {
  151.             content += ( dTag + dText + '</DIV>');
  152.         }
  153.     }
  154.     content += '<DIV ID="focusItem'+ index +'" STYLE="position:absolute;left:0;top:0;visibility:hide;" onClick="onMenuItemAction(null,this);">&nbsp;</DIV>';
  155.     content += '</DIV></DIV></DIV>nn';
  156. return content;
  157. }
  158. function setMenuProperty(container, index) 
  159. {
  160.     var proto = null;
  161. var x = index;
  162.     if (document.layers) {
  163.         proto = container.menus[x].prototypeStyles || this.prototypeStyles || container.menus[x];
  164.         var menu = container.document.layers[x];
  165.         container.menus[x].menuLayer = menu;
  166.         container.menus[x].menuLayer.Menu = container.menus[x];
  167.         container.menus[x].menuLayer.Menu.container = container;
  168.         var body = menu.document.layers[0].document.layers[0];
  169.         body.clip.width = proto.menuWidth || body.clip.width;
  170.         body.clip.height = proto.menuHeight || body.clip.height;
  171.         for (var i=0; i<body.document.layers.length-1; i++) {
  172.             var l = body.document.layers[i];
  173.             l.Menu = container.menus[x];
  174.             l.menuHiliteBgColor = proto.menuHiliteBgColor;
  175.             l.document.bgColor = proto.menuItemBgColor;
  176.             l.saveColor = proto.menuItemBgColor;
  177.             l.mouseout  = l.Menu.mouseouts[i];
  178.             l.mouseover = l.Menu.mouseovers[i];
  179.             l.onmouseover = proto.onMenuItemOver;
  180.             l.onclick = proto.onMenuItemAction;
  181.             l.action = container.menus[x].actions[i];
  182.             l.focusItem = body.document.layers[body.document.layers.length-1];
  183.             l.clip.width = proto.menuItemWidth || body.clip.width + proto.menuItemIndent;
  184.             l.clip.height = proto.menuItemHeight || l.clip.height;
  185.             if ( i>0 ) l.top = body.document.layers[i-1].top + body.document.layers[i-1].clip.height + proto.menuItemBorder;
  186.             l.hilite = l.document.layers[1];
  187.             l.document.layers[1].isHilite = true;
  188.             if (l.document.layers[0].id.indexOf("menuSeparator") != -1) {
  189.                 l.hilite = null;
  190.                 l.clip.height -= l.clip.height / 2;
  191.                 l.document.layers[0].document.bgColor = proto.bgColor;
  192.                 l.document.layers[0].clip.width = l.clip.width -2;
  193.                 l.document.layers[0].clip.height = 1;
  194.                 l.document.layers[1].document.bgColor = proto.menuLiteBgColor;
  195.                 l.document.layers[1].clip.width = l.clip.width -2;
  196.                 l.document.layers[1].clip.height = 1;
  197.                 l.document.layers[1].top = l.document.layers[0].top + 1;
  198.             } else if (l.document.layers.length > 2) {
  199.                 l.childMenu = container.menus[x].items[i].menuLayer;
  200.                 l.icon = proto.childMenuIcon;
  201.                 l.iconHilite = proto.childMenuIconHilite;
  202.                 l.document.layers[2].left = l.clip.width -13;
  203.                 l.document.layers[2].top = (l.clip.height / 2) -4;
  204.                 l.document.layers[2].clip.left += 3;
  205.                 l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
  206.             }
  207.         }
  208.         body.document.bgColor = proto.bgColor;
  209.         body.clip.width  = l.clip.width +1;
  210.         body.clip.height = l.top + l.clip.height +1;
  211.         body.document.layers[i].clip.width = body.clip.width;
  212.         body.document.layers[i].captureEvents(Event.MOUSEDOWN);
  213.         body.document.layers[i].onmousedown = proto.onMenuItemDown;
  214.         body.document.layers[i].onmouseout = proto.onMenuItemOut;
  215.         body.document.layers[i].Menu = l.Menu;
  216.         body.document.layers[i].top = -30;
  217.         menu.document.bgColor = proto.menuBorderBgColor;
  218.         menu.document.layers[0].document.bgColor = proto.menuLiteBgColor;
  219.         menu.document.layers[0].clip.width = body.clip.width +1;
  220.         menu.document.layers[0].clip.height = body.clip.height +1;
  221.         menu.clip.width = body.clip.width + (proto.menuBorder * 2) +1;
  222.         menu.clip.height = body.clip.height + (proto.menuBorder * 2) +1;
  223.         if (menu.Menu.enableTracker) {
  224.             menu.Menu.disableHide = true;
  225.             setMenuTracker(menu.Menu);
  226.         }
  227.   
  228.     } else if (document.all) {
  229.         var menu = container.document.all("menuLayer" + x);
  230.         container.menus[x].menuLayer = menu;
  231.         container.menus[x].menuLayer.Menu = container.menus[x];
  232.         container.menus[x].menuLayer.Menu.container = menu;
  233.         proto = container.menus[x].prototypeStyles || this.prototypeStyles || container.menus[x];
  234.         proto.menuItemWidth = proto.menuItemWidth || 200;
  235.         menu.style.backgroundColor = proto.menuBorderBgColor;
  236.         for (var i=0; i<container.menus[x].items.length; i++) {
  237. var id = getMenuItemID(x,i);
  238.             var l  = container.document.all["menuItem" + id];
  239.             l.Menu = container.menus[x];
  240.             proto = container.menus[x].prototypeStyles || this.prototypeStyles || container.menus[x];
  241.             l.style.pixelWidth = proto.menuItemWidth;
  242.             l.style.pixelHeight = proto.menuItemHeight;
  243.             if (i>0) l.style.pixelTop = container.document.all["menuItem" + (id-1)].style.pixelTop + container.document.all["menuItem" + (id-1)].style.pixelHeight + proto.menuItemBorder;
  244.             l.style.fontSize = proto.fontSize;
  245.             l.style.backgroundColor = proto.menuItemBgColor;
  246.             l.style.visibility = "inherit";
  247.             l.saveColor = proto.menuItemBgColor;
  248.             l.menuHiliteBgColor = proto.menuHiliteBgColor;
  249.             l.action = container.menus[x].actions[i];
  250.             l.hilite = container.document.all["menuItemHilite" + id];
  251.             l.focusItem = container.document.all["focusItem" + x];
  252.             l.focusItem.style.pixelTop = -30;
  253.             l.mouseover = l.Menu.mouseovers[x];
  254.             l.mouseout  = l.Menu.mouseouts[x];
  255.             var childItem = container.document.all["childMenu" + id];
  256.             if (childItem) {
  257.                 l.childMenu = container.menus[x].items[i].menuLayer;
  258.                 childItem.style.pixelLeft = l.style.pixelWidth -11;
  259.                 childItem.style.pixelTop = (l.style.pixelHeight /2) -4;
  260.                 childItem.style.pixelWidth = 30 || 7;
  261.                 childItem.style.clip = "rect(0 7 7 3)";
  262.                 l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
  263.             }
  264.             var sep = container.document.all["menuSeparator" + id];
  265.             if (sep) {
  266.                 sep.style.clip = "rect(0 " + (proto.menuItemWidth - 3) + " 1 0)";
  267.                 sep.style.backgroundColor = proto.bgColor;
  268.                 sep = container.document.all["menuSeparatorLite" + id];
  269.                 sep.style.clip = "rect(1 " + (proto.menuItemWidth - 3) + " 2 0)";
  270.                 sep.style.backgroundColor = proto.menuLiteBgColor;
  271.                 l.style.pixelHeight = proto.menuItemHeight/2;
  272.                 l.isSeparator = true
  273.             }
  274.         }
  275.         proto.menuHeight = (l.style.pixelTop + l.style.pixelHeight);
  276.         var lite = container.document.all["menuLite" + x];
  277.         lite.style.pixelHeight = proto.menuHeight +2;
  278.         lite.style.pixelWidth = proto.menuItemWidth + 2;
  279.         lite.style.backgroundColor = proto.menuLiteBgColor;
  280.         var body = container.document.all["menuFg" + x];
  281.         body.style.pixelHeight = proto.menuHeight + 1;
  282.         body.style.pixelWidth = proto.menuItemWidth + 1;
  283.         body.style.backgroundColor = proto.bgColor;
  284.         container.menus[x].menuLayer.style.pixelWidth  = proto.menuWidth || proto.menuItemWidth + (proto.menuBorder * 2) +2;
  285.         container.menus[x].menuLayer.style.pixelHeight = proto.menuHeight + (proto.menuBorder * 2) +2;
  286.         if (menu.Menu.enableTracker) {
  287.             menu.Menu.disableHide = true;
  288.             setMenuTracker(menu.Menu);
  289.         }
  290.     } else if (document.getElementById) {
  291.         var menu = document.getElementById("menuLayer" + x);
  292.         container.menus[x].menuLayer = menu;
  293.         container.menus[x].menuLayer.Menu = container.menus[x];
  294.         container.menus[x].menuLayer.Menu.container = menu;
  295.         proto = container.menus[x].prototypeStyles || this.prototypeStyles || container.menus[x];
  296.         proto.menuItemWidth = proto.menuItemWidth || 200;
  297.         menu.style.backgroundColor = proto.menuBorderBgColor;
  298.         for (var i=0; i<container.menus[x].items.length; i++) {
  299.         var id = getMenuItemID(x,i);
  300.             var l = document.getElementById("menuItem" + id);
  301.             l.Menu = container.menus[x];
  302.             proto = container.menus[x].prototypeStyles || this.prototypeStyles || container.menus[x];
  303.             l.style.width = proto.menuItemWidth;
  304.             l.style.height = proto.menuItemHeight;
  305.             if (i>0) l.style.top = document.getElementById("menuItem" + (id-1)).style.pixelTop + document.getElementById("menuItem" + (id-1)).style.height + proto.menuItemBorder;
  306.             l.style.fontSize = proto.fontSize;
  307.             l.style.backgroundColor = proto.menuItemBgColor;
  308.             l.style.visibility = "inherit";
  309.             l.saveColor = proto.menuItemBgColor;
  310.             l.menuHiliteBgColor = proto.menuHiliteBgColor;
  311.             l.action = container.menus[x].actions[i];
  312.             l.hilite = document.getElementById("menuItemHilite" + id);
  313.             l.focusItem = document.getElementById("focusItem" + x);
  314.             l.focusItem.style.top = -30;
  315.             l.mouseover = l.Menu.mouseovers[x];
  316.             l.mouseout  = l.Menu.mouseouts[x];
  317.             l.onmouseover = proto.onMenuItemOver;
  318.             var childItem = document.getElementById("childMenu" + id);
  319.             if (childItem) {
  320.                 l.childMenu = container.menus[x].items[i].menuLayer;
  321.                 childItem.style.left = l.style.width -11;
  322.                 childItem.style.top = (l.style.height /2) -4;
  323.                 childItem.style.width = 30 || 7;
  324.                 childItem.style.clip = "rect(0,7,7,3)";
  325.                 l.Menu.childMenus[l.Menu.childMenus.length] = l.childMenu;
  326.             }
  327.             var sep = document.getElementById("menuSeparator" + id);
  328.             if (sep) {
  329.                 sep.style.clip = "rect(0," + (proto.menuItemWidth - 3) + ",1,0)";
  330.                 sep.style.backgroundColor = proto.bgColor;
  331.                 sep = document.getElementById("menuSeparatorLite" + id);
  332.                 sep.style.clip = "rect(1," + (proto.menuItemWidth - 3) + ",2,0)";
  333.                 sep.style.backgroundColor = proto.menuLiteBgColor;
  334. //                l.style.height = proto.menuItemHeight/2;
  335.                 l.isSeparator = true
  336.             }
  337.         }
  338.         proto.menuHeight = (parseInt(l.style.top) + parseInt(l.style.height));
  339.         var lite = document.getElementById("menuLite" + x);
  340.         lite.style.height = proto.menuHeight +2;
  341.         lite.style.width = proto.menuItemWidth + 2;
  342.         lite.style.backgroundColor = proto.menuLiteBgColor;
  343.         var body = document.getElementById("menuFg" + x);
  344.         body.style.height = proto.menuHeight + 1;
  345.         body.style.width = proto.menuItemWidth + 1;
  346.         body.style.backgroundColor = proto.bgColor;
  347.         container.menus[x].menuLayer.style.width  = proto.menuWidth || proto.menuItemWidth + (proto.menuBorder * 2) +2;
  348.         container.menus[x].menuLayer.style.height = proto.menuHeight + (proto.menuBorder * 2) +2;
  349.         if (menu.Menu.enableTracker) {
  350.             menu.Menu.disableHide = true;
  351.             setMenuTracker(menu.Menu);
  352.         }
  353.     }
  354. }
  355. function setContainerProperty(container) 
  356. {
  357.     if (document.layers) {
  358.         container.clip.width = window.innerWidth;
  359.         container.clip.height = window.innerHeight;
  360.         container.onmouseout = this.hideMenu;
  361.         container.menuContainerBgColor = this.menuContainerBgColor;
  362. }
  363. if (!useDynamicMenu) {
  364.         for (var i=0; i<container.menus.length; i++) {
  365. setMenuProperty(container, i);
  366. }
  367. }
  368.     if (document.all) {
  369.         container.document.all("menuContainer").style.backgroundColor = container.menus[0].menuContainerBgColor;
  370.         container.document.saveBgColor = container.document.bgColor;
  371.     } else if (document.getElementById) {
  372.         container.style.backgroundColor = container.menus[0].menuContainerBgColor;
  373.         container.saveBgColor = container.bgColor;
  374.     }
  375. }
  376. function writeMenus(container) 
  377. {
  378.     if (!window.attemptCount)
  379.         window.attemptCount = 1;
  380.     if (!container && document.layers) {
  381.         if (eval("document.width"))
  382.             container = new Layer(1000);
  383.     } else if (!container && document.all) {
  384.         if  (!document.all["menuContainer"]) {
  385.             container = document.createElement("DIV") 
  386.             container.id = "menuContainer" 
  387.         document.getElementsByTagName("BODY").item(0).appendChild(container)
  388.         }
  389.         container = document.all["menuContainer"];
  390.     } else if (!container && document.getElementById && document.getElementsByTagName("BODY")) {
  391.         if (!document.getElementById("menuContainer")) {
  392.    container = document.createElement("DIV") 
  393.    container.id = "menuContainer" 
  394.    document.getElementsByTagName("BODY").item(0).appendChild(container)
  395.    container.style.backgroundColor = this.menuContainerBgColor
  396. } else {
  397.    container = document.getElementById("menuContainer")
  398. }
  399.     }
  400.     if (!container && window.attemptCount < 10) {
  401.         window.delayWriteMenus = this.writeMenus;
  402.         window.menuContainerBgColor = this.menuContainerBgColor;
  403.         window.attemptCount++;
  404.         setTimeout('delayWriteMenus()', 3000);
  405.         return;
  406.     }
  407.     container.isContainer = "menuContainer" + menuContainers.length;
  408.     menuContainers[menuContainers.length] = container;
  409.     container.menus = new Array();
  410.     for (var i=0; i<window.menus.length; i++) {
  411.         container.menus[i] = window.menus[i];
  412. }
  413.     window.menus.length = 0;
  414. // Get menus html-content
  415.     var content = '';
  416. if (window.useDynamicMenu && document.layers) window.useDynamicMenu = false;
  417. if (!useDynamicMenu) {
  418.     for (var i=0; i<container.menus.length; i++) {
  419. content += getMenuContent(container,i);
  420.     }
  421. }
  422.     if (container.innerHTML) {
  423.         container.innerHTML=content;
  424.     } else if (!document.all && document.getElementById) {
  425. // dynamiccontentNS6(container,content)
  426.         container.innerHTML=content;
  427.     } else {
  428.         container.document.open("text/html");
  429.         container.document.writeln(content);
  430.         container.document.close();
  431.     }
  432. // Set containers propertys
  433. setContainerProperty(container);
  434.     window.wroteMenu = true;
  435. }
  436. function onMenuItemOver(e, l, a) 
  437. {
  438.     l = l || this;
  439.     a = a || window.ActiveMenuItem;
  440.     if (document.layers) {
  441.         if (a) {
  442.             a.document.bgColor = a.saveColor;
  443.             if (a.hilite) a.hilite.visibility = "hidden";
  444.             if (a.childMenu) a.document.layers[1].document.images[0].src = a.icon;
  445.         } else {
  446.             a = new Object();
  447.         }
  448.         if (this.mouseover && this.id != a.id) {
  449.             if (this.mouseover.length > 4) {
  450.                 var ext = this.mouseover.substring(this.mouseover.length-4);
  451.                 if (ext == ".gif" || ext == ".jpg") {
  452.                     this.document.layers[1].document.images[0].src = this.mouseover;
  453.                 } else {
  454.                     eval("" + this.mouseover);
  455.                 }
  456.             }
  457.         }
  458.         if (l.hilite) {
  459.             l.document.bgColor = l.menuHiliteBgColor;
  460.             l.zIndex = 1;
  461.             l.hilite.visibility = "inherit";
  462.             l.hilite.zIndex = 2;
  463.             l.document.layers[1].zIndex = 1;
  464.             l.focusItem.zIndex = this.zIndex +2;
  465.         }
  466.         l.focusItem.top = this.top;
  467.         l.Menu.hideChildMenu(l);
  468.     } else if (l.style) {
  469.         document.onmousedown=l.Menu.onMenuItemDown;
  470.         if (a) {
  471.             a.style.backgroundColor = a.saveColor;
  472.             if (a.hilite) a.hilite.style.visibility = "hidden";
  473.         } else {
  474.             a = new Object();
  475. }
  476.         if (l.mouseover && l.id != a.id) {
  477.             if (l.mouseover.length > 4) {
  478.                 var ext = l.mouseover.substring(l.mouseover.length-4);
  479.                 if (ext == ".gif" || ext == ".jpg") {
  480.                     l.document.images[l.id + "Img"].src = l.mouseover;
  481.                 } else {
  482.                     eval("" + l.mouseover);
  483.                 }
  484.             }
  485.         }
  486. if (l.isSeparator) return;
  487.         l.style.backgroundColor = l.menuHiliteBgColor;
  488.         if (l.hilite) {
  489.             l.style.backgroundColor = l.menuHiliteBgColor;
  490.             l.hilite.style.visibility = "inherit";
  491.         }
  492. if (l.style.pixelTop) {
  493.           l.focusItem.style.pixelTop = l.style.pixelTop;
  494. } else {
  495.           l.focusItem.style.top = l.style.top;
  496.         }
  497.         if (isNaN(l.zIndex)) {
  498.            l.zIndex = 1;
  499.         }
  500.         l.focusItem.style.zIndex = l.zIndex +1;
  501.         l.zIndex = 1;
  502.         l.Menu.hideChildMenu(l);
  503.     }
  504.     window.ActiveMenuItem = l;
  505. }
  506. function onMenuItemOut(e, l, a) 
  507. {
  508.     l = l || this;
  509.     a = a || window.ActiveMenuItem;
  510.     if (l.id.indexOf("focusItem")) {
  511.         if (a && l.top) {
  512.             l.top = -30;
  513.         if (a.mouseout && a.id != l.id) {
  514.             if (a.mouseout.length > 4) {
  515.                 var ext = a.mouseout.substring(a.mouseout.length-4);
  516.                 if (ext == ".gif" || ext == ".jpg") {
  517.             a.document.layers[1].document.images[0].src = a.mouseout;
  518.                     } else {
  519.                eval("" + a.mouseout);
  520.                 }
  521.             }
  522.         }
  523.         } else if (a && l.style) {
  524.             document.onmousedown=null;
  525.             window.event.cancelBubble=true;
  526.         if (l.mouseout) {
  527.             if (l.mouseout.length > 4) {
  528.                 var ext = l.mouseout.substring(l.mouseout.length-4);
  529.                   if (ext == ".gif" || ext == ".jpg") {
  530.                 l.document.images[l.id + "Img"].src = l.mouseout;
  531.                 } else {
  532.                 eval("" + l.mouseout);
  533.                 }
  534.             }
  535.         }
  536.         }
  537.     }
  538. }
  539. function onMenuItemAction(e, l) 
  540. {
  541.     l = window.ActiveMenuItem;
  542.     if (!l) return;
  543.     if (!ActiveMenu.Menu.disableHide) hideActiveMenus(ActiveMenu.menuLayer);
  544.     if (l.action) {
  545.         eval("" + l.action);
  546.     }
  547. }
  548. function getMenuLayer(menu) 
  549. {
  550.     var l = menu.menuLayer || menu;
  551. var n_container = 0;
  552. var n_menu;
  553. if (typeof(menu) == "string") {
  554. if (document.all) {
  555.      l = document.all[menu];
  556. } else if (document.getElementById) {
  557.             l = document.getElementById(menu);
  558. }
  559.         for (var n=0; n < menuContainers.length; n++) {
  560.             l = menuContainers[n].menus[menu];
  561.              for (var i=0; i<menuContainers[n].menus.length; i++) {
  562.                  if (menu == menuContainers[n].menus[i].label) {
  563. if (useDynamicMenu) break;
  564. l = menuContainers[n].menus[i].menuLayer;
  565.  }
  566.                  if (l) break;
  567.              }
  568.  if (i<menuContainers[n].menus.length) break;
  569.         }
  570. if (useDynamicMenu) {
  571. n_container = n;
  572. n_menu = i;
  573. }
  574.     } else {
  575. if (useDynamicMenu) {
  576. n_menu = menu.number;
  577. }
  578. }
  579. if (useDynamicMenu) {
  580. var container = menuContainers[n_container];
  581. var content = getMenuContent(container, n_menu);
  582.        container.innerHTML = content;
  583. setMenuProperty(container, n_menu);
  584. l = menuContainers[n_container].menus[n_menu].menuLayer;
  585. }
  586. return l;
  587. }
  588. function showMenu(menu, x, y, child) 
  589. {
  590.     if (!window.wroteMenu) return;
  591.     if (document.layers) {
  592.         if (menu) {
  593.             var l = menu.menuLayer || menu;
  594.             if (typeof(menu) == "string") {
  595.                 for (var n=0; n < menuContainers.length; n++) {
  596.                     l = menuContainers[n].menus[menu];
  597.                     for (var i=0; i<menuContainers[n].menus.length; i++) {
  598.                         if (menu == menuContainers[n].menus[i].label) l = menuContainers[n].menus[i].menuLayer;
  599.                         if (l) break;
  600.                     }
  601.                 }
  602. if (!l) return;
  603.             }
  604.             l.Menu.container.document.bgColor = null;
  605.             l.left = 1;
  606.             l.top = 1;
  607.             hideActiveMenus(l);
  608.             if (this.visibility) l = this;
  609.             window.ActiveMenu = l;
  610.             window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
  611.             setTimeout('if(window.ActiveMenu)window.ActiveMenu.Menu.setMouseTracker();', 300);
  612.         } else {
  613.             var l = child;
  614.         }
  615.         if (!l) return;
  616.         for (var i=0; i<l.layers.length; i++) {
  617.             if (!l.layers[i].isHilite)
  618.                 l.layers[i].visibility = "inherit";
  619.             if (l.layers[i].document.layers.length > 0)
  620.                 showMenu(null, "relative", "relative", l.layers[i]);
  621.         }
  622.         if (l.parentLayer) {
  623.    offX = 14; offY = 0;
  624.             if (x != "relative")
  625.                 l.parentLayer.left = x || window.pageX || 0;
  626.             if (y != "relative")
  627.                 l.parentLayer.top = y || window.pageY || 0;
  628.             if (l.parentLayer.left + l.clip.width + offX > window.pageXOffset + window.innerWidth) 
  629.                 l.parentLayer.left = (window.pageXOffset + window.innerWidth - l.clip.width - offX);
  630.             if (l.parentLayer.top + l.clip.height + offY > window.pageYOffset + window.innerHeight)
  631.                 l.parentLayer.top = (window.pageYOffset + window.innerHeight - l.clip.height - offY);
  632.             if (l.parentLayer.isContainer) {
  633.                 l.Menu.xOffset = window.pageXOffset;
  634.                 l.Menu.yOffset = window.pageYOffset;
  635.                 l.parentLayer.clip.width = window.ActiveMenu.clip.width +2;
  636.                 l.parentLayer.clip.height = window.ActiveMenu.clip.height +2;
  637.                 if (l.parentLayer.menuContainerBgColor) l.parentLayer.document.bgColor = l.parentLayer.menuContainerBgColor;
  638.             }
  639.         }
  640.         l.visibility = "inherit";
  641.         if (l.Menu) l.Menu.container.visibility = "inherit";
  642.     } else if (document.all) {
  643.         var l = menu.menuLayer || menu;
  644.         hideActiveMenus(l);
  645. l = getMenuLayer(menu);
  646.         window.ActiveMenu = l;
  647.         l.style.visibility = "inherit";
  648.         if (x != "relative")
  649.             l.style.pixelLeft = x || (window.pageX + document.body.scrollLeft) || 0;
  650.         if (y != "relative")
  651.             l.style.pixelTop = y || (window.pageY + document.body.scrollTop) || 0;
  652. if ( l.style.pixelLeft + l.style.pixelWidth > document.body.scrollLeft + document.body.clientWidth) {
  653.            l.style.pixelLeft = document.body.scrollLeft + document.body.clientWidth - l.style.pixelWidth;
  654. }
  655. if ( l.style.pixelTop + l.style.pixelHeight > document.body.scrollTop + document.body.clientHeight) {
  656.    l.style.pixelTop = document.body.scrollTop + document.body.clientHeight - l.style.pixelHeight;
  657. }
  658.         l.Menu.xOffset = document.body.scrollLeft;
  659.         l.Menu.yOffset = document.body.scrollTop;
  660.     } else if (document.getElementById) {
  661.         var l = menu.menuLayer || menu;
  662.         hideActiveMenus(l);
  663. l = getMenuLayer(menu);
  664.         window.ActiveMenu = l;
  665. offX = 14; offY = 0;
  666.         l.style.visibility = "inherit";
  667.         if (x != "relative")
  668.             l.style.left = x || parseInt(window.pageX) || 0;
  669.         if (y != "relative")
  670.             l.style.top = y || parseInt(window.pageY) || 0;
  671. if ( parseInt(l.style.left) + parseInt(l.style.width) + offX > window.pageXOffset + window.innerWidth) {
  672.            l.style.left = window.pageXOffset + window.innerWidth - parseInt(l.style.width) - offX;
  673. }
  674. if ( parseInt(l.style.top) + parseInt(l.style.height) + offY > window.pageYOffset + window.innerHeight) {
  675.    l.style.top = window.pageYOffset + window.innerHeight - parseInt(l.style.height) - offY;
  676. }
  677.         l.Menu.xOffset = window.pageXOffset;
  678.         l.Menu.yOffset = window.pageYOffset;
  679.         l.Menu.container.style.background = l.Menu.menuContainerBgColor;
  680.     }
  681.     if (menu) {
  682.         window.activeMenus[window.activeMenus.length] = l;
  683.     }
  684. }
  685. function hideMenu(e) 
  686. {
  687.     var l = e || window.ActiveMenu;
  688.     if (!l) return true;
  689.     if (l.menuLayer) {
  690.         l = l.menuLayer;
  691.     } else if (this.visibility) {
  692.         l = this;
  693.     }
  694.     if (l.menuLayer) {
  695.         l = l.menuLayer;
  696.     }
  697.     var a = window.ActiveMenuItem;
  698.     document.saveMousemove = document.onmousemove;
  699.     document.onmousemove = mouseTracker;
  700.     if (a && document.layers) {
  701.         a.document.bgColor = a.saveColor;
  702.         a.focusItem.top = -30;
  703.         if (a.hilite) a.hilite.visibility = "hidden";
  704.         if (a.childMenu) a.document.layers[1].document.images[0].src = a.icon;
  705.         if (mDrag.oldX <= e.pageX+3 && mDrag.oldX >= e.pageX-3 && mDrag.oldY <= e.pageY+3 && mDrag.oldY >= e.pageY-3) {
  706.             if (a.action && window.ActiveMenu) setTimeout('window.ActiveMenu.Menu.onMenuItemAction();', 2);
  707.         } else if (document.saveMousemove == mDrag.doMenuDrag) {
  708.             if (window.ActiveMenu) return true;
  709.         }
  710.     } else if (window.ActiveMenu && (document.all||document.getElementById)) {
  711.         document.onmousedown=null;
  712.         if (a) {
  713.             a.style.backgroundColor = a.saveColor;
  714.             if (a.hilite) a.hilite.style.visibility = "hidden";
  715.         }
  716.         if (document.saveMousemove == mDrag.doMenuDrag) {
  717.             return true;
  718.         }
  719. }
  720.     if (window.ActiveMenu) {
  721.         if (window.ActiveMenu.Menu) {
  722.             if (window.ActiveMenu.Menu.disableHide) return true;
  723.             e = window.event || e;
  724.             if (!window.ActiveMenu.Menu.enableHideOnMouseOut && e.type == "mouseout") return true;
  725.         }
  726.     }
  727.     hideActiveMenus(l);
  728.     return true;
  729. }
  730. function hideChildMenu(menuLayer) 
  731. {
  732.     var l = menuLayer || this;
  733.     for (var i=0; i < l.Menu.childMenus.length; i++) {
  734.         if (document.layers) {
  735.             l.Menu.childMenus[i].visibility = "hidden";
  736.         } else if (document.all || document.getElementById) {
  737.             l.Menu.childMenus[i].style.visibility = "hidden";
  738.         }
  739.         l.Menu.childMenus[i].Menu.hideChildMenu(l.Menu.childMenus[i]);
  740.     }
  741.     if (l.childMenu) {
  742.         if (document.layers) {
  743.             l.Menu.container.document.bgColor = null;
  744.             l.Menu.showMenu(null,null,null,l.childMenu.layers[0]);
  745.             l.childMenu.zIndex = l.parentLayer.zIndex +1;
  746.             l.childMenu.top = l.top + l.parentLayer.top + l.Menu.menuLayer.top;
  747.             if (l.childMenu.left + l.childMenu.clip.width > window.innerWidth) {
  748.                 l.childMenu.left = l.parentLayer.left - l.childMenu.clip.width + l.Menu.menuLayer.top + 15;
  749.                 l.Menu.container.clip.left -= l.childMenu.clip.width;
  750.             } else if (l.Menu.childMenuDirection == "left") {
  751.                 l.childMenu.left = l.parentLayer.left - l.parentLayer.clip.width;
  752.                 l.Menu.container.clip.left -= l.childMenu.clip.width;
  753.             } else {
  754.                 l.childMenu.left = l.parentLayer.left + l.parentLayer.clip.width  + l.Menu.menuLayer.left -5;
  755.             }
  756.             l.Menu.container.clip.width += l.childMenu.clip.width +100;
  757.             l.Menu.container.clip.height += l.childMenu.clip.height;
  758.             l.document.layers[1].zIndex = 0;
  759.             l.document.layers[1].document.images[0].src = l.iconHilite;
  760.             l.childMenu.visibility = "inherit";
  761.         } else if (document.all) {
  762.             l.childMenu.style.zIndex = l.Menu.menuLayer.style.zIndex +1;
  763.             l.childMenu.style.pixelTop = l.style.pixelTop + l.Menu.menuLayer.style.pixelTop;
  764.             if (l.childMenu.style.pixelLeft + l.childMenu.style.pixelWidth > document.width) {
  765.                 l.childMenu.style.pixelLeft = l.childMenu.style.pixelWidth + l.Menu.menuLayer.style.pixelTop + 15;
  766.             } else if (l.Menu.childMenuDirection == "left") {
  767.                 //l.childMenu.style.pixelLeft = l.parentLayer.left - l.parentLayer.clip.width;
  768.             } else {
  769.                 l.childMenu.style.pixelLeft = l.Menu.menuLayer.style.pixelWidth + l.Menu.menuLayer.style.pixelLeft -5;
  770.             }
  771.             l.childMenu.style.visibility = "inherit";
  772.         } else if (document.getElementById) {
  773.             l.childMenu.style.zIndex = l.Menu.menuLayer.style.zIndex +1;
  774.             l.childMenu.style.top = l.style.top + l.Menu.menuLayer.style.top;
  775.             if (l.childMenu.style.left + l.childMenu.style.width > document.width) {
  776.                 l.childMenu.style.left = l.childMenu.style.width + l.Menu.menuLayer.style.top + 15;
  777.             } else if (l.Menu.childMenuDirection == "left") {
  778.                 //l.childMenu.style.pixelLeft = l.parentLayer.left - l.parentLayer.clip.width;
  779.             } else {
  780.                 l.childMenu.style.left = l.Menu.menuLayer.style.width + l.Menu.menuLayer.style.left -5;
  781.             }
  782.             l.childMenu.style.visibility = "inherit";
  783.         }
  784.         if (!l.childMenu.disableHide)
  785.             window.activeMenus[window.activeMenus.length] = l.childMenu;
  786.     }
  787. }
  788. function hideActiveMenus(l) 
  789. {
  790.     if (!window.activeMenus) return;
  791.     for (var i=0; i < window.activeMenus.length; i++) {
  792.     if (!activeMenus[i]) return;
  793.         if (activeMenus[i].visibility && activeMenus[i].Menu) {
  794.             activeMenus[i].visibility = "hidden";
  795.             activeMenus[i].Menu.container.visibility = "hidden";
  796.     if (document.getElementById) {
  797.               activeMenus[i].Menu.container.left = 0;
  798.             } else {
  799.               activeMenus[i].Menu.container.clip.left = 0;
  800.             }
  801.         } else if (activeMenus[i].style) {
  802.             activeMenus[i].style.visibility = "hidden";
  803.         }
  804.     }
  805.     document.onmousemove = mouseTracker;
  806.     window.activeMenus.length = 0;
  807. }
  808. function mouseTracker(e) 
  809. {
  810.     e = e || window.Event || window.event;
  811.     window.pageX = e.pageX || e.clientX;
  812.     window.pageY = e.pageY || e.clientY;
  813. }
  814. function setMouseTracker() 
  815. {
  816.     if (document.captureEvents) {
  817.         document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
  818.     }
  819.     document.onmousemove = this.mouseTracker;
  820.     document.onmouseup = this.hideMenu;
  821. }
  822. function setMenuTracker(menu) 
  823. {
  824.     if (!window.menuTrackers) window.menuTrackers = new Array();
  825.     menuTrackers[menuTrackers.length] = menu;
  826.     window.menuTrackerID = setInterval('menuTracker()',10);
  827. }
  828. function menuTracker() 
  829. {
  830.     for (var i=0; i < menuTrackers.length; i++) {
  831.         if (!isNaN(menuTrackers[i].xOffset) && document.layers) {
  832.             var off = parseInt((menuTrackers[i].xOffset - window.pageXOffset) / 10);
  833.             if (isNaN(off)) off = 0;
  834.             if (off != 0) {
  835.                 menuTrackers[i].container.left += -off;
  836.                 menuTrackers[i].xOffset += -off;
  837.             }
  838.         }
  839.         if (!isNaN(menuTrackers[i].yOffset) && document.layers) {
  840.             var off = parseInt((menuTrackers[i].yOffset - window.pageYOffset) / 10);
  841.             if (isNaN(off)) off = 0;
  842.             if (off != 0) {
  843.                 menuTrackers[i].container.top += -off;
  844.                 menuTrackers[i].yOffset += -off;
  845.             }
  846.         }
  847.         if (!isNaN(menuTrackers[i].xOffset) && document.body) {
  848.             var off = parseInt((menuTrackers[i].xOffset - document.body.scrollLeft) / 10);
  849.             if (isNaN(off)) off = 0;
  850.             if (off != 0) {
  851.                 menuTrackers[i].menuLayer.style.pixelLeft += -off;
  852.                 menuTrackers[i].xOffset += -off;
  853.             }
  854.         }
  855.         if (!isNaN(menuTrackers[i].yOffset) && document.body) {
  856.             var off = parseInt((menuTrackers[i].yOffset - document.body.scrollTop) / 10);
  857.             if (isNaN(off)) off = 0;
  858.             if (off != 0) {
  859.                 menuTrackers[i].menuLayer.style.pixelTop += -off;
  860.                 menuTrackers[i].yOffset += -off;
  861.             }
  862.         }
  863.     }
  864. }
  865. function onMenuItemDown(e, l) 
  866. {
  867.     l = l || window.ActiveMenuItem || this;
  868.     if (!l.Menu) {
  869.     } else {
  870.         if (document.layers) {
  871.             mDrag.dragLayer = l.Menu.container;
  872.             mDrag.startMenuDrag(e);
  873.         } else {
  874.             mDrag.dragLayer = l.Menu.container.style;
  875.             mDrag.startMenuDrag(e);
  876.             window.event.cancelBubble=true;
  877.         }
  878.     }
  879. }
  880. function startMenuDrag(e) 
  881. {
  882.     if (document.layers) {
  883.         if (e.which > 1) {
  884.             if (window.ActiveMenu) ActiveMenu.Menu.container.visibility = "hidden";
  885.             window.ActiveMenu = null;
  886.             return true;
  887.         }
  888.         document.captureEvents(Event.MOUSEMOVE);
  889.         var x = e.pageX;
  890.         var y = e.pageY;
  891.     } else {
  892.         var x = window.event.clientX;
  893.         var y = window.event.clientY;
  894.     }
  895.     mDrag.offX = x;
  896.     mDrag.offY = y;
  897.     mDrag.oldX = x;
  898.     mDrag.oldY = y;
  899.     if (!ActiveMenu.Menu.disableDrag) document.onmousemove = mDrag.doMenuDrag;
  900.     return false;
  901. }
  902. function doMenuDrag(e) 
  903. {
  904.     if (document.layers) {
  905.         mDrag.dragLayer.moveBy(e.pageX-mDrag.offX,e.pageY-mDrag.offY);
  906.         mDrag.offX = e.pageX;
  907.         mDrag.offY = e.pageY;
  908.     } else if (document.all) {
  909.         mDrag.dragLayer.pixelLeft = window.event.offsetX;
  910.         mDrag.dragLayer.pixelTop  = window.event.offsetY;
  911.         return false; //for IE
  912.     } else if (document.getElementById) {
  913.         mDrag.dragLayer.left = window.event.offsetX;
  914.         mDrag.dragLayer.top  = window.event.offsetY;
  915.         return false; //for ns6
  916.     }
  917. }