source: trunk/cic-hcap/macros/anylink.js@ 13286

Last change on this file since 13286 was 11852, checked in by mdewsnip, 18 years ago

Initial revision

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