// получает абсолютную координату 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 resizeMenu(menu, width) {
	menu.style.pixelWidth = width;
}

function overItem(item, menu)
{
	if (menu) {	
	 resizeMenu(menu, item.offsetWidth+20);
		showMenu(item, menu);
	}
}

function outItem(item, menu)
{
	if (menu)
		outMenu(menu);
}

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)
{
	overMenu(m);
	m.style.visibility = "visible";
	var x = 0;                        // здесь указывается смещение относительно вызвавшего меню элемента по x
	var y = d.offsetHeight + 1;        // --||-- по y
	while (d)
	{
		x += d.offsetLeft;//-2
		y += d.offsetTop;
		d = d.offsetParent;
	}
	m.style.left = x-10;
	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";
}
