<!--
/*
	Name: 		AnimMenu.js
	Ver: 		1.0a
	Author: 	Andrey Korolkov
*/
/* Класс для работы меню */
function AnimMenu () {
// private: {
	var oldOffsetLeft = {}; // Хранит семещения для всех выпадающих меню
	var isStopHideListForIdList = null; // Флаг блокировки для функции HideList
// }
// public: {
	// Показывает выпадающее меню
	this.ShowList = function (id_parent, id_list) {
		var list = document.getElementById(id_list);
		var parent = document.getElementById(id_parent);

		list.style.display = 'block'; // Показываем выпадающее мнею
		list.style.clip = 'rect(0px, auto, 0px, 0px)'; // Сбрасываем размеры

		if (!oldOffsetLeft[id_list]) {
			oldOffsetLeft[id_list] = list.offsetLeft; // Запоминаем старое смещение
		}
		list.style.left = list.offsetLeft + parent.offsetParent.offsetLeft + parent.offsetLeft + 'px'; // Формируем новое смещения для подгонки под основное меню

		// Если в стилях не прописана ширина, то устанавливаем её в соответствии с родителькой
		if (!list.style.width) {
			list.style.width = parent.offsetParent.offsetWidth + 'px'; // Установливаем ширину в соответствии с родительской шириной
		}

		// Запуск процесс анимации для открытия меню
		callback_AnimateOpen(list, 0);
	}

	// Прячет выпадающее меню
	this.HideList = function (id_list) {
		// Прячет меню с задержкеой
		setTimeout(function() {callback_Close(id_list);}, 200);
	}

	// Блокирует работу функции HideList
	this.StopHideList = function (id_list) {
		isStopHideListForIdList = id_list;
//		alert('stop: ' + isStopHideListForIdList)
	}

	// Разблокирует работу функции HideList
	this.RunHideList = function (id_list) {
		isStopHideListForIdList = null;
	}
// }
// private: {
	// Анимация открытия меню
	var callback_AnimateOpen = function (list, p) {
		p += (list.offsetHeight / 100) * 10; // Инкремент

		list.style.clip = 'rect(0px, auto, ' + p + 'px, 0px)'; // Изменяем размер

		// Если инкремент достиг размера слоя, то на выхож
		if (p >= list.offsetHeight) {
			return;
		}

		// Следующий вызов для анимации
		setTimeout(function() {callback_AnimateOpen(list, p);}, 10);
	}

	// Прячет выпадающее меню
	var callback_Close = function (id_list) {
		if (isStopHideListForIdList == id_list) {
			// Делаем повтор вызова
			setTimeout(function() {callback_Close(id_list);}, 200);
			return;
		}

		var list = document.getElementById(id_list);

		list.style.left = oldOffsetLeft[id_list] + 'px'; // Востанавливаем старое смещение
//		oldOffsetLeft[id_list] = 0; // Очищаем
		list.style.display = 'none'; // Прячем выпадающее меню
	}
// }
}
ptr_AnimMenu = new AnimMenu();
//-->