//dropdown IE fix functions
function getIFrameObj(id)
{
	if(!document.getElementById(id))
	{
		var iframeObj = document.createElement("iframe");
		iframeObj.id = id;
		iframeObj.src = "";
		iframeObj.marginWidth = 0;
		iframeObj.marginHeight = 0;
		iframeObj.frameBorder = 0;
		iframeObj.style.position = "absolute";
		iframeObj.style.zIndex = 1;
//		iframeObj.style.visibility = "hidden";
		iframeObj.style.width = "200px";
		iframeObj.style.height = "200px";
		document.body.appendChild(iframeObj);
		return document.getElementById(id);
	}else
		return document.getElementById(id);
}
function Synchronise(obj)
{
//	if (!isIE)
		return;
	var iObj = getIFrameObj("iframe_" + obj.id);
	if (obj && iObj)
	{
		iObj.style.top = obj.offsetTop;
		iObj.style.left = obj.offsetLeft;
		iObj.style.width = obj.clientWidth + "px";
		iObj.style.height = obj.clientHeight + "px";
		if (obj.style.visibility == "visible")
			iObj.style.visibility = "visible";
		else
			iObj.style.visibility = "hidden";
//		iObj.style.visibility = obj.style.visibility;
	}
}
//init menu
var m_List, i_List;
function InitMenu()
{
	m_List = new Array();
	i_List = new Array();
}
function GetIndexById(src, id)
{
	var i;
	for (i=0; i < src.length; i++)
	{
		if (src[i].id == id)
			return i;
	}
	return -1;
}
function AllowHide(index)
{
	m_List[index].canHide = true;
	while (m_List[index].parentIndex >= 0)
	{
		index = m_List[index].parentIndex;
		m_List[index].canHide = true;
	}
}
function DisableHide(index)
{
	m_List[index].canHide = false;
	while (m_List[index].parentIndex >= 0)
	{
		index = m_List[index].parentIndex;
		m_List[index].canHide = false;
	}
}
function RegisterMenu(id, parentIndex, direction, iIndex)
{
	var obj, index;
	index = m_List.length;
	obj = new Object();
	obj.id = id;
	obj.canHide = true;
	obj.index = index; // this index in m_List
	obj.parentIndex = parentIndex; // index of parent menu in m_List
	obj.menuDirection = direction;
	obj.iIndex = iIndex;
	m_List[index] = obj;
	var tmp = document.getElementById(id);
	if (tmp)
	{
		eval("tmp.onmouseover = function() { DisableHide(" + index + "); };");
		eval("tmp.onmouseout = function() { AllowHide(" + index + "); ProcessMenu(" + index + ", 'hide');};");
	}
	return index;
}
function GetObjectWidth(id)
{
	var obj = document.getElementById(id);
	if (obj)
		return obj.offsetWidth;
	else
		return 0;
}
function CalculatePosition(itemIndex, submenuId)
{
	var srcObj = i_List[itemIndex];
	var targetObj = document.getElementById(submenuId);
	if (srcObj && targetObj)
	{
		if (srcObj.menuDirection == 0)
			targetObj.style.left = calcPositionLeft(srcObj.id) + "px";
		else
		{
			targetObj.style.left = (calcPositionLeft(srcObj.container) + GetObjectWidth(srcObj.container) + 1) + "px";
			targetObj.style.top = calcPositionTop(srcObj.id) + "px";
		}
		Synchronise(targetObj);
	}
}
function CalculatePosition1(submenuIndex)
{
	if (m_List[submenuIndex].parentIndex == -1)
	{
		CalculatePosition(m_List[submenuIndex].iIndex, m_List[submenuIndex].id);
		return;
	}
	var srcObj = i_List[m_List[submenuIndex].iIndex];
	var targetObj = document.getElementById(m_List[submenuIndex].id);
	if (srcObj && targetObj)
	{
		if (m_List[submenuIndex].menuDirection == 1)
		{
			//check if we should display right/left
			var leftPos1 = calcPositionLeft(srcObj.container) + GetObjectWidth(srcObj.container) + 1;
			var leftPos2 = calcPositionLeft(srcObj.container) - GetObjectWidth(targetObj.id) - 1;
			if (((leftPos1 + GetObjectWidth(targetObj.id)) > getWindowWidth()) && (leftPos2 > 0))
				targetObj.style.left = leftPos2 + "px";
			else
				targetObj.style.left = leftPos1 + "px";
			Synchronise(targetObj);
		}
	}
}
function RegisterItem(id, container, submenu, direction)
{
	var obj, index;
	var s_index;
	s_index = RegisterMenu(submenu, GetIndexById(m_List, container), direction, i_List.length);
	index = i_List.length;
	
	obj = new Object();
	obj.id = id;
	obj.container = container;
	obj.submenu = submenu; // submenu id
	obj.submenuIndex = s_index;// submenu index
	obj.index = index; // this index in i_List
	obj.menuDirection = direction;
	i_List[index] = obj;

	CalculatePosition(index, submenu);

	var tmp = document.getElementById(id);
	if (tmp)
	{
		eval("tmp.onmouseover = function() { ProcessMenu(" + s_index + ", 'show'); };");
		eval("tmp.onmouseout = function() { ProcessMenu(" + s_index + ", 'hide'); };");
	}
}
function HideAll()
{
	var i;
	for (i=0; i < m_List.length; i++)
	{
		if (m_List[i].canHide)
		{
			HideMenu(i);
		}//else
//			alert("Skipped="+m_List[i].id);
	}
}
function ProcessMenu(index, command)
{
	switch (command)
	{
		case "show":
			m_List[index].canHide = false;
			setTimeout("ShowMenu("+ index +");", 30);
			break;
		case "hide":
			if (m_List[index].parentIndex >= 0)
			{
				var hideExpr = "";
				var t_index = index;
				while (m_List[t_index].parentIndex >= 0)
				{
					m_List[m_List[t_index].parentIndex].canHide = true;
					t_index = m_List[t_index].parentIndex;
					hideExpr += "HideMenu("+ t_index +");";
				}
//				m_List[m_List[index].parentIndex].canHide = true;
				m_List[index].canHide = true;
				hideExpr += "HideMenu("+ index +");";
				//setTimeout("HideMenu("+ m_List[index].parentIndex +");HideMenu("+ index +");", 350);
				setTimeout(hideExpr, 150);
			}else
			{
				m_List[index].canHide = true;
				setTimeout("HideMenu("+ index +");", 150);
			}
			break;
	};
}

