// -----------------------------------------------------------------------------------
//
//  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');
				
				ajustaQuadro();
}
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);
				
				ajustaQuadro();
}
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");
				ajustaQuadro();

}
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="#666";
        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.color='white';
        objTitulo.style.fontFamily='Arial';
        objTitulo.style.left='12px';
        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]);
								setTimeout("ajustaQuadro();",10);
                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]);
								setTimeout("ajustaQuadro();",10);
                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 = "clique para iniciar slideshow";
        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 = "clique para finalizar slideshow";
                setTimeout("preparaImg(todasImagens[proxLink][1], todasImagens[proxLink][2], 'slideshow')",tempo);
                setTimeout("slideShow()",tempo);
        } else {
                var Ultima = todasImagens.length-1;
                document.getElementById("slide").innerHTML = "clique para iniciar slideshow";
                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="";
                }
        }
				setTimeout("ajustaQuadro();",10);
}
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'));
																	setTimeout("ajustaQuadro();",10);
																	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.