/* Title: Navegação sobre o mapa File: i3geo/classesjs/classe_navega.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.navega Realiza operações de navegação do mapa, como zoom, pan, etc.. Quando todos os argumentos da função forem opcionais, basta usar nomeFuncao(), nos casos em que os primeiros argumentos forem opcionais e os demais obrigatórios, utilize "" no lugar do argumento que se quer usar o default, exemplo, nomeFuncao("","",10) */ i3GEO.navega = { /* Property: FATORZOOM Valor utilizado nas operações de zoom in e out. Fator de zoom. Default: 2 Type: {Integer} */ FATORZOOM: 2, /* Function: zoomin Aproxima o mapa Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo */ zoomin: function(locaplic,sid){ //YAHOO.log("zoomin", "i3geo"); if(arguments.length > 0){ i3GEO.configura.locaplic = locaplic; i3GEO.configura.sid = sid; } i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.aproxima(i3GEO.atualiza,i3GEO.navega.FATORZOOM); }, /* Function: zoomout Afasta o mapa Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo */ zoomout: function(locaplic,sid){ //YAHOO.log("zoomout", "i3geo"); if(arguments.length > 0){ i3GEO.configura.locaplic = locaplic; i3GEO.configura.sid = sid; } i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.afasta(i3GEO.atualiza,i3GEO.navega.FATORZOOM); }, /* Function: zoomponto Centraliza o mapa em um ponto e acrescenta o ponto como uma nova camada no mapa Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo x {Numeric} - coordenada em décimos de grau da longitude y {Numeric} - coordenada em décimos de grau da latitude */ zoomponto: function(locaplic,sid,x,y){ //YAHOO.log("zoomponto", "i3geo"); if(locaplic != ""){i3GEO.configura.locaplic = locaplic;} if(sid != ""){i3GEO.configura.sid = sid;} i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.zoomponto(i3GEO.atualiza,x,y); }, /* Function: zoompontoIMG Centraliza o mapa em um ponto de coordenadas medidas na imagem do mapa Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo x {Numeric} - coordenada x da imagem y {Numeric} - coordenada y da imagem */ zoompontoIMG: function(locaplic,sid,x,y){ if(locaplic != ""){i3GEO.configura.locaplic = locaplic;} if(sid != ""){i3GEO.configura.sid = sid;} i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.pan(i3GEO.atualiza,"","",x,y); }, /* Function: xy2xy Desloca o mapa de um ponto de coordenadas xy para um segundo ponto Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo xi {Numeric} - coordenada x inicial yi {Numeric} - coordenada y inicial xf {Numeric} - coordenada x final yf {Numeric} - coordenada y final ext {String} - extensão geográfica do mapa tipoimagem {String} - tipo de imagem atual do mapa (sepia,nenhum,cinza) */ xy2xy: function(locaplic,sid,xi,yi,xf,yf,ext,tipoimagem){ if(locaplic != ""){i3GEO.configura.locaplic = locaplic;} if(sid != ""){i3GEO.configura.sid = sid;} var disty = (yi * -1) + yf; var distx = (xi * -1) + xf; var ex = ext.split(" "); var novoxi = (ex[0] * 1) - distx; var novoxf = (ex[2] * 1) - distx; var novoyi = (ex[1] * 1) - disty; var novoyf = (ex[3] * 1) - disty; if ((distx == 0)&&(disty == 0)) {return false;} else{ var nex = novoxi+" "+novoyi+" "+novoxf+" "+novoyf; i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,tipoimagem,nex); return true; } }, /* Function: localizaIP Localiza as coordenadas baseadas no número IP do usuário. Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo funcao {Function} - função que será executada ao concluir a chamada AJAX. Essa função receberá o objeto JSON obtido. */ localizaIP: function(locaplic,sid,funcao){ if(locaplic != ""){i3GEO.configura.locaplic = locaplic;} if(sid != ""){i3GEO.configura.sid = sid;} //YAHOO.log("localizaIP", "i3geo"); i3GEO.php.localizaIP(funcao); }, /* Function: zoomIP Mostra no mapa um ponto baseado na localização do usuário. Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo */ zoomIP: function(locaplic,sid){ try { if(arguments.length > 0){ i3GEO.configura.locaplic = locaplic; i3GEO.configura.sid = sid; } var mostraIP = function(retorno) { if (retorno.data.latitude != null) { i3GEO.navega.zoomponto(locaplic,sid,retorno.data.longitude,retorno.data.latitude); } else {alert("Nao foi possivel identificar a localizacao.");} }; i3GEO.navega.localizaIP(locaplic,sid,mostraIP); } catch(e){var e = "";} }, /* Function: zoomExt Aplica uma nova extensão geográfica ao mapa. Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo tipoimagem {String} - Utlize "" para aplicar o default. Tipo de imagem que será retornada na imagem do mapa que será criada ext {String} - Extensão geográfica no formato xmin ymin xmax ymax */ zoomExt: function(locaplic,sid,tipoimagem,ext){ //YAHOO.log("zoomExt", "i3geo"); if(locaplic != ""){i3GEO.configura.locaplic = locaplic;} if(sid != ""){i3GEO.configura.sid = sid;} if(tipoimagem == "") {var tipoimagem = "nenhum";} i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.mudaext(i3GEO.atualiza,tipoimagem,ext); }, /* Function: aplicaEscala Aplica ao mapa um novo valor de escala tendo como base o valor do denminador Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo escala {Numeric} - denominador da escala */ aplicaEscala: function(locaplic,sid,escala){ //YAHOO.log("aplicaescala", "i3geo"); if(locaplic != ""){i3GEO.configura.locaplic = locaplic;} if(sid != ""){i3GEO.configura.sid = sid;} i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.mudaescala(i3GEO.atualiza,escala); }, /* Function: panFixo Desloca o mapa para uma determinada direção com uma distância fixa. Parameters: locaplic {String} - (opcional) endereço do i3geo utilizado na geração da URL para fazer a chamada AJAX sid {String} - (opcional) código da seção aberta no servidor pelo i3geo direcao {String} - norte,sul,leste,oeste,sudeste,sudoeste,nordeste,noroeste w {Numeric} - largura da imagem do mapa em pixels h {Numeric} - altura da imagem do mapa em pixels escala {Numeric} - escala do mapa */ panFixo: function(locaplic,sid,direcao,w,h,escala){ //YAHOO.log("panfixo", "i3geo"); if(locaplic != ""){i3GEO.configura.locaplic = locaplic;} if(sid != ""){i3GEO.configura.sid = sid;} if (direcao == "norte"){ var y = h / 6; var x = w / 2; } if (direcao == "sul"){ var y = h - (h / 6); var x = w / 2; } if (direcao == "leste"){ var x = w - (w / 6); var y = h / 2; } if (direcao == "oeste"){ var x = w / 6; var y = h / 2; } if (direcao == "nordeste"){ var y = h / 6; var x = w - (w / 6); } if (direcao == "sudeste"){ var y = h - (h / 6); var x = w - (w / 6); } if (direcao == "noroeste"){ var y = h / 6; var x = w / 6; } if (direcao == "sudoeste"){ var y = h - (h / 6); var x = w / 6; } i3GEO.janela.abreAguarde("i3GEO.atualiza",$trad("o1")); i3GEO.php.pan(i3GEO.atualiza,escala,tipo,x,y); }, /* Function: mostraRosaDosVentos Mostra sobre o mapa a rosa dos ventos. A rosa permite que o usuário navegue no mapa sem ter de alterar a opção atual de navegação. A rosa é mostrada apenas se a variável i3GEO.configura.mostraRosaDosVentos for = a "sim". Para que a rosa seja mostrada, é necessário que esta função esteja registrada em i3GEO.eventos.MOUSEPARADO */ mostraRosaDosVentos: function(){ try{ if(i3GEO.configura.mostraRosaDosVentos == "nao"){return;} if(g_tipoacao == "area"){return;} } catch(e){}; if(objposicaocursor.imgx < 10 || objposicaocursor.imgy < 10 || objposicaocursor.imgy > (i3GEO.parametros.h - 10)) {return;} if (!$i("i3geo_rosa")){ var novoel = document.createElement("div"); novoel.id = "i3geo_rosa"; novoel.style.position="absolute"; novoel.style.zIndex=5000; if(navn) {novoel.style.opacity=".7";} else {novoel.style.filter = "alpha(opacity=70)";} document.body.appendChild(novoel); } var setas = ""; setas += ""; setas += ""; setas += ""; setas += ""; setas += ""; setas += ""; setas += ""; setas += ""; setas += ""; setas += "
x
"; setas += "
"; setas += ""; setas += "
"; var i = $i("i3geo_rosa"); i.innerHTML = setas; i.style.top = objposicaocursor.telay - 27; i.style.left = objposicaocursor.telax - 27; i.style.display="block"; var escondeRosa = function(){ var i = $i("i3geo_rosa"); i.style.display="none"; YAHOO.util.Event.removeListener(escondeRosa); } if($i("img")) YAHOO.util.Event.addListener($i("img"),"mousemove", escondeRosa); i3GEO.ajuda.mostraJanela('Clique nas pontas da rosa para navegar no mapa. Clique em x para parar de mostrar essa opção.'); }, /* Class: i3GEO.navega.autoRedesenho Controla o redesenho automático do mapa por meio de um temporizador */ autoRedesenho: { /* Variable: INTERVALO Intervalo de tempo, em milisegundos, que será utilizado para disparar o desenho do mapa Type: {Integer} */ INTERVALO: 0, /* Variable: ID Guarda o valor do ID do elemento HTML que receberá o contador de tempo Type: {String} */ ID: "tempoRedesenho", /* Function: ativa Ativa o auto-redesenho do mapa Parameters: id {String} - id do elemento onde o contador de tempo será mostrado no mapa. Por default, utiliza "tempoRedesenho". */ ativa: function(id){ if(arguments.length == 0){var id = "tempoRedesenho";} i3GEO.navega.autoRedesenho.ID = id; if (($i(id)) && i3GEO.navega.autoRedesenho.INTERVALO > 0) {$i(id).style.display = "block";} if (i3GEO.navega.autoRedesenho.INTERVALO > 0) {i3GEO.navega.tempoRedesenho = setTimeout('i3GEO.navega.autoRedesenho.redesenha()',i3GEO.navega.autoRedesenho.INTERVALO);} if (($i(id)) && (i3GEO.navega.autoRedesenho.INTERVALO > 0)){ $i(id).innerHTML = i3GEO.navega.autoRedesenho.INTERVALO/1000; i3GEO.navega.contaTempoRedesenho = setTimeout('i3GEO.navega.autoRedesenho.contagem()',1000); } }, /* Function: desativa Desativa o auto-redesenho do mapa */ desativa:function(){ i3GEO.navega.autoRedesenho.INTERVALO = 0; clearTimeout(i3GEO.navega.tempoRedesenho); clearTimeout(i3GEO.navega.contaTempoRedesenho); i3GEO.navega.tempoRedesenho = ""; i3GEO.navega.contaTempoRedesenho = ""; if ($i(i3GEO.navega.autoRedesenho.ID)) {$i(i3GEO.navega.autoRedesenho.ID).style.display = "none";} }, /* Function: redesenha Redesenha o mapa quando o contador de tempo chegar a zero */ redesenha: function(){ clearTimeout(i3GEO.navega.tempoRedesenho); clearTimeout(i3GEO.navega.contaTempoRedesenho); i3GEO.atualiza(""); i3GEO.navega.autoRedesenho.ativa(i3GEO.navega.autoRedesenho.ID); }, /* Function: contagem Faz a contagem do tempo */ contagem: function(){ if ($i(i3GEO.navega.autoRedesenho.ID)){$i(i3GEO.navega.autoRedesenho.ID).innerHTML = parseInt($i(i3GEO.navega.autoRedesenho.ID).innerHTML) - 1;} i3GEO.navega.contaTempoRedesenho = setTimeout('i3GEO.navega.autoRedesenho.contagem()',1000); } }, /* Class: i3GEO.navega.zoomBox Controla o desenho de um box na tela para executar o zoom por box */ zoomBox: { /* Function: inicia Marca o início do desenho do box, capturando a posição do mouse */ inicia: function(){ if(g_tipoacao!='zoomli'){return;} if(!$i("i3geoboxZoom")) i3GEO.navega.zoomBox.criaBox(); var i = $i("i3geoboxZoom").style; i.width=0; i.height=0; i.visibility="visible"; i.display="block"; i.left = objposicaocursor.telax + g_postpx; i.top = objposicaocursor.telay + g_postpx; boxxini = objposicaocursor.telax; boxyini = objposicaocursor.telay; tamanhox = 0; tamanhoy = 0; if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.navega.zoomBox.desloca()") < 0) {i3GEO.eventos.MOUSEMOVE.push("i3GEO.navega.zoomBox.desloca()");} if(i3GEO.eventos.MOUSEUP.toString().search("i3GEO.navega.zoomBox.termina()") < 0) {i3GEO.eventos.MOUSEUP.push("i3GEO.navega.zoomBox.termina()");} }, /* Function: criaBox Cria o DIV que será utilizado para desenhar o box no mapa */ criaBox: function(){ if(!$i("i3geoboxZoom")){ var novoel = document.createElement("div"); novoel.style.width = "0px"; novoel.style.height = "0px"; novoel.id = "i3geoboxZoom"; novoel.style.display = "none"; novoel.style.fontSize = "0px"; if(navn) {novoel.style.opacity = .25;} novoel.style.backgroundColor = "gray"; novoel.style.position="absolute"; novoel.style.border = "2px solid #ff0000"; if (navm) {novoel.style.filter = "alpha(opacity=25)";} novoel.onmousemove = function(){ var b = $i("i3geoboxZoom").style; var wb = parseInt(b.width); var hb = parseInt(b.height); if (navm){ if(wb > 2) {b.width = wb - 2;} if(hb > 2) {b.height = hb - 2;} } else{ b.width = wb - 2 + "px"; b.height = hb - 2 + "px"; } }; novoel.onmouseup = function(){i3GEO.navega.zoomBox.termina()}; document.body.appendChild(novoel); i3GEO.util.mudaCursor(i3GEO.configura.cursores,"zoom","i3geoboxZoom",i3GEO.configura.locaplic); if($i("img")){ $i("img").title = ""; i3GEO.util.mudaCursor(i3GEO.configura.cursores,"zoom","img",i3GEO.configura.locaplic); } } }, /* Function: desloca Desloca o box conforme o mouse é movimentado */ desloca: function(){ if(g_tipoacao!='zoomli'){return;} var bxs = $i("i3geoboxZoom").style; if(bxs.display != "block"){return;} ppx = objposicaocursor.telax; py = objposicaocursor.telay; if (navm){ if ((ppx > boxxini) && ((ppx - boxxini - 2) > 0)) {bxs.width = ppx - boxxini - 2;} if ((py > boxyini) && ((py - boxyini - 2) > 0)) {bxs.height = py - boxyini - 2;} if (ppx < boxxini) {bxs.left = ppx;bxs.width = boxxini - ppx + 2;} if (py < boxyini) {bxs.top = py;bxs.height = boxyini - py + 2;} } else{ if (ppx > boxxini) {bxs.width = ppx - boxxini + "px";} if (py > boxyini) {bxs.height = py - boxyini + "px";} if (ppx < boxxini) {bxs.left = ppx + "px";bxs.width = boxxini - ppx + "px";} if (py < boxyini) {bxs.top = py + "px";bxs.height = boxyini - py + "px";} } }, /* Function: termina Para o desenho do box, captura seu tamanho e faz o zoom no mapa */ termina: function(){ if(g_tipoacao!='zoomli'){ i3GEO.eventos.MOUSEDOWN.remove("i3GEO.navega.zoomBox.inicia()"); i3GEO.eventos.MOUSEUP.remove("i3GEO.navega.zoomBox.termina()"); return; } try{ var valor = i3GEO.calculo.rect2ext("i3geoboxZoom",i3GEO.parametros.mapexten,i3GEO.parametros.pixelsize); var v = valor[0]; var x1 = valor[1]; var y1 = valor[2]; var x2 = valor[3]; var y2 = valor[4]; var limpa = function(){ var bxs = $i("i3geoboxZoom").style; bxs.display="none"; bxs.visibility="hidden"; bxs.width = 0; bxs.height = 0; }; if((x1 == x2) || (y1 == y2)) {limpa.call();return;} // se o retangulo for negativo pula essa parte para n� gerar erro i3GEO.parametros.mapexten=v; limpa.call(); i3GEO.eventos.MOUSEMOVE.remove("i3GEO.navega.zoomBox.desloca()"); i3GEO.eventos.MOUSEUP.remove("i3GEO.navega.zoomBox.termina()"); i3GEO.navega.zoomExt(i3GEO.configura.locaplic,i3GEO.configura.sid,i3GEO.configura.tipoimagem,v); } catch(e){limpa.call();return;} } }, /* Class: i3GEO.navega.entorno Controla o desenho do entorno do mapa (modo tile) */ entorno:{ /* Function: ativaDesativa Ajusta o mapa para ativar ou desativar o desenho do entorno Ao ser chamada, essa função muda o modo atual, ativando ou desativando o entorno */ ativaDesativa: function(){ if(i3GEO.parametros.mapfile == "") {alert("Essa opcao nao pode ser ativada. Consulte o administrador do sistema. Mapfile nao esta exposto.");return;} if (i3GEO.configura.entorno == "sim"){ var letras=["L","O","N","S"]; for (var l=0;l<4; l++){ if ($i("img"+letras[l])){ $i("img"+letras[l]).style.display = "none"; $i("img"+letras[l]).src = ""; } } $left("img",0); $top("img",0); i3GEO.configura.entorno = "nao"; alert("Entorno desativado"); $i("img").style.visibility = "visible"; $i("img").style.display = "block"; } else{ i3GEO.navega.entorno.geraURL(); var letras=["L","O","N","S"]; for (var l=0;l<4; l++){ if ($i("img"+letras[l])){ $i("img"+letras[l]).style.width = i3GEO.parametros.w; $i("img"+letras[l]).style.height = i3GEO.parametros.h; $i("img"+letras[l]).style.display = "block"; } } i3GEO.configura.entorno = "sim"; i3GEO.navega.entorno.ajustaPosicao(); alert("Entorno ativado. o desenho do mapa pode demorar mais."); } }, /* Function: geraURL Gera as URLs que serão utilizadas na tag IMG dos elementos do entorno do mapa */ geraURL: function(){ var nny = (i3GEO.parametros.h / 2) * -1; var nnx = i3GEO.parametros.w / 2; var sy = i3GEO.parametros.h + (i3GEO.parametros.h / 2); var sx = i3GEO.parametros.w / 2; var lx = i3GEO.parametros.w + (i3GEO.parametros.w / 2); var ly = i3GEO.parametros.h / 2; var ox = (parseInt(i3GEO.parametros.w/2)) * -1; var oy = i3GEO.parametros.h / 2; var u = window.location.protocol+"\/\/"+window.location.host+i3GEO.parametros.cgi+"?map="+i3GEO.parametros.mapfile; u += "&mode=map&imgext="+i3GEO.parametros.mapexten+"&mapsize="+nnx+" "+oy; var sul = u+"&imgxy="+sx/2+" "+sy/2; var norte = u+"&imgxy="+nnx/2+" "+nny/2; var leste = u+"&imgxy="+lx/2+" "+ly/2; var oeste = u+"&imgxy="+ox/2+" "+oy/2; $i("imgS").src=sul; $i("imgN").src=norte; $i("imgL").src=leste; $i("imgO").src=oeste; }, /* Function: ajustaPosicao Ajusta a posição das imagens do entorno do mapa */ ajustaPosicao: function(){ $left("img",i3GEO.parametros.w*-1); $left("imgS",i3GEO.parametros.w*-1); $left("imgL",i3GEO.parametros.w); $left("imgO",i3GEO.parametros.w*-3); $left("imgN",i3GEO.parametros.w*-1); $top("img",i3GEO.parametros.h*-1); $top("imgS",i3GEO.parametros.h*-1); $top("imgL",i3GEO.parametros.h*-1); $top("imgN",i3GEO.parametros.h*-1); $top("imgO",i3GEO.parametros.h*-1); } }, /* Class: i3GEO.navega.lente Ativa e controla a lente de aumento. A lente de aumento é um box que pode ser ativado sobre o mapa mostrando uma imagem ampliada da região onde está o mouse */ lente:{ /* Variable: ESTAATIVA Indica se a lente foi ou não aberta */ ESTAATIVA: "nao", /* Property: POSICAOX Define a posição em x da lente em relação ao corpo do mapa */ POSICAOX: 0, /* Property: POSICAOY Define a posição em y da lente em relação ao corpo do mapa */ POSICAOY:0, /* Function: inicia Ativa a lente de aumento criando os elementos gráficos necessários e ativando os eventos que controlam a apresentação da lente */ inicia: function(){ //insere lente de aumento if (!$i("lente")){ var novoel = document.createElement("div"); novoel.id = 'lente'; novoel.style.clip='rect(0px,0px,0px,0px)'; var novoimg = document.createElement("img"); novoimg.src=""; novoimg.id='lenteimg'; novoel.appendChild(novoimg); document.body.appendChild(novoel); var novoel = document.createElement("div"); novoel.id = 'boxlente'; document.body.appendChild(novoel); } with($i('boxlente').style){borderWidth='1' + g_postpx;borderColor="red";display = "block"} $i("lente").style.display = "block"; i3GEO.navega.lente.ESTAATIVA = "sim"; i3GEO.navega.lente.atualiza(); if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.navega.lente.atualiza()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.navega.lente.atualiza()");} if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.navega.lente.movimenta()") < 0) {i3GEO.eventos.MOUSEMOVE.push("i3GEO.navega.lente.movimenta()");} }, /* Function: atualiza Atualiza a imagem da lente aberta */ atualiza: function(){ var temp = function(retorno){ try{ var retorno = retorno.data; if (retorno == "erro"){alert("A lente nao pode ser criada");return;} var volta = retorno.split(","); var nimg = volta[2]; var olente = $i('lente'); var oboxlente = $i('boxlente'); var olenteimg = $i('lenteimg'); olenteimg.src = nimg; olenteimg.style.width=volta[0] * 1.5; olenteimg.style.height=volta[1] * 1.5; olente.style.zIndex=1000; olenteimg.style.zIndex=1000; oboxlente.style.zIndex=1000; var pos = i3GEO.util.pegaPosicaoObjeto($i("corpoMapa")); eval ("olente.style." + g_tipoleft + " = pos[0] + i3GEO.navega.lente.POSICAOX + g_postpx"); eval ("olente.style." + g_tipotop + " = pos[1] + i3GEO.navega.lente.POSICAOY + g_postpx"); eval ("oboxlente.style." + g_tipoleft + " = pos[0] + i3GEO.navega.lente.POSICAOX + g_postpx"); eval ("oboxlente.style." + g_tipotop + " = pos[1] + i3GEO.navega.lente.POSICAOY + g_postpx"); oboxlente.style.display='block'; oboxlente.style.visibility='visible'; olente.style.display='block'; olente.style.visibility='visible'; i3GEO.janela.fechaAguarde("ajaxabrelente"); } catch(e){i3GEO.janela.fechaAguarde();} }; if(i3GEO.navega.lente.ESTAATIVA == "sim"){ i3GEO.janela.abreAguarde("ajaxabrelente",$trad("o1")); i3GEO.php.aplicaResolucao(temp,1.5); } else{ i3GEO.navega.lente.desativa(); } }, /* Function: desativa Desativa alente aberta */ desativa: function(){ $i("lente").style.display = "none"; $i("boxlente").style.display = "none"; $i('boxlente').style.borderWidth = 0; i3GEO.navega.lente.ESTAATIVA = "nao"; i3GEO.eventos.MOUSEMOVE.remove("i3GEO.navega.lente.movimenta()"); i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.navega.lente.atualiza()"); }, /* Function: movimenta Movimenta a imagem dentro da lente para refletir a posição do mouse */ movimenta: function(){ try{ if(i3GEO.navega.lente.ESTAATIVA = "sim"){ if ($i("lente").style.visibility=="visible") var pos = i3GEO.util.pegaPosicaoObjeto($i("img")); var esq = (objposicaocursor.telax - pos[0]) * 2.25; var topo = (objposicaocursor.telay - pos[1]) * 2.25; var clipt = "rect("+ (topo - 40) + " " + (esq + 40) + " " + (topo + 40) + " " + (esq - 40) +")"; var i = $i("lente").style; i.clip = clipt; eval("i." + g_tipotop + "= (pos[1] - (topo - 40)) + g_postpx"); eval("i." + g_tipoleft + "= (pos[0] - (esq - 40)) + g_postpx"); } } catch(e){} } }, /* Class: i3GEO.navega.destacaTema Destaca um tema mostrando-o sobre os outros em um box que segue o mouse */ destacaTema:{ /* Property: TAMANHO Tamanho do box Type: {Integer} */ TAMANHO: 75, /* Variable: ESTAATIVO Indica se o destaque está ou não ativo Type: {sim|nao} */ ESTAATIVO: "nao", /* Variable: TEMA Tema que está sendo destacado Type: {Código do tema} */ TEMA: "", /* Function: inicia Inicia o destaque de um tema Parameters: tema {String} - código do tema */ inicia: function(tema){ if (!$i("img_d")){ var novoel = document.createElement("div"); novoel.id = "div_d"; novoel.style.zIndex = 5000; document.body.appendChild(novoel); $i("div_d").innerHTML = ""; $i("div_d").style.left = parseInt($i("corpoMapa").style.left); $i("div_d").style.top = parseInt($i("corpoMapa").style.top); $i("img_d").style.left = 0; $i("img_d").style.top = 0; $i("img_d").style.width = i3GEO.parametros.w; $i("img_d").style.height = i3GEO.parametros.h; $i("div_d").style.clip = 'rect(0 75 75 0)'; var novoeli = document.createElement("div"); novoeli.id = "div_di"; novoel.appendChild(novoeli); $i("div_di").innerHTML = "

+-

"; } i3GEO.navega.destacaTema.TEMA = tema; i3GEO.navega.destacaTema.ESTAATIVO = "sim"; i3GEO.navega.destacaTema.atualiza(); var janela = i3GEO.janela.cria(150,0,"","center","center","Parar destaque  ","ativadesativaDestaque"); YAHOO.util.Event.addListener(janela[0].close, "click", i3GEO.navega.destacaTema.desativa); if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.navega.destacaTema.atualiza()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.navega.destacaTema.atualiza()");} if(i3GEO.eventos.MOUSEMOVE.toString().search("i3GEO.navega.destacaTema.movimenta()") < 0) {i3GEO.eventos.MOUSEMOVE.push("i3GEO.navega.destacaTema.movimenta()");} }, /* Function: atualiza Atualiza o destaque É definido para o evento de navegação do mapa */ atualiza: function(){ if(i3GEO.navega.destacaTema.ESTAATIVO == "nao") {return;} var temp = function(retorno){ var retorno = retorno.data; var m = new Image(); m.src = retorno; $i("div_d").innerHTML = ""; $i("div_d").style.display="block"; var novoel = document.createElement("input"); novoel.id = "img_d"; novoel.style.position = "relative"; novoel.style.top = "0px"; novoel.style.left = "0px"; novoel.type = "image"; novoel.src = m.src; novoel.style.display = "block"; $i("div_d").appendChild(novoel); i3GEO.janela.fechaAguarde("ajaxdestaca"); }; i3GEO.janela.abreAguarde("ajaxdestaca","Aguarde...gerando imagem"); i3GEO.php.geradestaque(temp,i3GEO.navega.destacaTema.TEMA); }, /* Function: desativa Desativa o destaque */ desativa: function(){ i3GEO.eventos.NAVEGAMAPA.remove("i3GEO.navega.destacaTema.atualiza()"); i3GEO.eventos.MOUSEMOVE.push("i3GEO.navega.destacaTema.movimenta()"); i3GEO.navega.destacaTema.ESTAATIVO = "nao"; document.body.removeChild($i("div_d")); }, /* Function: movimenta Movimenta o destaque conforme o mouse move É definido para o evento de deslocamento do mouse */ movimenta: function(){ if(i3GEO.navega.destacaTema.ESTAATIVO == "sim") $i("div_d").style.clip = 'rect('+(objposicaocursor.imgy - i3GEO.navega.destacaTema.TAMANHO)+" "+(objposicaocursor.imgx - 10)+" "+(objposicaocursor.imgy - 10)+" "+(objposicaocursor.imgx - i3GEO.navega.destacaTema.TAMANHO)+')'; } } }; //YAHOO.log("carregou classe navega", "Classes i3geo");