Требование: PHP => 5.3, часть 2
[cswow.git] / js / menu.js
blobb485136fe9a60a737c4d0527372cd16b7e0afb0a
1 /*
2 * Drop down menu script
3 */
4 var dd_hide_delay = 500; // Hide menu delay
5 var dd_show_delay = 200; // Show menu delay
6 var dd_options = new Array(); // Menu settings
8 var dd_timer = new Number(0);
10 function dd_getSubMenu(depth)
12 var id = 'dd_sub_menu_' + depth;
13 var s = $(id);
14 if (s == null)
16 s = insertElement(getBody(), 'DIV', id);
17 s.className = 'skin_pop_sub';
18 s.style.zIndex = 100 + depth;
19 s.style.visibility = "hidden";
20 s.style.position = 'absolute';
22 return s;
24 function dd_showSub(id, x, y)
26 var l = id.split('_');
27 var ls = eval(l[0]);
28 for (var i=1;i<l.length;i++)
29 ls = ls[l[i]].sub;
30 i-=2;
31 dd_hideSub(i);
32 if (ls)
33 dd_drawSubMenu(ls, id, dd_getSubMenu(i), x, y);
35 function dd_hideSub(j)
37 while(s = $('dd_sub_menu_' + j)){
38 s.style.visibility = "hidden"; j++;
41 function getSubMenuText(sub, pid)
43 var l = pid.split('_'), o = dd_options[l[0]], text = '';
44 for (var i in sub)
46 var r = sub[i];
47 text += ''
48 + '<div class="' + o.row + '" id=' + pid + '_' + i + ' style="position: relative;" onmouseover="dd_Select(this);" onmouseout="dd_Unselect(this);">'
49 + (r.link ? '<a href="' + r.link + '" ' + (r.target ? 'target="' + r.target + '"' : '') + '>' + r.text + '</a>' : r.text)
50 + (r.sub ? '<div class="'+ o.arrow + '" style="position: absolute;">' + o.arrowtext + '</div>' : '')
51 + '</div>';
53 return text;
56 function dd_drawSubMenu(sub, name, s, x, y)
58 s.innerHTML = getSubMenuText(sub, name);
59 var p= getPageRect(),
60 right = p.left + p.width - (s.offsetWidth || s.style.pixelWidth),
61 bottom = p.height + p.top - (s.offsetHeight || s.style.pixelHeight);
62 if (x >= right) x = right;
63 if (y >= bottom) y = bottom;
64 var css = s.style;
65 css.left = (x < p.left ? p.left : x) + 'px';
66 css.top = (y < p.top ? p.top : y) + 'px';
67 css.visibility = "visible";
69 function dd_markRow(row, cname)
71 var id = row.id;
72 while (s = $(id))
74 s.className = cname;
75 var p = id.lastIndexOf('_');
76 id = id.substring(0, p);
79 function dd_Select(row)
81 var l = row.id.split('_');
82 var o = dd_options[l[0]];
83 dd_markRow(row, o.selrow);
84 var b = getBounds(row);
85 var d = l.length-1;
86 var p = o['mpos'+d] ? o['mpos'+d] : o.defpos;
87 switch (p.m)
89 case 'tr': x=b.left+b.width+p.x; y=b.top+p.y;break;
90 case 'bl': x=b.left+p.x; y=b.top+b.height+p.y;break;
92 dd_timer.Timer('dd_showSub("'+row.id+'",'+x+','+y+')', dd_show_delay, true);
94 function dd_Unselect(row)
96 var l = row.id.split('_');
97 var o = dd_options[l[0]];
98 dd_markRow(row, o.row);
99 dd_timer.Timer('dd_hideSub('+o.min+')', dd_hide_delay, true);