/*
	
	iti Slider
	Réalisation Pierre Granger pour iti-conseil
	pierre.granger@hotmail.fr
	www.iti-conseil.com
	Dernière MAJ : 10/01/2011
	
*/
(function($){

	$.fn.itiSlider = function(options)
	{
		var settings = jQuery.extend(
		{
			debug: false,
			current:1,
			id_slider:'div#slider',
			id_precedent:'a#precedent',
			id_suivant:'a#suivant',
			id_conteneur:'ul',
			id_elements:'ul li',
			effet:'easeOutCirc',
			temps:1000,
			nb_affiches:1,
			cacher_boutons_inactifs:true,
			boucler:false,
			auto_defile:false,
			vitesse_defile:5000
		}, options );
		
		var slider = $(this).find(settings.id_slider) ;
		var precedent = $(this).find(settings.id_precedent) ;
		var suivant = $(this).find(settings.id_suivant) ;
		var conteneur = $(this).find(settings.id_conteneur) ;
		var elements = $(this).find(settings.id_elements) ;
		var nb_elements = elements.length ;
		var largeur = elements.first().outerWidth(true) ;
		var ml = 0 ;
		var num_courant = 1 ;
		if ( settings.current <= nb_elements && settings.current > 0 )
			num_courant = settings.current ;
		
		go_to(num_courant) ;
		
		defiler() ;
		
		precedent.click(function(){
			go_to(num_courant-1,true) ;
			return false ;
		}) ;
		
		suivant.click(function(){
			go_to(num_courant+1,true) ;
			return false ;
		}) ;

		$(this).find('div#puces a').click(function(){
			go_to($(this).attr('rel')) ;
		}) ;
		
		function go_to(num,restart)
		{
			if ( ! restart || restart == null ) restart = false ;
			
			if ( restart )
			{
				$(this).stopTime('animation') ;
				defiler() ;
			}
			
			debug('go_to('+num+')') ;
			
			if ( settings.boucler )
			{
				if ( num > nb_elements ) num = 1 ;
				if ( num < 1 ) num = nb_elements ;
			}
			else
			{
				if ( num > nb_elements || num < 1 ) return ;
			}
			num_courant = num ;
			conteneur.stop().animate(
				{'margin-left':-(largeur*num_courant-largeur)},
				settings.temps,settings.effet
			) ;
			if ( settings.cacher_boutons_inactifs )
			{
				if ( num_courant == 1 ) precedent.fadeOut() ;
				else precedent.fadeIn() ;
				if ( num_courant - 1 + settings.nb_affiches >= nb_elements ) suivant.fadeOut() ;
				else suivant.fadeIn() ; 
			}
			$('div#iti_slider div#puces a').removeClass('selected');
			$('div#iti_slider div#puces a[rel='+num+']').addClass('selected');
		}
		
		function debug(msg)
		{
			if ( settings.debug )
			{
				if ( ! $(this).find('#debug') ) $(this).append('<div id="debug"></div>') ;
				$('div#debug').append(msg+"\n") ;
			}
		}
		
		function defiler()
		{
			$(this).stopTime('animation') ;
			if ( settings.auto_defile )
			{
				$(this).everyTime(settings.vitesse_defile,'animation',function() {
					go_to(num_courant+1) ;
				}) ;
			}
		}
		
	};

})(jQuery);
