/*
 *	Author Felipe Silva
 *
 *	Example:
 *	$('.galeria').galeria();
 *
 **/

(function($) {
	
	$.extend({
		galeria: {
			init: function(galeria, options){
				this.galeria = $(galeria);
				this.options = $.extend({
					thumbsDisplay: 6
				}, options);
				
				this.thumbs();				
				
				$('.galeria-thumbs-content li a:first', this.galeria).trigger('click');
				$('.galeria-nav-left').addClass('opacidadeBotao');

				this.bindNavInFoto();
			},

			bindNavInFoto: function( ) {
				$('.foto').bind("mousemove",
					function(e) {
						var pos = $(this).position();
						var leftPos = Number(e.pageX - Number(pos.left));

						if( leftPos < (Number($(this).css("width").split("px")[0]) / 3) ) {
							$('.botaoEsquerdo').show();
							$('.botaoDireito').hide();
						}

						if( leftPos >= (Number($(this).css("width").split("px")[0]) / 3) && leftPos <= ((2 * Number($(this).css	("width").split("px")[0])) / 3) ) {
							$('.botaoEsquerdo').hide();
							$('.botaoDireito').hide();

						}

						if( leftPos > ((2 * Number($(this).css("width").split("px")[0])) / 3) ) {
							$('.botaoEsquerdo').hide();
							$('.botaoDireito').show();
						}
					});

				$('.foto').bind("mouseout",
					function(e) {
						$('.botaoEsquerdo').hide();
						$('.botaoDireito').hide();
					}
				);

			},
			/*
				Inclui todos os thumbs da galeria
			**/
			thumbs: function() {
				var _self = this;

				$.each(this.options.data, function(i, item){
					$('.galeria-thumbs-content', _self.galeria).append('<li><a href="#'+ i +'"><img src="'+ item.tb +'" /></a></li>');
					$('.galeria-thumbs-content > li > a').bind('click', function( ) {
						$('.galeria-thumbs-content > li > a').removeClass('ativo');
						$(this).toggleClass('ativo');
					});

				});

								
				this.bindThumbs();
				this.bindNav();
			},
			/*
				Aplica os eventos aos thumbs
			**/
			bindThumbs: function() {
				var _self = this;
				
				$('.galeria-thumbs li a', _self.galeria)
					.unbind('.gnt_galeria')
					.bind('click.gnt_galeria', function(){						
						var _indice = this.href.split('#')[1];
						//var _foto = '<img src="' + _self.options.data[_indice].ex + '" />';
						var _foto  = '<span class="foto">';
						    _foto += '<div class="botaoEsquerdo"><a href="#' + (Number(_indice) == 0 ? "" : Number(_indice) - 1) + '">';
						    _foto += '<img src="/images/fotos/setaFotoEsq.png" /></a></div>';
						    _foto += '<div class="botaoDireito"><a href="#' + (Number(_indice) == (_self.options.data.length - 1) ? "" : Number(_indice) + 1) + '">';
						    _foto += '<img src="/images/fotos/setaFotoDir.png" /></a></div>';
						    _foto += '</span>';

						$('.galeria-foto', _self.galeria).html(_foto);
						$('.galeria-foto > span.foto').css("backgroundImage", 'url(' + _self.options.data[_indice].ex + ')').fadeIn();
						$('.botaoDireito').css("width", (Number($('.foto').css("width").split("px")[0]) / 3));
						$('.botaoEsquerdo').css("width", (Number($('.foto').css("width").split("px")[0]) / 3));

						/* cadastra os eventos de clique nas setas de navegação na foto maior */
						if( Number(_indice) != (_self.options.data.length - 1)) 
						{
							$('.botaoDireito').removeClass("opacidadeBotao");
							$('.botaoDireito').bind("click",
								function( ) {
									$('.galeria-thumbs-content > li:nth-child(' + (Number(_indice) + 2)  + ') > a').click();
							});
						} else {
							$('.botaoDireito').addClass("opacidadeBotao");
							$('.botaoDireito > a').css("cursor", "default");
						}
								
						if( Number(_indice) > 0 ) 								
						{
							$('.botaoEsquerdo').removeClass("opacidadeBotao");
							$('.botaoEsquerdo').bind("click",
								function( ) {
									$('.galeria-thumbs-content > li:nth-child(' + (Number(_indice)) +  ') > a').click();
							});
						} else {
							$('.botaoEsquerdo').addClass("opacidadeBotao");
							$('.botaoEsquerdo > a').css("cursor", "default");
						}


						$('.galeria-legenda', _self.galeria).html( _self.options.data[_indice].legenda);

						_self.bindNavInFoto();
					});

			},
			/*
				Aplica os eventos aos botoes de navegacao dos thumbs
			**/
			slideShow: function(liga) {
				s = this;
				if( liga ) 
			        {
	                                $('.galeria-thumbs-content > li:first > a').trigger('click');
                                	$('.slideshow').html('parar slideshow').attr('href', 'javascript:$.galeria.slideShow(false);');
					var id = setInterval(
                                             	 function(  ) {
                                                 	var indice = Number($('#slideshowCurrent').html());
                                                        if( indice < s.options.data.length)
                                                        {
                                                        	// nth-child conta de 1-n
                                                                // os thumbs de 0-(n-1), tem que compensar o offset
                                                                indice = indice + 1;
                                                                $('.galeria-thumbs-content > li:nth-child(' + (indice) + ') > a').trigger('click');
                                                                $('#slideshowCurrent').html(indice);
                                                        } else {
                                                                $('#slideshowCurrent').html('1');
                                                                clearInterval($('#timeoutId').html());
                                                                $('.slideshow').html('iniciar slideshow').attr('href', 'javascript:$.galeria.slideShow(true);');
                                                        }
                                                  }, 2000);
                                        $('#timeoutId').html(id);
				} 
				else 
				{
					$('.slideshow').html('iniciar slideshow').attr('href', 'javascript:$.galeria.slideShow(true);');	
                                        $('#slideshowCurrent').html('1');
                                        clearInterval($('#timeoutId').html());
                                        $('.slideshow').html('iniciar slideshow');
				}
                        },

			bindNav: function() {
				var _self = this;
				var $nav = $('.galeria-nav', this.galeria);
				var $thumbsContent = $('.galeria-thumbs-content', $nav);
				var $thumbs = $thumbsContent.find('li');

				$('.galeria-nav-right', $nav)
					.unbind('.gnt_galeria')
					.bind('click.gnt_galeria', function(){
						$('.galeria-nav-left').removeClass('opacidadeBotao');
						var interval = Number($thumbsContent.css('left').split('px')[0]) - $thumbs.outerWidth();

						var posLeft = Number($thumbsContent.css('left').split('px')[0]);
						if( Math.abs(posLeft) >= ($thumbs.outerWidth() * (Number(_self.options.data.length - 1) - Number(_self.options.thumbsDisplay))) ) {
							$(this).addClass('opacidadeBotao');
						}

						//Destroi o evento, o mesmo so sera reconstruido depois da animacao
						$(this).unbind('.gnt_galeria');
						
						if (Math.abs(interval) <= $thumbs.outerWidth() * ($thumbs.length - Number(_self.options.thumbsDisplay))) {
							$thumbsContent.animate({left: interval}, 500, function(){
								_self.bindNav();
							});
						} 
					});
					
				$('.galeria-nav-left', $nav)
					.unbind('.gnt_galeria')
					.bind('click.gnt_galeria', function(){
						$('.galeria-nav-right').removeClass('opacidadeBotao');
						var interval = Number($thumbsContent.css('left').split('px')[0]) + $thumbs.outerWidth();

						var posLeft = Number($thumbsContent.css('left').split('px')[0]);
						if( Math.abs(posLeft) <= $thumbs.outerWidth() ) {
							$(this).addClass('opacidadeBotao');
						}
					
						//Destroi o evento, o mesmo so sera reconstruido depois da animacao
						$(this).unbind('.gnt_galeria');
						
						if (interval <= 0) {
							$thumbsContent.animate({left: interval}, 500, function(){
								_self.bindNav();
							});
						} 
						
					});
			}
		}
	});

	$.fn.galeria = function(options) {	
		$.galeria.init (this, options);				
	};

})(jQuery);
