

function BBSlider( target ) {

	slider = (typeof(target)!="undefined") ? jQuery( target ) : jQuery(".BBSlider");

	slider.each( function(i,el) {
	
		var currentSlider	= jQuery(this),
			defaults		= {
								index: 		0,			// Element ouvert a l init
								callback: 	null,		// Fonction a executer apres l ouverture d un element
								menu: 		false,		// Liaison du slider avec un menu
								mainCont:	"dl",		// Element conteneur des differents menus et items
								clickElt:	"dt",		// Element a cliquer pour derouler le slider
								slideElt:	"dd"		// Element qui se deroule
							},
			params			= jQuery.extend({}, defaults, eval( "(" + currentSlider.attr("data-BBParams") + ")") ),
			menuItems		= jQuery(params.clickElt, currentSlider).not( jQuery(params.mainCont+" "+params.clickElt, currentSlider) ),
			items			= jQuery(params.slideElt, currentSlider).not( jQuery(params.mainCont+" "+params.slideElt, currentSlider) );
		
		items.css({display: "none", overflow: "hidden"});
		menuItems.each( function(j,elt) {
		
			var currentElt		= jQuery(this),
				itemDefaults	= {
									callback:				null,
									callbackParams:			[],
									slideCallback:			null,
									slideCallbackParams:	[]
								},
				itemParams		= jQuery.extend({}, ( jQuery.extend({}, itemDefaults, eval( "(" + currentElt.attr("data-BBParams") + ")") ) ), eval( "(" + items.eq(j).attr("data-BBParams") + ")") );
		
			if( currentElt.hasClass("selected"))
				currentElt.data("selected", true);
				
			currentElt.bind("click", function(e) {
			
					// Callback globale
					if( jQuery.isFunction( params.callback ) ) params.callback.call( currentElt, j );
			
					// Callback au click
					if( jQuery.isFunction( itemParams.callback ) ) itemParams.callback.apply( currentElt, itemParams.callbackParams );
			
					// Repli de l element ouvert
					jQuery( params.clickElt + ".selected", currentSlider).not( jQuery(params.mainCont+" "+params.clickElt, currentSlider) )
						.data("selected", false).removeClass("selected")
						.next( params.slideElt ).stop().slideUp();
					
					currentElt.data("selected", true).addClass("selected")
						.next( params.slideElt ).stop().slideDown( function() {
							if( jQuery.isFunction( itemParams.slideCallback ) ) itemParams.slideCallback.apply( currentElt, itemParams.slideCallbackParams );
						});
					
			});
			
		});
		
		menuItems.eq( params.index ).trigger("click");
	
	});

}

function test() {alert("test");}
