Current state
This commit is contained in:
94
public/legacy/js/pop_menu.js
Normal file
94
public/legacy/js/pop_menu.js
Normal file
@@ -0,0 +1,94 @@
|
||||
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
|
||||
var ns6=document.getElementById&&!document.all
|
||||
var ns4=document.layers
|
||||
|
||||
function showmenu(e,which)
|
||||
{
|
||||
if (!document.all&&!document.getElementById&&!document.layers)
|
||||
return
|
||||
clearhidemenu()
|
||||
menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
|
||||
menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj
|
||||
if (ie4||ns6)
|
||||
menuobj.innerHTML=which
|
||||
else
|
||||
{
|
||||
menuobj.document.write('<layer name=gui bgColor=#999999 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
|
||||
menuobj.document.close()
|
||||
}
|
||||
menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
|
||||
menuobj.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
|
||||
|
||||
//Find out how close the mouse is to the corner of the window
|
||||
var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
|
||||
var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
|
||||
|
||||
//if the horizontal distance isn't enough to accomodate the width of the context menu
|
||||
if (rightedge<menuobj.contentwidth)
|
||||
|
||||
//move the horizontal position of the menu to the left by it's width
|
||||
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
|
||||
else
|
||||
|
||||
//position the horizontal position of the menu where the mouse was clicked
|
||||
menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX : ns6? window.pageXOffset+eventX : eventX
|
||||
|
||||
//same concept with the vertical position
|
||||
if (bottomedge<menuobj.contentheight)
|
||||
menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : ns6? window.pageYOffset+eventY-menuobj.contentheight : eventY-menuobj.contentheight
|
||||
else
|
||||
menuobj.thestyle.top=ie4? document.body.scrollTop+event.clientY : ns6? window.pageYOffset+eventY : eventY
|
||||
menuobj.thestyle.visibility="visible"
|
||||
return false
|
||||
}
|
||||
|
||||
function contains_ns6(a, b) {
|
||||
//Determines if 1 element in contained in another- by Brainjar.com
|
||||
while (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.srcElement
|
||||
else if (document.getElementById)
|
||||
source_el=e.target
|
||||
if (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.parentElement
|
||||
if (source_el.className=="menuitems"){
|
||||
source_el.id=(state=="on")? "mouseoverstyle" : ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ie4||ns6) document.onclick=hidemenu
|
||||
Reference in New Issue
Block a user