jQuery(function()
{
    // Changable Settings
    var fadeTime = 300;
    var fadeDelay = 300;
    var shortFadeDelay = 100;
    var ulId = 'hover-nav';
    
    // Internal use variables
    var currentPageId = "";
    var currentMenuItem = "";
    var timeOut;
    
    // Set mouse events for each menu item with a sub-menu
    jQuery('#nav ul > li').each(function(element)
    {
        if(jQuery(this).parent().attr('id') == ulId)
        {
            jQuery(this).hover(
                function() { 
                    mouseOver(jQuery(this));
                },
                function() {
                    mouseOut(jQuery(this));
                }
            );
        }
    });
    
    // Display the current page links if there are any
    jQuery('#nav ul > li').each(function(element)
    {
        if(currentPageId == "" && (jQuery(this).hasClass("current_page_item") || jQuery(this).hasClass("current_page_ancestor")))
        {
            currentPageId = jQuery(this).attr('id');
            currentMenuItem = jQuery(this);
            fadeIn(jQuery("#"+currentPageId));
        }
    });

    function mouseOver(obj)
    {
        window.clearTimeout(timeOut);
        
        if(currentMenuItem.attr('id') != jQuery(obj).attr('id'))
        {
            fadeOut(currentMenuItem);
            jQuery(currentMenuItem).find('a:first').removeClass('current_page_item');
            jQuery(currentMenuItem).find('a:first').removeClass('current_page_ancestor');
        }
        
        if(currentPageId != jQuery(obj).attr('id'))
        {
            fadeOut(jQuery("#"+currentPageId));
            jQuery("#"+currentPageId).find('a:first').removeClass('current_page_item');
            jQuery("#"+currentPageId).find('a:first').removeClass('current_page_ancestor');
        }
        
        currentMenuItem = obj;
        
        jQuery(obj).find('a:first').addClass('current_page_item');

        fadeIn(obj);
    }
    
    function mouseOut(obj)
    {
        if(jQuery(obj).attr('id') != currentPageId)
        {
            if(jQuery(obj).hasClass('page_folder'))
            {
                delayTime = fadeDelay;
            }
            else
            {
                delayTime = shortFadeDelay;
            }
            
            timeOut = window.setTimeout(function() {
                doFadeOut(obj);
            },delayTime); 
        }
    }
    
    
    function doFadeOut(obj)
    {
        fadeOut(obj);
        currentMenuItem = jQuery("#"+currentPageId);
        fadeIn(jQuery("#"+currentPageId));
        
        jQuery("#"+currentPageId).find('a:first').addClass('current_page_item');
        jQuery(obj).find('a:first').removeClass('current_page_item');
        jQuery(obj).find('a:first').removeClass('current_page_ancestor');
    }
    
    
    function fadeIn(obj)
    {
        jQuery(obj).find('ul').fadeIn(fadeTime);
    }
    
    function fadeOut(obj)
    {
        jQuery(obj).find('ul').fadeOut(fadeTime);
    }
});

