/**
 * Plugin jQuery
 * Dev	: HUSSON Kévin
 * Date	: 01/12/2009
 * Mail	: husson.kevin@gmail.com
 * Site	: http://husson-kevin.fr/
 * ver.	: 0.1
 *
 * Le plugin Phototheque permet de faire défiler les images
 * Il a un certains nombre d'options définies par défaut
 * Modifiable !
 * div, taille des images, effet, vitesse.
 *
 *
 */
(function($) {
	$.fn.phototheque = function(options){

		// définition des options par défaut parametrable
		var defaults = {
			mainDiv : "#phototheque #hidden ",
			smallW	: 100,
			bigW	: 600,
			cleft	: $("#content-left"),
			ccenter	: $("#content-center"),
			cright	: $("#content-right"),
			bleft	: $("#boutton-left"),
			bright	: $("#boutton-right"),
			dtexte	: $("#data_texte"),
			dcount	: $("#data_count"),
			effetD	: 'slide',
			effetU	: 'slide',
			speedD	: 'fast',
			speedU	: 'slow'
		};

		var opts = $.extend(defaults, options);

		slider	= new Array();
		actual	= 1;

		$(opts.mainDiv + " ul li").each(function(i){
			var t		= $(this);
			var data	= t.children('.data');
			var img1	= t.children('img.img1').attr('src');
			var img2	= t.children('img.img2').attr('src');
			slider[i]	= new Array();
			slider[i][0] = img1;
			slider[i][1] = img2;
			slider[i][2] = data;
		});
		
		sliderLength = slider.length;

		// Initialisation
		myPrint(0);
		// Suivant
		opts.bright.click(function(){
			myPrint(1);
		});
		// Précédant
		opts.bleft.click(function(){
			myPrint(2);
		});

		// Effet produits lors du changement d'images
		function myEffect(div, effet, cacher, speed){
			switch(effet){
				case "slide":
					if(cacher)
						div.slideUp();
					else div.slideDown(speed);
				break;
				case "hide":
					if(cacher)
						div.hide();
					else div.show(speed);
				break;
				case "fade":
					if(cacher)
						div.fadeOut();
					else div.fadeIn(speed);
				break;
				case "display":
					if(cacher)
						div.css('display', 'none');
					else div.css('display', 'block');
				break;
				default:
					if(cacher)
						div.slideUp();
					else div.slideDown(speed);
				break;
			}
			return;
		}

		// Changement d'images
		function myPrint(decalage){

			if(decalage === 0)
				actual = -1;
			else
				actual = (decalage == 1) ? (actual + 1) : (actual -1);

			if( actual<-1 )
				actual = -1;
			else if( actual >= sliderLength )
				actual -= 1;

			// Affiche le boutton next-last
			if(actual == -1)
				myEffect(opts.bleft,	'display', true);
			else
				myEffect(opts.bleft,	'display', false);
			if( actual == sliderLength -2)
				myEffect(opts.bright,	'display', true);
			else
				myEffect(opts.bright,	'display', false);

			// Effet avant changement
			myEffect(opts.cleft,	opts.effetD, true);
			myEffect(opts.ccenter,	opts.effetD, true);
			myEffect(opts.cright,	opts.effetD, true);

			// Suppression du contenu de la div
			opts.cleft.html('');
			opts.ccenter.html('');
			opts.cright.html('');
			opts.dtexte.html('');

			// Image en cours
			var pictureCount = actual + 2 ;
			opts.dcount.html('<span class="biggercount">' + pictureCount + '</span> / ' + sliderLength);

			// Traitement..
			for(var li = actual, j = 0; j < ( (sliderLength > 3) ? 3 : sliderLength ); li++, j++){
				if( actual < sliderLength){
					if(j == 0 && actual >-1){
						opts.cleft.html('<img src="' + slider[li][0] + '"  width="' + opts.smallW + '" />');
						myEffect(opts.cleft,	opts.effetU, false, opts.speedU);
					}
					else if(j == 1){
						opts.ccenter.html('<img src="' + slider[li][1] + '"  width="' + opts.bigW + '" />');
						myEffect(opts.ccenter,	opts.effetU, false, opts.speedU);
						opts.dtexte.html(slider[li][2].html());
					}
					else if(j == 2){
						opts.cright.html('<img src="' + slider[li][0] + '"  width="' + opts.smallW + '" />');
						myEffect(opts.cright,	opts.effetU, false, opts.speedU);
					}
				}
			}
		}
	};
})(jQuery);