(function($){ 
     $.fn.extend({  
         accordion2: function() {       
            return this.each(function() {
                if($(this).data('accordiated'))
                    return false;                                    
                $.each($(this).find('ul, li>ul'), function(){
                    $(this).data('accordiated', true);
                    $(this).hide();
                });
                $.each($(this).find('a:not(.foo)'), function(){
                    $(this).click(function(e){
                        activate(e.target);
                        return void(0);
                    });
                });
                
                var active = false;
                if(location.hash)
                    active = $(this).find('a[name=' + location.hash + ']')[0];
                else if($(this).find('li.selected'))
                    active = $(this).find('li.selected a')[0]; 
                
                if(active){
                    activate(active, 'toggle','parents');
                    $(active).parents().show();
                }
                
                function activate(el,effect,parents){
                    $(el)[(parents || 'parent')]('li').toggleClass('active').siblings().removeClass('active').children('ul, div').slideUp('fast');
                    $(el).siblings('ul, div')[(effect || 'slideToggle')]((!effect)?'fast':null);
                }
                
            });
        } 
    }); 
})(jQuery);
