
// pragma page ""
// pragma page "Menu::Declarations::Globals"
////////////////////////////////////////////////////////////////
//
// Global variable declarations
//
////////////////////////////////////////////////////////////////
var gbInitMenu			= false;
var gbTimer				= false;
var gsLayerRef			= '';
var gsStyleRef			= '';
var gsVisibleRef		= '';
var gsMenuHistory		= new Array();

var gsMenuBackground	= "#000000";

var vMenuHistoryImg 	= "../../graphics/shared/MenuItemHistoryHover.jpg";
var vMenuHistoryImgDflt = "../../graphics/shared/MenuItemHistory.jpg";
var vMenuHistoryImgSel 	= "../../graphics/shared/MenuItemHistorySel.jpg";

var gTimeOut			= 1000;
var gTimerId			= null;


// pragma page "Menu::Object::MenuItem"
////////////////////////////////////////////////////////////////
//
// Constructor for MenuItem objects.
//
////////////////////////////////////////////////////////////////
function MenuItem( sDescription , sLink , vLevel )
{
	//
	// Init object
	//
	this.msDescription	= sDescription;
	this.msLink			= sLink;
	this.mLevel			= vLevel;
}



// pragma page "Menu::Function::BuildMenuArrays"
////////////////////////////////////////////////////////////////
//
// Create new objects
//
////////////////////////////////////////////////////////////////
function BuildMenuArrays()
{
	//
	// Products menu
	//
	gsMenuHistory[ gsMenuHistory.length ] 	= new MenuItem( "timeline"	, "../../html/history/index.html"	, 1 );
	gsMenuHistory[ gsMenuHistory.length ] 	= new MenuItem( "about"		, "../../html/about/index.html"	, 1 );
}


// pragma page "Menu::Function::GetMenuInfo"
////////////////////////////////////////////////////////////////
//
// Gets menu info
//
////////////////////////////////////////////////////////////////
function GetMenuInfo( sMenuCategory , sArray )
{
	var sMenu	= '';
	var sLevel	= '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
	var iMenuWidth = 95;

	sMenu		+= '			<table border="0" cellpadding="3" cellspacing="0" bgcolor="' + gsMenuBackground + '" width="'+ (iMenuWidth -2) +'" class="tDropDown" style="border-left: 1px solid #000000; border-right: 1px solid #000000; border-bottom: 1px solid #000000;">';

	for ( var i = 0; i < sArray.length; i++ )
	{
		if ( sArray[ i ].mLevel == 2 )
		{
			sMenu	+= '			<tr id="tr' + sMenuCategory + i + '" class="dyUselMenu" onMouseOver="Select( \'tr' + sMenuCategory + i + '\' , \'Menu\' ); StopTime();" onMouseOut="Unselect( \'tr' + sMenuCategory + i + '\' , \'Menu\' ); StartTime();" onClick="location.href=\'' + sArray[ i ].msLink + '\'"><td class="gbMenuItem" height="18" style="cursor: pointer;">' + sLevel + sArray[ i ].msDescription + '</td></tr>';
		}
		else
		{
			sMenu	+= '			<tr id="tr' + sMenuCategory + i + '" class="dyUselMenu" onMouseOver="Select( \'tr' + sMenuCategory + i + '\' , \'Menu\' ); StopTime();" onMouseOut="Unselect( \'tr' + sMenuCategory + i + '\' , \'Menu\' ); StartTime();" onClick="location.href=\'' + sArray[ i ].msLink + '\'"><td class="gbMenuItem" height="18" style="cursor: pointer;">' + sArray[ i ].msDescription + '</td></tr>';
		}
	}
	sMenu		+= '			</table>';

	//
	// Return correct menu
	//
	return( sMenu );
}


// pragma page "Menu::Function::HideAll"
////////////////////////////////////////////////////////////////
//
// Hides all visible layers
//
////////////////////////////////////////////////////////////////
function HideAll()
{
	HideLayer( 'mnuHistory'		);

	imgChg( 'imgHistory' 		, vMenuHistoryImgDflt 		);
		
}


