(function($)
{	
	var $this = null;
	var template;
	var vignettesTemplate;
	var uId;
	var arrayImg = [];
	
	var timerInterval;
	var timerWaitingFor;
	var currentImg;
	var params = null;
	
	//methode public
	var PublicMethodes =
	{
		init:function(paramUser)
		{
			$this = $(this);
			uId = $this.attr('id');
			
			return this.each(function()
			{ 
				var defaultParams = 
				{
					div:'stockImgGalerie',
					titre:'Titre - a supprimer'
				}
				
				params = $.extend(defaultParams , paramUser);
				
				PrivateMethodes.getImgFromPage(params.div);
				
				PrivateMethodes.createTemplate();
				PrivateMethodes.setPosition();
				
				EventHandler.clickVignette();
				EventHandler.clickBtnClose();
				EventHandler.overOutBtnCLoseGalerie();
				EventHandler.overOutVignette();
				EventHandler.bindResize();
				
				PrivateMethodes.createVignettes();
				PrivateMethodes.setPosition();
				
				$j('.conteneurVignette').jScrollPane({showArrows:true, verticalArrowPositions:'split'});
				
				
			});
		},
		setPosition:function()
		{
			PrivateMethodes.setPosition();
		}
	};
	
	//methode privée
	var PrivateMethodes = 
	{
		createTemplate:function()
		{
			template = '';
			template += '<div class="conteneurVignette" id="conteneurVignette'+uId+'">';
			template += '</div>';
			template += '<div class="viewer" id="viewer'+uId+'">';
				template += '<div class="titre" id="idTitre'+uId+'">'+params.titre+'</div>';
				template += '<img src="../images/galerie/galerieGenerique/01.jpg" />';
				template += '<div class="closeGalerie" id="btnCloseGalerie'+uId+'"></div>';
				
			template += '</div>';
			
			$this.html(template);
			
		},
		setPosition:function()
		{
			$('#conteneurVignette' + uId).css({height:$this.height() - 20 , width:'160px'});
			$('#viewer' + uId).css({height:$this.height() , width:$this.width() - $('#conteneurVignette' + uId).width()});
			$('#viewer' + uId + ' img').css({marginTop:( $(window).height() - $('#viewer' + uId + ' img').height() ) / 2});
			$('#idTitre' + uId).css({top:$('#viewer' + uId + ' img').offset().top - $('#idTitre' + uId).height() - 10 , left:$('#viewer' + uId + ' img').offset().left});
			$('#btnCloseGalerie' + uId).css({top:$('#viewer' + uId + ' img').offset().top - $('#btnCloseGalerie' + uId).height()/2 , left:$('#viewer' + uId + ' img').offset().left + $('#viewer' + uId + ' img').width() - $('#btnCloseGalerie' + uId).width()/2});
		},
		getImgFromPage:function(div)
		{
			arrayImg = [];
			$j('.' + div + ' img').each(function()
			{
				arrayImg.push({url:$(this).attr('src')});
			});
			PrivateMethodes.displayPhoto(arrayImg[0].url);
			currentImg = 0;
			if(!isTablette)
			{
				PrivateMethodes.loop();	
			}//fin if
			
		},
		createVignettes:function()
		{
			vignettesTemplate = '';
			vignettesTemplate += '<ul id="listVignette'+uId+'">';
				var i = 0;
				for(i ; i<arrayImg.length ; i++ )
				{
					vignettesTemplate += '<li>';
					vignettesTemplate += '<img src="'+arrayImg[i].url+'" alt="image '+i+'" width="120">';
					vignettesTemplate += '</li>';
				}//fin for
				
			vignettesTemplate += '</ul>';
			
			$('#conteneurVignette' + uId).html(vignettesTemplate);
			
			$('#listVignette' + uId + ' img:first').trigger('mouseover');
			$('#listVignette' + uId + ' img:first').parent().addClass('vignetteActive').siblings().removeClass('vignetteActive').find('img').trigger('mouseout');			
		},
		displayPhoto:function(url)
		{
			$('#viewer' + uId + ' img').fadeOut(200 , function()
			{
				$('#viewer' + uId + ' img').attr('src' , url);
				$('#viewer' + uId + ' img').fadeIn(200);
			});
		},
		loop:function()
		{
			clearInterval(timerInterval);
			
			timerInterval = setInterval(function()
			{
				currentImg ++;
				
				if(currentImg == arrayImg.length - 1)
				{
					currentImg = 0;
				}//fin if
				
				PrivateMethodes.displayPhoto(arrayImg[currentImg].url);
				
				
				$('#listVignette' + uId + ' img:eq('+(parseInt(currentImg))+')').trigger('mouseover');
				$('#listVignette' + uId + ' img:eq('+(parseInt(currentImg))+')').parent().addClass('vignetteActive').siblings().removeClass('vignetteActive').find('img').trigger('mouseout');
			} , 2000);
		}
	}
	
	var EventHandler = 
	{
		overOutVignette:function()
		{
			$('#listVignette' + uId + ' img').live('mouseover' , function()
			{
				if(!$(this).parent().hasClass('vignetteActive'))
				{
					$(this).parent().css({background:'url(\'../images/fondVignettes.png\') center top no-repeat'});
				}//fin if
			});
			$('#listVignette' + uId + ' img').live('mouseout' , function()
			{
				if(!$(this).parent().hasClass('vignetteActive'))
				{
					$(this).parent().css({background:'none'});
				}//fin if
			});
			
		},
		clickVignette:function()
		{
			$('#listVignette' + uId + ' img').live('click' , function()
			{
				clearTimeout(timerWaitingFor);
				clearInterval(timerInterval);
				
				
				PrivateMethodes.displayPhoto($(this).attr('src'));
				$(this).parent().addClass('vignetteActive').siblings().removeClass('vignetteActive').find('img').trigger('mouseout');
				
				if(!isTablette)
				{
					timerWaitingFor = setTimeout(function()
					{
						PrivateMethodes.loop();
						clearTimeout(timerWaitingFor);
					} , 5000);
				}//fin if
				
			});
		},
		clickOut:function()
		{
			$this.click(function(event)
			{
				//test clic en dehors de l'image affichér => trigger Event => Navigation.hideGalerie()'
			});
			
		},
		clickBtnClose:function()
		{
			$('#btnCloseGalerie' + uId).click(function()
			{
				clearInterval(timerInterval);
				$('body').trigger('closeGalerie');
			});
		},
		overOutBtnCLoseGalerie:function()
		{
			$('#btnCloseGalerie' + uId).hover(function()
			{
				$(this).css({background:'url(\'../images/btnCloseGalerieOver.png\') center top no-repeat'});
			} , function()
			{
				$(this).css({background:'url(\'../images/btnCloseGalerie.png\') center top no-repeat'});
			});
		},
		bindResize:function()
		{
			$(window).resize(function()
			{
				$('#conteneurVignette' + uId).css({height:$this.height() - 20 , width:'160px'});
				$('#viewer' + uId).css({height:$this.height() , width:$this.width() - $('#conteneurVignette' + uId).width()});
				$('#viewer' + uId + ' img').css({marginTop:( $(window).height() - $('#viewer' + uId + ' img').height() ) / 2});
				
				$('#btnCloseGalerie' + uId).css({top:$('#viewer' + uId + ' img').offset().top - $('#btnCloseGalerie' + uId).height()/2 , left:$('#viewer' + uId + ' img').offset().left + $('#viewer' + uId + ' img').width() - $('#btnCloseGalerie' + uId).width()/2});
			});
		}
	}
	
	
	
	
	$.fn.galerieBrendel = function(methode)
	{
		// Method calling logic
		if(PublicMethodes[methode]) 
		{
			return PublicMethodes[methode].apply(this, Array.prototype.slice.call(arguments , 1 ));
		}
		else if (typeof methode === 'object' || ! methode ) 
		{
			return PublicMethodes.init.apply(this , arguments);
		}
		else 
		{
			$.error( 'Method ' +  methode + ' does not exist on jQuery.laa.monPlugin' );
		}
	};
})(jQuery);

