/**
 *  
 *  jquery.simplefade.2.1.js
 *  
 *  date : 29/01/2009
 *  auteur : Laurent Bettin  
 *  
 */   
(function($){     
    $.fn.fade = function( params ) {
    
        var params = $.extend({
                        delay : 2000, //durée de la transition
                        timeout : 0, //temps d'attente entre 2 transitions
                        startCallback : null, //callback au début d'une transition
                        endCallback: null //callback à la fin d'une transition
                    },params);
    
        var jqContent = this.children();
        
        return this.each( function() {
        	$(jqContent[0]).show();
        	//Lance le fadeOut sur le premier élément
            fadeEl( $(jqContent[0]) );
        });

        function fadeEl( jqElement ) {
        
            setTimeout( function () {
       
                var nextEl 		= jqElement.next();
                var nextToFade 	= nextEl.length ? nextEl : $(jqContent[0]) ;
            	
            	//Fonction de callback au départ de la transition
            	if( $.isFunction( params.startCallback ) ) { 
                	params.startCallback( $(jqElement) );
                }
                
                jqElement.fadeOut ( params.delay, function() {
                	//Fonction de callback a la fin de la transition
               	    if( $.isFunction(params.endCallback) ) { 
                		params.endCallback( $(this) );
                	}           
                });
                
                nextToFade.fadeIn ( params.delay, function () {	                	
	            	fadeEl( $(this) );
	            });
                
            }, params.timeout );
            
        }

    }      
})(jQuery)