/**
*	@name							Accordion
*	@descripton						This Jquery plugin makes creating accordions pain free
*	@version						1.4
*	@requires						Jquery 1.2.6+
*
*	@author							Jan Jarfalk
*	@author-email					jan.jarfalk@unwrongest.com
*	@author-website					http://www.unwrongest.com
*
*	@licens							MIT License - http://www.opensource.org/licenses/mit-license.php
*/

(function(jQuery){
     jQuery.fn.extend({
         accordion: function() {       
            return this.each(function() {
            	
            	var $ul = $(this);
            	
				if($ul.data('accordiated'))
					return false;
													
				$.each($ul.find('ul, li>div'), function(){
					$(this).data('accordiated', true);
					$(this).hide();
				});
				
				$.each($ul.find('a'), function(){
					$(this).click(function(e){
						activate(this, 'slideToggle');
						return void(0);
					});
					
					$(this).bind('activate-node', function(){
						$ul.find('ul, div').not($(this).parents()).not($(this).siblings()).slideUp('fast');
						activate(this,'slideDown');
					});
				});
				
				var active = (location.hash)?$ul.find('a[href=' + location.hash + ']')[0]:$ul.find('li.current a')[0];
				
				if(active){
					activate(active, 'show');
				}
				
				function activate(el,effect){
					
					$(el).parent('li').siblings().removeClass('active').children('ul, div').slideUp('fast');
					
					$(el).siblings('ul, div')[(effect || 'slideToggle')](((!effect)?'fast':false),function(){
						
						if($(el).siblings('ul, div').is(':visible')){
							$(el).parents('li').not($ul.parents()).addClass('active');
						} else {
							$(el).parent('li').removeClass('active');
						}
						
						if(effect == 'show'){
							$(el).parents('li').not($ul.parents()).addClass('active');
						}
						
					});
					
					$(el).parents('li').addClass('active');
					$(el).parents().show();
					
				}
				
            });
        }
    }); 
})(jQuery);
