/***************************************************************************************************
* Name:          nav.js
* Author:        Kyle Brickman
* Description:   Handles dropdown navigation
* Created:       10 September 2009
* Prerequisites: Prototype     (1.6.0.3+)
*                Scriptaculous (1.8.2+)
***************************************************************************************************/

var nav = 
{
	init : function( id )
	{
		$( id ).childElements( ).each( function ( item )
		{
			if( item.href && item.rel && $( item.rel ))
			{
				item.observe( 'mouseover', function( ){ nav.mouseover( item, $( item.rel )) });
				item.observe( 'mouseout',  function( ){ nav.mouseout(  item, $( item.rel )) });
				
				$( item.rel ).childElements( ).each( function( relItem )
				{
					relItem.observe( 'mouseover', function( ){ nav.menuover(                     ) });
					relItem.observe( 'mouseout',  function( ){ nav.mouseout(  item, $( item.rel )) });
				});
			}
			else if( item.href )
			{
				item.observe( 'mouseover', function( ){
					item.style.color = '#333';
					
					if( '' != nav.current )
					{
						clearTimeout( nav.timeout );
						nav.hide( nav.current );
					}
				});
				item.observe( 'mouseout',  function( ){	item.style.color = '#000'; });
			}
		});
		
		nav.id = id;
	},
	
	mouseover : function( item, menu )
	{
		menu.style.top     = ( item.cumulativeOffset( ).top + item.getHeight( ) + 6 ) + 'px';
		menu.style.left    = ( item.cumulativeOffset( ).left - 12 ) + 'px';
		
		if( nav.current != '' )
		{
			$( nav.current ).style.display = 'none';
			$( nav.id ).childElements( ).each( function ( item )
			{
				if( item.href && item.rel && nav.current == item.rel )
				{
					item.style.color = '#000';
				}
			});
		}
		
		item.style.color = '#333';	
		nav.current = menu.id;
		clearTimeout( nav.timeout );
		
		menu.style.display = '';
	},
	
	mouseout : function( item, menu )
	{
		clearTimeout( nav.timeout );
		nav.timeout = setTimeout( 'nav.hide( \'' + menu.id + '\' )', 200 );
	},
	
	menuover : function( )
	{
		clearTimeout( nav.timeout );
	},
	
	hide : function( menu )
	{
		$( menu ).style.display = 'none';
		
		$( nav.id ).childElements( ).each( function ( item )
		{
			if( item.href && item.rel )
			{
				item.style.color = '#000';
			}
		});
	},
	
	id      : '',
	timeout : '',
	current : ''
}