(function($)
{   
	$.fn.extend
	(
		{    
			MagicAccordion: function(options) 
			{  
				var defaults = 
				{  
					contentSelector: null,
					toggleSelectorOnCssClass: 'on',
					slideSpeedMilliseconds: 1000
				}; 
			
				var options =  $.extend(defaults, options);  

				return this.each
				(
					function() 
					{  
						if(options.contentSelector)
						{
							var t = jQuery(this);
							var c = getContentElement(t);
											
							if(c.length > 0)
							{
							    c.hide();
							
							    t.click
							    (
								    function()
								    {
								        doToggle(t, c);
								    }
							    );
							    
							    if(t.hasClass(options.toggleSelectorOnCssClass))
							    {
							        t.removeClass(options.toggleSelectorOnCssClass)
							        doToggle(t, c);
							    }
						    }
						}
					}
				);  
				
				function getContentElement(toggle)
				{
				    var content = null;
					var t = jQuery(toggle);
							
					if(t.siblings(options.contentSelector).length > 0)
					    content = t.next(options.contentSelector);
					else if(t.parent().find(options.contentSelector).length > 0)
					    content = t.parent().find(options.contentSelector);
					else
					    content = t.closest(options.contentSelector);
					    
				    return content;
				}
				
				function doToggle(toggle, content)
				{
				    var t = jQuery(toggle);
				    var c = jQuery(content);
									    
				    if(t.hasClass(options.toggleSelectorOnCssClass))
				    {
				        t.removeClass(options.toggleSelectorOnCssClass);
				        c.slideUp(options.slideSpeedMilliseconds);    
				    }
				    else
			        {
			            t.addClass(options.toggleSelectorOnCssClass);
			            c.slideDown(options.slideSpeedMilliseconds);    
			        }
				}
			}  
		}
	);  	      
}
)(jQuery);  
