/***************************************************************************************************
* 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 ( li )
		{
			li.childElements( 'a' ).each( function( item )
			{
				if( 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( ){
						
						if( '' != nav.current )
						{
							clearTimeout( nav.timeout );
							nav.hide( nav.current );
						}
					});
				}
			});
		});
		
		nav.id = id;
	},
	
	mouseover : function( item, menu )
	{
		menu.style.top     = ( item.cumulativeOffset( ).top + item.getHeight( ) ) + 'px';
		menu.style.left    = ( item.cumulativeOffset( ).left ) - 1 + 'px';
		
		if( nav.current != '' )
		{
			$( nav.current ).style.display = 'none';
		}
		
		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';
	},
	
	id      : '',
	timeout : '',
	current : ''
}
