home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2001 November / MICD2001_11_NR1.iso / Www / CentrumProg / menu.js < prev    next >
Text File  |  1999-08-16  |  7KB  |  244 lines

  1. if (document.all)    {n=0;ie=1;fShow="visible";fHide="hidden";}
  2. if (document.layers) {n=1;ie=0;fShow="show";   fHide="hide";}
  3.  
  4. window.onerror=new Function("return true")
  5. ////////////////////////////////////////////////////////////////////////////
  6. // Function Menu()                                                        //
  7. ////////////////////////////////////////////////////////////////////////////
  8. rightX = 0;
  9. function Menu()
  10. {
  11.     this.bgColor     = "#008080";
  12.     if (ie) this.menuFont = "bold xx-small Verdana";
  13.     if (n)  this.menuFont = "bold x-small Verdana";
  14. //    this.fontColor   = "white";
  15.  
  16.     this.addItem    = addItem;
  17.     this.addSubItem = addSubItem;
  18.     this.showMenu   = showMenu;
  19.     this.mainPaneBorder = 1;
  20.     this.subMenuPaneBorder = 1;
  21.  
  22.     this.subMenuPaneWidth = 150;
  23.  
  24.     lastMenu = null;
  25.     
  26.     rightY = 0;
  27.     leftY = 0;
  28.     leftX = 0;
  29.  
  30.     HTMLstr = "";
  31.     HTMLstr += "<!-- MENU PANE DECLARATION BEGINS -->\n";
  32.     HTMLstr += "\n";
  33.     if (ie) HTMLstr += "<div id='MainTable' style='position:relative'>\n";
  34. //    if (n)  HTMLstr += "<layer name='MainTable'>\n";
  35.     HTMLstr += "<table width='100%' bgcolor='"+this.bgColor+"' border='"+this.mainPaneBorder+"'>\n";
  36.     HTMLstr += "<tr>";
  37.     if (n) HTMLstr += "<td> ";
  38.     HTMLstr += "<!-- MAIN MENU STARTS -->\n";
  39.     HTMLstr += "<!-- MAIN_MENU -->\n";
  40.     HTMLstr += "<!-- MAIN MENU ENDS -->\n";
  41.     if (n) HTMLstr += "</td>";
  42.     HTMLstr += "</tr>\n";
  43.     HTMLstr += "</table>\n";
  44.     HTMLstr += "\n";
  45.     HTMLstr += "<!-- SUB MENU STARTS -->\n";
  46.     HTMLstr += "<!-- SUB_MENU -->\n";
  47.     HTMLstr += "<!-- SUB MENU ENDS -->\n";
  48.     HTMLstr += "\n";
  49.     if (ie) HTMLstr+= "</div>\n";
  50. //    if (n)  HTMLstr+= "</layer>\n";
  51.     HTMLstr += "<!-- MENU PANE DECALARATION ENDS -->\n";
  52. }
  53.  
  54. function addItem(idItem, text, hint, location, altLocation)
  55. {
  56.     var Lookup = "<!-- ITEM "+idItem+" -->";
  57.     if (HTMLstr.indexOf(Lookup) != -1)
  58.     {
  59.         alert(idParent + " already exist");
  60.         return;
  61.     }
  62.     var MENUitem = "";
  63.     MENUitem += "\n<!-- ITEM "+idItem+" -->\n";
  64.     if (n)
  65.     {
  66.         MENUitem += "<ilayer name="+idItem+">";
  67.         MENUitem += "<a href='.' class=clsMenuItemNS onmouseover=\"displaySubMenu('"+idItem+"')\" onclick=\"return false;\">";
  68.         MENUitem += "| ";
  69.         MENUitem += text;
  70.         MENUitem += "</a>";
  71.         MENUitem += "</ilayer>";
  72.     }
  73.     if (ie)
  74.     {
  75.         MENUitem += "<td>\n";
  76.         MENUitem += "<div id='"+idItem+"' style='position:relative; font: "+this.menuFont+";'>\n";
  77.         MENUitem += "<a ";
  78.         MENUitem += "class=clsMenuItemIE ";
  79. //        MENUitem += "style='text-decoration: none; font: "+this.menuFont+"; color: "+this.fontColor+"; cursor: hand;' ";
  80.         if (hint != null)
  81.             MENUitem += "title='"+hint+"' ";
  82.         if (location != null)
  83.         {
  84.             MENUitem += "href='"+location+"' ";
  85.             MENUitem += "onmouseover=\"hideAll()\" ";
  86.         }
  87.         else
  88.         {
  89.             if (altLocation != null)
  90.                 MENUitem += "href='"+altLocation+"' ";
  91.             else
  92.                 MENUitem += "href='.' ";
  93.             MENUitem += "onmouseover=\"displaySubMenu('"+idItem+"')\" ";
  94.             MENUitem += "onclick=\"return false;\" "
  95.         }
  96.         MENUitem += ">";
  97.         MENUitem += "| \n";
  98.         MENUitem += text;
  99.         MENUitem += "</a>\n";
  100.         MENUitem += "</div>\n";
  101.         MENUitem += "</td>\n";
  102.     }
  103.     MENUitem += "<!-- END OF ITEM "+idItem+" -->\n\n";
  104.     MENUitem += "<!-- MAIN_MENU -->\n";
  105.  
  106.     HTMLstr = HTMLstr.replace("<!-- MAIN_MENU -->\n", MENUitem);
  107. }
  108.  
  109. function addSubItem(idParent, text, hint, location)
  110. {
  111.     var MENUitem = "";
  112.     Lookup = "<!-- ITEM "+idParent+" -->";
  113.     if (HTMLstr.indexOf(Lookup) == -1)
  114.     {
  115.         alert(idParent + " not found");
  116.         return;
  117.     }
  118.     Lookup = "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->";
  119.     if (HTMLstr.indexOf(Lookup) == -1)
  120.     {
  121.         if (n)
  122.         {
  123.             MENUitem += "\n";
  124.             MENUitem += "<layer id='"+idParent+"submenu' visibility=hide bgcolor='"+this.bgColor+"'>\n";
  125.             MENUitem += "<table border='"+this.subMenuPaneBorder+"' bgcolor='"+this.bgColor+"' width="+this.subMenuPaneWidth+">\n";
  126.             MENUitem += "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->\n";
  127.             MENUitem += "</table>\n";
  128.             MENUitem += "</layer>\n";
  129.             MENUitem += "\n";
  130.         }
  131.         if (ie)
  132.         {
  133.             MENUitem += "\n";
  134.             MENUitem += "<div id='"+idParent+"submenu' style='position:absolute; visibility: hidden; width: "+this.subMenuPaneWidth+"; font: "+this.menuFont+"; top: -300;'>\n";
  135.             MENUitem += "<table border='"+this.subMenuPaneBorder+"' bgcolor='"+this.bgColor+"' width="+this.subMenuPaneWidth+">\n";
  136.             MENUitem += "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->\n";
  137.             MENUitem += "</table>\n";
  138.             MENUitem += "</div>\n";
  139.             MENUitem += "\n";
  140.         }
  141.         MENUitem += "<!-- SUB_MENU -->\n";
  142.         HTMLstr = HTMLstr.replace("<!-- SUB_MENU -->\n", MENUitem);
  143.     }
  144.  
  145.     Lookup = "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->\n";
  146.     if (n)  MENUitem = "<tr><td><a class=clsMenuItemNS title='"+hint+"' href='"+location+"'>"+text+"</a><br></td></tr>\n";
  147.     if (ie) MENUitem = "<tr><td><a class=clsMenuItemIE title='"+hint+"' href='"+location+"'>"+text+"</a><br></td></tr>\n";
  148.     MENUitem += Lookup;
  149.     HTMLstr = HTMLstr.replace(Lookup, MENUitem);
  150.  
  151. }
  152.  
  153. function showMenu()
  154. {
  155.     document.writeln(HTMLstr);
  156. }
  157.  
  158. ////////////////////////////////////////////////////////////////////////////
  159. // Private declaration
  160. function displaySubMenu(idMainMenu)
  161. {
  162.     var menu;
  163.     var submenu;
  164.     if (n)
  165.     {
  166.         submenu = document.layers[idMainMenu+"submenu"];
  167.         if (lastMenu != null && lastMenu != submenu) hideAll();
  168.         submenu.left = document.layers[idMainMenu].pageX;
  169.         submenu.top  = document.layers[idMainMenu].pageY + 25;
  170.         submenu.visibility = fShow;
  171.  
  172.         leftX  = document.layers[idMainMenu+"submenu"].left;
  173.         rightX = leftX + document.layers[idMainMenu+"submenu"].clip.width;
  174.         leftY  = document.layers[idMainMenu+"submenu"].top+
  175.             document.layers[idMainMenu+"submenu"].clip.height;
  176.         rightY = leftY;
  177.     } else if (ie) {
  178.         menu = eval(idMainMenu);
  179.         submenu = eval(idMainMenu+"submenu.style");
  180.         submenu.left = calculateSumOffset(menu, 'offsetLeft');
  181. //        submenu.top  = calculateSumOffset(menu, 'offsetTop') + 30;
  182.         submenu.top  = menu.style.top+23;
  183.         submenu.visibility = fShow;
  184.         if (lastMenu != null && lastMenu != submenu) hideAll();
  185.  
  186.         leftX  = document.all[idMainMenu+"submenu"].style.posLeft;
  187.         rightX = leftX + document.all[idMainMenu+"submenu"].offsetWidth;
  188.  
  189.         leftY  = document.all[idMainMenu+"submenu"].style.posTop+
  190.             document.all[idMainMenu+"submenu"].offsetHeight;
  191.         rightY = leftY;
  192.     }
  193.     lastMenu = submenu;
  194. }
  195.  
  196. function hideAll()
  197. {
  198.     if (lastMenu != null) {lastMenu.visibility = fHide;lastMenu.left = 0;}
  199. }
  200.  
  201. function calculateSumOffset(idItem, offsetName)
  202. {
  203.     var totalOffset = 0;
  204.     var item = eval('idItem');
  205.     do
  206.     {
  207.         totalOffset += eval('item.'+offsetName);
  208.         item = eval('item.offsetParent');
  209.     } while (item != null);
  210.     return totalOffset;
  211. }
  212.  
  213. function updateIt(e)
  214. {
  215.     if (ie)
  216.     {
  217.         var x = window.event.clientX;
  218.         var y = window.event.clientY;
  219.  
  220.         if (x > rightX || x < leftX) hideAll();
  221.         else if (y > rightY) hideAll();
  222.     }
  223.     if (n)
  224.     {
  225.         var x = e.pageX;
  226.         var y = e.pageY;
  227.  
  228.         if (x > rightX || x < leftX) hideAll();
  229.         else if (y > rightY) hideAll();
  230.     }
  231. }
  232.  
  233. if (document.all)
  234. {
  235.     document.body.onclick=hideAll;
  236.     document.body.onscroll=hideAll;
  237.     document.body.onmousemove=updateIt;
  238. }
  239. if (document.layers)
  240. {
  241.     document.onmousedown=hideAll;
  242.     window.captureEvents(Event.MOUSEMOVE);
  243.     window.onmousemove=updateIt;
  244. }