/*********************************************************************************************************
								POSITION
*********************************************************************************************************/
	
	POSITION_NAME = "Position";
	POSITION_VERSION = "1.05.0";
	POSITION_AUTHOR = "Бутков Антон";
	POSITION_COMPANY = "AmorPro Development";
	POSITION_CONTACT = "amorpro@mail.ru";
	POSITION_DESCRIPTION =	"Модуль для работы с позиционированием элементов.";
/*********************************************************************************************************
								REFERENCES
*********************************************************************************************************/
	//Модуль FRAMEWORK
	Uses(typeof(FRAMEWORK_NAME), 'Framework');

	
	/*--------------------------------------------------------------------------------------------
		Функция определяет используется ли переданный модуль
	----------------------------------------------------------------------------------------------*/
	function Uses( type, moduleName ){
		
		if ( type == "undefined" ){
		
			window.alert( "Отсутствует модуль " + moduleName + ". Модуль " + POSITION_NAME + 
				" (" + POSITION_DESCRIPTION + ") " + " не работает." );			
		}
	}
	
	
/*********************************************************************************************************
								WORKS
*********************************************************************************************************/
		
	/*--------------------------------------------------------------------------------------------
		Устанавливает элемент id в позицию [top, left]
	----------------------------------------------------------------------------------------------*/
	function SetPosition( id, left, top ){
	
		SetTop( id, top );
		SetLeft( id, left );
	}

	
	/*--------------------------------------------------------------------------------------------
		Устанавливает подменю в позицию привязанную к правому
		краю родительского элемента
	----------------------------------------------------------------------------------------------*/
	function SetPositionRightOf(parentId, Id)
	{
		//Определяем в какой позиции будет отображаться меню
		var menuLeft = GetLeft(parentId) + GetWidth(parentId);
		var menuTop = GetTop(parentId);
		
		//Помещаем меню на эту позицию
		SetPosition(Id, menuLeft, menuTop );
	}	
	
	/*--------------------------------------------------------------------------------------------
		Устанавливает подменю в позицию привязанную к правому
		краю родительского элемента
	----------------------------------------------------------------------------------------------*/
	function SetPositionLeftOf(parentId, Id)
	{
		//Определяем в какой позиции будет отображаться меню
		var menuLeft = GetLeft(parentId) - GetWidth(Id);
		var menuTop = GetTop(parentId);
		
		//Помещаем меню на эту позицию
		SetPosition(Id, menuLeft, menuTop );
	}	
	

	/*--------------------------------------------------------------------------------------------
		Устанавливает подменю в позицию привязанную к правому
		краю родительского элемента
	----------------------------------------------------------------------------------------------*/
	function SetPositionTopOf(parentId, Id)
	{
		//Определяем в какой позиции будет отображаться меню
		var menuLeft = GetLeft(parentId) ;
		var menuTop = GetTop(parentId) - GetHeight(Id);
		
		//Помещаем меню на эту позицию
		SetPosition(Id, menuLeft, menuTop );
	}	
	

	/*--------------------------------------------------------------------------------------------
		Устанавливает подменю в позицию привязанную к правому
		краю родительского элемента
	----------------------------------------------------------------------------------------------*/
	function SetPositionBottomOf(parentId, Id)
	{
		//Определяем в какой позиции будет отображаться меню
		var menuLeft = GetLeft(parentId) ;
		var menuTop = GetTop(parentId) + GetHeight(parentId) + 1;
		
		//Помещаем меню на эту позицию
		SetPosition(Id, menuLeft, menuTop );
	}	
	/*--------------------------------------------------------------------------------------------
		Устанавливает отступ слева для элемента id
	----------------------------------------------------------------------------------------------*/
	function SetLeft( id, left ){
	
		//Элемент должен быть абсолютно позиционируемым
		SetAbsolutePosition( id )	
		
		amElement(id).style.left = left + 'px';
	}


	/*--------------------------------------------------------------------------------------------
		Устанавливает отступ сверху для элемента id
	----------------------------------------------------------------------------------------------*/
	function SetTop( id, top ){
	
		//Элемент должен быть абсолютно позиционируемым
		SetAbsolutePosition( id )	
		
		amElement( id ).style.top = top + 'px';
	}

	
	/*--------------------------------------------------------------------------------------------
		Устанавливает отступ справа для элемента id
	----------------------------------------------------------------------------------------------*/	
	function SetRight( id, right ){
	
		//Элемент должен быть абсолютно позиционируемым
		SetAbsolutePosition( id )	
		
		amElement( id ).style.right = right;
	}


	/*--------------------------------------------------------------------------------------------
		Возвращает левую позицию элемента id
	----------------------------------------------------------------------------------------------*/	
	function GetLeft( id ){
	
		return CalcAbsLeft( id );
	}
	

	/*--------------------------------------------------------------------------------------------
		Возвращяет отступ сверху для элемента id
	----------------------------------------------------------------------------------------------*/
	function GetTop( id ){
	
		return CalcAbsTop( id );
	}

	
	/*--------------------------------------------------------------------------------------------
		Возвращяет высоту элемента id
	----------------------------------------------------------------------------------------------*/
	function GetHeight(id){
	
		return parseInt( amElement( id ).offsetHeight );
	}	
	

	/*--------------------------------------------------------------------------------------------
		Возвращяет ширину элемента id
	----------------------------------------------------------------------------------------------*/
	function GetWidth( id ){
	
		return parseInt( amElement( id ).offsetWidth );
	}


	/*--------------------------------------------------------------------------------------------
		Абсолютно позиционирует элемент с идентификатором id
	----------------------------------------------------------------------------------------------*/		
	function SetAbsolutePosition( id ){
	
		if ( amElement( id ).style.position  != "absolute" ){
		
			amElement( id ).style.position  = "absolute";	
			amElement( id ).style.zIndex = "500";
		}
	}


	/*--------------------------------------------------------------------------------------------
		Возвращяет высчитанный отступ слева для элемента id
	----------------------------------------------------------------------------------------------*/
	function CalcAbsLeft( id )
	{
	  obj = amElement(id);
	  var l = 0 ;
	  for( ; obj != null ; obj = obj.offsetParent ) l += obj.offsetLeft ;
	  return l ;
	}
	

	/*--------------------------------------------------------------------------------------------
		Возвращяет высчитанный отступ сверху для элемента id
	----------------------------------------------------------------------------------------------*/
	function CalcAbsTop(id )
	{
	  obj = amElement(id);
	  var l = 0 ;
	  for( ; obj != null ; obj = obj.offsetParent ) l += obj.offsetTop;
	  return l ;
	}
