/*********************************************************************************************************
								SUBMEMU
/*********************************************************************************************************/
	
	SUBMEMU_NAME = "SubMemu";
	SUBMEMU_VERSION = "2.0.0";
	SUBMEMU_AUTHOR = "Бутков Антон";
	SUBMEMU_COMPANY = "AmorPro Development Studio";
	SUBMEMU_CONTACT = "amorpro@mail.ru";
	SUBMEMU_DESCRIPTION = "Модуль для создания меню."
/*********************************************************************************************************
								REFERENCES
*********************************************************************************************************/
	//Модуль FRAMEWORK
	Uses( typeof( FRAMEWORK_NAME ), 'Framework' );
	
	//Модуль POSITION
	Uses( typeof( POSITION_NAME ), 'Position' );
	
	/*--------------------------------------------------------------------------------------------
		Функция определяет используется ли переданный модуль
	----------------------------------------------------------------------------------------------*/
	function Uses( type, moduleName ){
	
		if(type == "undefined") {
		
			window.alert( "Отсутствует модуль " + moduleName + ". Модуль " + SUBMEMU_NAME + 
				" (" + SUBMEMU_DESCRIPTION + ") " + " не работает." );			
		}
	}
	
/*********************************************************************************************************
								WORK
/*********************************************************************************************************/	
	var Timer;							//Таймер
	var ActiveMenuCount=0;				//Активных меню
	var ActivemenuId=0;					//Имя активного меню
	var ParentActivemenuId=0;					//Имя активного меню
	var ActiveTimerCount=0;				//Активных меню
	var ActiveMenuCloseTimeDelay = 100	//Задержка времени в миллисекундах, прежде чем скрыть объект

	/*--------------------------------------------------------------------------------------------
		Показать меню
	----------------------------------------------------------------------------------------------*/
	function ShowMenu( parentId, subMenuId ){
		
		//Инициализировать события для меню
		InitializeEvents( parentId, subMenuId )
		
		//Удалить запущенный таймер на скрытие активного меню
		DeleteTimer();
		
		//Если активно другое меню - скрыть его
		if ( subMenuId!=ActivemenuId && ActivemenuId!=0 ) {
		
			HideMenu();
		}
		
		//Сделать текущее меню активным
		Show( subMenuId )
		ActivemenuId=subMenuId;	
		ParentActivemenuId = parentId;
		ActiveMenuCount=1;
		
		//Установить его в позицию справа от родителя
		//SetPositionRightOf( parentId, subMenuId );
		//SetPositionLeftOf( parentId, subMenuId );
		//SetPositionTopOf( parentId, subMenuId );
		SetPositionBottomOf( parentId, subMenuId );
		amElement( parentId ).className="MenuActive";
		
	}
	
	/*--------------------------------------------------------------------------------------------
		Инициализация событий
	----------------------------------------------------------------------------------------------*/
	function InitializeEvents( parentId, subMenuId ){
	
		//Подменю - событие "Мышка рядом"
		if ( EventIsEmpty( amElement( subMenuId ).onmouseover )) {
		
			amElement( subMenuId ).onmouseover = DeleteTimer;
		}
		//Подменю - событие "Мышка уходит"
		if ( EventIsEmpty( amElement( subMenuId ).onmouseout)){
		
			amElement( subMenuId ).onmouseout = CreateTimer;
		}
		
		//Родитель подменю - событие "Мышка уходит"
		if( EventIsEmpty( amElement( parentId ).onmouseout)){
		
			amElement( parentId ).onmouseout = CreateTimer;	
		}
	}
	
	
	/*--------------------------------------------------------------------------------------------
		Скрывает подменю
	----------------------------------------------------------------------------------------------*/
	function HideMenu(){
	
		if (ActiveMenuCount!=0){
		
			Hide(ActivemenuId)
			ActiveMenuCount=0;
			amElement( ParentActivemenuId ).className = "";
			ParentActivemenuId = "";
		}
	}	


	/*--------------------------------------------------------------------------------------------
		Запускает таймер на скрытие подменю
	----------------------------------------------------------------------------------------------*/
	function CreateTimer(){
	
		Timer=setTimeout( 'HideMenu()', ActiveMenuCloseTimeDelay );
	}
	
	
	/*--------------------------------------------------------------------------------------------
		Удаляет таймер
	----------------------------------------------------------------------------------------------*/
	function DeleteTimer(){
	
		if ( ActiveTimerCount != 0 ) {

			clearTimeout(Timer);
		}
		else{
			ActiveTimerCount=1;
		}
	}