function HideDropDown(container) {
	container.style.display = 'none';
}

function StayDropDown(container) {
	if (container.style.display != 'block') container.style.display = 'block';
}

function ShowDropDown(event) {
	event = event || window.event;
	var target = event.target || event.srcElement;
	
	var menu = document.getElementById('d' + target.getAttribute('id')) || false;
	if (menu && menu.style.display != 'block') {
		
		// Чтобы не плодить лишних кнопок, создаём их только один раз
		if (!document.getElementById('m' + target.id)) {
			// Копируем кнопку и ставим её выше оригинала, чтобы корректно обрабатывать закрытие меню.
			var activeitem = document.createElement('a');
			activeitem.appendChild(document.createTextNode(target.firstChild.nodeValue));
			activeitem.className = 'hover';
			activeitem.id = 'm' + target.id;
			menu.appendChild(activeitem);
		}
		
		if (!document.getElementById('p' + target.id)) {
			var pointer = document.createElement('div');
			pointer.className = 'pointer';
			pointer.id = 'p' + target.id;
			pointer.style.width = target.offsetWidth + 'px';
			menu.appendChild(pointer);
		}
		
		var mainmenu = document.getElementById('menu').getElementsByTagName('DIV');
		for (i = 0; i < mainmenu.length; i++) {
			if (mainmenu[i].className == 'dropdown') {
				if (mainmenu[i].id != 'd' + target.id) {
					if (mainmenu[i].style.display != 'none') mainmenu[i].style.display = 'none';
				}
			}
		}
		
		var connect = menu.getElementsByTagName('span');
		connect[0].style.width = target.offsetWidth - 20 + 6 + 'px';
		menu.style.left = target.parentNode.offsetLeft - 6 + 'px';
		// IE < 8.0 определяет menu.offsetTop как -1
		// Все остальные нормальные браузеры как положительное число 
		if (menu.offsetTop < 0 ) menu.style.top = target.offsetTop + target.offsetHeight - 3 + 'px';
		// IE определяет typeof(menu.style.opacity) как undefined
		// Все остальные нормальные браузеры как string
		if (typeof(menu.style.opacity) == 'string') {
			var opacity = 0;
			menu.style.opacity = opacity / 10;
			menu.style.display = 'block';
			//document.getElementById('m' + target.id).style.width = target.offsetWidth - 30 + 2 + 'px';
			//alert(target.offsetWidth + ' : ' + document.getElementById('m' + target.id).offsetWidth);
			var timeoutID = setInterval(function() {
				if (opacity != 10) {
					opacity++;
					menu.style.opacity = opacity / 10;
				}
				else {
					clearInterval(timeoutID);
				}
			}, 25);
		}
		else menu.style.display = 'block';
	}
	menu.onmouseover = function() {
		StayDropDown(menu);
	}
	menu.onmouseout = function() {
		HideDropDown(menu);
	}
}

var startHeight = new Array();
var endHeight = new Array();

function OpenCatalogue(event) {
	event = event || window.event;
	var target = event.target || event.srcElement;
	if (target.className != 'active') {
		target.className = 'active';
		var nowHeight = startHeight[target.parentNode.id] = target.parentNode.offsetHeight;
		target.parentNode.className = 'submenu';
		if (!endHeight[target.parentNode.id]) endHeight[target.parentNode.id] = target.parentNode.offsetHeight;
		
		var iid = setInterval(function() {
			if (nowHeight < endHeight[target.parentNode.id]) {
				nowHeight += 5;
				target.parentNode.style.height = nowHeight + 'px';
			}
			else {
				clearInterval(iid);
				target.parentNode.style.height = endHeight[target.parentNode.id] + 'px';
			}
		}, 20);
	}
	else {
		var nowHeight = target.parentNode.offsetHeight;
		var iid = setInterval(function() {
			if (nowHeight > startHeight[target.parentNode.id]) {
				nowHeight -= 5;
				target.parentNode.style.height = nowHeight + 'px';
			}
			else {
				clearInterval(iid);
				target.parentNode.style.height = startHeight[target.parentNode.id] + 'px';
				target.className = '';
				target.parentNode.className = '';
			}
		}, 20);
	}
}

// Перебираем все пункты меню и добаляем каждому обработчик событий
function AttachEvents() {
	
	// Если подключен модуль скользящих новостей...
	if (typeof(_SLIDER) != 'undefined' && _SLIDER == true) InitSlider();
	
	var MenuItems = document.getElementById('menu').getElementsByTagName('td');
	for (var i = 0; i < MenuItems.length; i++) MenuItems[i].onmouseover = ShowDropDown;
	
	// Если левое меню расположено на странице, подключаем соответствующие обработчики
	var LeftMenu = document.getElementById('leftmenu');
	if (LeftMenu) {
		// Определяем все предположительные контейнеры раскрывающихся меню
		var MenuItem = LeftMenu.getElementsByTagName('DIV');
		// Перебираем все контейнеры...
		for (i = 0; i < MenuItem.length; i++) {
			// Если у контейнера есть потомки...
			if (MenuItem[i].hasChildNodes() == true) {
				MenuItem[i].id = 'ddmi' + i;
				// Определяем переменную для текущего потомка, с которым будем работать
				var nodenow;
				// Перебираем всех потомков в контейнере...
				for (j = 0; j < MenuItem[i].childNodes.length; j++) {
					// Для сокращения кода и путаницы, выделяем каждого потомка в переменную, с которой и работаем далее
					nodenow = MenuItem[i].childNodes[j];
					// Если потомок тэг и именно тэг А...
					if (nodenow.nodeType == 1 && nodenow.nodeName == 'A') {
						// Вешаем на него обработчик события клика мышки
						nodenow.onmouseup = OpenCatalogue;
						// Прерываем цикл перебора потомков, т.к. искомый элемент найден
						break;
					}
				}
			}
		}
	}
}

window.onload = AttachEvents;
