var mouseX, mouseY;

var timeOut	= 3000;

var timeOutID	= null;
var menuLast	= null;
var anchorLast	= null;
var imageLast	= null;
var menuCoords	= new Array();

function isIE ( ) {
	return( navigator.userAgent && navigator.userAgent.indexOf("MSIE") >= 0 );
}
function isN4() {
	if(document.layers)
		return true;
	else
		return false;
}
function isN6() {
	if(document.getElementById)
		return true;
	else
		return false;
}

/*
var menuCoords		= new Array (
		{ x : 100, y : 0 },
		{ x : 100, y : 10 },
		{ x : 100, y : 20 },
		{ x : 100, y : 30 }
	)
*/

function browserObject (str)
{
	if (isIE())
	{
		obj = document.all[str];
	}
	else if(isN6()) {
		obj = document.getElementById(str);
	}
	else
	{
		obj = eval('document.' + str);
	}
	
	return obj;
}

function initMenuCoords ( )
{
	var	gy = 160;
	var i = 0;
	
	while (browserObject('item'+i) != null)
	{
		menuCoords[i] = new Object();
		
		menuCoords[i].x = gy;
		menuCoords[i].y = 190;

		if (isIE())
		{
			gy = gy + document.all['item'+i].clientWidth;
		}
		else if(isN6()) {
		        gy = gy + document.getElementById('item'+i).offsetWidth;
		}
		else
		{
			gy = gy + eval('document.item' + i + '.document.Width');
		}
		
		i++;
	}
}

// trace function
function traceItem ( iObject ) {
	var str = '';
	if ( iObject != null )
		for ( i in iObject)
		{
			var iValue = eval( 'iObject.' + i );
			str += i + ' (' + typeof(iValue) + '): \'' + iValue + '\'\n';
		}
	else
		str =  "Object is null";
	
	//str = '<pre>'+str+'</pre>';
	
	return( str );
}

// set event handlers
if (isIE()) {
	document.onmousemove = eventMouseXY;
	document.onmousedown = eventMouseClick;
} else {
	if(isN4()) {
		window.captureEvents( Event.MOUSEMOVE | Event.MOUSEDOWN );
	}
	window.onmousemove = eventMouseXY;
	window.onmousedown = eventMouseClick;
}

function eventMouseClick ( ev ) {
	if ( !menuMouseOver() && (anchorLast == null)) {
		menuHide();
	}
//	alert(mouseX+' : '+mouseY);
}

function eventMouseXY( ev ) {
	if (isIE()) {
		mouseX = window.event.x + document.body.scrollLeft;
		mouseY = window.event.y + document.body.scrollTop;
	} else {
		mouseX = ev.pageX;
		mouseY = ev.pageY;
	}
}

function menuPresent ( iMenu ) {

	menuName = 'menu' + iMenu;
	
	if (isIE()) {
		result = (document.all[menuName] != null);
	} else if(isN6()) {
		result = (document.getElementById(menuName) != null);
	} else {
		result = (document.layers[menuName] != null);
	}
	
	return(result);
}

function menuWidth ( iMenu  ) {
	var mWidth = 0;
	
	if (isIE()) {
		mWidth = document.all['menu'+iMenu].clientWidth;
	} else if(isN6()) {
		mWidth = document.getElementById('menu'+iMenu).offsetWidth;
	} else {
		mWidth = eval('document.menu' + iMenu + '.document.width')
	}
	return( mWidth );
}

function menuHeight ( iMenu ) {
	var mHeight = 0;
	
	if (isIE()) {
		mHeight = document.all['menu'+iMenu].clientHeight;
	} else if(isN6()) {
		mHeight = document.getElementById('menu'+iMenu).offsetHeight;
	} else {
		mHeight = eval('document.menu' + iMenu + '.document.height')
	}
	return(mHeight);
}

function menuSetCoords () {
	var j = 0;

	while (menuCoords[j] != null) {
		if ( menuPresent(j) ) {
			menuName = 'menu' + j;
			if (isIE()) {
				document.all[menuName].style.pixelLeft = menuCoords[j].x;
				document.all[menuName].style.pixelTop = menuCoords[j].y;
			} else if(isN6()) {
				document.getElementById(menuName).style.left = menuCoords[j].x;
				document.getElementById(menuName).style.top = menuCoords[j].y;
			} else {
				document.layers[menuName].left = menuCoords[j].x;
				document.layers[menuName].top = menuCoords[j].y;
			}
		}
		j++;
	}
}

function menuMouseOver ( ) {
	if (menuLast != null) {
		menuName = 'menu' + menuLast;
		
		if (isIE()) {
			pX1 = document.all[menuName].style.pixelLeft;
			pY1 = document.all[menuName].style.pixelTop;
			pVs = (document.all[menuName].style.visibility == 'visible');
		} else if(isN6()) {
			pX1 = document.getElementById(menuName).offsetLeft;
			pY1 = document.getElementById(menuName).offsetTop;
			pVs = (document.getElementById(menuName).style.visibility == 'visible');
		} else {
			pX1 = document.layers[menuName].left;
			pY1 = document.layers[menuName].top;
			pVs = (document.layers[menuName].visibility == 'show');
		}
	
		pX2 = pX1 + menuWidth(menuLast);
		pY2 = pY1 + menuHeight(menuLast);
		
		result = ( pVs && (mouseX >= pX1) && (mouseX <= pX2) && (mouseY >= pY1) && (mouseY <= pY2) );
		
		return (result);
		
	} else {
		return (false);
	}
}

function menuShow ( iMenu ) {

	menuHide();
	
	menuLast = iMenu;
	menuName = 'menu' + iMenu;
	
	if (isIE()) {
		document.all[menuName].style.visibility = 'visible';
	} else if(isN6()) {
		document.getElementById(menuName).style.visibility='visible';
	} else {
		document.layers[menuName].visibility = 'show';
	}
}

function menuHider ( ) {
	if (timeOutID) {
		clearTimeout(timeOutID);
	}
	if (menuLast != null) {
		menuName = 'menu' + menuLast;
		if (isIE()) {
			document.all[menuName].style.visibility = 'hidden';
		} else if(isN6()) {
			document.getElementById(menuName).style.visibility='hidden';
		} else {
			document.layers[menuName].visibility = 'hide';
		}
		menuLast = null;
	}
}

function menuHide ( ) {
	if (menuLast != null) {
		if (timeOutID) {
			clearTimeout(timeOutID);
		}

		if (menuMouseOver()) {
			timeOutID = setTimeout('menuHide()', timeOut);
		} else {
			menuHider();
		}
	}
}

function menuOpen ( iMenu ) {
	menuHider();
	if ( menuPresent(iMenu) ) {
		if (timeOutID) {
			clearTimeout(timeOutID);
		}
		
		anchorLast = iMenu;
		
		menuSetCoords();
		menuShow(iMenu);
	}
}

function menuClose ( ) {
	anchorLast = null;
	timeOutID = setTimeout('menuHide()', timeOut);
}
