
_layerRef = ( ( _IE ) ? 'document.all["@"]':( _NS5 ) ? 'document.getElementById("@")':'findObject("@","document")' );
_layerStyleRef = ( _IE || _NS5 ) ? '.style':'';
_layerVisibleVar = ( _IE || _NS5 ) ? 'visible':'show';
_layerHiddenVar = ( _IE || _NS5 ) ? 'hidden':'hide';

_layerSwitchOnPopupColor = 'white';
_layerSwitchOnPopupBackgroundColor = 'navy';
_layerSwitchOffPopupColor = _layerSwitchOnPopupBackgroundColor;
_layerSwitchOffPopupBackgroundColor = '';

function getLayerRef( pElementId )
{
	return _layerRef.replace( '@', pElementId );
}

function getLayer( pElementId )
{
	return eval( getLayerRef( pElementId ) );
}

function isLayerVisible( pElementId )
{
	var lLayerRef = getLayerRef( pElementId );
	
	return eval( lLayerRef + _layerStyleRef + '.visibility == _layerVisibleVar' );
}

function showLayer( pElementId )
{
	var lLayerRef = getLayerRef( pElementId );
	
	eval( lLayerRef + _layerStyleRef + '.visibility = _layerVisibleVar' );
}

function hideLayer( pElementId )
{
	var lLayerRef = getLayerRef( pElementId );
	
	eval( lLayerRef + _layerStyleRef + '.visibility = _layerHiddenVar');
}

function setLayerPos( pElementId, pLeft, pTop )
{
	var lLayer = getLayer( pElementId );
	
	if ( _IE || _NS5 )
	{
		lLayer.style.left = pLeft;
		lLayer.style.top = pTop;
	}
	else
	{
		lLayer.pageX = pLeft;
		lLayer.pageY = pTop;
	}
}

function getLeft( pElementId )
{
	var lLayer = getLayer( pElementId );
	var lLeft;
	
	if ( _IE || _NS5 )
		lLeft = lLayer.offsetLeft;
	else
		lLeft = lLayer.pageX;
	
	return lLeft;
}

function getTop( pElementId )
{
	var lLayer = getLayer( pElementId );
	var lTop;
	
	if ( _IE || _NS5 )
		lTop = lLayer.offsetTop;
	else
		lTop = lLayer.pageY;
	
	return lTop;
}

function getHeight( pElementId )
{
	var lLayer = getLayer( pElementId );
	var lHeight;
	
	if ( _IE )
		lHeight = lLayer.clientHeight;
	else
	{
		if ( _NS )
		{
			if ( _ver < 5 )
				lHeight = lLayer.clip.height;
			else
				lHeight = lLayer.offsetHeight;
		}
	}
	
	return lHeight;
}

function getWidth( pElementId )
{
	var lLayer = getLayer( pElementId );
	var lWidth;
	
	if ( _IE )
		lWidth = lLayer.clientWidth;
	else
	{
		if ( _NS )
		{
			if ( _ver < 5 )
				lWidth = lLayer.clip.width;
			else
				lWidth = lLayer.offsetWidth;
		}
	}
	
	return lWidth;
}

function showPopup( pParentId, pChildId, pLeft, pTop, pOffsetHeight )
{
	var lLeft;
	var lTop;
	var lOffsetHeight;
	
	if ( pParentId )
	{
		lLeft = getLeft( pParentId );
		lTop = getTop( pParentId );
		lOffsetHeight = getHeight( pParentId );
	}
	else
	{
		lLeft = pLeft;
		lTop = pTop;
		lOffsetHeight = pOffsetHeight;
	}
	
	setLayerPos( pChildId, lLeft, lTop + lOffsetHeight );
	showLayer( pChildId );
	switchOnPopup( pParentId );
}

function hidePopup( pParentId, pChildId, pEvent )
{
	var lParentLeft;
	var lParentTop;
	var lParentHeight;
	var lParentWidth;
	
	var lChildLeft;
	var lChildTop;
	var lChildWidth;
	var lChildHeight;
	
	if ( pParentId )
	{
		lParentLeft = getLeft( pParentId );
		lParentTop = getTop( pParentId );
		lParentHeight = getHeight( pParentId );
		lParentWidth = getWidth( pParentId );
	}
	else
	{
		lParentLeft = 0;
		lParentTop = 0;
		lParentHeight = 0;
		lParentWidth = 0;
	}
	
	lChildLeft = getLeft( pChildId );
	lChildTop = getTop( pChildId );
	lChildWidth = lParentLeft + getWidth( pChildId );
	lChildHeight = lParentTop + lParentHeight + getHeight( pChildId );
	
	if ( isAboveLayer( lChildLeft, lChildTop, lChildWidth, lChildHeight, pEvent ) == false )
	{
		hideLayer( pChildId );
		switchOffPopup( pParentId );
	}
}

function isAboveLayer( pLeft, pTop, pWidth, pHeight, pEvent )
{
	var lRet;
	var lX;
	var lY;
	
	if ( _IE )
	{
		lX = window.event.x;
		lY = window.event.y;
	}
	else
	{
		lX = pEvent.pageX + window.pageXOffset;
		lY = pEvent.pageY + window.pageYOffset;
	}
	
	lRet = ( lX > pLeft && lX < pWidth && lY > pTop && lY < pHeight );
	
	return lRet;
}

function switchOnPopup( pElementId )
{
	switchPopup( pElementId, _layerSwitchOnPopupColor, _layerSwitchOnPopupBackgroundColor );
}

function switchOffPopup( pElementId )
{
	switchPopup( pElementId, _layerSwitchOffPopupColor, _layerSwitchOffPopupBackgroundColor );
}

function switchPopup( pElementId, pColor, pBackgroundColor )
{
	var lElement;
	
	if ( _IE )
	{
		lElement = getHTMLElement( pElementId );
		if ( lElement != null )
			lElement.style.backgroundColor = pBackgroundColor;
		
		lElement = getHTMLElement( pElementId + 'Anchor' );
		if ( lElement != null )
			lElement.style.color = pColor;
	}
}
