2 * Drop down menu script
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
;
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';
24 function dd_showSub(id
, x
, y
)
26 var l
= id
.split('_');
28 for (var i
=1;i
<l
.length
;i
++)
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
= '';
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>' : '')
56 function dd_drawSubMenu(sub
, name
, s
, x
, y
)
58 s
.innerHTML
= getSubMenuText(sub
, name
);
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
;
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
)
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
);
86 var p
= o
['mpos'+d
] ? o
['mpos'+d
] : o
.defpos
;
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);