// -----------------------------------------------------------------------------------

//

//  Desenvolvido por:

//  Rodrigo Fante

//	Fazedor de Site - http://www.fazedordesite.com

//	FS Galeria de Imagens - Versão 2.4.1

//

//  Navegadores testados:

//  Internet Explorer 6, Internet Explorer 7, Firefox 2

//  Opera 9, Netscape 8, Safari para Windows 3

//

//  Em caso de erros, sugestoes, peço que reportem para:

//  fazedordesite@gmail.com ou pelo site: http://www.fazedordesite.com

//

//  Mantenha os créditos pelo menos - Totalmente gratis :D

// 

// -----------------------------------------------------------------------------------

// || Tudo começa na ultima linha ||

// \/                             \/

// 

// VARIAVEL GLOBAL COM TODAS IMAGENS

var todasImagens = new Array;

var Atual = "";

var proxLink = "";

var antLink = "";

var slide=false;

var tempo=3000; // tempo de troca das imagens no slideshow

var skin="azul";

// se usar wordpress coloque o caminho do tema do wordpress aqui, caso contrario 

// deixe em branco. Exemplo: "wp-content/themes/temausado/"

var wordpress = ""; 





//==============================

// Mesma funçao utilizada em diversos frameworks facilita a construçao do codigo

// um exemplo de seu utilizo, possui outros, eh ao usar o document.getElementById(id) usar apenas $(id)

// isso permite uma grande reduçao de codigo e facilita a visualizaçao do mesmo

function $() {

  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {

    var element = arguments[i];

    if (typeof element == 'string') element = document.getElementById(element);

    if (arguments.length == 1) return element;

    elements.push(element);

  }

  return elements;

}

if(wordpress!="") skin=wordpress+"/skin/"+skin;

else skin="skin/"+skin;

function adicionarEvento(objeto, TipoEvento, funcao){

	if(objeto.addEventListener){ // todos navegadores menos IE

		objeto.addEventListener(TipoEvento, funcao, false);

		return true;

	} else if (objeto.attachEvent){ // IE

		var r = objeto.attachEvent('on'+TipoEvento, funcao);

		return r;

	} else {

		return false;

	}

}

//==============================

function preCarrega(img,atual){

	if(img!=""){

		nova_img = new Image();

		nova_img.onload=function(){

			total = img.length;

			var porc = Math.ceil((atual*100)/total);

			$("preload_label").style.height=porc+"px";

			proxima = atual+1;

			if(proxima<total) preCarrega(img,proxima);

			else { 

				$("preload_label").style.height="100px";

				setTimeout("fadeOut('preload_quadro');",300);

			}		

		}

		nova_img.onerror=function(){

			fadeOut('preload_quadro');

		}

		nova_img.src = img[atual][1];

	} else fadeOut('preload_quadro');

}

function preCarregarImgs(){

	// Aqui montaremos o array com todos endereços validos das imagens

	var todosLinks = document.getElementsByTagName('a');

	var cl = 0;

	for (var i=0; i<todosLinks.length; i++){

		var cada_link = todosLinks[i];

		var atributo_rel = String(cada_link.getAttribute('rel'));

		if (cada_link.getAttribute('href') && (atributo_rel.toLowerCase().match('aumenta'))){ 

			todasImagens.push(new Array(cl, cada_link.getAttribute('href'), cada_link.getAttribute('title')));

			cl++;

		}

	}

	// depois de montado o array, chamamos a funçao que vai pré-carregar uma por uma

	cria_PL();

	preCarrega(todasImagens,0);

}

function centralizaObj(larg, alt){

	window.scrollTo(0,0); // coloca a rolagem no topo da pagina

	// pega medidas da pagina sem rolagem

	medidas = pegaMedidas(false); 

	larguraPag = medidas[0];

	alturaPag = medidas[1];

	

	// centraliza horizontal

	margemH = -1*(larg/2);

	limiteH = -1*(larguraPag/2);

	if(margemH<limiteH) margemH = limiteH+5;

	$("quadro").style.marginLeft=margemH+"px";

	

	// centraliza vertical

	margemY = -1*(alt/2);

	limiteY = -1*(alturaPag/2);

	if(margemY<limiteY) margemY = limiteY+5;

	$("quadro").style.marginTop=margemY+"px";	

}

