// JScript source code

// объявляем переменные
var iTemp=0;
var g_oCurrentMenu = null;
var g_oCurrentSubMenu = null;
var hide_delay = 200;
var g_oTimerMenu = null;
var g_oTimerSubMenu = null;
var g_IsTimer1Run = null;
var g_IsTimer2Run = null;
var g_oCurrLine = null;
var g_iOneLineShowDelay = 20;
var g_oTimerLineMenu;
var g_SimleDrop = true;

function fff(oParent)
{
	alert (oParent);
}



function getPos(el,sProp)
{
	var iPos = 0;
	while (el!=null) {
		iPos+=el["offset" + sProp]
		el = el.offsetParent
	}
	return iPos
}

function ShowOneLineInMenu()
{
	if (g_oCurrLine)
	{
		g_oCurrLine.style.display = '';
		g_oCurrLine = g_oCurrLine.nextSibling;
		while (g_oCurrLine && g_oCurrLine.nodeType!=1)
			g_oCurrLine = g_oCurrLine.nextSibling
		g_oTimerLineMenu = setTimeout("ShowOneLineInMenu()", g_iOneLineShowDelay);
	}
}

function SwitchMenu(oMenu, bVisible)
{
	// ИНВАРИАНТ: Скрыть меню
	if(!bVisible)
	{
		oMenu.style.display = 'none';
	}
	// ИНВАРИАНТ: Показать меню
	else
	{
		oMenu.style.display = '';
		// ИНВАРИАНТ: Меню должно выпадать сложным способом (построчно)
		if (!g_SimleDrop)
		{
			clearTimeout (g_oTimerLineMenu);

			var oChild;
			g_oCurrLine = null;
			oChild = oMenu.firstChild;
			while (oChild)
			{
				// ИНВАРИАНТ: дочерний элемент является элементом HTML
				if(oChild.nodeType==1)
				{
					if (g_oCurrLine == null)
						g_oCurrLine = oChild;
					oChild.style.display = 'none';
				}
				oChild = oChild.nextSibling;
			}
			// Рекурсивная ф-ция показывает по одной строчке меню
			ShowOneLineInMenu ();
		}
		g_oCurrentMenu = oMenu;
	}
	return 1;
}


function SwitchMenu_L2(oSubMenu, bVisible)
{
	if(!bVisible)
	{
		oSubMenu.style.display = 'none';
	}
	else
	{
		oSubMenu.style.display = '';
		// ИНВАРИАНТ: Меню должно выпадать сложным способом (построчно)
		if (!g_SimleDrop)
		{
			// Сначала скрываем все элементы
			clearTimeout (g_oTimerLineMenu);
			var oChild;
			g_oCurrLine = null;
			oChild = oSubMenu.firstChild;
			while (oChild)
			{
				// ИНВАРИАНТ: дочерний элемент является элементом HTML
				if(oChild.nodeType==1)
				{
					if (g_oCurrLine == null)
						g_oCurrLine = oChild;
					oChild.style.display = 'none';
				}
				oChild = oChild.nextSibling;
			}
			ShowOneLineInMenu ();
		}
		g_oCurrentSubMenu = oSubMenu;
	}
	return 1;
}



// Показывает подменю первого уровня
function ShowSubmenu(ElementID, MenuID)
{
	var oElement;
	var oMenu;
	
	if (g_oCurrentSubMenu)
	{
		g_oCurrentSubMenu.style.display = 'none';
		g_oCurrentSubMenu = null;
	}
	// Если текущее меню не показано
	// Скрываем старое меню и открываем новое
	// 	
	CancelHide ();
	if (g_oCurrentMenu!=null)
	{
		SwitchMenu(g_oCurrentMenu, false);
	}
	if (MenuID != null)
	{
		oElement = document.getElementById(ElementID);
		oMenu = document.getElementById(MenuID);
		oMenu.style.left = getPos(oElement,"Left")-1+"px";
		oMenu.style.top = getPos(oElement,"Top")+oElement.offsetHeight+"px";
		SwitchMenu (oMenu, true);
	}
}

// Показывает подменю второго уровня
function ShowSubmenu_L2(ElementID, MenuID)
{
	var oElement;
	var oMenu;
	// Если текущее меню не показано
	// Скрываем старое меню и открываем новое
	//
	CancelHide_L2 ();
	if (g_oCurrentSubMenu!=null)
	{
		SwitchMenu_L2(g_oCurrentSubMenu, false);
	}

	if (MenuID != null)
	{
		oElement = document.getElementById(ElementID);
		oMenu = document.getElementById(MenuID);
		
		oMenu.style.left = getPos(oElement,"Left") + oElement.offsetWidth-2+"px";
		oMenu.style.top = getPos(oElement,"Top")+4+"px";
		SwitchMenu_L2 (oMenu, true);
	}
}


// Функция "закрывающая" меню.
// Функция ничего не принимает на вход
// и возвращает 1.
function HideMenu()
{
//		oCurrentMenu.style.visibility = 'hidden';
	// Устанавливаем задержку hide_delay с помощью
	// таймера;
//	window.setTimeout("alert('Hello, world')", 1000);
	g_oTimerMenu=window.setTimeout("ShowSubmenu(null,null)", hide_delay);

	// Устанавливаем IsTimerRun=1 - признак, того, что таймер запущен.
	g_IsTimer1Run=1;
	return 1;
}

// Закрывающая подменю.
// Ничего не принимает на вход и возвращает 1.
function HideMenu_L2()
{
	// Устанавливаем задержку hide_delay с помощью
	// таймера;
	g_oTimerSubMenu=setTimeout("ShowSubmenu_L2(null,null)", hide_delay);
	// Устанавливаем IsTimerRun=1 - признак, того, что таймер запущен.
	g_IsTimer2Run=1;
	return 1;
}

// Функция останавливающая таймер запущенный
// прошлой функцией. Таким образом,
// меню не пропадает.

// Функция ничего не принимает на вход
// и возвращает 1.

function CancelHide()
{
	if (g_IsTimer1Run == 1)
	{
		clearTimeout(g_oTimerMenu);
		g_IsTimer1Run=0;
	}
	return 1;
}

function CancelHide_L2()
{
	CancelHide ();
	if (g_IsTimer2Run == 1)
	{
		clearTimeout(g_oTimerSubMenu);
		g_IsTimer2Run=0;
	}
	return 1;
}

