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