1 | /***********************************************
|
---|
2 | * AnyLink Drop Down Menu- © Dynamic Drive (www.dynamicdrive.com)
|
---|
3 | * This notice MUST stay intact for legal use
|
---|
4 | * Visit http://www.dynamicdrive.com/ for full source code
|
---|
5 | ***********************************************/
|
---|
6 |
|
---|
7 | /////No further editting needed
|
---|
8 |
|
---|
9 | var ie4=document.all
|
---|
10 | var ns6=document.getElementById&&!document.all
|
---|
11 |
|
---|
12 | if (ie4||ns6)
|
---|
13 | document.write('<div id="dropmenudiv" style="visibility:hidden;width:'+menuwidth+';background-color:'+menubgcolor+'" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')
|
---|
14 |
|
---|
15 | function getposOffset(what, offsettype){
|
---|
16 | var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
|
---|
17 | var parentEl=what.offsetParent;
|
---|
18 | while (parentEl!=null){
|
---|
19 | totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
|
---|
20 | parentEl=parentEl.offsetParent;
|
---|
21 | }
|
---|
22 | return totaloffset;
|
---|
23 | }
|
---|
24 |
|
---|
25 |
|
---|
26 | function showhide(obj, e, visible, hidden, menuwidth){
|
---|
27 | if (ie4||ns6)
|
---|
28 | dropmenuobj.style.left=dropmenuobj.style.top=-500
|
---|
29 | if (menuwidth!=""){
|
---|
30 | dropmenuobj.widthobj=dropmenuobj.style
|
---|
31 | dropmenuobj.widthobj.width=menuwidth
|
---|
32 | }
|
---|
33 | if (e.type=="click" && obj.visibility==hidden || e.type=="mouseover")
|
---|
34 | obj.visibility=visible
|
---|
35 | else if (e.type=="click")
|
---|
36 | obj.visibility=hidden
|
---|
37 | }
|
---|
38 |
|
---|
39 | function iecompattest(){
|
---|
40 | return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
|
---|
41 | }
|
---|
42 |
|
---|
43 | function clearbrowseredge(obj, whichedge){
|
---|
44 | var edgeoffset=0
|
---|
45 | if (whichedge=="rightedge"){
|
---|
46 | var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
|
---|
47 | dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
|
---|
48 | if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
|
---|
49 | edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
|
---|
50 | }
|
---|
51 | else{
|
---|
52 | var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
|
---|
53 | var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
|
---|
54 | dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
|
---|
55 | if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move up?
|
---|
56 | edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
|
---|
57 | if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either?
|
---|
58 | edgeoffset=dropmenuobj.y+obj.offsetHeight-topedge
|
---|
59 | }
|
---|
60 | }
|
---|
61 | return edgeoffset
|
---|
62 | }
|
---|
63 |
|
---|
64 | function populatemenu(what){
|
---|
65 | if (ie4||ns6)
|
---|
66 | dropmenuobj.innerHTML=what.join("")
|
---|
67 | }
|
---|
68 |
|
---|
69 |
|
---|
70 | function dropdownmenu(obj, e, menucontents, menuwidth){
|
---|
71 | if (window.event) event.cancelBubble=true
|
---|
72 | else if (e.stopPropagation) e.stopPropagation()
|
---|
73 | clearhidemenu()
|
---|
74 | dropmenuobj=document.getElementById? document.getElementById("dropmenudiv") : dropmenudiv
|
---|
75 | populatemenu(menucontents)
|
---|
76 |
|
---|
77 | if (ie4||ns6){
|
---|
78 | showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
|
---|
79 | dropmenuobj.x=getposOffset(obj, "left")
|
---|
80 | dropmenuobj.y=getposOffset(obj, "top")
|
---|
81 | dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+"px"
|
---|
82 | dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+obj.offsetHeight+"px"
|
---|
83 | }
|
---|
84 |
|
---|
85 | return clickreturnvalue()
|
---|
86 | }
|
---|
87 |
|
---|
88 | function clickreturnvalue(){
|
---|
89 | if (ie4||ns6) return false
|
---|
90 | else return true
|
---|
91 | }
|
---|
92 |
|
---|
93 | function contains_ns6(a, b) {
|
---|
94 | while (b.parentNode)
|
---|
95 | if ((b = b.parentNode) == a)
|
---|
96 | return true;
|
---|
97 | return false;
|
---|
98 | }
|
---|
99 |
|
---|
100 | function dynamichide(e){
|
---|
101 | if (ie4&&!dropmenuobj.contains(e.toElement))
|
---|
102 | delayhidemenu()
|
---|
103 | else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
|
---|
104 | delayhidemenu()
|
---|
105 | }
|
---|
106 |
|
---|
107 | function hidemenu(e){
|
---|
108 | if (typeof dropmenuobj!="undefined"){
|
---|
109 | if (ie4||ns6)
|
---|
110 | dropmenuobj.style.visibility="hidden"
|
---|
111 | }
|
---|
112 | }
|
---|
113 |
|
---|
114 | function delayhidemenu(){
|
---|
115 | if (ie4||ns6)
|
---|
116 | delayhide=setTimeout("hidemenu()",disappeardelay)
|
---|
117 | }
|
---|
118 |
|
---|
119 | function clearhidemenu(){
|
---|
120 | if (typeof delayhide!="undefined")
|
---|
121 | clearTimeout(delayhide)
|
---|
122 | }
|
---|
123 |
|
---|
124 | if (hidemenu_onclick=="yes")
|
---|
125 | document.onclick=hidemenu
|
---|