jQuery(function()
{
    jQuery('#main-program > ul > li')
        .bind('mouseover', function()
        {
            // Add hover to this and remove from siblings
            jQuery(this).addClass('hover');
            jQuery(this).siblings('.hover').removeClass('hover');
            
            // Stop grace period
            jQuery(this).parent().stopTime('hoverable');
        })
        .bind('mouseout', function()
        {
            // Remove hover after a grace period
            jQuery(this).parent()
                .oneTime(1000, 'hoverable', function()
                {
                    jQuery(this).find('> li.hover').removeClass('hover');
                });
        });
    
    jQuery('#controls li')
        .bind('mouseover', function()
        {
            jQuery(this).addClass('hover');
        })
        .bind('mouseout', function()
        {
            jQuery(this).removeClass('hover');
        });
    
    jQuery('#slideshow')
        .bind('mouseover', function()
        {
            jQuery(this).addClass('hover');
        })
        .bind('mouseout', function()
        {
            jQuery(this).removeClass('hover');
        });
    
    jQuery('#controls li a')
        .bind('click', function()
        {
            jQuery('#slideshow').stopTime('slideshow');
            
            var index = jQuery(this).parent().prevAll('li').size();
            
            jQuery(this).parent().siblings('li.current').removeClass('current');
            jQuery(this).parent().addClass('current');
            
            jQuery('#slides').find('li').eq(index)
                .css('display', 'block');
            
            jQuery('#slides').find('li').eq(index).siblings()
                .css('display', 'none');
            
            jQuery(this).trigger('blur');
            
            return false;
        });
    
    jQuery('#slideshow')
        .everyTime(7000, 'slideshow', function()
        {
            if (jQuery(this).hasClass('hover'))
            {
                return;
            }
            
            var index = jQuery(this).find('#controls li.current').prevAll('li').size() + 1;
            
            if (index === jQuery(this).find('#controls li').size())
            {
                index = 0;
            }
            
            jQuery(this).find('#controls li.current').removeClass('current');
            jQuery(this).find('#controls li').eq(index).addClass('current');
            
            jQuery('#slides').find('li[style]').css('display', 'none');
            jQuery('#slides').find('li').eq(index).css('display', 'block');
        });
});
