//
//  This script was created
//  by Mircho Mirev
//  mo /mo@momche.net/
//
//	:: feel free to use it BUT
//	:: if you want to use this code PLEASE send me a note
//	:: and please keep this disclaimer intact
//

cMoMenu = {
	xOffset	:	0,
	yOffset	:	3,
	hideDelay :	1500
}

cMoMenu.showMenu = function( hLink, sMenuId )
{
	this.hideMenu()
	
	nPosX = ( ( bw.ns4 ) ? hLink.x : getSize( 'offsetLeft', hLink ) ) + this.xOffset
	nPosY = ( ( bw.ns4 ) ? hLink.y : getSize( 'offsetTop', hLink ) ) + this.yOffset

	nPosY += ( ( bw.ns4 ) ? 0 : hLink.offsetHeight )
	
	hMenu = new getObject( sMenuId )
	hMenu.hStyle.left = nPosX
	hMenu.hStyle.top = nPosY
	hMenu.hStyle.visibility = "visible"
	hMenu.hLink = hLink
	sOC = hMenu.hLink.getAttribute( 'menuoverclass' )
	if( sOC )
	{
		hMenu.hLink.className = sOC
	}
	
	if( bw.ns4 )
	{
		hMenu.hElm.captureEvents( Event.MOUSEOUT || Event.MOUSEOVER )
	}

	cDomEvent.addEvent( hLink, 'mouseout', cMoMenu.startHide, false )
	hMenu.hElm.onmouseover = cMoMenu.stopHide
	hMenu.hElm.onmouseout = cMoMenu.startHide
	
	window.moMenu = hMenu
}

cMoMenu.hideMenu = function()
{
	cMoMenu.stopHide()
	hMenu = window.moMenu
	if( hMenu != null )
	{
		sOC = hMenu.hLink.getAttribute( 'menuoutclass' )
		if( sOC )
		{
			hMenu.hLink.className = sOC
		}
		cDomEvent.removeEvent( hMenu.hLink, 'mouseout', cMoMenu.startHide, false )
		hMenu.hStyle.visibility = "hidden"
		window.moMenu = null
	}
}

cMoMenu.startHide = function()
{
	cMoMenu.hideTimeout = setTimeout( "cMoMenu.hideMenu()", cMoMenu.hideDelay )
}

cMoMenu.stopHide = function()
{
	clearTimeout( cMoMenu.hideTimeout )
}

cMoMenu.doActivate = function( e )
{
	hLink = getMenuElement( e )
	if( hLink != null )
	{
		cMoMenu.showMenu( hLink, hLink.getAttribute( 'menu' ) )
	}
}

cMoMenu.install = function()
{
	cDomEvent.addEvent( document, 'mouseover', cMoMenu.doActivate, true )
}

cMoMenu.install()

//helper functions
function getSrcElement( hEvent )
{
	if( !hEvent ) hEvent = window.event
	hElement = ( hEvent.srcElement ) ? hEvent.srcElement : hEvent.originalTarget
	return hElement
}


function getMenuElement( hEvent )
{
	hElement = getSrcElement( hEvent )
	if( hElement == null )
	{
		return null
	}

	if( hElement == null )
	{
		return null
	}
	try
	{
		while( ( hElement.tagName ) && !( /(body|html)/i.test( hElement.tagName ) ) )
		{
			if( hElement.getAttribute( 'menu' ) != null )
			{
				return hElement
			}
			hElement = hElement.parentNode
		}
	}
	catch( hException )
	{
	}

	return null
}
 

function getObject( sId )
{
	if( bw.ns4 )
	{
		this.hElm = document.layers[ sId ]
		this.hStyle = this.hElm
	}
	else if( bw.ie )
	{	
		this.hElm = document.all[ sId ]
		this.hStyle = this.hElm.style
	}
	else if( bw.dom )
	{
		this.hElm = document.getElementById( sId )
		this.hStyle = this.hElm.style
	}
}

function getSize( sParam, hLayer )
{
	nPos = 0
	while( hLayer.tagName.toUpperCase() != 'BODY' )
	{
		nPos += eval( 'hLayer.' + sParam )
		hLayer = hLayer.offsetParent
	}
	return nPos 
}
