2 function Menu_OverItem (menuId, itemId, parentId) {
3 var menu = getMenu (menuId);
4 var subm = getSubMenu (menuId, itemId);
5 if (subm.parentMenu == null && parentId != null)
6 subm.parentMenu = getSubMenu (menuId, parentId);
8 if (subm.firstShown != true) {
9 var item = getMenuItem (menuId, itemId);
11 if (subm.parentMenu != null) {
12 offx = parseInt (subm.parentMenu.style.left);
13 offy = parseInt (subm.parentMenu.style.top);
18 if (menu.dho != null) offx += menu.dho;
19 if (menu.dvo != null) offy += menu.dvo;
21 if (menu.vertical || parentId != null)
22 Menu_Reposition (item, subm, item.offsetWidth + offx, offy);
24 Menu_Reposition (item, subm, offx, item.offsetHeight + offy);
26 subm.initialLeft = subm.style.left;
27 subm.initialTop = subm.style.top;
28 subm.initialContentHeight = getMenuScrollBox (menuId, itemId, "b").offsetHeight;
29 subm.scrollButtonsHeight = subm.offsetHeight - subm.initialContentHeight;
30 var submMargin = subm.offsetHeight - subm.clientHeight;
31 subm.initialOffsetHeight = subm.offsetHeight - subm.scrollButtonsHeight + submMargin;
32 subm.firstShown = true;
35 Menu_SetActive (menu, subm);
37 Menu_Resize (subm, menuId, itemId);
39 if (parentId != null && menu.dynamicHover != null)
40 Menu_HilighItem (menuId, itemId, menu.dynamicHover);
41 else if (parentId == null && menu.staticHover != null)
42 Menu_HilighItem (menuId, itemId, menu.staticHover);
45 function Menu_OverDynamicLeafItem (menuId, itemId, parentId) {
46 var menu = getMenu (menuId);
47 var subm = getSubMenu (menuId, parentId);
48 Menu_SetActive (menu, subm);
50 if (menu.dynamicHover != null)
51 Menu_HilighItem (menuId, itemId, menu.dynamicHover);
54 function Menu_OverStaticLeafItem (menuId, itemId) {
55 var menu = getMenu (menuId);
56 Menu_SetActive (menu, null);
57 if (menu.dynamicHover != null)
58 Menu_HilighItem (menuId, itemId, menu.staticHover);
61 function Menu_HilighItem (menuId, itemId, hoverClass)
63 var item = getMenuItem (menuId, itemId);
64 if (item.normalClass == null)
65 item.normalClass = item.className;
66 item.className = item.normalClass + " " + hoverClass;
69 function Menu_OutItem (menuId, itemId, parentId) {
70 var menu = getMenu (menuId);
71 var subm = getSubMenu (menuId, itemId);
72 if (subm == null && parentId != null)
73 subm = getSubMenu (menuId, parentId);
75 Menu_HideMenu (menu, subm, menu.disappearAfter);
76 var item = getMenuItem (menuId, itemId);
77 if (item != null && item.normalClass != null)
78 item.className = item.normalClass;
81 function Menu_OverScrollBtn (menuId, parentId, updown) {
82 var menu = getMenu (menuId);
83 var subm = getSubMenu (menuId, parentId);
84 Menu_SetActive (menu, subm);
86 if (subm.scrollThread != null)
87 clearInterval (subm.scrollThread);
88 var box = getMenuScrollBox (menuId, parentId, "b");
89 subm.scrollThread = setInterval ("Menu_ScrollMenu ('" + box.id + "','" + updown + "')", 60);
92 function Menu_OutScrollBtn (menuId, parentId, updown) {
93 var menu = getMenu (menuId);
94 var subm = getSubMenu (menuId, parentId);
95 if (subm.scrollThread != null)
96 clearInterval (subm.scrollThread);
97 Menu_HideMenu (menu, subm, menu.disappearAfter);
100 function Menu_ScrollMenu (boxId, updown) {
101 var box = document.getElementById (boxId);
102 if (updown == "u") box.scrollTop -= 5;
103 else box.scrollTop += 5;
107 function Menu_SetActive (menu, subm) {
108 if (menu.active != null && subm != menu.active)
109 Menu_HideMenu (menu, menu.active, 0);
113 function Menu_HideMenu (menu, subm, time)
115 if (subm.timer != null) clearTimeout (subm.timer);
116 if (time > 0) subm.timer = setTimeout ("Menu_HideMenuCallback ('" + subm.id + "')", time);
117 else Menu_HideMenuCallback (subm.id);
119 if (subm.parentMenu != null)
120 Menu_HideMenu (menu, subm.parentMenu, time);
123 function Menu_HideMenuCallback (spanId)
125 var subm = document.getElementById (spanId);
126 subm.style.visibility = "hidden";
129 function Menu_ShowMenu (subm)
131 if (subm.timer != null)
132 clearTimeout (subm.timer);
134 subm.style.visibility = "visible";
136 if (subm.parentMenu != null)
137 Menu_ShowMenu (subm.parentMenu);
140 function Menu_Reposition (it, elem, offx, offy)
144 while (it != null && it.style.position != "absolute") {
147 it = it.offsetParent;
149 elem.style.left = (le + offx) + "px";
150 elem.style.top = (to + offy) + "px";
153 function Menu_Resize (subm, menuId, itemId)
155 subm.style.top = subm.initialTop;
156 var parent = subm.offsetParent;
157 var box = getMenuScrollBox (menuId, itemId, "b");
159 var bottom = subm.offsetTop + subm.initialOffsetHeight - parent.scrollTop;
162 if (bottom > parent.clientHeight /* && parent.scrollHeight > parent.clientHeight*/) {
163 var overflow = bottom - parent.clientHeight;
164 var freeTop = subm.offsetTop - parent.scrollTop;
165 if (overflow <= freeTop) {
166 subm.style.top = (subm.offsetTop - overflow) + "px";
167 displayScroll = "none";
168 box.style.height = subm.initialContentHeight + "px";
170 subm.style.top = (subm.offsetTop - freeTop) + "px";
171 var bh = (parent.clientHeight - subm.offsetTop + parent.scrollTop) - subm.scrollButtonsHeight;
172 box.style.overflow = "hidden";
173 box.style.height = bh + "px";
174 displayScroll = "block";
177 displayScroll = "none";
178 box.style.height = subm.initialContentHeight + "px";
180 var btn = getMenuScrollBox (menuId, itemId, "u");
181 btn.style.display = displayScroll;
182 btn = getMenuScrollBox (menuId, itemId, "d");
183 btn.style.display = displayScroll;
186 function getMenu (menuId) { return eval (menuId + "_data"); }
187 function getSubMenu (menuId, itemId) { return document.getElementById (menuId + "_" + itemId + "s"); }
188 function getMenuItem (menuId, itemId) { return document.getElementById (menuId + "_" + itemId + "i"); }
189 function getMenuScrollBox (menuId, itemId, btn) { return document.getElementById (menuId + "_" + itemId + "c" + btn); }