function ShowMenu(index)
{
	var obj = document.getElementById(m_List[index].id);
	if (obj)
	{
		CalculatePosition1(index);
		obj.style.visibility = "visible";
		Synchronise(obj);
	}
}
function HideMenu(index)
{
	var obj = document.getElementById(m_List[index].id);
	if (obj && m_List[index].canHide)
	{
		obj.style.visibility = "hidden";
		Synchronise(obj);
	}
}

var isDOM=document.getElementById; //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
var isMozilla=isDOM && (navigator.userAgent.indexOf('Gecko') != -1) && (navigator.userAgent.indexOf('etscape') == -1);
var isNetscape6=!isMozilla && isDOM && (navigator.userAgent.indexOf('Gecko') != -1);
var isIE = navigator.userAgent.indexOf("MSIE") > -1;

function calcPositionTop(id)
{
	var obj = document.getElementById(id);
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
function calcPositionLeft(id)
{
	var obj = document.getElementById(id);
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}
function getWindowWidth()
{
	var myWidth = 0;
	if( typeof( window.innerWidth ) == 'number' )
	{
		//Non-IE
		myWidth = window.innerWidth;
	}else
		if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ))
		{
			//IE 6+ in 'standards compliant mode'
			myWidth = document.documentElement.clientWidth;
		}else
			if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
			{
				//IE 4 compatible
				myWidth = document.body.clientWidth;
			}
	return myWidth;
}
//-->
