home *** CD-ROM | disk | FTP | other *** search
/ com!online 2002 May / comcd0502.iso / homepage / special / javascript / 02_01 / java / Menue / yx_menu-v6.js < prev    next >
Encoding:
JavaScript  |  2000-04-11  |  19.6 KB  |  605 lines

  1. // +------------------------------------------------------------+
  2. // | yx_menu                         Version 6                  |
  3. // | Copyright 1999  Xin Yang        yangxin@iname.com          |
  4. // | Created 11/03/1999              Last Modified 04/11/2000   |
  5. // | Web Site:                       http://yx.webprovider.com  |
  6. // +------------------------------------------------------------+
  7. // | Copyright 1999,2000  Xin Yang   All Rights Reserved.       |
  8. // +------------------------------------------------------------+
  9. // | For personal purpose, send me your URL and put a link back |
  10. // | to my web site, then you can use this script free.         |
  11. // |                                                            |
  12. // | For commercial purpose, obtain quotation for referencing,  |
  13. // | using, hosting, selling or distributing this script.       |
  14. // |                                                            |
  15. // | In all cases copyright must remain intact.                 |
  16. // +------------------------------------------------------------+
  17.  
  18. // Script begins
  19.  
  20. var isIE4 = false;
  21. var isNN4 = false;
  22.  
  23. var flagMenu = "M";
  24. var flagLink = "L";
  25. var flagCommand = "C";
  26. var flagSeparator = "S";
  27.  
  28. var titleWidth = 9; // title character width
  29. var titleHeight = 17; // title character height
  30. var charWidth = 7; // item character width
  31. var charHeight = 15; // item character height
  32.  
  33. var titleNormal = "#cccccc"; // menu title pad color
  34. var titleHighlighted = "#ffffff"; // menu title pad highlighted color
  35. var itemNormal = "#cccccc"; // menu item color
  36. var itemHighlighted = "#ffffff"; // menu highlighted item color
  37. var upperLine = "#999999"; // separator upper line color
  38. var lowerLine = "#ffffff"; // separator lower line color
  39.  
  40. var borderSize = 1;
  41. var marginSize = 4;
  42. var marginString = "  ";
  43. var subMenuFlagSize = 4;
  44. var menuHolder = "menuHolder";
  45.  
  46. var menuOffsetX = new Array();
  47. var menuOffsetY = borderSize * 2 + titleHeight;
  48.  
  49. var menuShown = -1;
  50. var itemOn = false;
  51. var nnWidth = 0, nnHeight = 0;
  52.  
  53. var menuItemCount = -1;
  54. var menuItem = new Array();
  55. var menuFolderCount = -1;
  56. var menuFolder = new Array();
  57. var menuFolderSwitch = new Array();
  58. var menuWidth = new Array();
  59. var itemLayer = new Array();
  60. var menuLayer = new Array();
  61. var menuDone = new Array();
  62.  
  63. function launchCommand(commandString) {
  64.   eval(commandString);
  65. }
  66.  
  67. function launchPage(pageURL) {
  68.   document.location.assign(pageURL);
  69. }
  70.  
  71. function clickMenu(menuNum,itemIndex) {
  72.   var menuIndex = menuItem[menuNum][itemIndex].myFolder;
  73.   var folderIndex = menuItem[menuNum][itemIndex].folder;
  74.   var itemX = menuItem[menuNum][itemIndex].x;
  75.   var itemY = menuItem[menuNum][itemIndex].y;
  76.  
  77.   if (menuItem[menuNum][itemIndex].type == flagMenu) {
  78.     if (menuFolderSwitch[menuNum][folderIndex])
  79.       hideMenu(menuNum,folderIndex)
  80.     else
  81.       showMenu(menuNum,folderIndex,itemX + menuWidth[menuNum][menuIndex] * charWidth + subMenuFlagSize,itemY);
  82.   }
  83.   else if (menuItem[menuNum][itemIndex].type == flagLink) {
  84.     closeMenu(menuNum);
  85.     launchPage(menuItem[menuNum][itemIndex].url);
  86.   }
  87.   else if (menuItem[menuNum][itemIndex].type == flagCommand) {
  88.     closeMenu(menuNum);
  89.     launchCommand(menuItem[menuNum][itemIndex].command);
  90.   }
  91. }
  92.  
  93. function titleOver() {
  94.   itemOn = true;
  95.  
  96.   if (isIE4)
  97.     this.style.backgroundColor = titleHighlighted
  98.   else
  99.     this.document.bgColor = titleHighlighted;
  100. }
  101.  
  102. function titleOut() {
  103.   itemOn = false;
  104.  
  105.   if (isIE4)
  106.     this.style.backgroundColor = titleNormal
  107.   else
  108.     this.document.bgColor = titleNormal;
  109. }
  110.  
  111. function mouseOver() {
  112.   var menuNum = this.menuNum;
  113.   var itemIndex = this.itemIndex;
  114.   var menuIndex = menuItem[menuNum][itemIndex].myFolder;
  115.   var menuLength = menuFolder[menuNum][menuIndex].length;
  116.   var folderIndex = menuItem[menuNum][itemIndex].folder;
  117.   var itemX = menuItem[menuNum][itemIndex].x;
  118.   var itemY = menuItem[menuNum][itemIndex].y;
  119.   var thisFolder = 0;
  120.   var thisItem = 0;
  121.  
  122.   itemOn = true;
  123.  
  124.   if (menuItem[menuNum][itemIndex].type != flagSeparator) {
  125.     if (isIE4) {
  126.       this.style.backgroundColor = itemHighlighted;
  127.     }
  128.     else if (isNN4) {
  129.       this.document.bgColor = itemHighlighted;
  130.     }
  131.   }
  132.  
  133.   for (var i = 0; i < menuLength; i++) {
  134.     thisItem = menuFolder[menuNum][menuIndex][i];
  135.  
  136.     if (thisItem != itemIndex)
  137.       if (menuItem[menuNum][thisItem].type == flagMenu) {
  138.         thisFolder = menuItem[menuNum][thisItem].folder;
  139.  
  140.         if (menuFolderSwitch[menuNum][thisFolder])
  141.           hideMenu(menuNum,thisFolder);
  142.       }
  143.   }
  144.  
  145.   if (menuItem[menuNum][itemIndex].type == flagMenu)
  146.     if (!menuFolderSwitch[menuNum][folderIndex])
  147.       showMenu(menuNum,folderIndex,itemX + menuWidth[menuNum][menuIndex] * charWidth + subMenuFlagSize,itemY);
  148.  
  149.   window.status = menuItem[menuNum][itemIndex].description;
  150.   return true;
  151. }
  152.  
  153. function mouseOut() {
  154.   itemOn = false;
  155.  
  156.   if (isIE4)
  157.     this.style.backgroundColor = itemNormal
  158.   else if (isNN4)
  159.     this.document.bgColor = itemNormal;
  160.  
  161.   window.status = "";
  162.   return true;
  163. }
  164.  
  165. function menuItemUnit() {
  166.   this.type = "";
  167.   this.name = "";
  168.   this.description = "";
  169.   this.url = "";
  170.   this.command = "";
  171.   this.menu = "";
  172.   this.folder = -1;
  173.   this.myFolder = -1;
  174.   this.x = -1;
  175.   this.y = -1;
  176. }
  177.  
  178. function readMenu(menuNum,menuName) {
  179.   var menu = eval(menuName);
  180.   var menuLength = menu.length
  181.   var thisFolder = ++menuFolderCount;
  182.  
  183.   menuFolder[menuNum][thisFolder] = new Array();
  184.   menuFolderSwitch[menuNum][thisFolder] = false;
  185.   menuWidth[menuNum][thisFolder] = 0;
  186.   menuLayer[menuNum][thisFolder] = false;
  187.   menuDone[menuNum][thisFolder] = false;
  188.  
  189.   for (var i = 0; i < menuLength; i++) {
  190.     menuFolder[menuNum][thisFolder][i] = ++menuItemCount;
  191.     itemLayer[menuNum][menuItemCount] = false;
  192.  
  193.     menuItem[menuNum][menuItemCount] = new menuItemUnit();
  194.     menuItem[menuNum][menuItemCount].myFolder = thisFolder;
  195.     menuItem[menuNum][menuItemCount].type = menu[i][0];
  196.     menuItem[menuNum][menuItemCount].name = menu[i][1];
  197.     menuItem[menuNum][menuItemCount].description = menu[i][2];
  198.  
  199.     if (menuWidth[menuNum][thisFolder] < (menuItem[menuNum][menuItemCount].name.length + marginSize))
  200.       menuWidth[menuNum][thisFolder] = menuItem[menuNum][menuItemCount].name.length + marginSize;
  201.  
  202.     if (menuItem[menuNum][menuItemCount].type == flagMenu) {
  203.       menuItem[menuNum][menuItemCount].menu = menu[i][3];
  204.       menuItem[menuNum][menuItemCount].folder = menuFolderCount + 1;
  205.       readMenu(menuNum,menuItem[menuNum][menuItemCount].menu);
  206.     }
  207.     else if (menuItem[menuNum][menuItemCount].type == flagLink) {
  208.       menuItem[menuNum][menuItemCount].url = menu[i][3];
  209.     }
  210.     else if (menuItem[menuNum][menuItemCount].type == flagCommand) {
  211.       menuItem[menuNum][menuItemCount].command = menu[i][3];
  212.     }
  213.     else if (menuItem[menuNum][menuItemCount].type != flagSeparator) {
  214.       alert("Error found in " + menuName);
  215.     }
  216.   }
  217. }
  218.  
  219. function getItem(menuNum,itemIndex,itemDimX,itemDimY,menuIndex) {
  220.   var thisLayer = null;
  221.   var subMenuFlag = (menuItem[menuNum][itemIndex].type == flagMenu)?"subMenu.gif":"onePixel.gif";
  222.   var singleQuote = "'";
  223.   var itemID = "m" + menuNum + "i" + itemIndex + "";
  224.   var layerString = '<div id="' + itemID + '" style="position:absolute; width:' + itemDimX + '; background-color:' + itemNormal + '; visibility:hidden;"></div>';
  225.   var htmlString = (menuItem[menuNum][itemIndex].type == flagSeparator)?('<table width=' + itemDimX +' height=2 cellpadding=0 cellspacing=0 border=0><tr align=left valign=bottom><td bgcolor=' + upperLine + '><img src="onePixel.gif" width=1 height=1 border=0></td></tr><tr align=left valign=top><td bgcolor=' + lowerLine + '><img src="onePixel.gif" width=1 height=1 border=0></td></tr></table>'):('<table width=' + itemDimX +' height=' + itemDimY + ' cellpadding=0 cellspacing=0 border=0><tr align=left valign=middle><td nowrap><span id="menuText"><a class="menu" href="javascript:clickMenu(' + menuNum + ',' + itemIndex + ')" onMouseOver="window.status=' + singleQuote + menuItem[menuNum][itemIndex].description + singleQuote + ';return true;">' + marginString + menuItem[menuNum][itemIndex].name + marginString + '</a></span></td><td><img src="' + subMenuFlag + '" width=4 height=7 border=0 align=right></td></tr></table>');
  226.  
  227.   if (!itemLayer[menuNum][itemIndex]) {
  228.     itemLayer[menuNum][itemIndex] = true;
  229.  
  230.     if (isIE4) {
  231.       document.all[menuHolder].insertAdjacentHTML("BeforeEnd",layerString);
  232.       thisLayer = document.all[itemID];
  233.  
  234.       thisLayer.innerHTML = htmlString;
  235.       thisLayer.style.zIndex = menuIndex * 2 + 1;
  236.  
  237.       thisLayer.onmouseover = mouseOver;
  238.       if (menuItem[menuNum][itemIndex].type != flagSeparator)
  239.         thisLayer.onmouseout = mouseOut;
  240.     }
  241.     else if (isNN4) {
  242.       document.layers[itemID] = new Layer(itemDimX,document.layers[menuHolder]);
  243.       thisLayer = document.layers[itemID];
  244.  
  245.       thisLayer.visibility = "hidden";
  246.       thisLayer.document.open();
  247.       thisLayer.document.writeln(htmlString);
  248.       thisLayer.document.close();
  249.       thisLayer.document.bgColor = itemNormal;
  250.       thisLayer.zIndex = menuIndex * 2 + 1;
  251.  
  252.       thisLayer.onmouseover = mouseOver;
  253.       if (menuItem[menuNum][itemIndex].type != flagSeparator)
  254.         thisLayer.onmouseout = mouseOut;
  255.     }
  256.  
  257.     thisLayer.itemIndex = itemIndex;
  258.     thisLayer.menuNum = menuNum;
  259.   }
  260.  
  261.   return itemID;
  262. }
  263.  
  264. function getMenu(menuNum,menuIndex,menuDimX,menuDimY) {
  265.   var menuID = "m" + menuNum + "f" + menuIndex + "";
  266.   var menuPadX = 0;
  267.   var menuPadY = 0;
  268.   var layerString = "";
  269.   var htmlString = "";
  270.  
  271.   if (!menuLayer[menuNum][menuIndex]) {
  272.     menuLayer[menuNum][menuIndex] = true;
  273.  
  274.     menuPadX = menuDimX + borderSize * 2;
  275.     menuPadY = menuDimY + borderSize * 2;
  276.     layerString = '<div id="' + menuID + '" style="position:absolute; width:' + menuPadX + '; visibility:hidden;"></div>';
  277.     htmlString = '<table width=' + menuPadX +' height=' + menuPadY + ' cellpadding=0 cellspacing=0 border=' + borderSize + '><tr align=left valign=middle><td></td></tr></table>';
  278.  
  279.     if (isIE4) {
  280.       document.all[menuHolder].insertAdjacentHTML("BeforeEnd",layerString);
  281.  
  282.       document.all[menuID].innerHTML = htmlString;
  283.       document.all[menuID].style.zIndex = menuIndex * 2;
  284.     }
  285.     else if (isNN4) {
  286.       document.layers[menuID] = new Layer(menuPadX,document.layers[menuHolder]);
  287.  
  288.       document.layers[menuID].visibility = "hidden";
  289.       document.layers[menuID].zIndex = menuIndex * 2;
  290.       document.layers[menuID].document.open();
  291.       document.layers[menuID].document.writeln(htmlString);
  292.       document.layers[menuID].document.close();
  293.     }
  294.   }
  295.  
  296.   return menuID;
  297. }
  298.  
  299. function showTitle(menuArray,menuMaxX,menuMaxY) {
  300.   var menuCount = menuArray.length;
  301.   var menuTitleID = "menuTitle";
  302.   var menuTitleBGID = "menuTitleBG";
  303.   var menuTitleX = 0;
  304.   var menuTitleY = titleHeight;
  305.   var menuTitleBGX = 0;
  306.   var menuTitleBGY = menuTitleY + borderSize * 2;
  307.   var itemLength = 0;
  308.   var titleLength = 0;
  309.   var divStringFG = "";
  310.   var divStringBG = "";
  311.   var htmlStringFG = "";
  312.   var htmlStringBG = "";
  313.   var thisLayer = null;
  314.  
  315.   htmlStringFG = ' cellpadding=0 cellspacing=0 border=0><tr align=center valign=millde>';
  316.   for (var i = 0; i < menuCount; i++) {
  317.     itemLength = 2 + menuArray[i][0].length;
  318.     menuOffsetX[i] = titleLength * titleWidth;
  319.     htmlStringFG += ('<td width=' + (itemLength * titleWidth) + ' height=' + menuTitleY + '><nobr><span id="titleText"> <a class="menuTitle" href="javascript:openMenu(' + i + ')" onMouseOver="overMenu(' + i + '); window.status=window.defaultStatus; return true;">' + menuArray[i][0] + '</a> </span></nobr></td>');
  320.     titleLength += itemLength;
  321.   }
  322.   menuTitleX = titleLength * titleWidth;
  323.   menuTitleBGX = menuTitleX + borderSize * 2;
  324.  
  325.   htmlStringFG = '<table width=' + menuTitleX + ' height=' + menuTitleY + htmlStringFG + '</tr></table>';
  326.  
  327.   divStringFG = '<div id="' + menuTitleID + '" style="position:absolute; width:' + menuTitleX + '; background-color:' + titleNormal + '; visibility:hidden; z-index:2;"></div>';
  328.   divStringBG = '<div id="' + menuTitleBGID + '" style="position:absolute; width:' + menuTitleBGX + '; visibility:hidden; z-index:1;"></div>';
  329.  
  330.   htmlStringBG = '<table width=' + menuTitleBGX +' height=' + menuTitleBGY + ' cellpadding=0 cellspacing=0 border=' + borderSize + '><tr><td></td></tr></table>';
  331.  
  332.   if (isIE4) {
  333.     document.all[menuHolder].insertAdjacentHTML("BeforeEnd",divStringBG);
  334.     document.all[menuTitleBGID].innerHTML = htmlStringBG;
  335.  
  336.     document.all[menuHolder].insertAdjacentHTML("BeforeEnd",divStringFG);
  337.     thisLayer = document.all[menuTitleID];
  338.     thisLayer.innerHTML = htmlStringFG;
  339.   }
  340.   else if (isNN4) {
  341.     menuMaxX += menuTitleBGX;
  342.     menuMaxY += menuTitleBGY;
  343.     setMenuSize(menuMaxX,menuMaxY);
  344.  
  345.     document.layers[menuTitleBGID] = new Layer(menuTitleBGX,document.layers[menuHolder]);
  346.     thisLayer = document.layers[menuTitleBGID];
  347.  
  348.     thisLayer.visibility = "hidden";
  349.     thisLayer.document.open();
  350.     thisLayer.document.writeln(htmlStringBG);
  351.     thisLayer.document.close();
  352.     thisLayer.zIndex = 1;
  353.  
  354.     document.layers[menuTitleID] = new Layer(menuTitleX,document.layers[menuHolder]);
  355.     thisLayer = document.layers[menuTitleID];
  356.  
  357.     thisLayer.visibility = "hidden";
  358.     thisLayer.document.open();
  359.     thisLayer.document.writeln(htmlStringFG);
  360.     thisLayer.document.close();
  361.     thisLayer.document.bgColor = titleNormal;
  362.     thisLayer.zIndex = 2;
  363.   }
  364.  
  365.   thisLayer.onmouseover = titleOver;
  366.   thisLayer.onmouseout = titleOut;
  367.  
  368.   moveLayerTo(menuTitleBGID,0,0);
  369.   moveLayerTo(menuTitleID,borderSize,borderSize);
  370.   showLayer(menuTitleBGID);
  371.   showLayer(menuTitleID);
  372. }
  373.  
  374. function showLayer(layerID) {
  375.   if (isIE4)
  376.     document.all[layerID].style.visibility = "visible"
  377.   else if (isNN4)
  378.     document.layers[layerID].visibility = "show";
  379. }
  380.  
  381. function hideLayer(layerID) {
  382.   if (isIE4)
  383.     document.all[layerID].style.visibility = "hidden"
  384.   else if (isNN4)
  385.     document.layers[layerID].visibility = "hidden";
  386. }
  387.  
  388. function moveLayerTo(layerID,x,y) {
  389.   if (isIE4) {
  390.     document.all[layerID].style.pixelLeft = x;
  391.     document.all[layerID].style.pixelTop = y;
  392.   }
  393.   else if (isNN4) {
  394.     document.layers[layerID].left = x;
  395.     document.layers[layerID].top = y;
  396.   }
  397. }
  398.  
  399. function hideMenu(menuNum,menuIndex) {
  400.   var menuLength = menuFolder[menuNum][menuIndex].length;
  401.   var menuID = getMenu(menuNum,menuIndex,0,0);
  402.   var itemID = "";
  403.   var itemIndex = 0;
  404.  
  405.   for (var i = 0; i < menuLength; i++) {
  406.     itemIndex = menuFolder[menuNum][menuIndex][i];
  407.  
  408.     if (menuItem[menuNum][itemIndex].type == flagMenu)
  409.       if (menuFolderSwitch[menuNum][menuItem[menuNum][itemIndex].folder])
  410.         hideMenu(menuNum,menuItem[menuNum][itemIndex].folder);
  411.  
  412.     itemID = getItem(menuNum,itemIndex,0,0,0);
  413.     hideLayer(itemID);
  414.   }
  415.  
  416.   hideLayer(menuID);
  417.  
  418.   menuFolderSwitch[menuNum][menuIndex] = false;
  419. }
  420.  
  421. function showMenu(menuNum,menuIndex,menuX,menuY) {
  422.   var itemDimY = menuY;
  423.   var menuLength = menuFolder[menuNum][menuIndex].length;
  424.   var menuDimX = menuWidth[menuNum][menuIndex] * charWidth + subMenuFlagSize;
  425.   var menuID = "";
  426.   var itemID = "";
  427.   var itemIndex = 0;
  428.  
  429.   if (menuShown != -1 && menuShown != menuNum)
  430.     hideMenu(menuShown,0);
  431.  
  432.   menuShown = menuNum;
  433.  
  434.   if (!menuDone[menuNum][menuIndex]) {
  435.     for (var i = 0; i < menuLength; i++) {
  436.       itemIndex = menuFolder[menuNum][menuIndex][i];
  437.  
  438.       menuItem[menuNum][itemIndex].x = menuX;
  439.       menuItem[menuNum][itemIndex].y = itemDimY;
  440.       itemDimY +=  (menuItem[menuNum][itemIndex].type != flagSeparator)?charHeight:2;
  441.  
  442.       itemID = getItem(menuNum,itemIndex,menuDimX,charHeight,menuIndex);
  443.  
  444.       moveLayerTo(itemID,menuItem[menuNum][itemIndex].x,menuItem[menuNum][itemIndex].y);
  445.     }
  446.  
  447.     menuID = getMenu(menuNum,menuIndex,menuDimX,itemDimY-menuY);
  448.     moveLayerTo(menuID,menuX-borderSize,menuY-borderSize);
  449.  
  450.     menuDone[menuNum][menuIndex] = true;
  451.   }
  452.  
  453.   for (var i = 0; i < menuLength; i++)
  454.     showLayer(getItem(menuNum,menuFolder[menuNum][menuIndex][i],0,0,0));
  455.  
  456.   showLayer(getMenu(menuNum,menuIndex,0,0));
  457.  
  458.   menuFolderSwitch[menuNum][menuIndex] = true;
  459. }
  460.  
  461. function getMenuSizeX(menuNum,menuIndex) {
  462.   var menuLength = menuFolder[menuNum][menuIndex].length;
  463.   var itemIndex = 0;
  464.   var thisMenuDimX = menuWidth[menuNum][menuIndex] * charWidth + subMenuFlagSize;
  465.   var menuDimX = thisMenuDimX;
  466.   var subMenuDimX = 0;
  467.  
  468.   for (var i = 0; i < menuLength; i++) {
  469.     itemIndex = menuFolder[menuNum][menuIndex][i];
  470.  
  471.     if (menuItem[menuNum][itemIndex].type == flagMenu) {
  472.       subMenuDimX = getMenuSizeX(menuNum,menuItem[menuNum][itemIndex].folder);
  473.  
  474.       if (menuDimX < (thisMenuDimX + subMenuDimX))
  475.         menuDimX = thisMenuDimX + subMenuDimX;
  476.     }
  477.   }
  478.  
  479.   return menuDimX;
  480. }
  481.  
  482. function getMenuSizeY(menuNum,menuIndex) {
  483.   var menuLength = menuFolder[menuNum][menuIndex].length;
  484.   var itemIndex = 0;
  485.   var menuDimY = 0;
  486.   var subMenuDimY = 0;
  487.   var maxSubMenuDimY = 0;
  488.  
  489.   for (var i = 0; i < menuLength; i++) {
  490.     itemIndex = menuFolder[menuNum][menuIndex][i];
  491.  
  492.     if (menuItem[menuNum][itemIndex].type == flagMenu) {
  493.       subMenuDimY = getMenuSizeY(menuNum,menuItem[menuNum][itemIndex].folder);
  494.  
  495.       if (maxSubMenuDimY < (menuDimY + subMenuDimY))
  496.         maxSubMenuDimY = menuDimY + subMenuDimY;
  497.  
  498.       menuDimY += charHeight;
  499.     }
  500.     else if (menuItem[menuNum][itemIndex].type == flagSeparator)
  501.       menuDimY += 2
  502.     else
  503.       menuDimY += charHeight;
  504.   }
  505.  
  506.   if (menuDimY < maxSubMenuDimY)
  507.     return maxSubMenuDimY
  508.   else
  509.     return menuDimY;
  510. }
  511.  
  512. function setMenuSize(menuDimX,menuDimY) {
  513.   document.layers[menuHolder].clip.width=menuDimX;
  514.   document.layers[menuHolder].clip.height=menuDimY;
  515. }
  516.  
  517. function buildMenu(menuArrayName) {
  518.   isIE4 = document.all;
  519.   isNN4 = document.layers;
  520.  
  521.   var menuArray = eval(menuArrayName);
  522.   var menuCount = menuArray.length;
  523.   var menuSizeX = 0;
  524.   var menuSizeY = 0;
  525.   var menuMaxX = 0;
  526.   var menuMaxY = 0;
  527.  
  528.   if (isIE4 || isNN4) {
  529.     for (var i = 0; i < menuCount; i++) {
  530.       menuItemCount = -1;
  531.       menuFolderCount = -1;
  532.  
  533.       menuItem[i] = new Array();
  534.       menuFolder[i] = new Array();
  535.       menuFolderSwitch[i] = new Array();
  536.       menuWidth[i] = new Array();
  537.  
  538.       itemLayer[i] = new Array();
  539.       menuLayer[i] = new Array();
  540.       menuDone[i] = new Array();
  541.  
  542.       readMenu(i,menuArray[i][1]);
  543.  
  544.       if (isNN4) {
  545.         menuSizeX = getMenuSizeX(i,0) + borderSize * 2;
  546.         menuSizeY = getMenuSizeY(i,0) + borderSize * 2;
  547.  
  548.         if (menuMaxX < menuSizeX)
  549.           menuMaxX = menuSizeX;
  550.         if (menuMaxY < menuSizeY)
  551.           menuMaxY = menuSizeY;
  552.       }
  553.     }
  554.  
  555.     if (isNN4) {
  556.       nnWidth = window.innerWidth;
  557.       nnHeight = window.innerHeight;
  558.       window.onResize = reloadMenu;
  559.     }
  560.  
  561.     showTitle(menuArray,menuMaxX,menuMaxY);
  562.     captureClick();
  563.   }
  564. }
  565.  
  566. function switchMenu() {
  567.   if (!itemOn)
  568.     if (menuShown != -1)
  569.       closeMenu(menuShown);
  570.  
  571.   return true;
  572. }
  573.  
  574. function captureClick() {
  575.   if (isIE4)
  576.     document.onclick = switchMenu;
  577.   else {
  578.     document.onClick = switchMenu;
  579.     document.captureEvents(Event.CLICK);
  580.   }
  581. }
  582.  
  583. function reloadMenu() {
  584.   if (nnWidth != window.innerWidth || nnHeight != window.innerHeight)
  585.     document.location.reload();
  586. }
  587.  
  588. function overMenu(menuNum) {
  589.   if (menuShown != -1 && menuShown != menuNum)
  590.     openMenu(menuNum);
  591. }
  592.  
  593. function openMenu(menuNum) {
  594.   if (menuShown == menuNum)
  595.     closeMenu(menuNum)
  596.   else
  597.     showMenu(menuNum,0,borderSize + menuOffsetX[menuNum],borderSize + menuOffsetY);
  598. }
  599.  
  600. function closeMenu(menuNum) {
  601.   menuShown = -1;
  602.   hideMenu(menuNum,0);
  603. }
  604.  
  605. // Script ends