function pegaMedidas(rolagem){

	// Pega altura e largura do conteudo da pagina

	var larguraPag, alturaPag;

	if (self.innerHeight) {	// Todos exceto IE entram aqui

		larguraPag = self.innerWidth;

		alturaPag = self.innerHeight;

	} else if (document.documentElement && document.documentElement.clientHeight) { // IE 6, IE 7 entraram aqui

		larguraPag = document.documentElement.clientWidth;

		alturaPag = document.documentElement.clientHeight;

	} else if (document.body) { // Nenhum testado entrou aqui, deixo por garantia

		larguraPag = document.body.clientWidth;

		alturaPag = document.body.clientHeight;

	}

	if(rolagem){ // se foi pedidos os valores incluindo barra de rolagem

		var rolagemH, rolagemV;

		

		if (window.innerHeight && window.scrollMaxY) {	// Nenhum testado entrou aqui, mas deixo por garantia

			rolagemH = document.body.scrollWidth;

			rolagemV = window.innerHeight + window.scrollMaxY;

		} else if (document.body.scrollHeight > document.body.offsetHeight){ 

			// Opera9, Mac 3 para windows entram aqui

			rolagemH = document.body.scrollWidth;

			rolagemV = document.body.scrollHeight;

		} else { //IE6, IE7, FF, Netscape entram aqui.

			rolagemH = document.body.offsetWidth;

			rolagemV = document.body.offsetHeight;

		}	

		// Verifica se deve usar a altura do quadro do navegador ou da rolagem se existir

		if(rolagemV > alturaPag) {

			alturaPag = rolagemV;

			if(/Internet Explorer/.test(navigator.appName)) alturaPag+=30; // corrigir bug IE

		}

		// Verifica se deve usar a largura do quadro do navegador ou da rolagem se existir

		if(rolagemH > larguraPag) larguraPag = rolagemH;

	}

	valores = new Array(larguraPag,alturaPag); 

	return valores;

}

function cria_PL(){

	var objBody = document.getElementsByTagName("body").item(0);

	// divs preload img

	var objQuadroPL = document.createElement("div");

	objQuadroPL.setAttribute('id','preload_quadro');

	objQuadroPL.style.position="absolute";

	objQuadroPL.style.border="solid 1px #CCC";

	objQuadroPL.style.background="#FFF";

	objQuadroPL.style.bottom="10px";

	objQuadroPL.style.right="10px";

	objQuadroPL.style.display="none";

	objQuadroPL.style.height="108px";

	objQuadroPL.style.width="18px";

	objQuadroPL.style.zIndex=999;

	objBody.appendChild(objQuadroPL);

	

	var objlabelPL = document.createElement("div");

	objlabelPL.setAttribute('id','preload_label');

	objlabelPL.style.position="absolute";

	objlabelPL.style.border="solid 1px #CCC";

	objlabelPL.style.background="#9EDF8E";

	objlabelPL.style.left="3px";

	objlabelPL.style.top="2px";

	objlabelPL.style.height="0px";

	objlabelPL.style.width="10px";

	objlabelPL.style.zIndex=999;

	objQuadroPL.appendChild(objlabelPL);

	

	fadeIn("preload_quadro");

	

}