// pragma page "Menu::Function::HideLayer"
////////////////////////////////////////////////////////////////
//
// Hides inputted visible layer
//
////////////////////////////////////////////////////////////////
function HideLayer( sLayerName )
{
	//
	// Ensure initialization successful
	//
	if ( gbInitMenu )
	{
		document.getElementById( sLayerName ).style.visibility = "hidden";
	}
	else
	{
		return;
	}
}


// pragma page "Menu::Function::InitializeMenus"
////////////////////////////////////////////////////////////////
//
// Initialize menus and variables
//
////////////////////////////////////////////////////////////////
function InitializeMenus()
{
	gsLayerRef		= "document.getElementByID";
	gsStyleRef		= ".style";
	gsVisibleRef	= "visible";
	gbInitMenu 		= true;
}


// pragma page "Menu::Function::Select"
////////////////////////////////////////////////////////////////
//
// Highlights inputted row/cell
//
////////////////////////////////////////////////////////////////
function Select( sRowName , sStyle )
{
	//
	// Ensure initialization successful
	//
	if ( gbInitMenu )
	{
		document.getElementById( sRowName ).className = "dySel" + sStyle;
	}
	else
	{
		return;
	}
}


// pragma page "Menu::Function::findPoxX and findPosY"
////////////////////////////////////////////////////////////////
//
// Helps to find an elements x and y coords when positioning
// divs or whatever using relative positioning (like when your 
// page is centered).
//
////////////////////////////////////////////////////////////////
function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }


// pragma page "Menu::Function::ShowLayer"
////////////////////////////////////////////////////////////////
//
// Displays inputted hidden layer
//
////////////////////////////////////////////////////////////////
function ShowLayer(
  sLayerName
 ,menuItem
 ,sImgLoc
 ,sImgName
)
{
	//
	// Ensure initialization successful
	//
	if ( gbInitMenu )
	{

	    // Added next line for centered page layout...
	    document.getElementById( sLayerName ).style.left = (findPosX(menuItem)+3) + 'px';
	    document.getElementById( sLayerName ).style.top = (findPosY(menuItem)+25) + 'px';
		document.getElementById( sLayerName ).style.visibility = "visible";

		imgChg( sImgLoc , sImgName );
	}
	else
	{
		return;
	}
}


// pragma page "Menu::Function::SortByDescription"
////////////////////////////////////////////////////////////////
//
// Function that sorts site index objects by description.
//
////////////////////////////////////////////////////////////////
function SortByDescription( a , b )
{
	if ( a.msDescription < b.msDescription )
	{
		return -1;
	}
	else
	if ( a.msDescription > b.msDescription )
	{
		return 1;
	}
	else
	{
		if ( a.msCategory < b.msCategory )
		{
			return -1;
		}
		else
		if ( a.msCategory > b.msCategory )
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}
}


// pragma page "Menu::Function::StartTime"
////////////////////////////////////////////////////////////////
//
// Starts timeout timer
//
////////////////////////////////////////////////////////////////
function StartTime()
{
	//
	// If has timed out
	//
	if ( gbTimer == false )
	{
		gTimerId	= setTimeout( "HideAll()" , gTimeOut );
		gbTimer		= true;
	}
}


// pragma page "Menu::Function::StopTime"
////////////////////////////////////////////////////////////////
//
// Stops timeout timer
//
////////////////////////////////////////////////////////////////
function StopTime()
{
	//
	// If timer is active
	//
	if ( gbTimer )
	{
		clearTimeout( gTimerId );
		gTimerId	= null;
		gbTimer		= false;
	}
}


// pragma page "Menu::Function::Unselect"
////////////////////////////////////////////////////////////////
//
// Unhighlights inputted row/cell
//
////////////////////////////////////////////////////////////////
function Unselect( sRowName , sStyle )
{
	//
	// Ensure initialization successful
	//
	if ( gbInitMenu )
	{
		document.getElementById( sRowName ).className = "dyUsel" + sStyle;
	}
	else
	{
		return;
	}
}


// pragma page "Menu::Execute"
////////////////////////////////////////////////////////////////
//
// Execute the following code
//
////////////////////////////////////////////////////////////////
BuildMenuArrays();
