/*
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 = '
';
if($i(objmapa.guiaTemas))
{$i(objmapa.guiaTemas).innerHTML = $trad("g1");}
if($i(objmapa.guiaMenu))
{$i(objmapa.guiaMenu).innerHTML = $trad("g2");}
if($i(objmapa.guiaLegenda))
{$i(objmapa.guiaLegenda).innerHTML = $trad("g3");}
if($i(objmapa.guiaListaMapas))
{$i(objmapa.guiaListaMapas).innerHTML = $trad("g4");}
for(g=0;g<12;g++)
{
if ($i("guia"+g))
{
var tituloguia = $i("guia"+g).innerHTML;
var re = new RegExp(" ", "g");
var tituloguia = tituloguia.replace(re,'');
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"+titulo[0]+" ";
}
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
"+t[0]+"
";
}
par += "
";
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 = "
";
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()
{}