function criaObjetos(){

	// pega medidas da pagina

	medidas = pegaMedidas(true); 

	larguraPag = medidas[0];

	alturaPag = medidas[1];



	// criamos os elementos necessarios para exibir a imagem maior

	var objBody = document.getElementsByTagName("body").item(0);

	

	// cria a div transparente que cobre todo o fundo

	var objFundo = document.createElement("div");

	objFundo.setAttribute('id','fundo_img'); // define o id

	// CSS do objeto

	objFundo.style.position="absolute"; 

	objFundo.style.top="0px";

	objFundo.style.left="0px";

	objFundo.style.width=larguraPag+"px";

	objFundo.style.height=alturaPag+"px";

	objFundo.style.background="#000";

	objFundo.style.zIndex=998;

	objFundo.style.MozOpacity=.7; // transparencia FF

	objFundo.style.opacity=.7; // transparencia  FF, Opera, Safari, Netscape

	objFundo.style.filter="Alpha(Opacity=70)"; // transparencia  IE

	// Adiciona o objeto no Body do html

	objBody.appendChild(objFundo);



	// cria a div onde sera inserida a imagem

	var objQuadroext = document.createElement("div");

	objQuadroext.setAttribute('id','quadro');

	objQuadroext.style.position="absolute";

	objQuadroext.style.border="solid 2px #CCC";

	objQuadroext.style.top="50%";

	objQuadroext.style.left="50%";

	objQuadroext.style.width="50px";

	objQuadroext.style.height="50px";

	objQuadroext.style.background="#FFF";

	objQuadroext.style.padding="5px";

	objQuadroext.style.zIndex=999;

	objBody.appendChild(objQuadroext);

	

	// cria a div do cabeçalho

	var objTopo = document.createElement("div");

	objTopo.setAttribute('id','topo_quadro');

	objTopo.style.display='none';	

	objTopo.style.width="100%";

	objTopo.style.height="25px";

	objTopo.style.position='relative';

	objQuadroext.appendChild(objTopo);	

	

	// cria o link de fechar a janela

	var objFechar = document.createElement("a");

	objFechar.setAttribute('id','Fechar');

	objFechar.setAttribute('href','javascript:void(0)');

	objFechar.style.position='absolute';

	objFechar.style.right='5px';

	objFechar.onclick = function() {

		$("quadro").style.display="none";

		slide=false;

		$("fundo_img").style.display="none";

		slideShow();

		return false;

	}

	objTopo.appendChild(objFechar);

	

	// cria um span para o titulo

	var objTitulo = document.createElement("span");

	objTitulo.setAttribute('id','titulo_quadro');

	objTitulo.style.fontWeight='bold';

	objTitulo.style.position='absolute';

	objTitulo.style.left='5px';

	objTopo.appendChild(objTitulo);	

	

	

	// cria a imagem de fechar dentro do link fechar

	var objimgFechar = document.createElement("img");

	objimgFechar.setAttribute('id','imgFechar');

	objimgFechar.src=skin+'/fechar.jpg';

	objimgFechar.alt='Fechar';

	objimgFechar.style.border='0';

	objFechar.appendChild(objimgFechar);

	

	

	// cria a imagem loading

	var objImagemLoad = document.createElement("img");

	objImagemLoad.setAttribute('id','img_loading');

	objImagemLoad.src=skin+'/loading.gif';

	objImagemLoad.style.position='absolute';

	objImagemLoad.style.left='50%';

	objImagemLoad.style.top='50%';

	objImagemLoad.style.margin='-17px 0 0 -17px';

	objQuadroext.appendChild(objImagemLoad);

	

	// cria a imagem vazia

	var objImagem = document.createElement("img");

	objImagem.setAttribute('id','img_maior');

	objImagem.style.display='none';

	objQuadroext.appendChild(objImagem);

	

	// cria a div do rodape

	var objRodape = document.createElement("div");

	objRodape.setAttribute('id','rodape_quadro');

	objRodape.style.display='none';	

	objRodape.style.width="100%";

	objRodape.style.height="25px";

	objRodape.style.position='relative';

	objQuadroext.appendChild(objRodape);	

	

	// cria o link de ir a imagem anterior

	var objAnterior = document.createElement("a");

	objAnterior.setAttribute('id','link_anterior');

	objAnterior.setAttribute('href','javascript:void(0)');

	objAnterior.style.position='absolute';

	objAnterior.style.left='5px';

	objAnterior.style.bottom='0';

	objAnterior.onclick = function() {

		preparaImg(todasImagens[antLink][1], todasImagens[antLink][2]);

		return false;

	}

	objRodape.appendChild(objAnterior);

	

	// cria o icone de ir a imagem anterior

	var objimgAnterior = document.createElement("img");

	objimgAnterior.setAttribute('id','imgAnterior');

	objimgAnterior.src=skin+'/anterior.jpg';

	objimgAnterior.style.border='0';

	objAnterior.appendChild(objimgAnterior);

	

	// cria o link de ir a imagem posterior

	var objPosterior = document.createElement("a");

	objPosterior.setAttribute('id','link_posterior');

	objPosterior.setAttribute('href','javascript:void(0)');

	objPosterior.style.position='absolute';

	objPosterior.style.right='5px';

	objPosterior.style.bottom='0';

	objPosterior.onclick = function() {

		preparaImg(todasImagens[proxLink][1], todasImagens[proxLink][2]);

		return false;

	}

	objRodape.appendChild(objPosterior);		



	// cria o icone de ir a imagem posterior

	var objimgPosterior = document.createElement("img");

	objimgPosterior.setAttribute('id','imgPosterior');

	objimgPosterior.src=skin+'/posterior.jpg';

	objimgPosterior.style.border='0';

	objPosterior.appendChild(objimgPosterior);

	

	// cria slide

	var objSlide = document.createElement("a");

	objSlide.setAttribute('id','slide');

	objSlide.setAttribute('href','javascript:void(0)');

	objSlide.setAttribute('title','Clique para ativar o Slideshow');

	objSlide.style.position='absolute';

	objSlide.style.left='50%';

	objSlide.style.bottom='2px';

	objSlide.style.marginLeft='-70px';

	objSlide.onclick = function() {

		if(slide==false) slide = true;

		else slide=false;

		slideShow();

		return false;

	}	

	objSlide.innerHTML = "Modo Slideshow desativado";

	objRodape.appendChild(objSlide);

}

