/*
 * icecarousel 28/05/2009
 * Guillaume Decroix 
 *****************************************************************
 * v1.1.1
 * La taille des li est désormais calculée sur le contenu du li
 * et non sur la taille de l'image
 *
 * v1.0.1
 * 
 *****************************************************************
 * requiert jquery 1.3.2 (non testé sur les versions inférieures)
 *
 *Exemple : 
 *			$(window).load(function(){
					$(".overflow_diaporama").icecarousel({
						btnNext: ".btn_avance",
						btnPrev: ".btn_retour",
						speed : 500,
						rotate : true,
						rotate_speed : 2000
					});
				});
 *
 * le conteneur doit avoir une taille fixe et etre en overflow. 
 * la taille des ul / li est adapté automatiquement
 * la largeur des images n'a pas besoin d'être égale
 * s'applique sur un conteneur ayant pour structure interne : <ul><li><img></li><li><img></li><li><img></li></ul>
 * rajouter le bloc ci dessus dans le $(document).ready()
 * le $(window).load sert à s'assurer que les images sont completement charger avant de lancer le diaporama 
 *
 * btnNext : element declenchant l'affichage de la vignette suivante. 
 * btnPrev : element declenchant l'affichage de la vignette précédente. 
 * speed : videsse de disparition d'une img
 * rotate : true / false (default) : determine si le diaporama se deroule automatiquement
 * rotate_speed : vitesse de rotation automatique du diaporama
 *
 */
(function($) {                                         
$.fn.icecarousel = function(o) {
    o = $.extend({
        btnPrev: null,
        btnNext: null,
        auto: null,
        speed: 200,    
		total_size: 0,
		temp_size : null,
		block_slide : false,
		_this :null,
		rotate : false,
		rotate_speed : 1000
    }, o || {});
	
	
		o._this=$(this);
		
		$(o._this).find('li').each(function(){		
			o.temp_size=$(this).outerWidth();
			o.total_size+=o.temp_size;
			$(this).css('width',o.temp_size);
		});
		$(o._this).children('ul').css('width',o.total_size);			
			
        if(o.btnNext){
            $(o.btnNext).click(function(event) {				
				event.preventDefault();
				slide("avance");
            });
		}

        if(o.btnPrev){
            $(o.btnPrev).click(function(event) {
				event.preventDefault();
				slide("recule");
            });       
		}
		
		if (o.rotate==true && o.block_slide==false){
			setInterval(function() {
                slide("avance");
            }, o.rotate_speed);
		}		
		
		function slide(_direction){
			if (_direction=="avance"){
				if (o.block_slide==false){					
					o.block_slide=true;		
					o.temp_size=$(o._this).find('li:nth-child(1)').outerWidth()*-1;
					$(o._this).children('ul').animate({ 
						marginLeft : o.temp_size
					}, o.speed,function(){
						$(o._this).children('ul').append($(o._this).find('li:nth-child(1)'));							
						$(o._this).children('ul').css('marginLeft',0);
						$(o._this).find('li:last-child').css('width',$(o._this).find('li').outerWidth());					
						o.block_slide=false;		
					});	
				}
			}else{
				if (o.block_slide==false){
					o.block_slide=true;		
					o.temp_size=$(o._this).find('li').outerWidth();				
					$(o._this).children('ul').css('marginLeft',-o.temp_size);
					$(o._this).children('ul').prepend($(o._this).find('li:last-child'));
					$(o._this).children('ul').animate({ 							
						marginLeft: 0
					}, o.speed,function(){								
						o.block_slide=false;						
					});
				}
			}
		}
};
})(jQuery);
