var OverNav = false;
var NavOutGracePeriod = 500;

function NavOver( Element )
{
	var SubNav = GetNextSibling( Element, 'ul' );
	if( SubNav )
	{
		HideSubNav();
		SubNav.style.display = 'block';
		OverNav = true;
	}
}

function NavOut( Element )
{
	var SubNav = GetNextSibling( Element, 'ul' );
	if( SubNav )
	{
		OverNav = false;
		window.setTimeout( "HideSubNav();", NavOutGracePeriod );
	}
}

function HideSubNav()
{
	if( !OverNav )
	{
		var Nav = document.getElementById( 'Navigation' );
		var SubNav = Nav.getElementsByTagName( 'ul' );
		for( i = 0; i < SubNav.length; i++ )
		{
			if( SubNav[i].style.display != 'none' )
			{
				SubNav[i].style.display='none';
			}
		}
	}
}

function GetNextSibling( Element, Tag )
{
	while( Element != null )
	{
		if( Element.tagName && Element.tagName.toLowerCase() == Tag.toLowerCase() )
		{
			break;
		}

		Element = Element.nextSibling;
	}

	return Element;
}

function GetNextChild( Element, Tag )
{
	while( Element != null )
	{
		if( Element.tagName && Element.tagName.toLowerCase() == Tag.toLowerCase() )
		{
			break;
		}

		Element = Element.nextSibling;
	}

	return Element;
}

function ShowTab( TabElement, ContentTagName, ContentIdentifier )
{
	// update tabs
	var ListElement = TabElement.parentNode;
	var Items = ListElement.getElementsByTagName( 'li' );
	for( var i = 0; i < Items.length; i++ )
	{
		Items[i].className = ( Items[i] == TabElement ? 'Active' : '' );
	}

	// update tab content
	var TabContent = document.getElementById( ContentIdentifier );
	var ListElement = TabContent.parentNode;
	var Items = ListElement.getElementsByTagName( ContentTagName );	
	for( var i = 0; i < Items.length; i++ )
	{
		Items[i].style.display = ( Items[i] == TabContent ? 'block' : 'none' );
	}
}
