/* Title: Gadgets (objetos marginais do mapa) File: i3geo/classesjs/classe_gadgets.js About: Licença 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@mma.gov.br 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; tanto a versão 2 da Licença. 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(i3GEO) == 'undefined'){ i3GEO = new Array(); } /* Class: i3GEO.gadgets Inclui elementos especiais no mapa Os elementos são opcionais e adicionam funcionalidades ao mapa. */ i3GEO.gadgets = { /* Variable: PARAMETROS Parametros de inicialização dos gadgets. Essa variável define os parâmetros individuais de cada gadget e o ID do elemento HTML onde o gadget será incluído. Default: i3GEO.gadgets.PARAMETROS = { "mostraCoordenadasUTM": {idhtml:"mostraUTM"}, "mostraCoordenadasGEO": {idhtml:"localizarxy"}, "mostraInserirKml": {idhtml:"inserirKml"}, "mostraEscalaNumerica": {idhtml:"escala"}, "mostraEscalaGrafica": {idhtml:"escalaGrafica"}, "mostraBuscaRapida": {idhtml:"buscaRapida"}, "mostraVisual": {idhtml:"visual"}, "mostraQuadros": {idhtml:"lugarquadros"}, "mostraHistoricoZoom": {idhtml:"historicozoom"}, "mostraMenuSuspenso": {idhtml:"menus"} } Type: {JSON} */ PARAMETROS: { "mostraCoordenadasUTM": {idhtml:"mostraUTM"}, "mostraCoordenadasGEO": {idhtml:"localizarxy"}, "mostraInserirKml": {idhtml:"inserirKml"}, "mostraEscalaNumerica": {idhtml:"escala"}, "mostraEscalaGrafica": {idhtml:"escalaGrafica"}, "mostraBuscaRapida": {idhtml:"buscaRapida"}, "mostraVisual": {idhtml:"visual"}, "mostraQuadros": {idhtml:"lugarquadros"}, "mostraHistoricoZoom": {idhtml:"historicozoom"}, "mostraMenuSuspenso": {idhtml:"menus"} }, /* Function: mostraCoordenadasUTM Obtém as coordenadas UTM da posição do mouse sobre o mapa. As coordenadas são obtidas por meio de uma chamada AJAX. Para o funcionamento correto é necessário incluir essa função no evento que identifica quando o mouse está estacionado sobre o mapa. Por default isso já é feito pelo i3Geo. Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o id definido em i3GEO.gadgets.PARAMETROS (mostraUTM) ou altere a variável i3GEO.eventos.MOUSEPARADO Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS Return: {JSON} - objeto com x e y */ mostraCoordenadasUTM: function(id){ if(arguments.length == 0 || id == "") {var id = i3GEO.gadgets.PARAMETROS.mostraCoordenadasUTM.idhtml;} else {i3GEO.gadgets.PARAMETROS.mostraCoordenadasUTM.idhtml = id;} var temp = $i(id); if (!temp){return;} atualizaCoordenadasUTM = function() { //if($i(i3GEO.gadgets.PARAMETROS.mostraCoordenadasUTM.idhtml).style.display == "block"){return;} if(objposicaocursor.imgx < 10 || objposicaocursor.imgy < 10) {return;} var tempUtm = function(retorno){ setTimeout("$i(i3GEO.gadgets.PARAMETROS.mostraCoordenadasUTM.idhtml).style.display='none';",3400); var temp = $i(i3GEO.gadgets.PARAMETROS.mostraCoordenadasUTM.idhtml); if(retorno.data){ temp.style.display="block"; temp.innerHTML = "UTM: x="+retorno.data.x+" y="+retorno.data.y+" zona="+retorno.data.zona+" datum="+retorno.data.datum; //return (retorno.data); } }; i3GEO.php.geo2utm(tempUtm,objposicaocursor.ddx,objposicaocursor.ddy); }; if(i3GEO.eventos.MOUSEPARADO.toString().search("atualizaCoordenadasUTM()") < 0) {i3GEO.eventos.MOUSEPARADO.push("atualizaCoordenadasUTM()");} }, /* Function: mostraCoordenadasGEO Obtém as coordenadas Geográficas da posição do mouse sobre o mapa. Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o id definido em i3GEO.gadgets.PARAMETROS (localizarxy) Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS */ mostraCoordenadasGEO: function(id){ try{ // //ativa o evento que preenche os campos de coordenadas // if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraCoordenadasGEO.idhtml;} else {i3GEO.gadgets.PARAMETROS.mostraCoordenadasGEO.idhtml = id;} if($i(id)){ if(!$i("xm")){ var ins = ""; ins += ""; ins += ""; ins += ""; ins += ""; ins += ""; ins += ""; ins += ""; var temp = 'var xxx = i3GEO.calculo.dms2dd($i("xg").value,$i("xm").value,$i("xs").value);'; temp += 'var yyy = i3GEO.calculo.dms2dd($i("yg").value,$i("ym").value,$i("ys").value);'; temp += 'i3GEO.navega.zoomponto(i3GEO.configura.locaplic,i3GEO.configura.sid,xxx,yyy);'; ins += ""; ins += "
localiza X: "+$inputText(id,"315","xg","grau","3","-00")+" "+$inputText("","","xm","minuto","3","00")+" "+$inputText("","","xs","segundo","5","00.00")+" Y:"+$inputText("","","yg","grau","3","-00")+" "+$inputText("","","ym","minuto","3","00")+" "+$inputText("","","ys","segundo","5","00.00")+"
"; $i(id).innerHTML = ins; $i3geo_temp_xg = $i("xg"); $i3geo_temp_xm = $i("xm"); $i3geo_temp_xs = $i("xs"); $i3geo_temp_yg = $i("yg"); $i3geo_temp_ym = $i("ym"); $i3geo_temp_ys = $i("ys"); atualizaLocalizarxy = function(){ try{ var x = objposicaocursor.dmsx.split(" "); var y = objposicaocursor.dmsy.split(" "); $i3geo_temp_xg.value = x[0]; $i3geo_temp_xm.value = x[1]; $i3geo_temp_xs.value = x[2]; $i3geo_temp_yg.value = y[0]; $i3geo_temp_ym.value = y[1]; $i3geo_temp_ys.value = y[2]; } catch(m){}; }; if($i(i3GEO.interface.IDMAPA)) {YAHOO.util.Event.addListener($i(i3GEO.interface.IDMAPA),"mousemove", atualizaLocalizarxy);} } } } catch(e){alert("mostraCoordenadasGeo: "+e.description);} }, /* Function: mostraInserirKml Mostra no mapa a a opção para inserir kml. Essa opção só funciona com a API do Google carregada Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o id definido em i3GEO.gadgets.PARAMETROS Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS */ mostraInserirKml: function(id){ if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraInserirKml.idhtml;} if($i(id)){ if(!$i("i3geo_urlkml")){ var i = $inputText(id,"280","i3geo_urlkml","kml url","40",""); var ins = "
Kml: "+i; var temp = 'i3GEO.mapa.insereKml(true);'; ins += "
"; $i(id).innerHTML = ins; } } }, /* Function: mostraEscalaNumerica Mostra no mapa a escala numérica. A escala numérica pode ser alterada pelo usuário digitando-se a nova escala. Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o id definido em i3GEO.gadgets.PARAMETROS Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS */ mostraEscalaNumerica: function(id){ if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraEscalaNumerica.idhtml;} if($i(id)){ atualizaEscalaNumerica = function(escala){ var e = $i("i3geo_escalanum"); if(!e){ i3GEO.eventos.NAVEGAMAPA.remove("atualizaEscalaNumerica()"); return; } if(arguments.length == 1) e.value = escala; else e.value = parseInt(i3GEO.parametros.mapscale); }; if(!$i("i3geo_escalanum")){ var i = $inputText(id,"138","i3geo_escalanum",$trad("d10"),"19",parseInt(i3GEO.parametros.mapscale)); var ins = "
1:"+i; var temp = 'var nova = document.getElementById("i3geo_escalanum").value;'; temp += 'i3GEO.navega.aplicaEscala(i3GEO.configura.locaplic,i3GEO.configura.sid,nova);'; ins += "
"; $i(id).innerHTML = ins; } if(i3GEO.eventos.NAVEGAMAPA.toString().search("atualizaEscalaNumerica()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("atualizaEscalaNumerica()");} } }, /* Function: mostraEscalaGrafica Mostra no mapa a escala grafica como um elemento fora do mapa. Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o id definido em i3GEO.gadgets.PARAMETROS(escala) Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS */ mostraEscalaGrafica: function(id){ if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraEscalaGrafica.idhtml;} if($i(id)){ atualizaEscalaGrafica = function(){ var e = $i("imagemEscalaGrafica"); if(!e){ i3GEO.eventos.NAVEGAMAPA.remove("atualizaEscalaGrafica()"); return; } var temp = function(retorno){ eval(retorno.data); i3GEO.gadgets.quadros.grava("escala",scaimagem); $i("imagemEscalaGrafica").src = scaimagem; }; i3GEO.php.escalagrafica(temp); }; if(!$i("imagemEscalaGrafica")){ var ins = "" $i(id).innerHTML = ins; } atualizaEscalaGrafica(); if(i3GEO.eventos.NAVEGAMAPA.toString().search("atualizaEscalaGrafica()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("atualizaEscalaGrafica()");} } }, /* Function: mostraBuscaRapida Mostra a opção de busca rápida de lugares por palavra digitada. Se você não quer essa função no mapa, elimine o elemento HTML existente no mapa que contenha o id definido em i3GEO.gadgets.PARAMETROS (buscaRapida) Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS */ mostraBuscaRapida: function(id){ if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraBuscaRapida.idhtml;} if($i(id)){ i3geo_buscaRapida = function(){ if ($i("valorBuscaRapida").value == "") {alert ("Digite uma palavra para busca!");return;} wdocaf("300px","280px",i3GEO.configura.locaplic+"/ferramentas/buscarapida/index.htm","","","Busca rapida"); } var i = $inputText(id,"180","valorBuscaRapida","digite o texto para busca","30",$trad("o2")); var ins = "
"+i; ins += "
"; $i(id).innerHTML = ins; } }, /* Function: mostraHistoricoZoom Mostra na barra de zoom os ícones que controlam a visualização do histórico da navegação sobre o mapa Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS */ mostraHistoricoZoom: function(id){ if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraHistoricoZoom.idhtml;} if($i(id)){ marcadorZoom = ""; var ins = "";} else {ins += "6px;'>";} ins += ""; ins += ""; ins += ""; ins += "
 
"; $i(id).innerHTML = ins; $i("i3geo_zoomanterior").onclick = function(){ if(marcadorZoom == ""){marcadorZoom = i3GEO.gadgets.quadros.quadroatual;} if(i3GEO.gadgets.quadros.quadroatual > 0){ marcadorZoom = marcadorZoom - 1; if(marcadorZoom >= 0) i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",i3GEO.gadgets.quadros.quadrosfilme[marcadorZoom].extensao); else marcadorZoom = 0; } }; $i("i3geo_zoomproximo").onclick = function(){ if(marcadorZoom == ""){marcadorZoom = i3GEO.gadgets.quadros.quadroatual;} if(i3GEO.gadgets.quadros.quadroatual < i3GEO.gadgets.quadros.quadrosfilme.length){ marcadorZoom = marcadorZoom + 1 if(marcadorZoom < i3GEO.gadgets.quadros.quadrosfilme.length) i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,"",i3GEO.gadgets.quadros.quadrosfilme[marcadorZoom].extensao); } else marcadorZoom = i3GEO.gadgets.quadros.quadrosfilme.length; }; } }, /* Class: i3GEO.gadgets.visual Gera os ícones e controla as opções de modificação do visual do mapa. O visual consiste na definição dos ícones utilizados no mapa. O visual pode ser modificado na inicialização ou então escolhido pelo usuário. Os visuais disponíveis são definidos no servidor e consistem em diretórios localizados em i3geo/imagens/visual. A lista de visuais disponíveis é obtida na inicialização do i3geo. Os ícones para mudança do visual são incluídos no elemento HTML definido em i3geo.gadgets.PARAMETROS.visual */ visual: { /* Function: inicia Constrói os ícones de escolha do visual. Parameters: id {String} - id do elemento que receberá os ícones (opcional) */ inicia: function(id){ if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraVisual.idhtml;} if($i(id)){ if (i3GEO.parametros.listavisual != ""){ var l = i3GEO.parametros.listavisual.split(","); var visuais = ""; var li = l.length-1; if(li >= 0){ do{visuais += " ";} while(li--) } $i(id).innerHTML = visuais; $i(id).onmouseover = function(){i3GEO.ajuda.mostraJanela($trad("d26"));}; $i(id).onmouseout = function(){i3GEO.ajuda.mostraJanela("");}; } } }, /* Function: troca Troca o visual atual. A lista de visuais disponíveis é obtida em i3GEO.parametros.listavisual Parameters: visual {String} - nome do visual que será utilizado. */ troca: function(visual){ var monta = function(retorno){ try{ i3GEO.janela.fechaAguarde("i3GEO.atualiza"); // //pega todas as imagens da interface // var imgstemp = retorno.data.arquivos; var imgs = new Array(); var i = imgstemp.length-1; if(i >= 0){ do{ var temp = imgstemp[i].split("."); if ((temp[1] == "png") || (temp[1] == "gif") || (temp[1] == "jpg")) {imgs.push(imgstemp[i]);} } while(i--) } var elementos = document.getElementsByTagName("img"); var elt = elementos.length; var caminho = i3GEO.configura.locaplic+"/imagens/visual/"+visual+"/"; //faz a troca em imagens var j = imgs.length-1; if(j >= 0){ do{ for (var i=0;i < elt; i++){ if ((elementos[i].src.search("branco") > -1) && ((elementos[i].className != "") || (elementos[i].id != ""))) {elementos[i].src = caminho+"branco.gif";} if (elementos[i].src.search("visual") > -1) {elementos[i].style.backgroundImage = "url('"+caminho+imgs[j]+"')";} } } while(j--) } //faz a troca em ids var j = imgs.length-1; if(j >= 0){ do{ var busca = imgs[j].split("."); if ($i(busca[0])) {$i(busca[0]).src = caminho+imgs[j];} } while(j--) } //faz a troca em bg var elementos = new Array("barraSuperior","barraInferior","vertMaisZoom","vertMenosZoom","foldermapa","foldermapa1","tic"); var i = elementos.length-1; if(i >= 0){ do{ if ($i(elementos[i])){ var nimagem = $i(elementos[i]).style.backgroundImage.replace(i3GEO.configura.visual,visual); $i(elementos[i]).style.backgroundImage = nimagem; //$i(elementos[i]).style.backgroundImage = "url('"+caminho+"sprite.png')"; } } while(i--) } i3GEO.configura.visual = visual; } catch(e){alert("Ocorreu um erro. mudaVisual"+e);i3GEO.janela.fechaAguarde("i3GEO.atualiza");} }; // //pega a lista de imagens no diretório do i3geo correspondente ao visual selecionado // i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.listaarquivos(monta,"imagens/visual/"+visual); } }, /* Class: i3GEO.gadgets.quadros Cria e controla o funcionamento dos quadros de animação. Os quadros são mostrados no mapa como uma sequência de quadros de um filme. As imagens que são produzidas no mapa são armazenadas em cada quadro, permitindo sua recuperação. Os quadros armazenam também a extensão geográfica de cada imagem, permitindo sua recuperação. */ quadros: { /* Variable: quadrosfilme Armazena cada quadro individualmente com as suas propriedades Type: {Array} */ quadrosfilme: new Array(), /* Variable: quadroatual Valor do índice do quadro atual Type: {Integer} */ quadroatual: 0, /* Function: inicia Gera os quadros e inicializa os objetos para armazenar as imagens Parameters: qs {Integer} - número de quadros lugarquadros {String} - id do elemento HTML que receberá os quadros (opcional) */ inicia: function(qs,lugarquadros){ if(arguments.length == 1) {var lugarquadros = i3GEO.gadgets.PARAMETROS.mostraQuadros.idhtml;} var q = ""; for (var i = 0; i < qs; i++){ q += "
i3GEO.gadgets.quadros.quadrosfilme.length){ clearTimeout(tAnima); $i("imgClone").style.display = "none"; $i("img").style.display="block"; return; } //$i("img").src = preLoad[janima].src; //$i("f"+janima).className = "quadro1"; i3GEO.gadgets.quadros.trocaMapa("quadro"+Qanima); Qanima++; tAnima = setTimeout('i3GEO.gadgets.quadros.anima('+Qanima+','+t+')',t); }, /* Function: listaImagens Lista as imagens armazenadas em uma nova página no navegador */ listaImagens: function(){ if (i3GEO.parametros.utilizacgi == "sim"){ i3GEO.parametros.utilizacgi = "nao"; var volta = function() {alert("Armazenamento de imagens ativado. As proximas imagens ficarao disponiveis");}; i3GEO.php.desativacgi(volta); } else{ var wi = window.open("");//"",null,"width=550,height=650,resizable=yes,scrollbars=yes"); //pega os dados do objeto quadrosfilme e escreve na nova janela var mensagem = "
Não existem imagens guardadas."; wi.document.write("

Click com o botão da direita do mouse sobre a imagem para fazer o download
"); var i = i3GEO.gadgets.quadros.quadrosfilme.length-1; if(i >= 0){ do{ if (i3GEO.gadgets.quadros.quadrosfilme[i].imagem){ wi.document.write("

Imagem: "+i+"
"); wi.document.write("

Abrangência: "+i3GEO.gadgets.quadros.quadrosfilme[i].extensao+"
"); wi.document.write(""); wi.document.write(""); wi.document.write(""); } i-- } while(i>=0) } wi.document.write("
Fim"); } } }, /* Function: mostraMenuSuspenso Mostra o menu suspenso com opções extras de análise, ajuda, etc O objeto YAHOO.widget.MenuBar resultante pode ser obtido na variável i3GEOoMenuBar O conteúdo do menu é baseado na variável i3GEO.configura.oMenuData Parameters: id {String} - id do elemento HTML que receberá o resultado. Esse id por default é obtido de i3GEO.gadgets.PARAMETROS */ mostraMenuSuspenso: function(id){ if(arguments.length == 0) {var id = i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.idhtml;} else {i3GEO.gadgets.PARAMETROS.mostraMenuSuspenso.idhtml = id;} var objid = $i(id); if(objid){ objid.className="yuimenubar"; if($i("contemMenu")){ $i("contemMenu").className="yui-navset"; } if(!i3GEO.configura.oMenuData.menu){ var ins = ""; ins += '

'; ins += ''; ins += '
'; objid.innerHTML=ins; } else{ var ins = ""; ins += '
'; ins += '
    '; var n = i3GEO.configura.oMenuData.menu.length; for(i = 0;i < n;i++){ if(i3GEO.parametros.w < 550){ i3GEO.configura.oMenuData.menu[i].id = ""; var estilo = "padding-bottom:3px;top:0px;border: 0px solid white;"; } else var estilo = "padding-bottom:3px;top:0px;border: 0px solid white;"; ins += '
  •  '+i3GEO.configura.oMenuData.menu[i].nome+'
  • '; } ins += '
'; ins += '
'; objid.innerHTML=ins; } var onMenuBarBeforeRender = function (p_sType, p_sArgs){ if(i3GEO.parametros.w >= 500) {var conta = 0;} else {var conta = 0;} for(var nomeMenu in i3GEO.configura.oMenuData.submenus){ i3GEOoMenuBar.getItem(conta).cfg.setProperty('submenu',{id:nomeMenu,itemdata: i3GEO.configura.oMenuData.submenus[nomeMenu]}); var conta=conta+1; } } i3GEOoMenuBar=new YAHOO.widget.MenuBar(id,{autosubmenudisplay: true, showdelay: 100, hidedelay: 500, lazyload: false}); i3GEOoMenuBar.beforeRenderEvent.subscribe(onMenuBarBeforeRender); i3GEOoMenuBar.render(); // //corrige problemas de estilo // var temp = objid.style; temp.backgroundPosition = "0px -5px"; temp.border = "1px solid white"; } } }; //YAHOO.log("carregou classe gadgets", "Classes i3geo");