var now = false 
var nowSub = false
var nowSub2 = false
var timeout = null
var offset = 0
var width = 0 
var width1 = 0
var width2 = 0
var dropLeft = false

var m1_2 = [0, 0];
var m1_11 = [0, 0];
var m1_12 = [0, 0];
var m3_2 = [0, 0];
var m3_3 = [0, 0];
var m8_7 = [0, 0];

var m1_Sub = ['m1_2', 'm1_11', 'm1_12'];
var m1_2_Sub = [''];
var m1_11_Sub = [''];
var m1_12_Sub = [''];
var m2_Sub = [''];
var m3_Sub = ['m3_2', 'm3_3'];
var m3_2_Sub = [''];
var m3_3_Sub = [''];
var m4_Sub = [''];
var m5_Sub = [''];
var m6_Sub = [''];
var m7_Sub = [''];
var m8_Sub = ['m8_7'];
var m8_7_Sub = [''];
var m9_Sub = [''];



function getMaxSubWidth(subList)
{
	var maxSubWidth = 0;
	for(t = 0; t < subList.length; t++)
		if (document.getElementById(subList[t]).childNodes[0].offsetWidth > maxSubWidth) 
			maxSubWidth = document.getElementById(subList[t]).childNodes[0].offsetWidth;
	return maxSubWidth;
}

function getSubMenuCoord(n, left, width)
{
	var ar1 = eval(n + "_Sub")
	if (ar1[0] != "") // get coordimates of 2-level-menu
	{
		for (i = 0; i < ar1.length; i++)
		{	
			var elem = document.getElementById(ar1[i])
						var k1 = ar1[i].substr(ar1[i].lastIndexOf("_") + 1)
			var width1 = elem.childNodes[0].offsetWidth;
			
			// get max width of 3-level-menu:
			var width2 = 0
			var ar2 = eval(ar1[i] + "_Sub")
			if (ar2[0] != "")
				width2 = getMaxSubWidth(ar2);
			
			var totalwidth = left + width + width1 + width2
			if (width1 > 0) totalwidth--;
			if (width2 > 0) totalwidth--;

			if (document.body.clientWidth < totalwidth) 
			{
				left1 =  - width1 + 1 
				dropLeft = true

			}
			else 
			{
				left1 = width - 1;
				dropLeft = false;
			}
	
			var top1 = (k1 - 1) * (elem.parentNode.offsetHeight + 3)
		
			if (is_Mac_ie) 
			{
				eval(ar1[i]) [0] = left1 - 2
				eval(ar1[i]) [1] = -2 
			}
			else
			{
				eval(ar1[i]) [0] = left1
				eval(ar1[i]) [1] = top1 
			}
		
			if (ar2[0] != "") // get coordinates of 3-level-menu
			for (j = 0; j < ar2.length; j++)
			{
				var elem = document.getElementById(ar2[j])
				var k2 = ar2[j].substr(ar2[j].lastIndexOf("_") + 1)
				width2 = elem.childNodes[0].offsetWidth; 
				if (dropLeft) left2 = - width2 + 1 
				else left2 = width1 - 1
				var top2 = (k2 - 1) * (elem.parentNode.offsetHeight + 3)
				
				if (is_Mac_ie) 
				{
					eval(ar2[j]) [0] = left2 - 2
					eval(ar2[j]) [1] = top2 - 2 
				}
				else
				{
					eval(ar2[j]) [0] = left2
					eval(ar2[j]) [1] = top2
				}
			}
		}
	}
}

function ItemOver() 
{
	elem = this
	if (elem.className == "mmenuDropItemLast") elem.className = "mmenuDropItemOverLast";
	else elem.className = "mmenuDropItemOver";
	if (elem.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes.length > 1) 
	{
		showSub(elem.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].id);
	}
	else 
	{
		hideSub();
	}
}

function ItemOut()
{
	elem = this
	if (elem.className == "mmenuDropItemOverLast") elem.className = "mmenuDropItemLast";
	else elem.className = "mmenuDropItem"
	hideSub();
}

