Ok, I have an external javascript popup menu (activated via mouseover a button image) but the popup doesn't always appear on/beside the button. It sometimes pops up across the screen, or basically anywhere unexpected. How do I position the popup menu correctly so it appears by the button image that sets it off? Here's the javascript if this helps:
//JAVASCRIPT CSS POPUP MENU
var linkset=new Array()
//PRELOAD BODY ROLLOVER IMAGES
foryou_OUT = new Image (128,39)
foryou_OUT.src = "r2_c1-05_normal.gif"
foryou_OVER = new Image (128,39)
foryou_OVER.src = "r2_c1-05_over.gif"
foryou_DOWN = new Image (128,39)
foryou_DOWN.src = "r2_c1-05_down.gif"
contact_OUT = new Image (141,39)
contact_OUT.src = "r11_c1-22_normal.gif"
contact_OVER = new Image (141,39)
contact_OVER.src = "r11_c1-22_over.gif"
contact_DOWN = new Image (141,39)
contact_DOWN.src = "r11_c1-22_down.gif"
//FOR YOU MENU
linkset[0]='<div class="menuitems"><a href="foryou.html" target="_self">Intro...</a></div>'
linkset[0]+='<div class="menuitems"><a href="updates.html" target="_self">Updates</a></div>'
linkset[0]+='<div class="menuitems"><a href="humor.html" target="_self">Humor Me</a></div>'
linkset[0]+='<div class="menuitems"><a href="games.html" target="_self">Let the Games Begin</a></div>'
linkset[0]+='<div class="menuitems"><a href="freebies.html" target="_self">Freebies</a></div>'
linkset[0]+='<div class="menuitems"><a href="tutorials.html" target="_self">Tutorials</a></div>'
linkset[0]+='<div class="menuitems"><a href="awards.html" target="_self">Awards</a></div>'
linkset[0]+='<div class="menuitems"><a href="links.html" target="_self">Free4All Links*</a></div>'
linkset[0]+='<div class="menuitems"><a href="gbook.html" target="_self">View Guestbook*</a></div>'
linkset[0]+='<div class="menuitems"><a href="index2.html" target="_self">XyberCard Shoppe</a></div>'
linkset[0]+='<div class="menuitems"><a href="mail.html" target="_blank">XyberMail*</a></div>'
//CONTACT MENU
linkset[4]='<div class="menuitems"><a href="signbook.html" target="_self">Sign Guestbook*</a></div>'
linkset[4]+='<div class="menuitems"><a href="webmail.html"v>Send us an eMail</a></div>'
linkset[4]+='<div class="menuitems"><a href="icqpanel.html" target="_self">Use our ICQ Panel</a></div>'
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=#E6E6E6 width=160 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 is 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
//JAVASCRIPT CSS POPUP MENU
var linkset=new Array()
//PRELOAD BODY ROLLOVER IMAGES
foryou_OUT = new Image (128,39)
foryou_OUT.src = "r2_c1-05_normal.gif"
foryou_OVER = new Image (128,39)
foryou_OVER.src = "r2_c1-05_over.gif"
foryou_DOWN = new Image (128,39)
foryou_DOWN.src = "r2_c1-05_down.gif"
contact_OUT = new Image (141,39)
contact_OUT.src = "r11_c1-22_normal.gif"
contact_OVER = new Image (141,39)
contact_OVER.src = "r11_c1-22_over.gif"
contact_DOWN = new Image (141,39)
contact_DOWN.src = "r11_c1-22_down.gif"
//FOR YOU MENU
linkset[0]='<div class="menuitems"><a href="foryou.html" target="_self">Intro...</a></div>'
linkset[0]+='<div class="menuitems"><a href="updates.html" target="_self">Updates</a></div>'
linkset[0]+='<div class="menuitems"><a href="humor.html" target="_self">Humor Me</a></div>'
linkset[0]+='<div class="menuitems"><a href="games.html" target="_self">Let the Games Begin</a></div>'
linkset[0]+='<div class="menuitems"><a href="freebies.html" target="_self">Freebies</a></div>'
linkset[0]+='<div class="menuitems"><a href="tutorials.html" target="_self">Tutorials</a></div>'
linkset[0]+='<div class="menuitems"><a href="awards.html" target="_self">Awards</a></div>'
linkset[0]+='<div class="menuitems"><a href="links.html" target="_self">Free4All Links*</a></div>'
linkset[0]+='<div class="menuitems"><a href="gbook.html" target="_self">View Guestbook*</a></div>'
linkset[0]+='<div class="menuitems"><a href="index2.html" target="_self">XyberCard Shoppe</a></div>'
linkset[0]+='<div class="menuitems"><a href="mail.html" target="_blank">XyberMail*</a></div>'
//CONTACT MENU
linkset[4]='<div class="menuitems"><a href="signbook.html" target="_self">Sign Guestbook*</a></div>'
linkset[4]+='<div class="menuitems"><a href="webmail.html"v>Send us an eMail</a></div>'
linkset[4]+='<div class="menuitems"><a href="icqpanel.html" target="_self">Use our ICQ Panel</a></div>'
var ie4=document.all&&navigator.userAgent.indexOf("Opera"
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"
menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj
if (ie4||ns6)
menuobj.innerHTML=which
else{
menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=160 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 is 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"
}
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"
}
}
}
}
if (ie4||ns6)
document.onclick=hidemenu