var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers

function showmenu(e,which,caller){

//Find the Y position of calling menu item
var callerTop = findPosY(caller);

callerTop = (ie4 || ns6)? callerTop - document.body.scrollTop : ns4? callerTop - window.pageYOffset : callerTop

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=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
var menuBottom=callerTop+menuobj.contentheight
var documentHeight=ie4? document.body.clientHeight : window.innerHeight


//alert('menuBottom = ' + menuBottom + '\ndocumentHeight = ' + documentHeight)

// Neil - place submenus horizontally and vertically
// Horizontal...
menuobj.thestyle.left=ie4? document.body.scrollLeft + xOffset : ns6? window.pageXOffset + xOffset : xOffset
// Vertical...
if ((menuBottom + yOffset) < documentHeight)
    menuobj.thestyle.top=ie4? document.body.scrollTop + callerTop + yOffset - horizScrollBarHeight : ns6? window.pageYOffset + callerTop + yOffset - horizScrollBarHeight : eventY
else {
    menuobj.thestyle.top=ie4? document.body.scrollTop + callerTop - ((menuBottom + yOffset + horizScrollBarHeight) - documentHeight) : ns6? window.pageYOffset + callerTop - ((menuBottom + yOffset + horizScrollBarHeight) - documentHeight) : eventY-menuobj.contentheight
}
//alert(menuobj.thestyle.top + '-' + document.body.scrollTop + "-" + window.pageYOffset)

//same concept with the vertical position
//Neil - place precisely
//if (bottomedge<menuobj.contentheight)
    //menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : ns6? window.pageYOffset+eventY-menuobj.contentheight : eventY-menuobj.contentheight
    //menuobj.thestyle.top=ie4? document.body.scrollTop+5-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" : ""
}
}
}
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


if (ie4||ns6)
document.onclick=hidemenu