/***************************************************
 * @PlugginName 'Maiki Gallery for Croissance Net'
 * @author msurrel
 * @date 01/04/2010
 * @version 1.5
 ***************************************************/

(function($){
	$.fn.gallery = function(options){
		
		/**************************/
		/** Variables par défaut **/
		/**************************/
		var defaults = {
		};
		var opts = $.extend(defaults, options);
		
		/***********************************************/
		/** Calcul des position Top et Left du pop-up **/
		/***********************************************/
		function CenterPopUp()
		{
			var windowWidth = document.documentElement.clientWidth;
			var windowHeight = document.documentElement.clientHeight;
			var popupHeight = $("#popup").height();
			var popupWidth = $("#popup").width();
			$("#popup").css({
				"position": "absolute",
				"top": 30,
				"left": windowWidth/2-popupWidth/2
			});
		}
		
		/**********************************/
		/** Initialisation de la Galerie **/
		/**********************************/
		function Gallery_init(event)
		{
			// On affecte la position centrer au pop-up
			CenterPopUp();
			
			// On désactive l'évènement sur le lien a
			event.preventDefault(event);
			
			// Nombre de click possibles sur la flèche haut
			nbClickUp = 0;
			
			// Nombre de click possibles sur la flèche haut
			nbClickDown = parseInt($('.Gallery_content_vignettes a').length - 3);
			if(nbClickDown < 0) nbClickDown = 0;
			
			// allowClick
			allowClick = true;
			
			// on affiche le fond opaque
			$("#backgroundPopup").css("opacity", "0.7").show();
			
			// 40 ms plus tard, on affiche la pop-up
			$("#popup").delay(400).slideDown("fast");
			
			// On supprime les class 'selected' sur les vignettes
			$("div.Gallery_vignettes a img.selected").removeClass("selected");
		}
		
		/*********************************************************************************/
		/** Evènements sur le click d'une Vignette dans le Front pour lancer la galerie **/
		/*********************************************************************************/
		$(this).click(function(event){
			// Initialisation de la galerie
			Gallery_init(event);
			
			// On remonte enhaut de page pour afficher la galerie
			$.scrollTo(0,0,{duration:400});
			
			// Attributs de la première image à afficher
			$this = $('.Gallery_content_vignettes a:first');
			var Src = $this.attr("href");
			var Txt = $this.attr("title");
			
			// On supprime le src de lancienne image
			$("div.Gallery_Img img").removeAttr("src");
			$("div.Gallery_Img img").attr("src",Src);
			
			// Au clic sur la vignette, on laod la nouvelle image et on affiche la barre d'attente
			$("div.Gallery_Img img").attr({src: Src,title:Txt}).fadeIn(800);
			$("div.Gallery_nbImg_Label").text(Txt);
			$("div.Gallery_nbImg_total").text($("div.Gallery_content_vignettes img").length+" images");
		});
		
		/************************************************************/
		/** Evènements sur le click d'une Vignette dans la Galerie **/
		/************************************************************/
		$("div.Gallery_content_vignettes a").click(function(event){
			
			// On annule l'évènement du lien au clic sur la vignette
				event.preventDefault();

			// On supprime les classes des images selected par défaut
				$("div.Gallery_vignettes a img.selected").removeClass("selected");
			
			// on ajoute la classe 'selected' à la vignette pour effet de selection
				$(this).children("img").addClass("selected");
			
			// Attributs de la futur image à afficher
				// chemin de l'image
				var Src = $(this).attr("href");
				// title de l'image
				var Txt = $(this).attr("title");
			
			//On affiche le Title de l'image en bas à droite de la galerie
			$("div.Gallery_nbImg_Label").text(Txt);
			
			// On supprime le src de lancienne image
			$("div.Gallery_Img img").hide();
			$("div.Gallery_Img img").removeAttr("src");
			
			// On lui réattribut un src tout neuf
			$("div.Gallery_Img img").attr("src",Src);
			$("div.Gallery_Img img").fadeIn(1000);
		});
		
		/**************************************************/
		/** Evènements sur le click du Bouton Slider Bas **/
		/**************************************************/
		$("div.Gallery_slider_down")
		.mouseover(function(){
			// si la souris est dessus, on modifie le background-position
			$(this).css("background-position", "0 -57px");
		})
		.mouseout(function(){
			// Si la souris sort du bouton, on rétablit le background-position
			$(this).css("background-position", "0 -19px");
		})
		.click(function(){
			if(allowClick && nbClickDown>0)
			{
				allowClick = false;
				// On anime la div qui contient les vignettes (on fait monter)
				$("div.Gallery_content_vignettes").animate({top:"-=146px"}, 250,function(){
					nbClickUp++;
					nbClickDown--;
					allowClick = true;
				});
			}
		});
		
		/***************************************************/
		/** Evènements sur le click du Bouton Slider Haut **/
		/***************************************************/
		$("div.Gallery_slider_up")
		.mouseover(function(){
			// Au survol de la souris, on modifie le background-position
			$(this).css("background-position", "0 -38px");
		})
		.mouseout(function(){
			// quand la souris quitte le bouton, on rétablit le background-position
			$(this).css("background-position", "0 0");
		})
		.click(function(){
			
			if(allowClick && nbClickUp>0)
			{
				allowClick = false;
				// On anime la div qui contient les vignettes (on fait descendre)
				$("div.Gallery_content_vignettes").animate({top:"+=146px"}, 250,function(){
					nbClickUp--;
					nbClickDown++;
					allowClick = true;
				});
			}
				
		});
		
		/*****************************/
		/** Fermeture de la galerie **/
		/*****************************/
		$("#backgroundPopup, div.Gallery_close").click(function(){
			$("#popup").slideUp("fast");
			$("#backgroundPopup").delay(500).hide();
		});
	};
	
})(jQuery);
