;(function($){

    function getIndicatorPositionTop($listItem)
    {
        return $listItem.offset().top - $('#sidebar').offset().top;
    }

    $(document).ready(function(){

        // add additional classes to avoid css3 :last-child and :first-child
        $('ul').find('li:first').addClass('first');
        $('ul').find('li:last').addClass('last');

        // add .hover to list items containing a link (to fix ie li:hover)
        $('ul').find('li:has(a)').hover(function(){
            $(this).addClass('hover');
        }, function(){
            $(this).removeClass('hover');
        });

        if ($.browser.msie && $.browser.version <= 6) {
            return;
        }

        // navigation
        $('#navigation li').css({ opacity: .7 });
        $('#navigation li.current_page_item,#navigation > li.current_page_parent').css({ opacity: 1 });

        var $activeIndicator = $('#indicator').show();

        var $activeLink = $('#navigation li.current_page_item');
        if ($activeLink.length == 0) {
            $activeLink = $('#navigation li:first');
        }
        var activeIndicatorDefaultPosition = getIndicatorPositionTop($activeLink);

        $activeIndicator.css({top : activeIndicatorDefaultPosition});

        $('#navigation li')
            .each ( function(){

                var $self = $(this);

                $self.hover(function(){

                    $activeIndicator.stop().animate({top : getIndicatorPositionTop($self)}, 450);
                    $self.stop().animate({ opacity: 1 }, 150);

                }, function(){
                    if ( !($self.hasClass('current_page_item') || $self.hasClass('current_page_parent')) ) {

                        /*
                        Slideout menu
                        var $ul = $self.find('ul');
                        if ( $ul.length > 0 ) {
                            $ul.stop().animate({height: 0}, 300);
                        }
                        */
                        $self.stop().animate({ opacity: .7 }, 300);
                        $activeIndicator.stop().animate({top : activeIndicatorDefaultPosition}, 450);
                    }
                });
            });
    });

})(jQuery);