/**
 * @author Vincent FERNIOT - Les Ateliers Apicius
 */ 
(function($) {
	// définition du plugin jQuery
	var timeout;
		
	var methods = {
	    init : function(options) {
	    	var settings = {
				delay		: 3000,
				animateIn	: {	properties: {opacity:1}, 
								duration: 1000,
								easing: 'swing',
								complete: function(){}},
				animateOut	: {	properties: {opacity:0}, 
								duration: 500,
								easing: 'swing',
								complete: function(){}},
				slideshow	: false,
				thumbHeight : 50,
				thumbWidth	: 50	        
			};
	    	
			
	    	
			return this.each(function(){
				
				if (options) 
					$.extend(settings, options);
				
				var $this = $(this),
					images = $('<div class="images" />'),
		         	thumbs = $('<div class="thumbs" />'),
		         	index = 0;
		        
		        $this.append(images);
				$this.append(thumbs);
				$this.wrapInner('<div class="laaGallery" />');
				
				
				$this.data('laaGallery', {
					delay		: settings.delay,
					images		: images,
					animateIn	: settings.animateIn,
					animateOut	: settings.animateOut,
					slideshow	: settings.slideshow,
					target		: $this,
					thumbs		: thumbs,
					thumbHeight	: settings.thumbHeight,
					thumbWidth	: settings.thumbWidth
				});
				
				$(this).find('img').each(function(){
					
					// Permet d'éviter un bug au niveau du trigger de l'événement onload sur des images déjà en cache
					$(this).one("load",function(){
					
						var	$image = $(this),
							$thumb = $('<a href="#" title="thumb' + index + '" class="thumb"></a>').append($image.clone()),
							css = {
								'height'	: settings.thumbHeight,
								'width'		: settings.thumbWidth,
								'overflow'	: 'hidden',
								'opacity' : 0
							},
							imageOffset = ($('.laaGallery').width() - $image.width()) / 2;
						
						
						
						
						$image.appendTo(images);
						$image.animate({opacity:0}, 0);
						$image.css({left: imageOffset})
						$thumb.appendTo(thumbs).css(css).animate({opacity:1}, 1000);
												
						if ($image.height() > $image.width())
							$thumb.children().width(settings.thumbWidth);
						else
							$thumb.children().height(settings.thumbWidth);
												
												
						$thumb.bind({
							click: function(event){
								event.preventDefault();
								images.find('.active').animate(settings.animateOut.properties, settings.animateOut.duration, settings.animateOut.easing, settings.animateOut.complete).removeClass('active');
								thumbs.children().removeClass('active');
								
								$image.animate(settings.animateIn.properties, settings.animateIn.duration, settings.animateIn.easing, settings.animateIn.complete).addClass('active');
								
								$(this).addClass('active');
							},
							mouseenter: function(){
								if (settings.slideshow)
									clearTimeout(timeout); 
							},
							mouseleave: function(){
								if (settings.slideshow)
									timeout =  setTimeout(function(){methods.nextImage.apply($this, arguments)}, settings.delay); 
							}
						});
						
						if (index == 0)
						{
							$thumb.trigger('click');
						}
							
						
						if (index == 1 && settings.slideshow)
							timeout =  setTimeout(function(){methods.nextImage.apply($this, arguments)}, settings.delay);
								
						index++;
					
					})
					// 2e partie du correctif
					.each(function(){
						if(this.complete) $(this).trigger("load");
					});
				});
			});
	    },
	     
	    nextImage : function(){
	    	
	    	return this.each(function(){
	    		
	    		var data = $(this).data('laaGallery');
	    		var $this = $(this);
		    	var thumb = data.thumbs.children('.active').next();
		    	
		    	
		    	// test pour revenir à la 1e image quand on est au bout du slideshow
		    	if (thumb.is('a'))
	    			thumb.trigger('click');
	    		else
		    		data.thumbs.children(":first").trigger('click');
		    		
		    	timeout =  setTimeout(function(){methods.nextImage.apply($this, arguments)}, data.delay);
		    	
	    	});
	    }
	};
	
	
	
	
	//----------------------------------
	//  getPageFileName
	//----------------------------------
	
	function getPageFileName() {
		//création d'un tableau avec comme valeurs les chaînes de caractères compris entre les slashs. On renvoie ensuite la dernière valeur de ce tableau
		var url = document.location.href.split('\/').pop();
		
		//si dans la chaîne il y a un ? on crée un tableau et on renvoie la dernière valeur
		if (url.indexOf('?') != -1) {
			url= (url.split('?')).pop();
		}
		//si dans la chaîne il y a un # on crée un tableau et on renvoie la dernière valeur
		if (url.indexOf('#') != -1) {
			url= (url.split('#')).pop();
		}
		
		if (url == '')
			url = 'index.php';
		
		return url;
	}
		
	$.fn.laaGallery = function(method) {	
		
		// logique des appels des methods
		if (methods[method]) {
	      return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
	    } 
	    else if ( typeof method === 'object' || !method ) {
	      return methods.init.apply( this, arguments );
	    } 
	    else {
	      $.error( 'Method ' +  method + ' does not exist on jQuery.laaGallery' );
	    } 
	};
})(jQuery);

