/*!
 * Plugin do jQuery slideFolio
 * Arrisco - Publicidade e Design, Lda
 * Copyright (c) Arrisco - Publicidade e Design, Lda
 * Version: 0.01 (21-10-2010)
 * Licenciado em MIT e GPL3.
 * Testado: jQuery v1.2.6 ou superior
 * 
 * Usa $.browser porque o Webkit calcula a posição relativamente ao topo de forma diferente
 * Uses $.browser because Webkit calculates position top differently
 * 
 */



(function($){
	jQuery.fn.slidefolio = function(settings){
		// Settings default
		
		var elemento = $(this);
		
		var imagemGrande;
		var alturaTotalLegenda;
		var esconderLegenda;
		var alturaTotalTitulo;
		var alturaConteudos;
		var larguraDireita;
		var larguraLegenda;
		var larguraContentorEsquerda;
		var larguraWidget;
		var alturaWidget;
		
		var esconderMostrarLargura;
		var esconderMostrarAltura;
		
		
		settings = jQuery.extend({
										prefixo:              'slideFolio',
										fadeOutTempo:         '500',
										fadeInTempo:          '500',
										esconderLegendaTempo: '200',
										mostrarLegendaTempo:  '200',
										opacidadeImagem:      '0.5',
										opacidadeLegenda:     '0',
										primeiraImagem:       '0',
										esconder:             'esconder',
										mostrar:              'mostrar'
									}, 
								settings);

		// Loop por todos os elementos seleccionados
		/*jQuery(elemento).each(function(intIndex){
			
			
		});*/

		
		
		
		
		
		
		var calcularDimensoesWidget = function(){
			
			larguraWidget = elemento.css('width');
			alturaWidget  = elemento.css('height');
			
		};
		
		
		
		
		var calcularLarguraLegenda = function(){
		
			var paddingEsquerdaLegenda = $('#'+settings.prefixo+'Legenda').css('padding-left');
			var paddingDireitaLegenda = $('#'+settings.prefixo+'Legenda').css('padding-right');
			var borderEsquerdaLegenda = $('#'+settings.prefixo+'Legenda').css('border-left-width');
			var borderDireitaLegenda = $('#'+settings.prefixo+'Legenda').css('border-right-width');
			
			larguraLegenda = parseInt(larguraContentorEsquerda)-parseInt(paddingEsquerdaLegenda)-parseInt(paddingDireitaLegenda)-parseInt(borderEsquerdaLegenda)-parseInt(borderDireitaLegenda);
			
			
		};
		
		var calcularDimensoesLegendaEsconder = function(){
		
			esconderMostrarLargura = $('#'+settings.prefixo+'EsconderMostrar').css('width');
			esconderMostrarAltura = $('#'+settings.prefixo+'EsconderMostrar').css('height');
			
		};
		
		var calcularDimensoesDireita = function(){
			
			larguraContentorEsquerda = $('#'+settings.prefixo+'ContentorEsquerda').css('width');
			var borderEsquerdaContentorEsquerda = $('#'+settings.prefixo+'ContentorEsquerda').css('border-left-width');
			var borderDireitaContentorEsquerda = $('#'+settings.prefixo+'ContentorEsquerda').css('border-right-width');
			
			var borderEsquerdaContentorDireita = $('#'+settings.prefixo+'ContentorDireita').css('border-left-width');
			var borderDireitaContentorDireita = $('#'+settings.prefixo+'ContentorDireita').css('border-right-width');
			larguraDireita = parseInt(larguraWidget)-parseInt(larguraContentorEsquerda)-parseInt(borderEsquerdaContentorEsquerda)-parseInt(borderDireitaContentorEsquerda)-parseInt(borderEsquerdaContentorDireita)-parseInt(borderDireitaContentorDireita);
			
		};
		
		
		var calcularDimensoesTitulo = function(){
			
			var larguraTitulo  = $('#'+settings.prefixo+'Titulo').css('width');
			var alturaTitulo  = $('#'+settings.prefixo+'Titulo').css('height');
			var linhaTopoTituloCima = $('#'+settings.prefixo+'Titulo').css('border-top-width');
			var linhaTopoTituloBaixo = $('#'+settings.prefixo+'Titulo').css('border-bottom-width');
			alturaTotalTitulo = parseInt(alturaTitulo)+parseInt(linhaTopoTituloCima)+parseInt(linhaTopoTituloBaixo);
			
		};
		
		var calcularDimensoesConteudo = function(){
			alturaConteudos  =  parseInt(alturaWidget)-parseInt(alturaTotalTitulo);
		};
		
		
		
		var calcularDimensoesLegenda = function(){
			
			//var alturaLegenda = $('#'+settings.prefixo+'Legenda').css('height');
			var alturaLegenda = $('#'+settings.prefixo+'Legenda').height();
			var paddingTopoLegenda = $('#'+settings.prefixo+'Legenda').css('padding-top');
			var paddingBaixoLegenda = $('#'+settings.prefixo+'Legenda').css('padding-bottom');
			var borderCimaLegenda = $('#'+settings.prefixo+'Legenda').css('border-top-width');
			var borderBaixoLegenda = $('#'+settings.prefixo+'Legenda').css('border-bottom-width');
			alturaTotalLegenda = parseInt(alturaLegenda)+parseInt(paddingTopoLegenda)+parseInt(paddingBaixoLegenda)+parseInt(borderCimaLegenda)+parseInt(borderBaixoLegenda);
			esconderLegenda = parseInt(alturaTotalLegenda) * -1;
			
			
		};
		
		
		var preload = function(){
			
			
			$('.'+settings.prefixo+'ImagemThumb').each(function(){
				
				imagemPreload = $(this).attr('alt');
				
				$('body').append('<img style="display: none;" src="'+imagemPreload+'" alt="preload" />');

				
			});
			
		};
		
		var ajustarElementos = function(){
			
			
			// Ajustar contentor Fundo
			$('#'+settings.prefixo+'ContentorFundo').css('width', larguraWidget);
			$('#'+settings.prefixo+'ContentorFundo').css('height', alturaConteudos);
			
			
			// Ajustar ContentorEsquerda
			$('#'+settings.prefixo+'ContentorEsquerda').css('height', alturaConteudos);

			//Ajustar ContentorEsquerdaFundo
			$('#'+settings.prefixo+'ContentorEsquerdaFundo').css('height', alturaConteudos);

			// Ajustar Legenda
			$('#'+settings.prefixo+'Legenda').css('width', larguraLegenda);

			//Ajustar ContentorDireita
			$('#'+settings.prefixo+'ContentorDireita').css('height', alturaConteudos);
			$('#'+settings.prefixo+'ContentorDireita').css('width', larguraDireita);
			
			//Ajustar botão esconder mostrar
			
			$('#'+settings.prefixo+'EsconderMostrar').css('margin-top', alturaConteudos - parseInt(esconderMostrarAltura));
			$('#'+settings.prefixo+'EsconderMostrar').css('margin-left', parseInt(larguraContentorEsquerda) - parseInt(esconderMostrarLargura));
			$('#'+settings.prefixo+'EsconderMostrar').html(settings.esconder);
			
			
			
		};
		
		
		var criarBorda = function(el){
			
			largura = el.width();
			altura  = el.height();
			
			imagemGrande  = el.children('.slideFolioImagemThumb').attr('alt');
			
			
			try{
				$('#'+settings.prefixo+'Borda').remove();
			}catch(e){
				
			}
			
			el.prepend("<div style=\"width: "+largura+"px; height: "+altura+"px\" id=\""+settings.prefixo+"Borda\" class=\""+settings.prefixo+"Borda\"></div>");
			$('#'+settings.prefixo+'Borda').css('opacity', settings.opacidadeImagem);
			$('#'+settings.prefixo+'Borda').html('<img style="margin-left: 0px;" src="'+imagemGrande+'" alt="zoom" />');
			
			larguraFotoGrande = $('#'+settings.prefixo+'ContentorFundo').css('width');
			alturaFotoGrande  = $('#'+settings.prefixo+'ContentorFundo').css('height');
			
			
			var p = $('#'+settings.prefixo+'Borda');
			var posicao = p.position();
			
			var st = $('#'+settings.prefixo+'ContentorDireita');
			
				if($.browser.webkit || $.browser.msie){
				
					$('#'+settings.prefixo+'Borda').css('top', posicao.top - st.scrollTop());
					
				}else{
				
					$('#'+settings.prefixo+'Borda').css('top', posicao.top);
					
				}
			
				
				
				$('#'+settings.prefixo+'Borda').animate({
					'margin-left': parseInt(larguraContentorEsquerda) * -1,
					'width': larguraContentorEsquerda,
					'top': parseInt(alturaTotalTitulo),
					'height': alturaConteudos,
					'opacity': 1
				}, settings.mostrarLegendaTempo, function(){
					$(this).remove();
				});
				
				
			
			
			
		};
		
		
		var aoFazerClique = function(){
			
			$('.'+settings.prefixo+'MenuDireita').click(function(){
				
				calcularDimensoesLegenda();
				criarBorda($(this));
				

				imagemGrande  = $(this).children('.slideFolioImagemThumb').attr('alt');
				imagemLegenda  = $.trim($(this).children('.slideFolioTextoCompleto').html());
				
				
				$('.'+settings.prefixo+'ContentorEsquerdaImagem').animate({'opacity': settings.opacidadeImagem}, settings.fadeOutTempo, function(){
					
					
					
					$('#'+settings.prefixo+'Legenda').animate({'bottom': esconderLegenda+'px', 'opacity': settings.opacidadeLegenda}, settings.esconderLegendaTempo, function(){
						
						$('#'+settings.prefixo+'Legenda').html(imagemLegenda);
						
					});
					
					$('.'+settings.prefixo+'ContentorEsquerdaImagem').attr('src', imagemGrande);
					$('.'+settings.prefixo+'ContentorEsquerdaImagem').animate({'opacity': '1'}, settings.fadeInTempo, function(){
						$('.'+settings.prefixo+'ContentorEsquerdaFundo').css('background-image', 'url("'+imagemGrande+'")');
						$('#'+settings.prefixo+'Legenda').animate({'bottom': '0px', 'opacity': '1'}, settings.mostrarLegendaTempo);
						$('#'+settings.prefixo+'EsconderMostrar').html(settings.esconder);
					});
					
				});
				
				
				
				
			});
			
		};
		
		
		var mostrarEsconder = function(){
			
			$('#'+settings.prefixo+'EsconderMostrar').click(function(){
			
				
				if($(this).html() == settings.esconder){
					$(this).html(settings.mostrar);
					$('#'+settings.prefixo+'EsconderMostrar').css('opacity', 0.5);
					$('#'+settings.prefixo+'Legenda').animate({'bottom': esconderLegenda+'px', 'opacity': settings.opacidadeLegenda}, settings.esconderLegendaTempo, function(){
						
					});
					
				}else{
					$(this).html(settings.esconder);
					$('#'+settings.prefixo+'Legenda').animate({'bottom': '0px', 'opacity': '1'}, settings.mostrarLegendaTempo);
					$('#'+settings.prefixo+'EsconderMostrar').css('opacity', 1);
				}
				
				
				
			});
			
			
		};
		
		var primeiraImagemPrimeiroTexto = function(){
			
			pImagem = $('.'+settings.prefixo+'ImagemThumb').eq(settings.primeiraImagem).attr('alt');
			pTexto  = $('.'+settings.prefixo+'TextoCompleto').eq(settings.primeiraImagem).html();
			
			$('.'+settings.prefixo+'ContentorEsquerdaFundo').css('background-image', 'url("'+pImagem+'")');
			$('.'+settings.prefixo+'ContentorEsquerdaImagem').attr('src', pImagem);
			$('#'+settings.prefixo+'Legenda').html(pTexto);
			
			
		};
		
		var slidefolio = function(){
			
			calcularDimensoesWidget();
			calcularDimensoesTitulo();
			calcularDimensoesLegenda();
			calcularDimensoesConteudo();
			calcularDimensoesDireita();
			
			calcularLarguraLegenda();
			
			calcularDimensoesLegendaEsconder();
			
			ajustarElementos();
			primeiraImagemPrimeiroTexto();
			aoFazerClique();
			mostrarEsconder();
			preload();
		};
		
		
		slidefolio();
		
		
		
		
		
		
		
		// Return
		return jQuery;
	};
})(jQuery);