function setAction(what)
{
	elem = document.getElementById(what)
	
	for (i = 0; i < elem.childNodes.length; i++) 
		if (elem.childNodes[i].tagName == 'TABLE') 
			table = elem.childNodes[i]
	
	tr = table.childNodes[table.childNodes.length - 1].childNodes	
	
	for (i = 0; i < tr.length; i++)
	{
		td = tr[i].childNodes;
		
		for (j = 0; j < td.length; j++) 
		{
			if (td[j].tagName == "TD")
			{
				td[j].onmouseout = ItemOut
				td[j].onmouseover = ItemOver
				td[j].noWrap = 'true'
			}
		}
	}
}

function getX(elem) 
{
	var pos = 0;
	while (elem.offsetParent != null) 
	{
		elem = elem.offsetParent;
		pos += elem.offsetLeft;
		if (elem.tagName == 'BODY') break;
	} 
	return pos - 1;
}

function getY(elem) 
{
	var pos = 0;
	while (elem.offsetParent != null) 
	{
		elem = elem.offsetParent;
		pos += elem.offsetTop;
		if (elem.tagName == 'BODY') break;
	} 
	return pos - 1;
}

function show(n, td)
{		
	timeout = clearTimeout(timeout);
	if (now) 
	{
		elem = document.getElementById(now)
		elem.style.visibility = 'hidden'
		now = false
	}
	elem = document.getElementById(n)
	setAction(n)
	offset = getX(td)
	width = elem.childNodes[0].offsetWidth 
	if (document.body.clientWidth < (offset + width) ) elem.style.left = document.body.clientWidth - width;
	
	else elem.style.left = offset
	left = parseInt(elem.style.left)
	elem.style.top = getY(td) + td.parentNode.offsetHeight + 1
	
	getSubMenuCoord(n, left, width)
	elem.style.visibility = "visible"
	now = n		
}

function setImg(elem, type) // elem - DIV with tables, type: 1 - corner1, 2 - corner2
{
	tr = elem.parentNode.parentNode.childNodes
	j = 0
	for (i = 0; i < tr.length; i++)
	{
		if (tr[i].tagName == 'TD') { j++; break;}		
	}
	if ((j == 1) && (tr[i].className == "sItem_corner1" || tr[i].className == "sItem_corner2"))
	{
		tr[i].className = "sItem_corner" + type;
	}
}



function showSub(n)
{
	elem = document.getElementById(n)
	
	var levelToShow = 0;
	for (i = 0; i < n.length; i++)
	{
		if (n.substr(i,1) == "_") levelToShow++;
	}
	
	if (levelToShow == 1) nowSub = n // draw menu 2 level
	else  if (levelToShow == 2) nowSub2 = n // draw menu 3 level
	
	elem.style.left = eval(elem.id) [0];
	elem.style.top = eval(elem.id) [1];
	setAction(n)
	elem.style.visibility = "visible"
	setImg(elem, 2)
}

function hide()
{
	if (timeout != null) 
	{
		timeout = clearTimeout(timeout);
	}
	
	timeout = setTimeout('hideSub();doHide()', 1000);
}

function doHide()
{
	if (now) 
	{
		elem = document.getElementById(now)
		elem.style.visibility = 'hidden'
		elem.style.left = -1000
		now = false
		left = 0
	}	
}

function stopHide()
{
	timeout = clearTimeout(timeout);
	bodyWidth = document.body.clientWidth;
}

function hideSub()
{
	if (nowSub)
	{
		elem = document.getElementById(nowSub)
		elem.style.visibility = "hidden"
		elem.style.left = -1000
		setImg(elem, 1)
		nowSub = null
	}
	if (nowSub2)
	{
		elem = document.getElementById(nowSub2)
		elem.style.visibility = "hidden"
		elem.style.left = -1000
		setImg(elem, 1)
		nowSub2 = null
	}
}



