(function($)
{	
	var $this = null;
	var uId;
	var params = null;
	var template = null;
	var arrayImg = null;
	var currentImg = null;
	
	var firstLoad = true;
	
	var defaultParams = 
	{
		dir:'photos'
	}
	
	//methode public
	var PublicMethodes =
	{
		init:function(paramUser)
		{
			$this = $j(this);
			uId = $this.attr('id');
			
			return this.each(function()
			{
				params = $.extend(defaultParams , paramUser);
				
				EventHandlerGalerie.bindEvent();
				
				Positionning.conteneur();
				
				PrivateMethodes.createTemplate();
				
				EventHandlerGalerie.clickBtnFermer();
				EventHandlerGalerie.overOutPhoto();
				EventHandlerGalerie.overOutArrow();
				
				
			});
		}
	};
	
	//methode privée
	var PrivateMethodes = 
	{
		showGalerie:function()
		{
			$this.animate({top:'0'} , 500 , 'linear');
		},
		hideGalerie:function()
		{
			$this.animate({top:-$this.height()*2} , 500 , 'linear');
		},
		createTemplate:function()
		{
			template = '';
			template += '<div class="galerie">';
				template += '<div class="photoGalerie"></div>';
				template += '<div class="vignetteGalerie"></div>';
				template += '<div class="btnCloseGalerie"><  Retour</div>';
				template += '<div class="conteneurBtnArrow"><div class="arrowLeft"></div><div class="arrowRight"></div></div>';
				template += '<div class="clearleft"></div>';
			template += '</div>';
			template += '<div class="linkUnderGalerie"><a onClick="window.open(\'fichiers360.php\',\'_blank\',\'toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=800, height=600\');return(false)" target="_blank">Cliquez ici pour visionner la visite virtuelle 360° de notre établissement</a></div>';
			template += '<div class="footerGalerie"></div>';
			
			$this.html(template);
			
		},
		getImgFromPage:function()
		{
			arrayImg = [];
			$j('.vignetteGalerie li img').each(function()
			{
				arrayImg.push({urlImg:$j(this).attr('src')});
			});
		},
		changeImg:function(url)
		{
			$j('.photoGalerie').fadeOut(300 , function()
			{
				$j('.photoGalerie img').attr({src:url});
				$j('.photoGalerie').fadeIn(300);
			});
		}
	}
	
	var EventHandlerGalerie = 
	{
		bindEvent:function()
		{
			$j(document).bind('showGalerie' , function()
			{
				Scroller.scrollToElement('body');
				PrivateMethodes.showGalerie();
				
				if(firstLoad)
				{
					Loader.img('../images/galerie/loaderImg.php' , {dir:params.dir} , 'vignetteGalerie');
					firstLoad = false;
				}//fin if
				
				
			});
		},
		clickBtnFermer:function()
		{
			$j('.btnCloseGalerie').live('click' , function()
			{
				PrivateMethodes.hideGalerie();
			});
		},
		overOutVignettes:function()
		{
			$j('.vignetteGalerie li').each(function()
			{
				$j(this).hover(function()
				{
					if(!$j(this).hasClass('vignetteActive'))
					{
						$j(this).css({border:'solid 1px #FFFFFF'});
					}//fin if
				} , function()
				{
					if(!$j(this).hasClass('vignetteActive'))
					{
						$j(this).css({border:'solid 1px #000000'});
					}//fin if
				})
			});
		},
		clickVignettes:function()
		{
			$j('.vignetteGalerie li').each(function(index)
			{
				$j(this).click(function()
				{
					$j(this).addClass('vignetteActive').siblings().removeClass('vignetteActive').trigger('mouseout');
					currentImg = index;
					PrivateMethodes.changeImg($j(this).find('img').attr('src'));
				});
			})
		},
		overOutPhoto:function()
		{
			$j('.conteneurBtnArrow').css({opacity:0});
			$j('.conteneurBtnArrow').hover(function()
			{
				$j('.conteneurBtnArrow').stop(true , true);
				$j('.conteneurBtnArrow').animate({opacity:1} , 0 , 'linear');
			} , function()
			{
				$j('.conteneurBtnArrow').stop(true , true);
				$j('.conteneurBtnArrow').animate({opacity:0} , 200 , 'linear');
			});
			$j('.photoGalerie').hover(function()
			{
				$j('.conteneurBtnArrow').stop(true , true);
				$j('.conteneurBtnArrow').animate({opacity:1} , 200 , 'linear');
			} , function()
			{
				$j('.conteneurBtnArrow').stop(true , true);
				$j('.conteneurBtnArrow').animate({opacity:0} , 200 , 'linear');
			});
		},
		overOutArrow:function()
		{
			$j('.arrowLeft').hover(function()
			{
				$j('.arrowRight').animate({opacity:0} , 200 , 'linear');
			} , function()
			{
				$j('.arrowRight').animate({opacity:1} , 200 , 'linear');
			});
			$j('.arrowRight').hover(function()
			{
				$j('.arrowLeft').animate({opacity:0} , 200 , 'linear');
			} , function()
			{
				$j('.arrowLeft').animate({opacity:1} , 200 , 'linear');
			});
		},
		clickArrow:function()
		{
			$j('.arrowLeft').click(function()
			{
				currentImg--;
				if(currentImg == -1)
				{
					currentImg = arrayImg.length-1;
				}//fin if
				$j('.vignetteGalerie li:eq('+currentImg+')').trigger('mouseover').trigger('click');
			});
			$j('.arrowRight').click(function()
			{
				currentImg++;
				if(currentImg == arrayImg.length)
				{
					currentImg = 0;
				}//fin if
				$j('.vignetteGalerie li:eq('+currentImg+')').trigger('mouseover').trigger('click');
			});
		}
		
	}
	
	Positionning = 
	{
		conteneur:function()
		{
			$j(window).load(function()
			{
				$this.css({width:'100%' , height:$j(document).height() , top:-$this.height()*2});
			});
			$this.css({width:'100%' , height:$j(document).height() , top:-$this.height()*2});
		}
	}
	
	var Loader = 
	{
		img:function(urlPhp , objData , divDisplay)
		{
			$j(document).ready(function()
			{
				var dataVar;
				
				//traitement des parametres
				if(objData == null)
				{
					dataVar = "action";
				}//fin if
				else
				{
					dataVar = eval(objData);
				}//fin else
				
				$.ajax({ 
					url:urlPhp,
					cache:false,
					type:"POST" ,	  
					data: dataVar ,
					dataType: "html",
					
					beforeSend : function(XMLHttpRequest)
					{
						if(divDisplay != null)
						{
							$j('.photoGalerie').html('<img src="../images/galerie/elements/ajax-loader.gif" />');
						}//fin if
					},
					success: function(data)
					{
						if(divDisplay != null)
						{
							$j('.vignetteGalerie').html(data);
							EventHandlerGalerie.overOutVignettes();
							EventHandlerGalerie.clickVignettes();
							
							PrivateMethodes.getImgFromPage();
							EventHandlerGalerie.clickArrow();
							
							$j('.vignetteGalerie li:first').trigger('mouseover').trigger('click');
						}//fin if
					},
					error: function(XmlHttpRequest , textStatus , errorThrown)
					{
						if(divDisplay != null)
						{
							$j('.vignetteGalerie').html(textStatus)
						}//fin if
					}
				});
			});//fin document ready
		}
	}
	
	$.fn.galerieZoneZenSpa = function(methode)
	{
		// Method calling logic
		if(PublicMethodes[methode]) 
		{
			return PublicMethodes[methode].apply(this, Array.prototype.slice.call(arguments , 1 ));
		}//fin if
		else if (typeof methode === 'object' || ! methode ) 
		{
			return PublicMethodes.init.apply(this , arguments);
		}//fin else if
		else 
		{
			$.error( 'Method ' +  methode + ' does not exist on jQuery.laa.animGhBordeaux' );
		}//fin else
	};
})(jQuery);

