function getClientHeight()
{
	return document.compatMode == 'CSS1Compat' && !window.opera?document.documentElement.clientHeight : document.body.clientHeight;
}

function getClientWidth()
{
	return document.compatMode == 'CSS1Compat' && !window.opera?document.documentElement.clientWidth : document.body.clientWidth;
}

function resize()
{
	var bs     = document.getElementById("bodyscroll");
	var menu   = document.getElementById("menu");
	var top    = document.getElementById("top");
	var bottom = document.getElementById("bottom");
	var close  = document.getElementById("close");

	var height = getClientHeight() - menu.clientHeight - top.clientHeight - bottom.clientHeight - 4;
	

	bs.style.cssText    += "height: " + height + "px;";
	bs.style.cssText    += "width: " + (getClientWidth() - 18) + "px;";
	close.style.cssText += "height: " + (height + 32) + "px;";
}

function init() 
{
	if (arguments.callee.done) 
	{
		return;
	}
		
	arguments.callee.done = true;
		
	if (_timer) 
	{
		clearInterval(_timer);
		_timer = null;
	}

	resize();
}

function close()
{
	var head = document.getElementById("close");
	head.style.display = "block";
}

function closeall(e)
{
	closea(0);
}

function ca(select)
{
	var id = 0;

	do
	{
		id++;
		if (id != select)
		{
			var menu   = document.getElementById("l" + id);

			if (menu != null)
			{
				menu.style.display = "none";
			}
			else
			{
				break;
			}
		}
	}
	while (id < 100);

	var IE = /*@cc_on ! @*/ false;
	if (IE)
	{
		restorefilter();
	}
}

function mousePageXY(e)
{
	var x = 0;
	var y = 0;

	if (!e)
	{
		e = window.event;
	}

	if (e.pageX || e.pageY)
	{
		x = e.pageX;
		y = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
		y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
	}

	return {"x" : x, "y" : y};
}

function restorefilter()
{
	var id = 0;

	do
	{
		id++;

		var menu   = document.getElementById("m" + id);

		if (menu != null)
		{
			if (menu.style.filter == "")
			{
				menu.style.filter = "progid:DXImageTransform.Microsoft.Shadow(color=#000000, direction=131, Strength=48)";
				//alert(menu.style.filter);
			}
		}
		else
		{
			break;
		}
	}
	while (id < 100);
}

function ca2(id)
{
	var div = document.getElementById("l" + id);

	if (div != null)
	{
		var pos = getOffset(div);
		var e   = mousePageXY();

		//alert(pos.left + " x " + pos.top + ", " + e.x + " x " + e.y + ", " + div.offsetWidth + " x " + div.offsetHeight);

		if (e.x < pos.left + 18 || e.x > pos.left - 18 + div.offsetWidth || 
		    e.y < pos.top       || e.y > pos.top  - 32 + div.offsetHeight)
		{
			ca(0);
		}
	}
}

function closea(select)
{
	ca(0);
	var id = 0;

	do
	{
		id++;
		if (id != select)
		{
			var menu   = document.getElementById("m" + id);

			if (menu != null)
			{
				menu.style.display = "none";
			}
			else
			{
				break;
			}
		}
	}
	while (id < 100);
}

function getOffset(elem) 
{
	if (elem.getBoundingClientRect) 
	{
		return getOffsetRect(elem);
	}
	else
	{
        	return getOffsetSum(elem);
	}
}

function getOffsetSum(elem) 
{
	var top  = 0;
	var left = 0;
	
	while(elem) 
	{
		top = top + parseInt(elem.offsetTop);
		left = left + parseInt(elem.offsetLeft);
		elem = elem.offsetParent;
	}

	return {top: top, left: left};
}

function getOffsetRect(elem) 
{
	var box = elem.getBoundingClientRect();

	var body = document.body;
	var docElem = document.documentElement;

	var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
	var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;

	var clientTop = docElem.clientTop || body.clientTop || 0;
	var clientLeft = docElem.clientLeft || body.clientLeft || 0;

	var top  = box.top +  scrollTop - clientTop;
	var left = box.left + scrollLeft - clientLeft;

	return { top: Math.round(top), left: Math.round(left) };
}

function mo(object, id)
{
	closea(id);
	var menu   = document.getElementById("m" + id);

	if (menu != null)
	{
		var pos = getOffset(object);
		menu.style.display = "block";

		menu.style.left    = pos['left'] + "px";
	}
}

function sl(object, id)
{
	ca(id);
	var menu = document.getElementById("l" + id);

	if (menu != null)
	{
		var IE = /*@cc_on ! @*/ false;

		if (IE)
		{
			if (object.offsetParent != null)
			{
				object.offsetParent.style.filter = "";
			}
		}

		var pos = getOffset(object);
		menu.style.display = "block";

		menu.style.left    = (pos['left'] - 18) + "px";
		menu.style.top     = (pos['top'])  + "px";
	}
}

function notavailable()
{
	alert("Данная функция пока не поддерживается. Пожалуйста, воспользуйтесь ей чуть позже");
}
