(function($){
	
	$.fn.extend({ 
		accordion: function(options) { 
 
            var defaults = {
					title_tag:				"h3",			//tag titolazione
					content_tag:			"div",			//tag contenuto
					click_box:				"span",			//tag click
					activeClass:			"active",		//classe attiva
					excludeContentClass: 	"close"			//classe da escludere
            }; 
         
            var options = $.extend(defaults, options); 
	
            return this.each(function() { 
                       
                obj = $(this);
				
                //Create references to the options 
                var title_tag = options.title_tag;
                var content_tag = options.content_tag;
                var activeClass = options.activeClass;
				var excludeContentClass = options.excludeContentClass;
				var click_box = options.click_box;
				
				//getTitles
				titles = $("#"+this.id+" > "+title_tag);
				
				for(var i=0; i<titles.length; i++){
					$(titles[i]).attr("id", this.id+"_title_"+i);
					$("#"+titles[i].id+" a").attr("id", this.id+"_link_"+i);
					$("#"+titles[i].id+" ~ "+content_tag+":not("+content_tag+"."+excludeContentClass+")").attr("id", this.id+"_content_"+i);
					if( $("#"+titles[i].id+" ~ "+content_tag+":not("+content_tag+"."+excludeContentClass+")").length == 0 ){
						$("#"+titles[i].id+" "+click_box).remove();
					}
					if(i!=0){
						$("#"+titles[i].id+" ~ "+content_tag+":not("+content_tag+"."+excludeContentClass+")").hide();
						$("#"+titles[i].id+" a").html("+");
						$("#"+titles[i].id+" a").removeClass(activeClass);
						$("#"+titles[i].id+" a").bind("click", function(event){
							expand(event.target.id);
							this.blur();
						});
					}else{
						$("#"+titles[i].id+" a").html("-");
						$("#"+titles[i].id+" a").addClass(activeClass);
						$("#"+titles[i].id+" a").bind("click", function(event){
							collapse(event.target.id);
							this.blur();
						});
					}
				}
				
				function collapse(val){
					$("#"+val).html("+");
					$("#"+val).removeClass(activeClass);
					$("#"+val).unbind("click");
					$("#"+val).bind("click", function(event){
						expand(event.target.id);
						this.blur();
					});
					val=val.replace(/link/,"content");
					$("#"+val).slideUp("slow");
				}
				
				function expand(val){
					$("#"+val).html("-");
					$("#"+val).addClass(activeClass);
					$("#"+val).unbind("click");
					$("#"+val).bind("click", function(event){
						collapse(event.target.id);
						this.blur();
					});
					val=val.replace(/link/,"title");
					titles = $("#"+$(obj).attr("id")+" > "+title_tag+":not(\"[id='" + val + "']\")");
					$(titles).each(function(i, item){
						if($("#"+$(this).attr("id").toString().replace(/title/,"content")).is(":visible")){
							$("#"+$(this).attr("id").toString().replace(/title/,"link")).click();
						}
					});
					val=val.replace(/title/,"content");
					$("#"+val).slideDown("slow");
				}
			}); 
        } 
    }); 
})(jQuery);