// <!--

// global parameters

var agt=navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion); 
var is_minor = parseFloat(navigator.appVersion);
var is_ie    = (agt.indexOf("msie") != -1);
var is_ie4up = (is_ie  && (is_major >= 4));
var is_docom = (!is_ie && (document.getElementById));
var is_ns    = (!is_docom && (agt.indexOf('mozilla') != -1) && (agt.indexOf('spoofer') == -1) && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera') == -1) && (agt.indexOf('webtv') == -1));
var is_ns4up = (is_ns && (is_major >= 4));

var offsetY = 10;
var bottomY = 10;
var timeOut = 1000;
var timeoutId = null;
var lastMenu = null;

var NS = (is_ns4up) ? 1 : 0;
var IE = (is_ie4up) ? 1 : 0;
var DC = (is_docom) ? 1 : 0;
var SHOW = (IE ? "visible" : "show");
var HIDE = (IE ? "hidden"  : "hide");

// public functions

// open and focus popup window
function showWin(url)
{
	var w = window.open(url, null, 'height=400, width=600, status=yes, toolbar=no, menubar=no, location=no, scrollbars=yes');
	if (w) w.focus();
}

// shows menu and hides previously menu, if any
function showMenu(menuName)
{
	var menu = getMenu(menuName);
	if (menu == lastMenu) return doClearTimeout();
	doHideMenu();
	if (menu && event)
	{
		var y = event.y + offsetY;
		var h = menu.scrollHeight;
		var m = document.body.clientHeight - bottomY;
		if (y + h > m) y = m - h;
		if (y < offsetY)
		{
			y = offsetY;
			h = m - y;
		}
		if (IE)
		{
			menu.style.pixelTop = y;
			menu.style.pixelHeight = h;
		}
		else
		{
			menu.top = y;
			menu.height = h;
		}
	}
	doShowMenu(menu);
}

// hides menu after timeout occured
function hideMenu()
{
	if (timeoutId) return;
	if (!lastMenu) return;
	timeoutId = setTimeout('doHideMenu();', timeOut);
}

// returns element of given name
function getMenu(menuName)
{
	if (!menuName) return lastMenu;
	if (NS) return document.layers[menuName];
	if (DC) return document.getElementById(menuName);
	if (IE) return document.all[menuName];
	return null;
}

// private functions (don't call directly)

function doShowMenu(menu)
{
	if (!menu) return;
	lastMenu = menu;
	if (NS) lastMenu.visibility = SHOW;
	else lastMenu.style.visibility = SHOW;
}

function doHideMenu()
{
	doClearTimeout();
	if (!lastMenu) return;
	if (IE) lastMenu.style.pixelHeight = 0;
	else lastMenu.height = 0;
	if (NS) lastMenu.visibility = HIDE;
	else lastMenu.style.visibility = HIDE;
	lastMenu = null;
}

function doClearTimeout()
{
	if (timeoutId) clearTimeout(timeoutId);
	timeoutId = null;
}

// -->
