/* Title: funcoes.js Funções de uso geral para processamento de dados File: funcoes.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. */ /* Function: $im Retorna o caminho correto de uma imagem. Exemplo: $im("imagem.png") Parâmetros: g - nome da imagem Retorno: string - caminho para a imagem */ $im = function(g) {return g_locaplic+"/imagens/"+g;}; /* Function: $top Muda a posição (superior) de um objeto tanto no IE como no Firefox. Exemplo: $top("imagem",100) Parâmetros: id - identificador do objeto valor - posição em relação ao topo. */ $top = function(id,valor) { if (navm) {document.getElementById(id).style.pixelTop=valor;} else {document.getElementById(id).style.top=valor+"px";} }; /* Function: $left Muda a posição (esquerda) de um objeto tanto no IE como no Firefox. Exemplo: $left("imagem",100) Parâmetros: id - identificador do objeto valor - posição em relação a esquerda. */ $left = function(id,valor) { if (navm) {document.getElementById(id).style.pixelLeft=valor;} else {document.getElementById(id).style.left=valor+"px";} }; /* Function: trataErro Trata o erro de um try cacth. */ function trataErro() { objaguarde.fecha("ajaxdestaca"); objaguarde.fecha("ajaxabrelente"); objaguarde.fecha("ajaxiniciaParametros"); objaguarde.fecha("ajaxredesenha"); objaguarde.fecha("ajaxCorpoMapa"); objaguarde.fecha("ajaxLegenda"); objaguarde.fecha("ajaxReferencia"); objaguarde.fecha("ajaxEscalaGrafica"); objaguarde.fecha("montaMapa"); objaguarde.fecha("aguardedoc"); } /* Function: iCookie Insere um cookie. */ function iCookie(nome,valor) { document.cookie = nome+"="+valor; } /* Function: pCookie Pega um cookie. */ function pCookie(nome) { var cookies = document.cookie; var i = cookies.indexOf(nome); if(i == -1) {return null;} var fim = cookies.indexOf(";",i); if (fim == -1) {var fim = cookies.length;} return (unescape(cookies.substring(i,fim))).split("=")[1]; } /* Section: interface */ /* Function: initJanelaMen Abre a janela com as mensagens de ajuda ao usuário */ function initJanelaMen() { if (!$i("janelaMen")) { var novoel = document.createElement("div"); with(novoel) { id = "janelaMen"; style.display="block"; style.border="1px solid rgb(170,170,170)"; innerHTML = '
 
'+g_mensagempadrao+'
'; } document.body.appendChild(novoel); with($i("janelaMenTexto")) { style.textAlign="left"; style.fontSize="10px"; } YAHOO.namespace("janelaMen.xp"); YAHOO.janelaMen.xp.panel = new YAHOO.widget.Panel("janelaMen", { width:"266px", height:"auto", fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:false } ); YAHOO.janelaMen.xp.panel.render(); var escondeMen = function() { YAHOO.util.Event.removeListener(YAHOO.janelaMen.xp.panel.close, "click"); YAHOO.janelaMen.xp.panel.destroy(); iCookie("g_janelaMen","nao"); }; YAHOO.util.Event.addListener(YAHOO.janelaMen.xp.panel.close, "click", escondeMen); iCookie("g_janelaMen","sim"); } YAHOO.janelaMen.xp.panel.show(); YAHOO.janelaMen.xp.panel.moveTo(imagemxi - 267 ,objmapa.h - 70); } /* Function: ativaGuias Ativa as guias principais do mapa, definindo as funções que serão executadas quando a guia é escolhida. As guias principais são definidas nos objetos objmapa.guiaTemas objmapa.guiaMenu objmapa.guiaLegenda objmapa.guiaListaMapas */ function ativaGuias() { //ajusta as guias da versão antiga do YUI //pega o elemento onde estão os tabs for(g=0;g<12;g++) { if ($i("guia"+g)) var gpai = $i("guia"+g).parentNode; } if(gpai) { gpai.id = "guiasYUI"; gpai.className = "yui-navset"; var ins = '"; gpai.innerHTML = ins; for(g=0;g<12;g++) { if ($i("guia"+g)) { eval('$i("guia'+g+'").onclick = function(){g_guiaativa = "guia'+g+'";mostraguiaf('+g+');}'); $i("guia"+g+"obj").style.overflow="auto"; $i("guia"+g+"obj").style.height = objmapa.h; } } } //guias if ($i(objmapa.guiaTemas)) { $i(objmapa.guiaTemas).onclick = function() {g_guiaativa = objmapa.guiaTemas;mostraguiaf(1);}; } if ($i(objmapa.guiaMenu)) { $i(objmapa.guiaMenu).onclick = function() { g_guiaativa = objmapa.guiaMenu; mostraguiaf(2); if (!$i("buscatema")) { var pegalistademenus = function(retorno) { if (retorno.data == "") {pegaListaDeGrupos("","sim");} else { for (j=0;j '; document.body.appendChild(novoel); } if (m == null) {$i("mensagem").style.visibility = "hidden";} else { $i("mensagemt").value = m; $i("mensagem").style.visibility = "visible"; } eval ('document.getElementById("mensagem").style.' + g_tipoleft + ' = imagemxi + g_postpx'); eval ('document.getElementById("mensagem").style.' + g_tipotop + ' = imagemyi + g_postpx'); } /* Function: wdocaf Abre a janela docável para executar algum programa. Parameters: wlargura - largura da nova janela waltura - altura da nova janela wsrc - endereço do conteúdo que será aberto nx - posição da janela em x ny - posição da janela em y texto - texto que será mostrado no título da janela */ function wdocaf(wlargura,waltura,wsrc,nx,ny,texto) { if($i("boxg")) {$i("boxg").style.display = "none";} var wlargura_ = parseInt(wlargura)+0+"px"; YAHOO.namespace("janelaDoca.xp"); if ($i("wdoca")) {YAHOO.janelaDoca.xp.panel.destroy();} var ins = '
'+texto+'
'; var novoel = document.createElement("div"); with(novoel) { id = "wdoca"; style.display="block"; innerHTML = ins; } document.body.appendChild(novoel); if ($i("wdocai")) { with ($i("wdocai").style){width = "100%";height=waltura;}; $i("wdoca").style.display = "block"; $i("wdocai").src = wsrc; } YAHOO.janelaDoca.xp.panel = new YAHOO.widget.Panel("wdoca", { width: wlargura_, fixedcenter: false, constraintoviewport: false, visible: true, iframe:false} ); YAHOO.janelaDoca.xp.panel.moveTo(imagemxi,imagemyi+50); YAHOO.janelaDoca.xp.panel.render(); var escondeWdoca = function() { $i("wdoca").style.display = "none"; $i("wdocai").src = ""; YAHOO.util.Event.removeListener(YAHOO.janelaDoca.xp.panel.close, "click"); YAHOO.janelaDoca.xp.panel.destroy(); if ((g_tipoacao == "selecaobox") || (g_tipoacao == "inseregrafico") || (g_tipoacao == "selecao") || (g_tipoacao == "inserexy") || (g_tipoacao == "textofid")) {mudaiconf("pan");} //esconde o box do google if ($i("boxg")) {$i("boxg").style.display = "none";} //fecha o container de desenho de elementos na tela limpacontainerf(); }; YAHOO.util.Event.addListener(YAHOO.janelaDoca.xp.panel.close, "click", escondeWdoca); } /* Function: redimwdocaf Redimensiona a janela docável. Parameters: wlargura - largura da nova janela waltura - altura da nova janela */ function redimwdocaf(wlargura,waltura) { if ($i("wdoca")) { with($i("wdoca")) { style.width = wlargura; style.height = waltura; } } } /* Function: wdocaf2 Abre uma segunda janela docável para executar algum programa relativo a outra janela. Parameters: wlargura - largura da nova janela waltura - altura da nova janela wsrc - endereço do conteúdo que será aberto nx - posição da janela em x ny - posição da janela em y texto - texto que será mostrado no título da janela */ function wdocaf2(wlargura,waltura,wsrc,nx,ny,texto) { if (!$i("wdoca2")) { var ins = '
 
'; var novoel = document.createElement("div"); with(novoel) { id = "wdoca2"; style.display="none"; innerHTML = ins; } document.body.appendChild(novoel); } YAHOO.namespace("janelaDoca2.xp"); YAHOO.janelaDoca2.xp.panel = new YAHOO.widget.Panel("wdoca2", {width:wlargura, fixedcenter: false, constraintoviewport: true, underlay:"none", close:true, visible:true, draggable:true, modal:true } ); YAHOO.janelaDoca2.xp.panel.moveTo(imagemxi,imagemyi); YAHOO.janelaDoca2.xp.panel.render(); YAHOO.janelaDoca2.xp.panel.show(); with ($i("wdocai2").style){width = "100%";height = waltura;} $i("wdoca2").style.display = "block"; $i("wdocai2").src = wsrc; var escondeWdoca2 = function() { $i("wdoca2").style.display = "none"; $i("wdocai2").src = ""; YAHOO.util.Event.removeListener(YAHOO.janelaDoca2.xp.panel.close, "click"); }; YAHOO.util.Event.addListener(YAHOO.janelaDoca2.xp.panel.close, "click", escondeWdoca2); } /* Function: wdocafechaf Fecha uma janela docável. Depreciado Parameters: odoca - objeto janela */ function wdocafechaf(odoca) { $i(odoca).style.display="none"; if ((odoca != "wdocaref") && (odoca != "wdocac")) { if($i("wdocain")){$i("wdocain").value = "";} if($i("wdocadiv")){$i("wdocadiv").innerHTML = "";$i("wdocadiv").display="none";} if ($i("temp")){$i("temp").value == "";} $i("wdocai").src = ""; $i("imgh").style.visibility="visible"; } if ((g_tipoacao == "selecaobox") || (g_tipoacao == "inseregrafico") || (g_tipoacao == "selecao") || (g_tipoacao == "inserexy") || (g_tipoacao == "textofid")) {mudaiconf("pan");} } /* Function: mostradicasf Mostra dicas sobre uma função quando o mouse passa sobre um botão ou outra opção qualquer. Parameters: objeto - objeto sobre o qual o mouse está sobreposto. dica - dica que aparece no mapa. */ function mostradicasf(objeto,dica,hlpt) { if ($i("ajuda")) { if (dica == ""){$i("ajuda").innerHTML="-";} else { g_hlpt = hlpt; $i("ajuda").innerHTML= ""+dica+" "; } } if ($i("janelaMenTexto")) { if (dica == ""){dica = g_mensagempadrao;} $i("janelaMenTexto").innerHTML= ""+dica+" "; } } /* Function: mudaiconf Muda as bordas dos ícones de ferramentas, passando todos para normal. Aplica uma borda sobre um ícone específico Parameters: i - id do ícone que receberá a borda. */ function mudaiconf(i) { //limpa o container com os tips fixos na tela for(ot=0;ot"+texto+"")'); eval ('YAHOO.aguarde.'+aguardeId+'.body.style.height="20px"'); eval ('YAHOO.aguarde.'+aguardeId+'.setHeader("")'); eval ('YAHOO.aguarde.'+aguardeId+'.render(document.body)'); eval ('YAHOO.aguarde.'+aguardeId+'.moveTo('+imagemxi+','+imagemyi+')'); eval ('YAHOO.aguarde.'+aguardeId+'.show()'); }; this.fecha = function(aguardeId) { if ($i("wait")) { if (eval('YAHOO.aguarde.'+aguardeId)) { if ($i(eval('YAHOO.aguarde.'+aguardeId+".id"))) {eval('YAHOO.aguarde.'+aguardeId+'.destroy()');} } } }; } /* Function: ativaClicks Ativa as operações de clique sobre o mapa Define o que será executado quando o mouse é clicado ou movido sobre o mapa */ function ativaClicks(docMapa) { docMapa.onmouseover = function() { if ($i("imgh")){$i("imgh").style.display="block";} if ($i("janelaMenu")) {$i("janelaMenu").style.display="none";} //verifica se o mouse esta parado if (objmapa.parado!="cancela") { objmapa.parado="nao"; verificaTip(); } if ($i("tip")) {$i("tip").style.display="none";} this.onmousemove=function(exy) { if ($i("tip")) {$i("tip").style.display="none";} capturaposicao(exy); if (g_destaca != "") {$i("imgh").style.display="none";$i("div_d").style.clip = 'rect('+(objposicaocursor.imgy - destacaTamanho)+" "+(objposicaocursor.imgx - 10)+" "+(objposicaocursor.imgy - 10)+" "+(objposicaocursor.imgx - destacaTamanho)+')';} //if (g_realca == "sim") //{ // $i("areaRealce").style.left = objposicaocursor.telax - destacaTamanho + 10; // $i("areaRealce").style.top = objposicaocursor.telay - destacaTamanho + 10; //} if ($i("img") && (g_panM == "sim")) { var nx = objposicaocursor.telax - leftinicial - clicinicialx; var ny = objposicaocursor.telay - topinicial - clicinicialy; var l = 0; if (parseInt($i("i3geo").style.left)) {var l = parseInt($i("i3geo").style.left);} $i("img").style.left = nx - l; var t = 0; if (parseInt($i("i3geo").style.top)) {var t = parseInt($i("i3geo").style.top);} $i("img").style.top = ny - t; } objmapa.verificaMousemoveMapa(); }; }; docMapa.onmouseout = function() { objmapa.parado="parar"; mostradicasf(this,''); if ($i("imgh")){$i("imgh").style.display="none";} }; docMapa.onmousedown = function() { $i("imgh").style.display="none"; //verifica se esta na op�o de zoom box if ((g_tipoacao == "zoomli") || (g_tipoacao == "selecaobox")) { // inicia ret�gulo de zoom $i("imgh").style.display="none"; with($i("box1").style) {width=0;height=0;visibility="visible";display="none"} boxxini = objposicaocursor.telax; boxyini = objposicaocursor.telay; tamanhox = 0; tamanhoy = 0; } if ($i("img") && (g_tipoacao == "pan")) { g_panM = "sim"; leftinicial = parseInt($i("corpoMapa").style.left); topinicial = parseInt($i("corpoMapa").style.top); clicinicialx = objposicaocursor.imgx; clicinicialy = objposicaocursor.imgy; ddinicialx = objposicaocursor.ddx; ddinicialy = objposicaocursor.ddy; } }; docMapa.onclick = function() {objmapa.verificaClickMapa();}; docMapa.onmouseup = function() { if (g_tipoacao == "zoomli"){zoomboxf("termina");} if (g_tipoacao == "selecaobox"){zoomboxf("termina");} if ($i("img") && (g_tipoacao == "pan")) { g_panM = "nao"; var disty = (ddinicialy * -1) + objposicaocursor.ddy; //teladd[1] var distx = (ddinicialx * -1) + objposicaocursor.ddx; //teladd[0] var ex = objmapa.extent; var ex = ex.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)) { objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=pan&x="+objposicaocursor.imgx+"&y="+objposicaocursor.imgy+"&g_sid="+g_sid; cpObj.call(p,"pan",ajaxredesenha); return; } var nex = novoxi+" "+novoyi+" "+novoxf+" "+novoyf; objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=mudaext&ext="+nex+"&g_sid="+g_sid; cpObj.call(p,"mudaExtensao",ajaxredesenha); } }; } /* Section: navegação */ /* Function: initJanelaRef Abre a janela com o mapa de referencia */ function initJanelaRef() { if (!$i("winRef")) { var novoel = document.createElement("div"); with (novoel) { id = "winRef"; style.display="none"; style.borderColor="gray"; } var ins = '
Referência
'; ins += '
'; ins += ''; ins += '
'; novoel.innerHTML = ins; document.body.appendChild(novoel); $i("imagemReferencia").style.height = objmapa.refheight+"px"; } $i("winRef").style.display = "block"; YAHOO.namespace("janelaRef.xp"); YAHOO.janelaRef.xp.panel = new YAHOO.widget.Panel("winRef", { width:"156px", fixedcenter: false, constraintoviewport: true, underlay:"shadow", close:true, visible:true, draggable:true, modal:false } ); YAHOO.janelaRef.xp.panel.render(); if (navm){YAHOO.janelaRef.xp.panel.moveTo((imagemxi+objmapa.w-160),imagemyi+4);} else {YAHOO.janelaRef.xp.panel.moveTo((imagemxi+objmapa.w-160),imagemyi+4);} var escondeRef = function() { YAHOO.util.Event.removeListener(YAHOO.janelaRef.xp.panel.close, "click"); YAHOO.janelaRef.xp.panel.destroy(); iCookie("g_mapaRefDisplay","none"); }; //YAHOO.util.Event.addListener(YAHOO.janelaRef.xp.panel.close, "click", escondeRef); iCookie("g_mapaRefDisplay","block"); objmapa.atualizaReferencia(); } /* Function: mudaboxnf Posiciona o botao aplicar quando o check box que liga/desliga um tema é pressionado. Parâmetros: tipo - de onde veio a requisicao ligadesliga|adicionatema */ function mudaboxnf(tipo) { g_operacao = tipo; clearTimeout(objmapa.tempo); objmapa.tempo = setTimeout('remapaf()',(4000)); if ($i("aplicari")) { $i("aplicari").style.display="block"; if (navm) { mx = objposicaomouse.x - 10; my = objposicaomouse.y - 15; with ($i("aplicari").style) { pixelLeft = mx+document.body.scrollLeft; pixelTop = my+document.body.scrollTop; } } if (navn) { var l = objposicaomouse.x; var t = objposicaomouse.y+document.body.scrollTop; with ($i("aplicari").style) { left = l; top = t; } } } } /* Function: movelentef Move a imagem na lente de aumento conforme o moveimento do mouse sobre o mapa. */ function movelentef() { if ($i("lente")) { if ($i("lente").style.visibility=="visible") { var esq = (objposicaocursor.telax - imagemxi) * 2.25; var topo = (objposicaocursor.telay - imagemyi) * 2.25; var clipt = "rect("+ (topo - 40) + " " + (esq + 40) + " " + (topo + 40) + " " + (esq - 40) +")"; with ($i("lente").style) { clip = clipt; eval (g_tipotop + "= (imagemyi - (topo - 40)) + g_postpx"); eval (g_tipoleft + "= (imagemxi - (esq - 40)) + g_postpx"); } } } } /* Function: zoomiauto Aproxima o mapa tendo o centro como referência. */ function zoomiauto() { objaguarde.abre("ajaxredesenha",$trad("o1")); g_fatordezoom = 0; var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=aproxima&nivel=2&g_sid="+g_sid; g_operacao = "navega"; cpObj.call(p,"aproxima",ajaxredesenha); } /* Function: zoomoauto Afasta o mapa tendo o centro como referência. */ function zoomoauto() { objaguarde.abre("ajaxredesenha",$trad("o1")); g_fatordezoom = 0; var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=afasta&nivel=2&g_sid="+g_sid; g_operacao = "navega"; cpObj.call(p,"afasta",ajaxredesenha); } /* Function: zoomboxf Faz o zoom no mapa utilizando a opção de desenhar um retângulo. As coordenadas de tela devem estar no objeto "objposicaocursor". A opção "desloca" altera a posição do box (box1) na tela. A opção "termina", pega as coordenadas de tela do box1 e chama a função ajax que redesenha o mapa. Parameters: tipo - desloca|termina */ function zoomboxf (tipo) { var bx = $i("box1"); switch(tipo) { case "desloca": // muda o ret�gulo de zoom conforme deslocamento do mouse bx.style.display="block"; ppx = objposicaocursor.telax; py = objposicaocursor.telay; if (navm) { if ((ppx > boxxini) && ((ppx - boxxini - 2) > 0)) {with(bx.style){width = ppx - boxxini - 2;}} if ((py > boxyini) && ((py - boxyini - 2) > 0)) { with(bx.style) {height = py - boxyini - 2;} } if (ppx < boxxini) {with(bx.style){left = ppx;width = boxxini - ppx + 2;}} if (py < boxyini) {with(bx.style){top = py;height = boxyini - py + 2;}} } else { if (ppx > boxxini) {with(bx.style){width = ppx - boxxini - 15 + "px";}} if (py > boxyini) {with(bx.style){height = py - boxyini - 15 + "px";}} if (ppx < boxxini) {with(bx.style){left = ppx + "px";width = boxxini - ppx + 15 + "px";}} if (py < boxyini) {with(bx.style){top = py + "px";height = boxyini - py + 15 + "px";}} } break; case "termina": // finaliza o ret�gulo de zoom md = 1; eval ('pix = parseInt(document.getElementById("box1").style.' + g_tipoleft + ")"); eval ('piy = parseInt(document.getElementById("box1").style.' + g_tipotop + ")"); xfig0 = parseInt(bx.style.width) - imagemxi; yfig0 = parseInt(bx.style.height) - imagemyi; xfig = pix + (parseInt(bx.style.width)) - imagemxi; yfig = piy + (parseInt(bx.style.height)) - imagemyi; amext = objmapa.extent.split(" "); dx = ((amext[0] * -1) - (amext[2] * -1)) / (tamanhox - 1); dy = ((amext[1] * 1) - (amext[3] * 1)) / (tamanhoy - 1); if (dy < 0) dy=dy * -1; nx = g_celula * xfig; ny = g_celula * yfig; x1 = (amext[0] * 1) + nx; y1 = (amext[3] * 1) - ny; xfig = pix - imagemxi; yfig = piy - imagemyi; if (dy < 0) dy=dy * -1; nx = g_celula * xfig; ny = g_celula * yfig; x2 = (amext[0] * 1) + nx; y2 = (amext[3] * 1) - ny; v = x2+" "+y2+" "+x1+" "+y1; // se o retangulo for negativo pula essa parte para n� gerar erro if (g_tipoacao != "selecaobox") { if (x1 != x2) { objmapa.extent=v; objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=mudaext&ext="+v+"&g_sid="+g_sid; cpObj.call(p,"mudaExtensao",ajaxredesenha); } } else { if (x1 != x2) { var doc = (navm) ? document.frames("wdocai").document : $i("wdocai").contentDocument; var tipo = "adiciona"; //pega o tipo de operacao da janela de selecao if (doc.getElementById("tipoOperacao")){tipo = doc.getElementById("tipoOperacao").value;} if (objmapa.temaAtivo == ""){alert("Nenhum tema ativo");return;} //se tipo for limpa ou inverte, a operacao nao e executada no clique no mapa if ((tipo != "limpa") && (tipo != "inverte")) { objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=selecaobox&ext="+v+"&g_sid="+g_sid+"&tipo="+tipo+"&tema="+objmapa.temaAtivo; cpObj.call(p,"selecaobox",ajaxredesenha); } } } with(bx.style){visibility="hidden";width = 0; height = 0;} document.getElementById("imgh").style.display="block"; break; } } /* Function: zoomIP Localiza no mapa o usuário baseado em seu número IP. */ function zoomIP() { var xxx = convdmsddf($i("xg").value,$i("xm").value,$i("xs").value); var yyy = convdmsddf($i("yg").value,$i("ym").value,$i("ys").value); var mostraIP = function(retorno) { if (retorno.data.latitude != null) { objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=zoomponto&pin=pin&tamanho=14&xy="+retorno.data.longitude+" "+retorno.data.latitude+"&g_sid="+g_sid; cpObj.call(p,"zoomPonto",ajaxredesenha); } else {alert("Nao foi possivel identificar a localizacao.");} }; var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=localizaIP&g_sid="+g_sid; cpObj.call(p,"localizaIP",mostraIP); } /* Function: zoomPonto Localiza uma coordenada no mapa. */ function zoomPonto() { if ($i("xg")) { var xxx = convdmsddf($i("xg").value,$i("xm").value,$i("xs").value); var yyy = convdmsddf($i("yg").value,$i("ym").value,$i("ys").value); objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=zoomponto&pin=pin&xy="+xxx+" "+yyy+"&g_sid="+g_sid; cpObj.call(p,"zoomPonto",ajaxredesenha); } } /* Function: clicouRef Altera a abrangência do mapa quando o mapa de referência é clicado */ function clicouRef() { objposicaocursor.refx = objposicaocursor.refx - parseInt(YAHOO.janelaRef.xp.panel.element.style.left) - 5; objposicaocursor.refy = objposicaocursor.refy - parseInt(YAHOO.janelaRef.xp.panel.element.style.top) - 25; var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=pan&escala="+objmapa.scale+"&tipo=ref&x="+objposicaocursor.refx+"&y="+objposicaocursor.refy+"&g_sid="+g_sid; cpObj.call(p,"pan",ajaxredesenha); } /* Function: movimentoRef Pega a coordenada do cursor sobre o mapa de referência */ function movimentoRef(obj) { obj.onmousemove =function(exy) { if (navm){capturaposicao(obj);} else{capturaposicao(exy);} }; } /* Function: aplicaescala Aplica a escala numerica definida no formulário existente no mapa. */ function aplicaescala() { if ($i("escalanum")) {var nova = $i("escalanum").value;} else {var nova = objmapa.scale;} objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=mudaescala&escala="+nova+"&g_sid="+g_sid; g_operacao = "outras"; cpObj.call(p,"mudaEscala",ajaxredesenha); } /* Function: zoomtot Zoom para a extensão default. */ function zoomtot() { objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=mudaext&ext="+objmapa.extentTotal+"&g_sid="+g_sid; g_operacao = "navega"; cpObj.call(p,"mudaExtensao",ajaxredesenha); } /* Function: panFixo Desloca o mapa em uma direção determinada. */ function panFixo(direcao) { if (direcao == "norte") { var y = objmapa.h / 6; var x = objmapa.w / 2; } if (direcao == "sul") { var y = objmapa.h - (objmapa.h / 6); var x = objmapa.w / 2; } if (direcao == "leste") { var x = objmapa.w - (objmapa.w / 6); var y = objmapa.h / 2; } if (direcao == "oeste") { var x = objmapa.w / 6; var y = objmapa.h / 2; } objaguarde.abre("ajaxredesenha",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=pan&escala="+objmapa.scale+"&x="+x+"&y="+y+"&g_sid="+g_sid; g_operacao = "navega"; cpObj.call(p,"pan",ajaxredesenha); } /* Section: atributos */ /* Function: verificaTip Verifica se a opção de identificação está ativa e se o mouse está parado. Se o mouse estiver parado, chama a função de mostrar tip. */ function verificaTip() { //insere div para tips if (!$i("tip")) { var novoel = document.createElement("div"); novoel.id = "tip"; novoel.style.position="absolute"; if (navm) {novoel.style.filter = "alpha(opacity=90)";} document.body.appendChild(novoel); } if ((objmapa.parado == "parar") || (objmapa.parado=="cancela")){return;} if ((objmapa.parado == "sim") && (g_operacao == "identifica") && ($i("tip").style.display!="block")) { with($i("tip")) { style.top = objposicaocursor.telay +20; style.left = objposicaocursor.telax; innerHTML = "
Pesquisando...
"; style.display="block"; } eval(g_funcaoTip); } if ((objmapa.parado!="cancela") && ($i("tip").style.display!="block")) {objmapa.parado = "sim";} setTimeout('verificaTip()',g_tempotip); } /* Function: verificaTipDefault Executa a operação de identificação para mostrar um TIP. Esta é a função default, definida na variável g_funcaoTip */ function verificaTipDefault() { var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=identifica&opcao=tip&xy="+objposicaocursor.ddx+","+objposicaocursor.ddy+"&resolucao=5&g_sid="+g_sid; var cp = new cpaint(); //cp.set_debug(2) cp.set_persistent_connection(true); cp.set_response_type("JSON"); cp.call(p,"identifica",mostraTip); } /* Function: mostraTip Mostra a descrição de um elemento do mapa como um tip na posição do mouse. Para que um tema tenha um tip, é necessário configurar o metadata TIP no map file. Parameters: retorno - retorno da função ajax. */ function mostraTip(retorno) { var retorno = retorno.data; if ((retorno != "erro") && (retorno != undefined)) { if ($i("img")) {$i("img").title = "";} if (retorno != "") { var res = "
parar  "; res += "fixar
"; var temas = retorno.split("!"); for (tema=0;tema
"; } var ocorrencias = titulo[1].split("*"); for (ocorrencia=0;ocorrencia" + valores[0] + " " + valores[1] + "
"; } else { res = res + "" + valores[1] + "
"; } } } } } if ($i("janelaMen")) { $i("janelaMenTexto").innerHTML = res; } else { $i("tip").innerHTML = "
"+res+"
"; with($i("tip").style){top = objposicaocursor.telay - 10;left = objposicaocursor.telax - 20;display="block";} } } } } /* Section: legenda */ /* Function: legendaGrafico Mostra a legenda dos gráficos adicionados no mapa. Chamado pela ferramenta de inclusão de gráficos Parâmetros: par - string com os parâmetros item*r,g,b*item.... */ function legendaGrafico(par) { var temp = par.split("*"); var par = ""; for (i=0;i  "; } par += "
"+t[0]+"
"; if (!$i("legendagr")) { var novoel = document.createElement("div"); var temp = '
Legenda
'; temp += '
'; temp += '
'; with(novoel) { id = "legendagr"; style.display="block"; style.textAlign="left"; innerHTML = temp; } document.body.appendChild(novoel); YAHOO.namespace("legendagr.xp"); YAHOO.legendagr.xp.panel = new YAHOO.widget.Panel("legendagr", {width:"250px", fixedcenter: true, constraintoviewport: false, underlay:"none", close:true, visible:true, draggable:true, modal:false } ); } $i("contemleggr").innerHTML = par; YAHOO.legendagr.xp.panel.render(); YAHOO.legendagr.xp.panel.show(); } /* Function: inverteStatusClasse Ativa ou desativa a visualização de uma classe de um tema. Parameters: leg - objeto input clicado no mapa */ function inverteStatusClasse(leg) { var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=inverteStatusClasse&g_sid="+g_sid+"&tema="+leg.name+"&classe="+leg.value; cpObj.call(p,"inverteStatusClasse",ajaxredesenha); } /* Section: sistemas de busca e navegação */ /* Function: atualizagoogle Atualiza o box do google se a função google estiver ativa */ function atualizagoogle() { if (window.parent.frames["wdocai"]) { if (navn) { if ($i("wdocai")) {var doc = $i("wdocai").contentDocument;} } else { if(document.frames("wdocai")) {var doc = document.frames("wdocai").document;} } if(doc) { if (doc.getElementById("map")) { if(window.parent.frames["wdocai"].panTogoogle) {window.parent.frames["wdocai"].panTogoogle();} } } } } /* Function: atualizascielo Atualiza a lista de dados na opção de busca Scielo */ function atualizascielo() { if ($i("wdocai")) { if (window.parent.frames["wdocai"]) { var docel = (navm) ? document.frames("wdocai").document : $i("wdocai").contentDocument; if (docel.getElementById("resultadoscielo")) { $i("wdocai").src = g_locaplic+"/ferramentas/scielo/index.htm"; } } } } /* Function: atualizaconfluence Atualiza a lista de dados na opção de busca confluence */ function atualizaconfluence() { if($i("wdocai")) { if (window.parent.frames["wdocai"]) { var docel = (navm) ? document.frames("wdocai").document : $i("wdocai").contentDocument; if (docel.getElementById("resultadoconfluence")) { $i("wdocai").src = g_locaplic+"/ferramentas/confluence/index.htm"; } } } } /* Function: atualizawiki Atualiza a lista de dados na opção de busca wiki */ function atualizawiki() { if ($i("wdocai")) { if (window.parent.frames["wdocai"]) { var docel = (navm) ? document.frames("wdocai").document : $i("wdocai").contentDocument; if (docel.getElementById("resultadowiki")) { $i("wdocai").src = g_locaplic+"/ferramentas/wiki/index.htm"; } } } } /* Section: menu de temas e outras listagens */ /* Function: procurartemas Localiza um tema no menu de temas. */ function procurartemas() { var procurar = removeAcentos(document.getElementById("buscatema").value); var resultadoProcurar = function(retorno) { if(!retorno.data) {$i("achados").innerHTML = "Nada encontrado

";return;} var retorno = retorno.data; if ((retorno != "erro") && (retorno != undefined)) { var ins = ""; for (ig=0;ig fonte";} var tid = ngTema[st].tid; var inp = " ("+nomeSgrupo+")"; var nomeTema = inp+(ngTema[st].nome)+lk+"
"; ins += nomeTema; } } } if (ins != "") { $i("achados").innerHTML = ins+"
"; } else {$i("achados").innerHTML = "Nada encontrado

";} } }; var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=procurartemas&procurar="+procurar+"&g_sid="+g_sid; cpObj.call(p,"procurartemas",resultadoProcurar); } /* Function: expandeTema Busca dados sobre um tema quando o botão de expandir tema (guia1) é clicado. Parameters: itemID - string Id do nó que foi expandido na árvore de grupos e subgrupos. */ function expandeTema(itemID) { var lista = (objmapa.temas).split(";"); if (!document.getElementById("idx"+itemID)) { for (l=0;l objmapa.scale*1) { var farol = "maisvermelho.png"; var mfarol = $trad("t10"); } if (ltema[6] == 0) { var farol = "maisamarelo.png"; var mfarol = $trad("t11"); } tnome = " "; tnome += " "; tnome += " "; tnome += " "; tnome += " "; mytreeview1.createItem("temap0"+ltema[0], tnome, imgBranco, false, true, true, ltema[0]); if (g_opcoesTemas == "sim") {mytreeview1.createItem("opc"+ltema[0], $trad("t18a"), imgBranco, true, true, true, ltema[0]);} mytreeview1.createItem("legenda"+ltema[0], $trad("t18b"), imgBranco, true, true, true, ltema[0]); if (g_opcoesTemas == "sim") { var im = ""; if (navn) {var im = "";} //transparencia if ((ltema[4] != 0) || (ltema[8] == "sim")) { tnome = ""+im+" "+$trad("t20")+" "; mytreeview1.createItem("temap1"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); } //muda nome tnome = ""+im+" "+$trad("t21")+" "; mytreeview1.createItem("temap2"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); if ((ltema[4] < 3) && (ltema[9] != 7)) { tnome = ""+im+" "+$trad("t23")+" "; mytreeview1.createItem("temap3"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); tnome = ""+im+" "+$trad("t25")+" "; mytreeview1.createItem("temap4"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); tnome = ""+im+" "+$trad("t27")+" "; mytreeview1.createItem("temap7"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); tnome = ""+im+" "+$trad("t29")+" "; mytreeview1.createItem("temap5"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); tnome = ""+im+" "+$trad("t31")+" "; mytreeview1.createItem("temap6"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); } if (ltema[4] < 4) { tnome = ""+im+" "+$trad("t33")+" "; mytreeview1.createItem("temap7"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); } tnome = ""+im+" "+$trad("t35")+" "; mytreeview1.createItem("temap8"+ltema[0], tnome, imgBranco, false, true, false, "opc"+ltema[0]); } mytreeview1.createItem("","", imgBranco, false, true, true, ltema[0]); break; } } } //verifica se clicou para expandir a legenda var tema = itemID.split("legenda"); if (tema.length == 2) { var expandeLegendaVer = function (retorno) { if (retorno.data != undefined) { var retorno = retorno.data.legenda; if (retorno[0]) { if ((navn) && (!retorno[0].imagem)) {tabela = retorno;} else { var i = retorno[0].imagem; var re = new RegExp("tiff", "g"); var i = i.replace(re,'png'); var tabela = ""; } retorno = ""; } else { var linhas = retorno.split("#"); if (linhas.length > 1) { var linhas = retorno.split("|"); var tabela = ""; for (linha=0;linha"; } tabela += "
"+colunas[2]+"

"; } else {tabela = retorno;} } if (!$i(g_arvoreClick+"verdiv")) { incluir = "
"+tabela+"
"; mytreeview1.createItem(g_arvoreClick+"ver", incluir, imgBranco, false, true, true, g_arvoreClick); } else { $i(g_arvoreClick+"verdiv").innerHTML = tabela; } } }; g_arvoreClick = itemID; tema = tema[1]; var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=criaLegendaHTML&template=legenda2.htm&tema="+tema+"&g_sid="+g_sid; cpObj.call(p,"criaLegenda",expandeLegendaVer); } } /* Function: expandeGrupo Chama a função ajax que pega a lista de temas de um subgrupo no menu de temas. Parameters: itemID - string Id do nó que foi expandido na árvore de grupos e subgrupos. */ function expandeGrupo(itemID) { g_arvoreClick = itemID; if ((itemID.search("sgrupo") > -1) && (g_arvoreClicks.search(itemID) == -1 )) { var codigos = itemID.split("_"); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=pegalistadetemas&grupo="+codigos[1]+"&subgrupo="+codigos[2]+"&g_sid="+g_sid+"&idmenu="+codigos[3]; cpObj.call(p,"pegaListaDeTemas",processaTemas); } } /* Function: pegaListaDeGrupos Pega a lista de grupos de uma árvore de tremas. Parameters: idmenu - id que identifica a árvore. Esse id é definido no ms_configura, variável $menutemas. Se idmenu for vazio, será considerado o arquivo de menus default do I3Geo, existente no diretório menutemas. listasistemas - sim|nao pega a lista de sistemas para montar a árvore de sistemas */ function pegaListaDeGrupos(idmenu,listasistemas) { var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=pegalistadegrupos&g_sid="+g_sid+"&idmenu="+idmenu+"&listasistemas="+listasistemas; cpObj.call(p,"pegaListaDeGrupos",processaGrupos); } /* Function: processaGrupos Recebe os dados da função Ajax com a lista de grupos e subgrupos. Monta a árvore para adição de um novo tema no mapa. Parameters: retorno - string formatada com os dados para montagem da árvore. */ function processaGrupos(retorno) { if ((retorno.data != "erro") && (retorno.data != undefined)) { var idarvore = retorno.data.grupos[retorno.data.grupos.length - 2].idmenu; if ($i("buscatema")) {var busca = $i("buscatema").value;} //$i(objmapa.guiaMenu+"obj").innerHTML = ""; if (!document.getElementById("buscatema")) { var insp = "
"; insp = insp + ""; insp = insp + "

 "+$trad("a1")+"


"; $i(objmapa.guiaMenu+"obj").innerHTML = insp+"
"; } if (!$i("uplocal")) { var upload = ""; if (g_uploadlocal == "sim") {upload += "
 "+$trad("a2")+"
";} if (g_downloadbase == "sim") {upload += "
 "+$trad("a3")+"
";} if (g_conectarwms == "sim") {upload += "
 "+$trad("a4")+"
";} if (g_conectargeorss == "sim") {upload += "
 "+$trad("a5")+"
";} $i(objmapa.guiaMenu+"obj").innerHTML += upload; if (objmapa.navegacaoDir == "sim") { var temp = "
 "+$trad("a6")+"
"; $i(objmapa.guiaMenu+"obj").innerHTML += temp; } } //arvore de menus mytreeview2 = new Object(); mytreeview2 = treeviewNew("mytreeview2"+idarvore, "default", objmapa.guiaMenu+"obj", null); var nometemas = $trad("a7"); if (idarvore != ""){nometemas += " - "+idarvore;} mytreeview2.createItem("item1"+idarvore, ""+nometemas+"", "foldermapa", true, true, true, null); mytreeview2.itemExpand = expandeGrupo; for (i=0;i"+ngSgrupo[sg].nome+""; else var nomeSgrupo = ""+ngSgrupo[sg].nome+""; mytreeview2.createItem("sgrupo_"+i+"_"+sg+"a"+"grupo"+i+"_"+idarvore, nomeSgrupo, imgBranco, true, true, false, "grupo"+i+"a"+idarvore); if (cor == "rgb(230,230,230)"){var cor = "rgb(255,255,255)";} else {var cor = "rgb(230,230,230)";} } var ngtSgrupo = retorno.data.grupos[i].temasgrupo; for (sgt=0;sgt fonte";} var tid = no.tid; var inp = ""; if(navm) nomeTema = " "+inp+nome+lk; else nomeTema = ""+inp+nome+lk+""; mytreeview2.createItem("sgrupo_"+i+"_"+sg+"_"+sgt+"_"+idarvore, nomeTema, imgBranco, false, true, false, "grupo"+i+"a"+idarvore); } } if (retorno.data.grupos[i].temasraiz) { for (st=0;st fonte";} var tid = no.tid; var inp = ""; if(navm) nomeTema = " "+inp+nome+lk; else nomeTema = ""+inp+nome+lk+""; mytreeview2.createItem("tema"+i+""+st+"a"+idarvore, nomeTema, imgBranco, false, true, true, "item1"+idarvore); } mytreeview2.createItem("", "", imgBranco, false, true, true, "item1"+idarvore); } } if (g_locsistemas != "") {pegavalSistemas(retorno.data.grupos[retorno.data.grupos.length - 1].sistemas);} } } /* Function: processaTemas Recebe os dados da função Ajax com a lista de temas de um subgrupo. Monta a árvore para adição de um novo tema no mapa. Parameters: retorno - string formatada com os dados para montagem da árvore. */ function processaTemas(retorno) { if ((retorno.data != "erro") && (retorno.data != undefined)) { var cor = "rgb(251,246,184)"; for (st=0;st "+$trad("a9")+"";} var tid = retorno.data.temas[st].tid; var inp = ""; if(navm) nomeTema = ""+inp+nome+lk+""; else nomeTema = ""+inp+nome+lk+""; mytreeview2.createItem("tema"+sg+""+st, nomeTema, imgBranco, false, true, true, g_arvoreClick); if (cor == "rgb(251,246,184)"){var cor = "rgb(255,255,255)";} else {var cor = "rgb(251,246,184)";} } //inclui um item em branco mytreeview2.createItem("vazio", "", imgBranco, false, true, true, g_arvoreClick); g_arvoreClicks += ","+g_arvoreClick; } } /* Function: pegavalSistemas Adiciona uma árvore no menu de adição de temas, contendo os sistemas que podem ser executados. Parameters: sis - objeto com a lista de sistemas. */ function pegavalSistemas(sis) { if(sis.length > 0) { mytreeviewS = new Object(); mytreeviewS = treeviewNew("mytreeviewS", "default", objmapa.guiaMenu+"obj", null); mytreeviewS.createItem("Sitem1", ""+$trad("a11")+"", "foldermapa", true, true, true, null); for (ig=0;ig "; mytreeviewS.createItem("sis"+ig+"func"+ig2, inp+nomeFunc, imgBranco, false, true, false, "sis"+ig); } } } } /* Function: pegaMapas Recebe a lista de mapas (banners) e monta a apresentação. Adiciona na guia mapas os banners que dão acesso direto a mapas especiais. A indicação do arquivo xml é feita em ms_configura.php */ function pegaMapas(retorno) { var ins = "
"; var mapa = retorno.data.mapas; for (ig1=0;ig1
"; ins += "

"+nome+"


"; } $i("banners").innerHTML = ins; } /* Function: arvoreclick Adiciona um tema no mapa quando o usuário clica em um novo tema no menu de adição de temas. Parameters: itemID - ID que identifica qual tema foi clicado. O ID é definido no arquivo .map e no arquivo menutemas/menutemas.xml */ function arvoreclick(itemID) { if (itemID.search("tema") == 0) { if ($i(itemID).checked == true) {$i(itemID).checked = false;} else {$i(itemID).checked = true;} } } /* Function: pegaTema Pega o tema de um no na guia de temas. Utilizado nas opções que operam sobre um tema específico. Parameters: celula - objeto que foi clicado Returns: Id do tema. */ function pegaTema(celula) { var nos = celula.parentNode.childNodes; for (no=0;no 0) { objaguarde.fecha("remapa"); objaguarde.abre("ajaxredesenha",$trad("o1")); var temp = function(retorno) { objaguarde.fecha("ajaxredesenha"); if(retorno.data.erro) { alert(retorno.data.erro); return; } ajaxredesenha(""); }; var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=adtema&temas="+(ta.toString())+"&g_sid="+g_sid; cpObj.call(p,"adicionaTema",temp); } else { objaguarde.fecha("remapa"); objaguarde.abre("ajaxredesenha",$trad("o1")); ajaxredesenha(""); } } else { objaguarde.fecha("remapa"); objaguarde.abre("ajaxredesenha",$trad("o1")); ajaxredesenha(""); } }; if ((tsd.length > 0) || (tsl.length > 0)) { objaguarde.abre("remapa",$trad("o1")); var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=ligatemas&desligar="+(tsd.toString())+"&ligar="+(tsl.toString())+"&g_sid="+g_sid; cpObj.call(p,"ligaDesligaTemas",remapaAdicNovos); } else{remapaAdicNovos();} objaguarde.fecha("remapa"); } else {remapaAdicNovos();} } /* Section: eventos */ /* Function: processevent1 (depreciado) Captura a posição do mouse tendo como referência o navegador. Atualiza o objeto objposicaomouse e movimenta as janelas docáveis. Recalcula a posição correta da imagem do mapa. Parameters: exy1 - objeto evento. */ function processevent1(exy1) {} /* Function: calcposf Calcula a posição correta do corpo do mapa e posiciona-o. Atualiza as variáveis imagemxi,imagemyi,imagemxref e imagemyref */ function calcposf() { imagemxi = 0; imagemyi = 0; imagemxref = 0; imagemyref = 0; if(!$i("i3geo")){return;} if ($i("i3geo").style.left){imagemxi += parseInt($i("i3geo").style.left);} if ($i("i3geo").style.top){imagemyi += parseInt($i("i3geo").style.top);} var dc = $i("i3geo"); if ($i("img")) {var dc = $i("contemImg");} while ((dc.offsetParent) && (dc.offsetParent.id != "i3geo")) { dc = dc.offsetParent; imagemxi = imagemxi + dc.offsetLeft; imagemyi = imagemyi + dc.offsetTop; } if ($i("img")) { $left("corpoMapa",imagemxi); $top("corpoMapa",imagemyi); if ($i("i3geo").style.left){$left("corpoMapa",imagemxi - parseInt($i("i3geo").style.left));} if ($i("i3geo").style.top){$top("corpoMapa",imagemyi - parseInt($i("i3geo").style.top));} } if ($i("ref")) { var dc = $i("ref"); while (dc.offsetParent.id != "i3geo") { dc = dc.offsetParent; imagemxref = imagemxref + dc.offsetLeft; imagemyref = imagemyref + dc.offsetTop; } } if ($i("aguarde")) { $top("aguarde",imagemyi); $left("aguarde",imagemxi); } } /* Function: movecursor Move o ícone que segue o mouse quando da movimentação sobre o mapa */ function movecursor() { var obje = $i("obj").style; if ($i("img")) { eval ("obje." + g_tipotop + "= objposicaocursor.telay + 5 + g_postpx"); eval ("obje." + g_tipoleft + "= objposicaocursor.telax + 5 + g_postpx"); } else { eval ("obje." + g_tipotop + "= objposicaocursor.telay - 15 + g_postpx"); eval ("obje." + g_tipoleft + "= objposicaocursor.telax + 15 + g_postpx"); } if($i("box1")) { var bx = $i("box1"); if (bx.style.visibility != "visible") { //move o box para a posição correta with(bx.style) { left = objposicaocursor.telax + g_postpx; top = objposicaocursor.telay + g_postpx; } } } } /* Function: capturaposicao Captura a posição do mouse em função do evento onmousemove sobre o corpo do mapa. Atualiza o objeto objposicaocursor. A função de mostrar TIP é definida como "" quando o mouse é movimentado. Parameters: exy - objeto evento. */ function capturaposicao(exy) { var e = (navn) ? exy : window.event; if (navm) { var storage = e.clientY+document.body.scrollTop; var storage1 = e.clientX+document.body.scrollLeft; calcposf(); var xfig = e.clientX - imagemxi + document.body.scrollLeft; var yfig = e.clientY - imagemyi + document.body.scrollTop; var xreffig = e.clientX - imagemxref + document.body.scrollLeft; var yreffig = e.clientY - imagemyref + document.body.scrollTop; } else { var storage = e.clientY+window.pageYOffset; var storage1 = e.clientX+window.pageXOffset; calcposf(); var xfig = e.clientX - imagemxi + pageXOffset; var yfig = e.clientY - imagemyi + pageYOffset; var xreffig = e.clientX - imagemxref + pageXOffset; var yreffig = e.clientY - imagemyref + pageYOffset; } var teladd = calcddf(xfig,yfig,g_celula,objmapa.extent); var teladms = convdmsf(teladd[0],teladd[1]); with(objposicaocursor) { ddx = teladd[0]; ddy = teladd[1]; dmsx = teladms[0]; dmsy = teladms[1]; telax = storage1; telay = storage; imgx = xfig; imgy = yfig; refx = xreffig; refy = yreffig; } if (objmapa.parado!="cancela") {objmapa.parado = "nao";} ajaxTip = ""; } /* Section: calculos */ /* Function: calculadistancia Calcula a distância entre dois pontos. Parameters: lga - x inicial. lta - y inicial lgb - x final ltb - y final */ function calculadistancia(lga,lta,lgb,ltb) //0ms { //calculo baseado no site http://www.wcrl.ars.usda.gov/cec/java/lat-long.htm var er = 6366.707; var radlat1 = Math.PI * lta/180; var radlat2 = Math.PI * ltb/180; var radlong1 = Math.PI * lga/180; var radlong2 = Math.PI * lgb/180; if (lta > 0) {radlat1=Math.PI/2-radlat1;} if (lta < 0) {radlat1=Math.PI/2+radlat1;} if (lga < 0) {radlong1=Math.PI*2-radlong1;} if (ltb > 0) {radlat2=Math.PI/2-radlat2;} if (ltb < 0) {radlat2=Math.PI/2+radlat2;} if (lgb < 0) {radlong2=Math.PI*2-radlong2;} var x1 = er * Math.cos(radlong1)*Math.sin(radlat1); var y1 = er * Math.sin(radlong1)*Math.sin(radlat1); var z1 = er * Math.cos(radlat1); var x2 = er * Math.cos(radlong2)*Math.sin(radlat2); var y2 = er * Math.sin(radlong2)*Math.sin(radlat2); var z2 = er * Math.cos(radlat2); var d = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2)); //side, side, side, law of cosines and arccos var theta = Math.acos((er*er+er*er-d*d)/(2*er*er)); return theta*er; } /* Function: convdmsddf Converte dms em dd. Parameters: cd - grau. cm - minuto. cs - segundo Returns: Coordenada em dd. */ function convdmsddf(cd,cm,cs) { //converte dms em dd var sinal = 'positivo'; if (cd < 0) { cd = cd * -1; sinal = 'negativo'; } spm = cs / 3600; mpg = cm / 60; var dd = (cd * 1) + (mpg * 1) + (spm * 1); if (sinal == 'negativo') {dd = dd * -1;} return (dd); } /* Function: calcddf Converte o x,y de unidades de tela para décimo de grau. Parameters: xfign - x em valores de imagem. yfign - y em coordenadas de imagem. g_celula - tamanho no terreno do pixel da imagem. imgext - extensão geográfica do mapa. Returns: Coordena em dd. */ function calcddf(xfign,yfign,g_celula,imgext) { if (navm) { xfign = xfign - 2.2; yfign = yfign - 2.7; } if (navn) { xfign = xfign - 0.12; yfign = yfign - 1.05; } var nx = g_celula * xfign; var ny = g_celula * yfign; var amext = imgext.split(" "); var longdd = (amext[0] * 1) + nx; var latdd = (amext[3] * 1) - ny; var res = new Array(); res[0] = longdd; res[1] = latdd; return (res); } /* Function: convdmsf Converte dd em dms. Parameters: x - coordenada x. y - coordenada y. Returns: Array com o valor de x [0] e y [1] no formato dd mm ss */ function convdmsf(x,y) { var m = 0; var s = 0; var dx = parseInt(x); if (dx > 0) {var restod = x - dx;} if (dx < 0) {restod = (x * -1) - (dx * -1);} dx = dx; if (restod != 0) { var mm = restod * 60; var m = parseInt(restod * 60); var restos = mm - m; var mx = m; if (restos != 0) { var s = restos * 60; var s = (s+"_").substring(0,5); var sx = s; } else { s = "00.00" } } else { var mx = "00"; var sx = "00.00"; } if (m.length == 2){m = "0"+m+"";} if (s*1 < 10){s = "0"+s;} var xv = dx+" "+mx+" "+sx; var m = 0; var s = 0; var dy = parseInt(y); if (dy > 0) {var restod = y - dy;} if (dy < 0) {var restod = (y * -1) - (dy * -1);} dy = dy; if (restod != 0) { var mm = restod * 60; var m = parseInt(restod * 60); var restos = mm - m; var my = m; if (restos != 0) { var s = restos * 60; s = (s+"_").substring(0,5); var sy = s; } else { var s = "00.00";} } else { var my = "00"; var sy = "00.00"; } if (m.length == 2){m = "0"+m;} if (s*1 < 10){s = "0"+s;} var yv = dy+" "+my+" "+sy; var res = new Array(); res[0] = xv; res[1] = yv; if ($i("localizarxy")) { $i("xg").value = dx; $i("xm").value = mx; $i("xs").value = sx; $i("yg").value = dy; $i("ym").value = my; $i("ys").value = sy; } return res; } /* Function: convddtela Converte coordenadas dd em coordenadas de tela. Parameters: vx - coordenada x. vy - coordenada y. docmapa - objeto que contém o objeto imagem. Returns: Array com o valor de x [0] e y [1] */ function convddtela(vx,vy,docmapa) { if(!docmapa) {var docmapa = window.document;} var dc = docmapa.getElementById("img"); imgext = objmapa.extent; varimgext = imgext.split(" "); vx = (varimgext[0] * -1) - (vx * -1); vy = (vy * -1) + (varimgext[3] * 1); c = objmapa.cellsize * 1; xy = new Array(); xy[0] = (vx / c) + imagemxi; xy[1] = (vy / c) + imagemyi; return (xy); } /* Function: posicaomouse Cria um objeto que guarda a posição do mouse na tela. A posição é medida em relação a janela do navegador. Methods: x - coordenada x em valores de tela y - coordenada y em valores de tela */ function posicaomouse() { this.x = 0; this.y = 0; } /* Function: posicaocursor Cria um objeto que guarda a posição do mouse no corpo do mapa. A posição é medida em relação à posição do mapa no navegador. Methods: ddx - coordenada x em décimo de grau ddy - coordenada y em décimo de grau dmsx - coordenada x em grau, minuto e segundo dmsy - coordenada y em grau, minuto e segundo telax - coordenada x em valores de tela telay - coordenada y em valores de tela imgx - coordenada x em relação ao mapa imgy - coordenada y em relação ao mapa refx - coordenada x em relação ao mapa de referência refy - coordenada y em relação ao mapa de referência */ function posicaocursor() { this.ddx = 0; this.ddy = 0; this.dmsx = ''; this.dmsy = ''; this.telax = 0; this.telay = 0; this.imgx = 0; this.imgy = 0; this.refx = 0; this.refy = 0; } /* Function: pontosdist Armazena coordenadas no objeto pontosdist para calculo de distancia Parameters: xpt - coordenadas x em dd ypt - coordenadas y em dd dist - distância entre os dois últimos pontos xtela - coordenada x na tela ytela - coordenada y na tela ximg - coordenada x na imagem do mapa yimg - coordenada y na imagem do mapa linhas - lista de objetos criados pela biblioteca richdraw utilizados no desenho da linha de medição */ function pontosdist() { this.xpt = new Array(); this.ypt = new Array(); this.dist = new Array(); this.xtela = new Array(); this.ytela = new Array(); this.ximg = new Array(); this.yimg = new Array(); this.linhas = new Array(); } /* Section: desenho sobre o mapa */ /* Section: outros */ /* Function: inseremarcaf Insere um ponto no mapa. Os pontos são inseridos em um contaier de pontos e mostrados temporáriamente como uma imagem. Utilizado pela função de medição de distâncias. Parameters: xi - coordenada x. yi - coordenada y. */ function inseremarcaf(xi,yi) { //verifica se existe o container para os pontos if (!$i("pontosins") ) { var novoel = document.createElement("div"); novoel.id = "pontosins"; with(novoel.style){position = "absolute";top = parseInt($i("img").style.top);left = parseInt($i("img").style.left);} document.body.appendChild(novoel); } var container = $i("pontosins"); var novoel = document.createElement("div"); with (novoel.style){position = "absolute";zIndex=2000;top=(yi - 2)+"px";left=(xi - 2)+"px";width="4px";height="4px";} var novoimg = document.createElement("img"); novoimg.src=g_locaplic+"/imagens/dot1.gif"; with (novoimg.style){width="4px";height="4px";zIndex=2000;} novoel.appendChild(novoimg); container.appendChild(novoel); } /* Function: limpacontainerf Limpa o container de pontos. */ function limpacontainerf() { if ($i("pontosins")) {$i("pontosins").innerHTML = "";} if ($i("mostradistancia")) {$i("mostradistancia").style.display="none";} } /* Function: criaboxg Cria o div boxg utilizado nas operações de navegação, google, etc. O boxg é utilizado para o desenho de retângulos na tela. */ function criaboxg() { if (!$i("boxg")) { var novoel = document.createElement("div"); novoel.id = "boxg"; novoel.style.zIndex=1; novoel.innerHTML = ''; novoel.onmouseover = function(){$i("boxg").style.display="none";}; document.body.appendChild(novoel); } } /* Function: removeAcentos Remove acentos de uma palavra ou frase Parameters: palavra - */ function removeAcentos(palavra) { var re = /ã|á|à|â/gi; palavra = palavra.replace(re,"a"); var re = /é/gi; palavra = palavra.replace(re,"e"); var re = /í/gi; palavra = palavra.replace(re,"i"); var re = /ó|õ/gi; palavra = palavra.replace(re,"o"); var re = /ç/gi; palavra = palavra.replace(re,"c"); var re = /ú/gi; palavra = palavra.replace(re,"u"); return(palavra); } //Mantido aqui apenas para fins de compatibilidade function borra() {} //testa se esse script foi carregado function testafuncoes() {}