Rev 1284 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/** DROPDOWN MENU*/var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1var ns6=(document.getElementById&&!document.all)||navigator.userAgent.indexOf("Opera")==0var ns4=document.layersfunction showmenu(e,which){if (!document.all&&!document.getElementById&&!document.layers)returnclearhidemenu()menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobjif (ie4||ns6)menuobj.innerHTML=whichelse{menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')menuobj.document.close()}menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.widthmenuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height//eventX=ie4? event.clientX : ns6? e.clientX : e.x//eventY=ie4? event.clientY : ns6? e.clientY : e.y// Dont use event location as it wobbles around// Use location of parent elementvar targ;if (e.target) targ = e.target;else if (e.srcElement) targ = e.srcElement;if (targ.nodeType == 3) // defeat Safari bugtarg = targ.parentNode;var rect = targ.getBoundingClientRect();eventX = rect.left;eventY = rect.bottom;//Find out how close the mouse is to the corner of the windowvar rightedge=(document.body.clientWidth||window.innerWidth)-eventX;var bottomedge=(document.body.clientHeight||window.innerHeight)-eventY;//position the horizontal position of the menu where the mouse was clickedvar left=ie4? document.body.scrollLeft+eventX : ns6? window.pageXOffset+eventX : eventX//if the horizontal distance isn't enough to accomodate the width of the context menuvar delta = rightedge - menuobj.contentwidth;if ( delta < 0 ) left+=delta;//same concept with the vertical positionvar top = menuobj.thestyle.top=ie4? document.body.scrollTop+eventY : ns6? window.pageYOffset+eventY : eventY// Don't adjust top. Assume menus are at the top. All adjusting will do is push the top off the screen//delta = bottomedge-menuobj.contentheight;//if (delta < 0) top += delta;menuobj.thestyle.left=left;menuobj.thestyle.top=top;menuobj.thestyle.visibility="visible"return false}function contains_ns6(a, b) {//Determines if 1 element in contained in another- by Brainjar.comwhile (b && b.parentNode)if ((b = b.parentNode) == a)return true;return false;}function hidemenu(){if (window.menuobj)menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"}function dynamichide(e){if (ie4&&!menuobj.contains(e.toElement))hidemenu()else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))hidemenu()}function delayhidemenu(){if (ie4||ns6||ns4)delayhide=setTimeout("hidemenu()",500)}function clearhidemenu(){if (window.delayhide)clearTimeout(delayhide)}function highlightmenu(e,state){if (document.all)source_el=event.srcElementelse if (document.getElementById)source_el=e.targetif (source_el.className=="menuitems"){source_el.id=(state=="on")? "mouseoverstyle" : ""}else{while(source_el.id!="popmenu"){source_el=document.getElementById? source_el.parentNode : source_el.parentElementif (source_el.className=="menuitems"){source_el.id=(state=="on")? "mouseoverstyle" : ""}}}}if (ie4||ns6)document.onclick=hidemenu