function fadeIn(id, valor){

	var obj = $(id);

	if(!valor || valor == undefined) valor=0;

	if(valor < 100){

		valor+=5;

		alpha = valor/100;

		obj.style.MozOpacity=alpha;

		obj.style.filter="alpha(opacity="+valor+")";

		obj.style.opacity = alpha;

		if(obj.style.display == "none") obj.style.display = "";

		setTimeout("fadeIn('"+id+"',"+valor+")",1);

	}

}

function fadeOut(id, valor){

	var obj = $(id);

	if(valor == undefined) valor=100;

	if(valor > 0){

		valor-=5;

		alpha = valor/100;

		obj.style.MozOpacity=alpha;

		obj.style.filter="alpha(opacity="+valor+")";

		obj.style.opacity = alpha;

		if(obj.style.display == "none") obj.style.display = "";

		setTimeout("fadeOut('"+id+"',"+valor+")",1);

	}

}

function slideShow(){

	if(slide==true){

		$("link_anterior").style.display="none";

		$("link_posterior").style.display="none";	

		totalImgs = todasImagens.length;

		if(proxLink>=totalImgs) { proxLink = 0; antLink=-1; }

		document.getElementById("slide").innerHTML = "Modo Slideshow ativado";

		setTimeout("preparaImg(todasImagens[proxLink][1], todasImagens[proxLink][2], 'slideshow')",tempo);

		setTimeout("slideShow()",tempo);

	} else {

		var Ultima = todasImagens.length-1;

		document.getElementById("slide").innerHTML = "Modo Slideshow desativado";

		if(Atual==Ultima) { proxLink = 0; antLink=Ultima-1; }

		if(Atual==0) {

			$("link_anterior").style.display="none";

			$("link_posterior").style.display="";

		}else if(Atual==Ultima){

			$("link_posterior").style.display="none";

			$("link_anterior").style.display="";

		}

		else {

			$("link_anterior").style.display="";

			$("link_posterior").style.display="";

		}

	}

}

