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