//simple class for point
function Point(x, y)
{
	this.x		= x;
	this.y		= y;
}

//rectangle class for blocks like1st level menu item and 2nd level menu block
function rectangle()
{
  this.top		= 0;
  this.bottom	= 0;
  this.left		= 0;
  this.right	= 0;
  
  //class member - checks whether given point is in current rectangle
  this.IsPointIn = function (point)
  {
	var is_in_rectangle = true;
	if ((point.x > this.right + 5) || (point.x < this.left - 5) || (point.y > this.bottom + 5) || (point.y < this.top - 5))
	{
		is_in_rectangle = false;
	}
	
	return is_in_rectangle;
  }
}

//object instance for second level menu block
var m_block2 = new rectangle();
//object instance for first level menu item
var m_menuitem = new rectangle();

//triggers mose track in BODY.onmousemove event, when menu-block is hidden do not track mose move
var m_do_mouse_track = false;
//current opened 2nd level menu block id, to be closed in BODY.onmousemove event
var m_opened_id;

//fired onmousemove for BODY 
function bodymousemove(e)
{
	if (m_do_mouse_track)
	{
		if (!e) var e = window.event;

		var point = new Point(e.clientX, e.clientY);

		if (!m_menuitem.IsPointIn(point) && !m_block2.IsPointIn(point))
		{
			he(m_opened_id);
			he('frmMenu2');
			m_do_mouse_track = false;
		}
	}
}

function hl2l(elem)
{
	elem.className = "item2ndl_hl";
}
function unhl2l(elem)
{
	elem.className = "item2ndl";
}

//display 2ndlevel menu block
function d2l(menu_item_1stl, menu_block_2ndl_id)
{
	if (document.getElementById(menu_block_2ndl_id) == null)
	{
		return;
	}
	
	//before enabling new 2ndlevel menu disable the last opened
	he(m_opened_id);
	he('frmMenu2');
	
	//enable new 2ndlevel menu block
	se(menu_block_2ndl_id);
	
	//move 2nslevel menu block under the selcted 1st level menu item
	var menu_block_2ndl = document.getElementById(menu_block_2ndl_id);
	var frmMenu2 = document.getElementById('frmMenu2');
	if (menu_block_2ndl != null)
	{
		//get rectangle coordinates of 2ndlevel menu block
		m_block2.top = getAbsPos(menu_block_2ndl, "Top");
		m_block2.left = getAbsPos(menu_block_2ndl, "Left");
		m_block2.right = m_block2.left + menu_block_2ndl.offsetWidth;
		m_block2.bottom = m_block2.top + menu_block_2ndl.offsetHeight;

		menu_block_2ndl.style.left = getAbsPos(menu_item_1stl, "Left");
		menu_block_2ndl.style.top = getAbsPos(menu_item_1stl, "Top") + menu_item_1stl.offsetHeight + 1;

		frmMenu2.style.left = menu_block_2ndl.style.left;
		frmMenu2.style.top = menu_block_2ndl.style.top;
		frmMenu2.width = menu_block_2ndl.offsetWidth;
		frmMenu2.height = menu_block_2ndl.offsetHeight;
		frmMenu2.style.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
	
		he(menu_block_2ndl_id);
		se('frmMenu2')
		se(menu_block_2ndl_id);
	}

	//get rectangle coordinates of 1stlevel menu item
	m_menuitem.top = getAbsPos(menu_item_1stl, "Top");
	m_menuitem.left = getAbsPos(menu_item_1stl, "Left");
	m_menuitem.right = m_menuitem.left + menu_item_1stl.offsetWidth;
	m_menuitem.bottom = m_menuitem.top + menu_item_1stl.offsetHeight;
	
	m_do_mouse_track = true;
	m_opened_id = menu_block_2ndl_id;
}

//show elem
function se(id)
{
	she(id, true)
}

//hide elem
function he(id)
{
	she(id, false)
}

//internal function for show/hide
function she(id, blnShow)
{
	var elem = document.getElementById(id);
	
	if (elem != null)
	{
		elem.style.display = blnShow?'block':'none';
	}
}

function getAbsPos(o, p)
{
	var i = 0;
	while (o != null)
	{
		i += o["offset" + p];
		o = o.offsetParent;
	}
	
	return i;
}
