/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Animação Liga e desliga temas em uma sequência temporizada Veja: Arquivo: i3geo/ferramentas/animacao/index.js.php Licenca: GPL2 i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation; Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto com este programa; se não, escreva para a Free Software Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ if(typeof(i3GEOF) === 'undefined'){ var i3GEOF = {}; } /* Classe: i3GEOF.animacao */ i3GEOF.animacao = { /* Variavel: aguarde Estilo do objeto DOM com a imagem de aguarde existente no cabeçalho da janela. */ aguarde: "", tempo: 1000, /* Para efeitos de compatibilidade antes da versão 4.7 que não tinha dicionário */ criaJanelaFlutuante: function(){ i3GEOF.animacao.iniciaDicionario(); }, /* Function: iniciaDicionario Carrega o dicionário e chama a função que inicia a ferramenta O Javascript é carregado com o id i3GEOF.nomedaferramenta.dicionario_script */ iniciaDicionario: function(){ if(typeof(i3GEOF.animacao.dicionario) === 'undefined'){ i3GEO.util.scriptTag( i3GEO.configura.locaplic+"/ferramentas/animacao/dicionario.js", "i3GEOF.animacao.iniciaJanelaFlutuante()", "i3GEOF.animacao.dicionario_script" ); } else{ i3GEOF.animacao.iniciaJanelaFlutuante(); } }, /* Function: inicia Inicia a ferramenta. É chamado por criaJanelaFlutuante Parametro: iddiv {String} - id do div que receberá o conteudo HTML da ferramenta */ inicia: function(iddiv){ i3GEOF.animacao.aguarde.visibility = "visible"; $i(iddiv).innerHTML = i3GEOF.animacao.html(); i3GEOF.animacao.listaDeCamadas(); i3GEO.util.mensagemAjuda("i3GEOanimacaomen1",$i("i3GEOanimacaomen1").innerHTML); i3GEOF.animacao.aguarde.visibility = "hidden"; }, /* Function: html Gera o código html para apresentação das opções da ferramenta Retorno: String com o código html */ html:function(){ var ins = ""; ins += "" + "
" + "  " + "  " + "  " + "  " + "
" + "

" + '
' + '

'+$trad(5,i3GEOF.animacao.dicionario)+'

' + '
'; return ins; }, listaDeCamadas: function(camadas){ if(!camadas){ camadas = i3GEO.arvoreDeCamadas.CAMADAS; } var n = camadas.length, ins = ""; while(n > 0){ n -= 1; if(camadas[n].tema !== "") {ins += "";} } ins += "
"+camadas[n].tema+"
"; $i("i3GEOFanimacaoLista").innerHTML = ins; }, /* Function: iniciaJanelaFlutuante Cria a janela flutuante para controle da ferramenta. */ iniciaJanelaFlutuante: function(){ var janela,divid,temp,titulo,cabecalho,minimiza; cabecalho = function(){}; minimiza = function(){ i3GEO.janela.minimiza("i3GEOF.animacao"); }; //cria a janela flutuante titulo = $trad("p21")+"    "; janela = i3GEO.janela.cria( "210px", "80px", "", "", "", titulo, "i3GEOF.animacao", false, "hd", cabecalho, minimiza ); divid = janela[2].id; $i("i3GEOF.animacao_corpo").style.backgroundColor = "white"; $i("i3GEOF.animacao_corpo").style.textAlign = "left"; i3GEOF.animacao.aguarde = $i("i3GEOF.animacao_imagemCabecalho").style; i3GEOF.animacao.inicia(divid); temp = function(){ i3GEOF.animacao.termina(); }; YAHOO.util.Event.addListener(janela[0].close, "click", temp); }, codigos: [], /* Function: anima Inicia a animação */ dispara: function(){ if(i3GEOF.animacao.aguarde.visibility === "visible") {return;} var codigos = i3GEOF.animacao.obtemTemasAnima(); i3GEOF.animacao.codigos = codigos; i3GEOF.animacao.contador = 0; i3GEOF.animacao.aguarde.visibility = "visible"; i3GEOF.animacao.desligaTodos(codigos); i3GEOF.animacao.retornaCoresInicial(); i3GEOF.animacao.anima(i3GEOF.animacao.codigos.length - 1); }, maisrapido: function(){ i3GEOF.animacao.tempo -= 100; }, maislento: function(){ i3GEOF.animacao.tempo += 100; }, anima: function(c){ if(i3GEOF.animacao.codigos.length === 0) {return;} //console.warn(c); if(c < 0){ i3GEOF.animacao.termina(); i3GEOF.animacao.dispara(); } else{ $i("i3GEOanima"+i3GEOF.animacao.codigos[c]).style.backgroundColor = "yellow"; i3GEOF.animacao.ligaDesliga(i3GEOF.animacao.codigos[c],'troca'); setTimeout("i3GEOF.animacao.anima("+(c - 1)+");",i3GEOF.animacao.tempo); } }, desligaTodos: function(codigos){ var n = codigos.length; while(n > 0){ n -= 1; i3GEOF.animacao.ligaDesliga(codigos[n],"desliga"); } }, ligaDesliga: function(codigoTema,tipo){ var layer,estilo; switch(i3GEO.Interface.ATUAL){ case "openlayers": layer = i3geoOL.getLayersByName(codigoTema)[0]; if(tipo === "troca"){ layer.setVisibility(!layer.getVisibility()); } if(tipo === "liga") {layer.setVisibility(true);} if(tipo === "desliga") {layer.setVisibility(false);} break; case "googlemaps": layer = i3GEO.Interface.googlemaps.retornaDivLayer(codigoTema); if(!layer){return;} estilo = layer.style.visibility; if(tipo === "troca"){ if(estilo === "visible" || estilo === "") {layer.style.visibility = "hidden";} else {layer.style.visibility = "visible";} } if(tipo === "liga") {layer.style.visibility = "visible";} if(tipo === "desliga") {layer.style.visibility = "hidden";} break; }; }, termina: function(){ i3GEOF.animacao.codigos = []; i3GEOF.animacao.aguarde.visibility = "hidden"; i3GEOF.animacao.retornaStatusInicial(); }, obtemTemasAnima: function(){ var temp = [], cs = $i("i3GEOFanimacaoLista").getElementsByTagName("input"), n = cs.length; while(n > 0){ n -= 1; if(cs[n].checked === true) {temp.push(cs[n].value);} } return temp; }, retornaStatusInicial: function(){ if($i("i3GEOFanimacaoLista")){ i3GEOF.animacao.retornaCoresInicial(); var temas = i3GEO.arvoreDeCamadas.filtraCamadas("status",2,"igual",i3GEO.arvoreDeCamadas.CAMADAS), n = temas.length; while(n > 0){ n -= 1; i3GEOF.animacao.ligaDesliga(temas[n].name,"liga"); } temas = i3GEO.arvoreDeCamadas.filtraCamadas("status",2,"diferente",i3GEO.arvoreDeCamadas.CAMADAS); n = temas.length; while(n > 0){ n -= 1; i3GEOF.animacao.ligaDesliga(temas[n].name,"desliga"); } } }, retornaCoresInicial: function(){ var cs = $i("i3GEOFanimacaoLista").getElementsByTagName("input"), n = cs.length; while(n > 0){ n -= 1; $i("i3GEOanima"+cs[n].value).style.backgroundColor = "white"; } } };