// получает абсолютную координату x указанного элемента
function getX(le)
{
	var x = 0;
	while (le)
	{
		x += parseInt(le.offsetLeft);
		le = le.offsetParent;
	}
	return x;
}

// получает абсолютную координату y указанного элемента
function getY(le)
{
	var y = 0;
	while (le)
	{
		y += parseInt(le.offsetTop);
		le = le.offsetParent;
	}
	return y;
}

function overItem(item, menu, x, y, align, valign)
{
	oMenu = document.getElementById(menu);
	if (oMenu)
		showMenu(item, oMenu, x, y, align, valign);
//	document.getElementById("topbanner").innerHTML = '<img src="bggraph/bottom.jpg" width=645 height=152>';
}

function outItem(item, menu)
{
	oMenu = document.getElementById(menu);
	if (oMenu)
		outMenu(oMenu);
//	document.getElementById("topbanner").innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="645" height="152"><param name=movie value="bggraph/paintflash.swf"><param name=quality value=high><param name=bgcolor VALUE="#698DA5"><embed src="bggraph/paintflash.swf" quality=high bgcolor="#698da5" width="645" height="152" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>';
}

var last_menu = null;
var timer = null;

function outMenu(menu)
{
	last_menu = menu;
	timer = setTimeout(hideMenu, 300);
}

function overMenu(menu)
{
	if (timer)
		clearTimeout(timer);
	timer = null;
	if (last_menu && menu != last_menu)
		hideMenu();
	last_menu = menu;
}

function showMenu(d, m, x, y, align, valign)
{
	overMenu(m);
	m.style.visibility = "visible";
//	var x = -5;                        // здесь указывается смещение относительно вызвавшего меню элемента по x
//	var y = d.offsetHeight - 20;        // --||-- по y
	switch (align)
	{
		case 'left': break;
		case 'center': x += Math.round(d.offsetWidth / 2 - m.offsetWidth / 2); break;
		case 'right': x -= m.offsetWidth; break;
	}
	switch (valign)
	{
		case 'top': y -= m.offsetHeight; break;
		case 'middle':
		case 'center': y += Math.round(d.offsetHeight / 2 - m.offsetHeight / 2); break;
		case 'bottom': y += d.offsetHeight; break;
	}
	while (d)
	{
		x += d.offsetLeft;
		y += d.offsetTop;
		d = d.offsetParent;
	}
	if (x < 0)
		x = 0;
	if (y < 0)
		y = 0;
	m.style.left = x;
	m.style.top = y;
	// сокрытие select
	dx = m.offsetLeft;
	dy = m.offsetTop;
	dw = m.offsetWidth + dx;
	dh = m.offsetHeight + dy;
	var o = document.getElementsByTagName("SELECT");
	for (var i = 0; i < o.length; i++)
	{
		sx = getX(o[i]);
		sy = getY(o[i]);
		sw = o[i].offsetWidth + sx;
		sh = o[i].offsetHeight + sy;
		//alert(dx+' '+dy+' '+dw+' '+dh+' sel: '+sx+' '+sy+' '+sw+' '+sh);
		if (((dx > sx && dx < sw) || (dw > sx && dw < sw) || (dx < sx && dw > sw)) && ((dy > sy && dy < sh) || (dh > sy && dh < sh) || (dy < sy && dh > sh)))
			o[i].style.visibility = "hidden";
	}
}

function hideMenu()
{
	if (last_menu)
		last_menu.style.visibility = "hidden";
	if (timer)
		clearTimeout(timer);
	// показ select
	// !!! показывает все скрытые select'ы, а не только те которые были скрыты при вызове меню
	var o = document.getElementsByTagName("SELECT");
	for (var i = 0; i < o.length; i++)
		o[i].style.visibility = "visible";
}