Menu.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. function Menu_OverItem (menuId, itemId, parentId) {
  2. var menu = getMenu (menuId);
  3. var subm = getSubMenu (menuId, itemId);
  4. if (subm.parentMenu == null && parentId != null)
  5. subm.parentMenu = getSubMenu (menuId, parentId);
  6. if (subm.firstShown != true) {
  7. var item = getMenuItem (menuId, itemId);
  8. var offx; var offy;
  9. if (subm.parentMenu != null) {
  10. offx = parseInt (subm.parentMenu.style.left);
  11. offy = parseInt (subm.parentMenu.style.top);
  12. } else {
  13. offx = offy = 0;
  14. }
  15. if (menu.dho != null) offx += menu.dho;
  16. if (menu.dvo != null) offy += menu.dvo;
  17. if (menu.vertical || parentId != null)
  18. Menu_Reposition (item, subm, item.offsetWidth + offx, offy);
  19. else
  20. Menu_Reposition (item, subm, offx, item.offsetHeight + offy);
  21. subm.firstShown = true;
  22. }
  23. Menu_SetActive (menu, subm);
  24. Menu_ShowMenu (subm);
  25. if (parentId != null && menu.dynamicHover != null)
  26. Menu_HilighItem (menuId, itemId, menu.dynamicHover);
  27. else if (parentId == null && menu.staticHover != null)
  28. Menu_HilighItem (menuId, itemId, menu.staticHover);
  29. }
  30. function Menu_OverDynamicLeafItem (menuId, itemId, parentId) {
  31. var menu = getMenu (menuId);
  32. var subm = getSubMenu (menuId, parentId);
  33. Menu_SetActive (menu, subm);
  34. Menu_ShowMenu (subm);
  35. if (menu.dynamicHover != null)
  36. Menu_HilighItem (menuId, itemId, menu.dynamicHover);
  37. }
  38. function Menu_OverStaticLeafItem (menuId, itemId) {
  39. var menu = getMenu (menuId);
  40. Menu_SetActive (menu, null);
  41. if (menu.dynamicHover != null)
  42. Menu_HilighItem (menuId, itemId, menu.staticHover);
  43. }
  44. function Menu_HilighItem (menuId, itemId, hoverClass)
  45. {
  46. var item = getMenuItem (menuId, itemId);
  47. if (item.normalClass == null)
  48. item.normalClass = item.className;
  49. item.className = item.normalClass + " " + hoverClass;
  50. }
  51. function Menu_OutItem (menuId, itemId, parentId) {
  52. var menu = getMenu (menuId);
  53. var subm = getSubMenu (menuId, itemId);
  54. if (subm == null && parentId != null)
  55. subm = getSubMenu (menuId, parentId);
  56. if (subm != null)
  57. Menu_HideMenu (menu, subm, menu.disappearAfter);
  58. var item = getMenuItem (menuId, itemId);
  59. if (item != null && item.normalClass != null)
  60. item.className = item.normalClass;
  61. }
  62. function Menu_SetActive (menu, subm) {
  63. if (menu.active != null && subm != menu.active)
  64. Menu_HideMenu (menu, menu.active, 0);
  65. menu.active = subm;
  66. }
  67. function Menu_HideMenu (menu, subm, time)
  68. {
  69. if (subm.timer != null) clearTimeout (subm.timer);
  70. if (time > 0) subm.timer = setTimeout ("Menu_HideMenuCallback ('" + subm.id + "')", time);
  71. else Menu_HideMenuCallback (subm.id);
  72. if (subm.parentMenu != null)
  73. Menu_HideMenu (menu, subm.parentMenu, time);
  74. }
  75. function Menu_HideMenuCallback (spanId)
  76. {
  77. var subm = document.getElementById (spanId);
  78. // subm.style.display = "none";
  79. subm.style.visibility = "hidden";
  80. }
  81. function Menu_ShowMenu (subm)
  82. {
  83. if (subm.timer != null)
  84. clearTimeout (subm.timer);
  85. // subm.style.display = "block";
  86. subm.style.visibility = "visible";
  87. if (subm.parentMenu != null)
  88. Menu_ShowMenu (subm.parentMenu);
  89. }
  90. function Menu_Reposition (it, elem, offx, offy)
  91. {
  92. var le = 0;
  93. var to = 0;
  94. while (it != null && it.style.position != "absolute") {
  95. le += it.offsetLeft;
  96. to += it.offsetTop;
  97. it = it.offsetParent;
  98. }
  99. elem.style.left = (le + offx) + "px";
  100. elem.style.top = (to + offy) + "px";
  101. }
  102. function getMenu (menuId) { return eval (menuId + "_data"); }
  103. function getSubMenu (menuId, itemId) { return document.getElementById (menuId + "_" + itemId + "s"); }
  104. function getMenuItem (menuId, itemId) { return document.getElementById (menuId + "_" + itemId + "i"); }