function preparaImg(img, titulo, tipo){

	if(tipo==undefined) tipo = "ok";

	if(tipo=="ok" || (tipo=="slideshow"&&slide==true)){

		totalImgs = todasImagens.length;

		var Ultima = totalImgs-1;

		for(var i=0;i<totalImgs;i++){

			if(todasImagens[i][1]==img) Atual = i;

		}

		proxLink = Atual+1;

		antLink = Atual-1;

		

		// primeiro checo se ja existe a DIV "quadro"

		if($("quadro")==null) criaObjetos();

		else {

			// caso os objetos ja tenham sido criados altera a propriedade display para que o quadro seja exibido

			$("quadro").style.display="";

			$("quadro").style.width="50px";

			$("quadro").style.height="50px";

			$("img_loading").style.display="";

			$("fundo_img").style.display="";

			$("img_maior").style.display="none";

			$("topo_quadro").style.display="none";

			$("rodape_quadro").style.display="none";

		}

		// quando a imagem for carregada some com o gif loading e mostra a imagem

		$("img_maior").onload=function(){

			$("img_loading").style.display="none";

			fadeIn(this.getAttribute("id"));

			largura_quadro=this.offsetWidth;

			altura_quadro=this.offsetHeight+50; // um pouco mais alto para o espaço do botao fechar

			

			centralizaObj(largura_quadro,altura_quadro);

			

			largura_quadro = largura_quadro>400?largura_quadro:400;

			//alert(largura_quadro);

					

			$("quadro").style.textAlign='center';

			$("quadro").style.width=largura_quadro+"px";

			$("quadro").style.height=altura_quadro+"px";

			$("topo_quadro").style.display="";

			$("rodape_quadro").style.display="";

			$("titulo_quadro").innerHTML=titulo; // titulo do quadro

			// Controla se a imagem atual é a primeira ou a ultima imagem

			// Esconde os icones de anterior ou posterior se for o caso

			// atribui o link para proximas imagens

			if(tipo=="slideshow"){

				$("link_anterior").style.display="none";

				$("link_posterior").style.display="none";			

			} else {

				if(Atual==0) {

					if(totalImgs>1){

						$("link_anterior").style.display="none";

						$("link_posterior").style.display="";

					} else {

						$("slide").style.display="none";

						$("link_anterior").style.display="none";

						$("link_posterior").style.display="none";

					}

				}else if(Atual==Ultima){

					if(totalImgs>1){

						$("link_posterior").style.display="none";

						$("link_anterior").style.display="";

					} else {

						$("slide").style.display="none";

						$("link_anterior").style.display="none";

						$("link_posterior").style.display="none";

					}

				}

				else {

					if(totalImgs>1){

						$("link_anterior").style.display="";

						$("link_posterior").style.display="";

					} else {

						$("slide").style.display="none";

						$("link_anterior").style.display="none";

						$("link_posterior").style.display="none";

					}

				}

			}

		}

		//tratamento de erros

		$("img_maior").onerror=function(){ 

			alert("Erro: Impossivel carregar a imagem");

			$("quadro").style.display="none";

			$("fundo_img").style.display="none";

			$("img_loading").style.display="none";

			$("img_maior").src='loading.gif'; // sem essa linha ocorre um erro que somem os botoes anterior/posterior

		}	

		// altera o  src da imagem, antes ele ficava em cima do onload, joguei para baixo

		// por garantia, para nao correr o risco de carregar a imagem antes de ler toda funçao 

		// o que causaria erro

		$("img_maior").src=img;

	}

}

function ajustaQuadro(){

	if($("quadro")){

		centralizaObj($("quadro").offsetWidth,$("quadro").offsetHeight);

		medidas = pegaMedidas(true); 

		larguraPag = medidas[0];

		alturaPag = medidas[1];

		$("fundo_img").style.height = alturaPag+"px";

		$("fundo_img").style.width = larguraPag+"px";

	}

}

function checaLinks(){

	preCarregarImgs();

	var todosLinks = document.getElementsByTagName("a"); // pega todos os links 

	for (var i=0; i<todosLinks.length; i++){ 

			var cada_link = todosLinks[i]; // varre os links um por um

			var atributo_rel = String(cada_link.getAttribute('rel')); // pega o valor do atributo rel no link

			if (cada_link.getAttribute('href') && (atributo_rel.toLowerCase().match('aumenta'))){ 

				// Entra se o link tiver um valor de href e o valor de rel for igual a aumenta

				cada_link.onclick = function () { preparaImg(this.getAttribute('href'), this.getAttribute('title')); return false; } 

				// quando o link for clicado chama a funçao aumentaImg

				// O return false serve para anular a açao do href

			}

	}	

}

adicionarEvento(window,"load", checaLinks);

adicionarEvento(window,"resize", ajustaQuadro);

// Quando a pagina for carregada chama a funçao que vai varrer os links em busca das

// do atributo rel com o valor "aumenta", estes links quando clicados

// executam a funcao aumentaImg para exibir a imagem em tamanho maior.