/*jslint plusplus:false,white:false,undef: false, rhino: true, onevar: true, evil: true */ /* Title: Utilitários Arquivo: i3geo/classesjs/classe_util.js Licenca: GPL2 I3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation; tanto a versão 2 da Licença. Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU para mais detalhes. Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto com este programa; se não, escreva para a Free Software Foundation, Inc., no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */ if(typeof(i3GEO) === 'undefined'){ i3GEO = []; } /* Propriedade: navm Verdadeiro (true) se o navegador for o Internet Explorer Tipo: {boolean} Default: {false} */ navm = false; /* Propriedade: navn Verdadeiro (true) se o navegador for o Firefox Tipo: {boolean} Default: {false} */ navn = false; //seta as variáveis navn e navm var app = navigator.appName.substring(0,1); if (app==='N'){navn=true;}else{navm=true;} /* Variavel: g_operacao Nome da última operação que foi executada. Dependendo do tipo de operação são aplicadas as atualizações necessárias aos componentes do mapa. Por exemplo, redesenha o corpo do mapa, atualiza a lista de temas, etc. Essas operações são controladas pela função ajaxiniciaparametros. */ g_operacao = ""; /* Variavel: g_tipoacao Tipo de ação que está sendo executada. Quando o usuário clica no mapa, essa variável é pesquisada para definir o tipo de operação que deve ser executada. É definida quando o usuário seleciona uma determinada ferramenta do i3Geo. */ g_tipoacao = "zoomli"; g_postpx = "px"; g_tipotop = "top"; g_tipoleft = "left"; if (navm) { g_postpx = ""; //utilizado para crossbrowser g_tipotop = "pixelTop"; //utilizado para crossbrowser g_tipoleft = "pixelLeft"; //utilizado para crossbrowser } /* Function: $i Obtém um elemento DOM a partir de seu id Parametros: id - {String} ID do elemento. Returns: {Object} Objeto. */ $i = function(id) {return document.getElementById(id);}; /* Function: Array.remove() Extende os métodos de um objeto Array, permitindo remover um elemento. */ Array.prototype.remove=function(s){ try{ var i = this.indexOf(s); if(i !== -1){this.splice(i, 1);} }catch(e){} }; /* Classe: i3GEO.util Utilitários. */ i3GEO.util = { /* Variavel: PINS Elementos IMG criados na função criaPin Tipo: {Array} */ PINS: [], /* Variavel:BOXES Elementos DIV criados na função criaBox Tipo: {Array} */ BOXES: [], /* Function: escapeURL Converte uma string em uma url válida Parametros: sUrl {String} - url que será convertida Return: Tipo: {String} */ escapeURL: function(sUrl){ var re; sUrl = escape(sUrl); re = new RegExp("%3F", "g"); sUrl = sUrl.replace(re,'?'); re = new RegExp("%3D", "g"); sUrl = sUrl.replace(re,'='); re = new RegExp("%26", "g"); sUrl = sUrl.replace(re,'&'); return sUrl; }, /* Function: insereCookie Cria um novo cookie. Parametros: nome - {String} Nome do cookie. valor - (String) Valor do cookie */ insereCookie: function(nome,valor) { document.cookie = nome+"="+valor+";path=/"; }, /* Function: pegaCookie Pega o valor de um cookie. Parametros: nome - {String} Nome do cookie. Returns: (String) - valor do cookie */ pegaCookie: function(nome){ var cookies,i,fim; cookies = document.cookie; i = cookies.indexOf(nome); if(i === -1) {return null;} fim = cookies.indexOf(";",i); if (fim === -1) {fim = cookies.length;} return (unescape(cookies.substring(i,fim))).split("=")[1]; }, /* Function: listaChaves Lista as chaves de um objeto. Parametros: obj - {Object} Return: (Array) - array com as chaves. */ listaChaves: function (obj) { var keys,key; keys = []; for(key in obj){ if(obj[key]) {keys.push(key);} } return keys; }, /* Function: criaBotaoAplicar Cria um botão flutuante do tipo aplicar. O novo botão é adicionado no DOM com ID "i3geo_aplicar" e posicionado sobre o objeto definido Parametros: nomeFuncao - {String} Nome da função que será executada quando o botão for cllicado titulo - (opcional) {String} Título que será mostrado no botão classe - (opcional) {String} Nome da classe (estilo) que será aplicado ao botão. obj - (opcional) {Objeto} Objeto DOM que foi clicado para provocar a criação do botão. Return: (Object) - Objeto DOM criado. */ criaBotaoAplicar: function (nomeFuncao,titulo,classe,obj) { try {clearTimeout(tempoBotaoAplicar);} catch(e){} var novoel,xy; tempoBotaoAplicar = eval("setTimeout('"+nomeFuncao+"\(\)',(i3GEO.configura.tempoAplicar))"); autoRedesenho("reinicia"); if(arguments.length === 1) {titulo = "Aplicar";} if(arguments.length === 1 || arguments.length === 2) {classe = "i3geoBotaoAplicar";} if (!document.getElementById("i3geo_aplicar")) { novoel = document.createElement("input"); novoel.id = 'i3geo_aplicar'; novoel.type = 'button'; novoel.value = titulo; novoel.style.cursor="pointer"; novoel.style.fontSize="10px"; novoel.style.zIndex = 15000; novoel.style.position="absolute"; novoel.style.display="none"; novoel.onmouseover = function(){this.style.display="block";}; novoel.onmouseout = function(){this.style.display="none";}; novoel.className = classe; document.body.appendChild(novoel); } else {novoel = document.getElementById("i3geo_aplicar");} novoel.onclick = function(){ clearTimeout(i3GEO.parametros.tempo); i3GEO.parametros.tempo = ""; this.style.display='none'; eval(nomeFuncao+"\(\)"); }; //reposiciona o botao if(arguments.length === 4){ novoel.style.display="block"; xy = YAHOO.util.Dom.getXY(obj); YAHOO.util.Dom.setXY(novoel,xy); } return (novoel); }, /* Function: arvore Cria uma árvore com base em um objeto contendo aspropriedades. Parametros: titulo - {String} cabeçaljo da árvore onde - {String} nome do id doelemento que conterá a árvore obj - {Object} objeto contendo os parâmetros, exemplo g_listaPropriedades = { "propriedades": [ { text: "p2", url: "javascript:tipoimagem()" } ]} */ arvore: function(titulo,onde,obj){ //YAHOO.log("arvore", "i3geo"); var arvore,root,tempNode,currentIconMode,d,c,i,linha,conteudo; if(!$i(onde)){return;} try{ arvore = new YAHOO.widget.TreeView(onde); root = arvore.getRoot(); tempNode = new YAHOO.widget.TextNode('', root, false); tempNode.isLeaf = false; tempNode.enableHighlight = false; } catch(e){} titulo = "
"+titulo+"
"; d = {html:titulo}; tempNode = new YAHOO.widget.HTMLNode(d, root, true,true); tempNode.enableHighlight = false; c = obj.propriedades.length; for (i=0, j=c; i"+$trad(linha.text)+""; d = {html:conteudo}; temaNode = new YAHOO.widget.HTMLNode(d, tempNode, false,true); temaNode.enableHighlight = false; } arvore.collapseAll(); arvore.draw(); //YAHOO.log("Fim arvore", "i3geo"); }, /* Function: removeAcentos Remove acentos de uma palavra ou frase Parametros: palavra {String} Return: {String} */ removeAcentos: function(palavra) { var re; re = /ã|á|à|â/gi; palavra = palavra.replace(re,"a"); re = /é/gi; palavra = palavra.replace(re,"e"); re = /í/gi; palavra = palavra.replace(re,"i"); re = /ó|õ/gi; palavra = palavra.replace(re,"o"); re = /ç/gi; palavra = palavra.replace(re,"c"); re = /ú/gi; palavra = palavra.replace(re,"u"); return(palavra); }, /* Function: protocolo Obtém o protocolo utilizado na URL atual Return: {String} - protocolo */ protocolo: function(){ var u = window.location.href; u = u.split(":"); return (u[0]); }, /* Function: pegaPosicaoObjeto Retorna a posição x,y de um objeto em relação a tela do navegador Parametros: obj {Object} - objeto dom Return: {Array} - array com a posição [x,y] */ pegaPosicaoObjeto: function(obj){ if(obj) { if(!obj.style) {return [0,0];} if(obj.style.position === "absolute") {return [(parseInt(obj.style.left,10)),(parseInt(obj.style.top,10))];} else{ var curleft = 0,curtop = 0; if(obj){ if (obj.offsetParent) { do { curleft += obj.offsetLeft-obj.scrollLeft; curtop += obj.offsetTop-obj.scrollTop; } while (obj = obj.offsetParent); } } return [curleft+document.body.scrollLeft,curtop+document.body.scrollTop]; } } else {return [0,0];} }, /* Function: pegaElementoPai Pega o elemento pai de um elemento clicado para identificar o código do tema. Parametros: e - elemento do DOM. Return: {Node} - objeto DOM */ pegaElementoPai: function(e){ var targ; if (!e) {e = window.event;} if (e.target) {targ = e.target;} else if (e.srcElement) {targ = e.srcElement;} if (targ.nodeType === 3) {targ = targ.parentNode;} tparent=targ.parentNode; return(tparent); }, /* Function: mudaCursor Altera o cursor do ponteiro do mouse. Os cursores disponíveis são definidos por default em classe_configura.js Parametros: cursores {i3GEO.configura.cursores} - objeto JSON com as URIs de cada cursor (veja i3GEO.configura.cursores) tipo {String} - tipo de cursor disponível em cursores idobjeto {String} - id do objeto que terá o estilo alterado para o cursor desejado locaplic {String} - onde está instalado o i3Geo */ mudaCursor: function(cursores,tipo,idobjeto,locaplic){ var o,c; o = document.getElementById(idobjeto); c = eval("cursores."+tipo+".ie"); if(c === "default" || c === "pointer" || c === "crosshair" || c === "help" || c === "move" || c === "text") {o.style.cursor = c;} else{ if(o){ if(navm){ o.style.cursor = "URL(\""+locaplic+eval("cursores."+tipo+".ie")+"\"),auto"; } else{ o.style.cursor = "URL(\""+locaplic+eval("cursores."+tipo+".ff")+"\"),auto"; } } } }, /* Function: criaBox Cria um elemento div na página atual. Esse elemento pode ser utilizado para desenhar retângulos sobre o mapa Parametros: id {String} - id do elemento que será criado. Por default, será 'boxg' */ criaBox: function(id){ if(arguments.length === 0) {id = "boxg";} if (!$i(id)) { var novoel = document.createElement("div"); novoel.id = id; novoel.style.zIndex=1; novoel.innerHTML = ''; document.body.appendChild(novoel); novoel.onmouseover = function(){novoel.style.display='none';}; novoel.onmouseout = function(){novoel.style.display='block';}; i3GEO.util.BOXES.push(id); } else {$i(id).style.display="block";} }, /* Function: escondeBox Esconde os BOXES com IDs registrados em i3GEO.util.BOXES Os ids são criado pela função criaBox */ escondeBox: function(){ var l,i; l = i3GEO.util.BOXES.length; for (i=0; i"; }, /* Function: $top ou nome curto $top Muda a posição (superior) de um objeto tanto no IE como no Firefox. Exemplo: $top("imagem",100) Parametros: id - identificador do objeto valor - posição em relação ao topo. */ $top: function(id,valor){ if (document.getElementById(id).style){ if (document.getElementById(id).style.pixelTop) {document.getElementById(id).style.pixelTop=valor;} else {document.getElementById(id).style.top=valor+"px";} } }, /* Function: $left ou nome curto $left Muda a posição (esquerda) de um objeto tanto no IE como no Firefox. Exemplo: $left("imagem",100) Parametros: id - identificador do objeto valor - posição em relação a esquerda. */ $left: function(id,valor){ if (document.getElementById(id).style){ if (document.getElementById(id).style.pixelLeft) {document.getElementById(id).style.pixelLeft=valor;} else {document.getElementById(id).style.left=valor+"px";} } }, /* Function: insereMarca Insere ou remove pontos no mapa. */ insereMarca:{ /* Armazena o valor do ID do div criado para inserir pontos Tipo: {Array} */ CONTAINER: [], /* Function: cria Insere um ponto no mapa Os pontos são inseridos em um contaier de pontos e mostrados temporáriamente Parametros: xi {Numeric} - coordenada x. yi {Numeric} - coordenada y. funcaoOnclick {String} - funcao que sera executada quando a marca for clicada, se for "", o container será esvaziado ao ser clicado na marca container {String} - id do container que receberá os pontos */ cria:function(xi,yi,funcaoOnclick,container){ try{ var novoel,i,novoimg,temp; if(i3GEO.util.insereMarca.CONTAINER.toString().search(container) < 0) {i3GEO.util.insereMarca.CONTAINER.push(container);} //verifica se existe o container para os pontos if (!$i(container)){ novoel = document.createElement("div"); novoel.id = container; i = novoel.style; i.position = "absolute"; i.top = parseInt($i(i3GEO.Interface.IDCORPO).style.top,10); i.left = parseInt($i(i3GEO.Interface.IDCORPO).style.left,10); document.body.appendChild(novoel); } container = $i(container); novoel = document.createElement("div"); i = novoel.style; i.position = "absolute"; i.zIndex=2000; i.top=(yi - 4)+"px"; i.left=(xi - 4)+"px"; i.width="4px"; i.height="4px"; novoimg = document.createElement("img"); if (funcaoOnclick !== "") {novoimg.onclick = funcaoOnclick;} else {novoimg.onclick=function(){i3GEO.util.insereMarca.limpa();};} novoimg.src=i3GEO.configura.locaplic+"/imagens/dot1.gif"; temp = novoimg.style; temp.width="6px"; temp.height="6px"; temp.zIndex=2000; novoel.appendChild(novoimg); container.appendChild(novoel); if(i3GEO.eventos.NAVEGAMAPA.toString().search("i3GEO.util.insereMarca.limpa()") < 0) {i3GEO.eventos.NAVEGAMAPA.push("i3GEO.util.insereMarca.limpa()");} } catch(e){alert("Ocorreu um erro. inseremarca"+e);} }, limpa: function(){ try{ var n,i; n = i3GEO.util.insereMarca.CONTAINER.length; for(i=0;i'; ins += ""; ins += texto; ins += '
'; if(wsrc !== "") {ins += '';} ins += '
'; novoel = document.createElement("div"); novoel.id = "i3geo_janelaCor"; novoel.style.display="block"; novoel.innerHTML = ins; if($i("i3geo")) {$i("i3geo").appendChild(novoel);} else {document.body.appendChild(novoel);} wdocaiframe = $i("i3geo_janelaCori"); if (wdocaiframe) { temp = wdocaiframe.style; temp.width = parseInt(wlargura,10)-12; temp.height=waltura; wdocaiframe.style.display = "block"; wdocaiframe.src = wsrc; } if(nx === "" || nx === "center"){fix = true;} YAHOO.janelaCor.xp.panel = new YAHOO.widget.ResizePanel(id, { zIndex:5000, modal:modal, width: wlargura_, fixedcenter: fix, constraintoviewport: false, visible: true, iframe:false} ); YAHOO.janelaCor.xp.panel.render(); $i(id+'_cabecalho').className = classe; }, /* Function: ajaxhttp Cria o objeto XMLHttpRequest para uso com funções próprias de chamada em ajax O uso dessa função não é recomendado. Dê preferência para uso da chamada ajax via YUI Return: {XMLHttpRequest} */ ajaxhttp: function(){ var objhttp1; try {objhttp1 = new XMLHttpRequest();} catch(ee){ try{objhttp1 = new ActiveXObject("Msxml2.XMLHTTP");} catch(e){ try{objhttp1 = new ActiveXObject("Microsoft.XMLHTTP");} catch(E) {objhttp1 = false;} } } return(objhttp1); }, /* Function: ajaxexecASXml Executa uma chamada ajax no modo assíncrono retornando o resultado em XML. Parametros: programa {String} - URL do programa que será executado no servidor. funcao {funcao} - função que tratará o resultado. Returns: O resultado em um objeto DOM. Se o retorno contiver a palavra "Erro", é gerado um alert. */ ajaxexecASXml: function(programa,funcao){ var h,ohttp,retorno; if (programa.search("http") === 0){ h = window.location.host; if (programa.search(h) < 0){ alert("OOps! Nao e possivel chamar um XML de outro host.\nContacte o administrador do sistema.\nConfigure corretamente o ms_configura.php"); return; } } ohttp = i3GEO.util.ajaxhttp(); ohttp.open("GET",programa,true); retorno = ""; ohttp.onreadystatechange=function(){ var retorno,parser,dom; if (ohttp.readyState === 4){ retorno = ohttp.responseText; if (retorno !== undefined){ if (document.implementation.createDocument){ parser = new DOMParser(); dom = parser.parseFromString(retorno, "text/xml"); } else{ dom = new ActiveXObject("Microsoft.XMLDOM"); dom.async="false"; dom.load(programa); } } else {dom = "erro";} if (funcao !== "volta") {eval(funcao+'(dom)');} else {return dom;} } }; ohttp.send(null); }, /* Function: aparece Aplica efeito de aparecimento suave de um objetov Parametros: id {String} - id do objeto tempo {Integer} - tempo em milesegundos que levará o efeito intervalo {Integer} - intervalo entre uma imagem e outra */ aparece: function(id,tempo,intervalo){ var n,obj,opacidade,fadei,tempoFadei; n = parseInt(tempo / intervalo,10); obj = $i(id); if(n === 1){ obj.style.display = "block"; if (navm) {obj.style.filter='alpha(opacity=100)';} else {obj.style.opacity= 1;} } tempo = n * intervalo; intervalo = (intervalo * 100) / tempo; opacidade = 0; if (navm) {obj.style.filter='alpha(opacity=0)';} else {obj.style.opacity= 0;} obj.style.display = "block"; fadei = function(){ opacidade += intervalo; if (navm) {obj.style.filter='alpha(opacity='+opacidade+')';} else {obj.style.opacity= opacidade/100;} if(opacidade < 100) {tempoFadei = setTimeout(fadei, tempo);} else{ clearTimeout(tempoFadei); if (navm) {obj.style.filter='alpha(opacity=100)';} else {obj.style.opacity= 1;} } }; tempoFadei = setTimeout(fadei, tempo); }, /* Function: desaparece Aplica efeito de desaparecimento suave de um objeto Parametros: id {String} - id do objeto tempo {Integer} - tempo em milesegundos que levará o efeito intervalo {Integer} - intervalo entre uma imagem e outra removeobj {Boolean} - remove ou não o objeto no final */ desaparece: function(id,tempo,intervalo,removeobj){ var n,obj,opacidade,fade,p,tempoFade; n = parseInt(tempo / intervalo,10); obj = $i(id); if(n === 1){ obj.style.display = "none"; if(removeobj){ p = obj.parentNode; if(p) {p.removeChild(obj);} } return; } tempo = n * intervalo; intervalo = (intervalo * 100) / tempo; opacidade = 100; if (navm) {obj.style.filter='alpha(opacity=100)';} else {obj.style.opacity= 1;} obj.style.display = "block"; fade = function(){ opacidade -= intervalo; if (navm) {obj.style.filter='alpha(opacity='+opacidade+')';} else {obj.style.opacity= opacidade/100;} if(opacidade > 0){ tempoFade = setTimeout(fade, tempo); } else{ clearTimeout(tempoFade); obj.style.display = "none"; if (navm) {obj.style.filter='alpha(opacity=100)';} else {obj.style.opacity= 1;} if(removeobj){ p = obj.parentNode; if(p) {p.removeChild(obj);} } } }; tempoFade = setTimeout(fade, tempo); }, /* Function: wkt2ext Calcula a extensão geográfica de uma geometria fornecida no formato WKT Parametros: wkt {String} - geometria no formato wkt tipo {String} - tipo de geometria (polygon,point,line) Return: {String} - extensão geográfica (xmin ymin xmax ymax) */ wkt2ext:function(wkt,tipo){ var re,x,y,w,xMin,xMax,yMin,yMax,temp; tipo = tipo.toLowerCase(); ext = false; if(tipo === "polygon"){ try{ re = new RegExp("POLYGON", "g"); wkt = wkt.replace(re,""); wkt = wkt.split("(")[2].split(")")[0]; wkt = wkt.split(","); x = []; y = []; for (w=0;w'; ins += '
'; if (texto === "") {texto = $i(onde).innerHTML;} ins += texto; ins += '
'; if (onde !== "") {$i(onde).innerHTML = ins;} else {return(ins);} }, /* Function: randomRGB Gera uma cor RGB de forma aleatória Return: {String} - r,g,b */ randomRGB: function(){ var v = Math.random(), r = parseInt(255*v,10), g; v = Math.random(); g = parseInt(255*v,10); v = Math.random(); b = parseInt(255*v,10); return (r+","+g+","+b); }, /* Function: comboTemas Cria um combo (caixa de seleção) com a lista de temas existentes no mapa e de determinado tipo Parametros: id {String} - id do elemento select que será criado funcao {Function} - função que será executada ao terminar a montagem do combo. Essa função receberá como parâmetros um Array associativo contendo os dados em HTML gerados e o tipo de resultado. P.ex.: {dados:comboTemas,tipo:"dados"} tipo será uma string que pode ser "dados"|"mensagem"|"erro" indicando o tipo de retorno. onde {String} - id do elemento HTML que receberá o combo. É utilizado apenas para inserir uma mensagem de aguarde. nome {String} - valor que será incluido no parametro "name" do elemento "select". multiplo {Booleano} - indica se o combo permite seleções múltiplas tipoCombo {String} - Tipo de temas que serão incluídos no combo ligados|selecionados|raster|pontosSelecionados|pontos */ comboTemas: function(id,funcao,onde,nome,multiplo,tipoCombo){ if (arguments.length > 2) {$i(onde).innerHTML="buscando temas...";} if (arguments.length === 3) {nome = "";} if (arguments.length < 5) {multiplo = false;} var monta, lista, temp; monta = function(retorno){ var i,comboTemas,temp,n,nome; if (retorno !== undefined) { if(retorno.data) {retorno = retorno.data;} n = retorno.length; if (n > 0) { if(multiplo) {comboTemas = "";} comboTemas += ""; for (i=0;i"+nome+""; } comboTemas += ""; temp = {dados:comboTemas,tipo:"dados"}; } else {temp = {dados:'
Nenhum tema encontrado.
',tipo:"mensagem"};} } else {temp = {dados:"

Ocorreu um erro
",tipo:"erro"};} eval("funcao(temp);"); }; if(tipoCombo === "ligados"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ monta(i3GEO.arvoreDeCamadas.filtraCamadas("status",2,"igual",i3GEO.arvoreDeCamadas.CAMADAS)); } else {i3GEO.php.listaTemas(monta,"ligados",i3GEO.configura.locaplic,i3GEO.configura.sid);} } if(tipoCombo === "selecionados"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ monta(i3GEO.arvoreDeCamadas.filtraCamadas("sel","sim","igual",i3GEO.arvoreDeCamadas.CAMADAS)); } else {i3GEO.php.listaTemasComSel(monta,i3GEO.configura.locaplic,i3GEO.configura.sid);} } if(tipoCombo === "raster"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ monta(i3GEO.arvoreDeCamadas.filtraCamadas("type",3,"igual",i3GEO.arvoreDeCamadas.CAMADAS)); } else {i3GEO.php.listatemasTipo(monta,"raster",i3GEO.configura.locaplic,i3GEO.configura.sid);} } if(tipoCombo === "pontosSelecionados"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ temp = i3GEO.arvoreDeCamadas.filtraCamadas("type",0,"igual",i3GEO.arvoreDeCamadas.CAMADAS); monta(i3GEO.arvoreDeCamadas.filtraCamadas("sel","sim","igual",temp)); } else {alert("Arvore de camadas não encontrada");} } if(tipoCombo === "pontos"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ monta(i3GEO.arvoreDeCamadas.filtraCamadas("type",0,"igual",i3GEO.arvoreDeCamadas.CAMADAS)); } else {alert("Arvore de camadas não encontrada");} } }, /* Function: checkTemas Cria uma lista com check box de temas existentes no mapa e de determinado tipo Parametros: id {String} - id do elemento select que será criado funcao {Function} - função que será executada ao terminar a montagem do combo. Essa função receberá como parâmetros um Array associativo contendo os dados em HTML gerados e o tipo de resultado. P.ex.: {dados:comboTemas,tipo:"dados"} tipo será uma string que pode ser "dados"|"mensagem"|"erro" indicando o tipo de retorno. onde {String} - id do elemento HTML que receberá o combo. É utilizado apenas para inserir uma mensagem de aguarde. nome {String} - valor que será incluido no parametro "name" do elemento "select". tipoLista {String} - Tipo de temas que serão incluídos na lista ligados|selecionados|raster|pontosSelecionados|pontos|polraster prefixo {string} - Prefixo que será usado no id de cada elemento size {numeric} - tamanho dos elementos input editáveis */ checkTemas: function(id,funcao,onde,nome,tipoLista,prefixo,size){ if (arguments.length > 2) {$i(onde).innerHTML="buscando temas...";} if (arguments.length === 3) {nome = "";} var monta, lista, temp, temp1, n, i; monta = function(retorno){ try{ var i,comboTemas,temp,n,nome; if (retorno !== undefined) { if(retorno.data) {retorno = retorno.data;} n = retorno.length; if (n > 0) { comboTemas = ""; for (i=0;i"; comboTemas += ""; } comboTemas += "
 
"; temp = {dados:comboTemas,tipo:"dados"}; } else {temp = {dados:'

Nenhum tema encontrado.
',tipo:"mensagem"};} } else {temp = {dados:"

Ocorreu um erro
",tipo:"erro"};} eval("funcao(temp);"); }catch(e){alert(e);} }; if(tipoLista === "ligados"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ monta(i3GEO.arvoreDeCamadas.filtraCamadas("status",2,"igual",i3GEO.arvoreDeCamadas.CAMADAS)); } else {i3GEO.php.listaTemas(monta,"ligados",i3GEO.configura.locaplic,i3GEO.configura.sid);} } if(tipoLista === "selecionados"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ monta(i3GEO.arvoreDeCamadas.filtraCamadas("sel","sim","igual",i3GEO.arvoreDeCamadas.CAMADAS)); } else {i3GEO.php.listaTemasComSel(monta,i3GEO.configura.locaplic,i3GEO.configura.sid);} } if(tipoLista === "raster"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ monta(i3GEO.arvoreDeCamadas.filtraCamadas("type",3,"igual",i3GEO.arvoreDeCamadas.CAMADAS)); } else {i3GEO.php.listatemasTipo(monta,"raster",i3GEO.configura.locaplic,i3GEO.configura.sid);} } if(tipoLista === "polraster"){ if(i3GEO.arvoreDeCamadas.CAMADAS !== ""){ temp = i3GEO.arvoreDeCamadas.filtraCamadas("type",3,"igual",i3GEO.arvoreDeCamadas.CAMADAS); temp1 = i3GEO.arvoreDeCamadas.filtraCamadas("type",2,"igual",i3GEO.arvoreDeCamadas.CAMADAS); n = temp1.length; for (i=0;i 3) {$i(onde).innerHTML="buscando itens...";} if (arguments.length !== 5) {nome = "";} var monta = function(retorno) { var ins,temp,i; if (retorno.data !== undefined){ ins = []; ins.push(""); ins = ins.join(''); temp = {dados:ins,tipo:"dados"}; } else{ temp = {dados:'

Ocorreu um erro
',tipo:"erro"}; } eval("funcao(temp)"); }; i3GEO.php.listaItensTema(monta,tema); }, /* Function: comboFontes Cria um combo (caixa de seleção) com a lista fontes de texto disponíveis Parametros: id {String} - id do elemento select que será criado onde {String} - id do elemento HTML que receberá o combo. É utilizado apenas para inserir uma mensagem de aguarde. */ comboFontes: function(id,onde){ $i(onde).innerHTML = "buscando fontes..."; var monta = function(retorno){ var ins = "",temp,i,dados; if (retorno.data !== undefined){ ins += ""; } $i(onde).innerHTML = ins; }; i3GEO.php.listaFontesTexto(monta); }, /* Function: comboSimNao Cria uma caixa de seleção com as palavras sim e não Parametros: id [String} - id do elemento select que será criado selecionado {string} - qual valor estará selecionado sim|nao Return: {string} */ comboSimNao: function(id,selecionado){ var combo = ""; return(combo); }, /* Function: checkItensEditaveis Cria uma lista de elementos do tipo input com textos editáveis contendo a lista de itens de um tema. tema {string} - código do layer existente no mapa funcao {function} - função que será executada para montar a lista. Essa função receberá como parâmetro um array do tipo {dados:ins,tipo:"dados"} onde ins é um array com as linhas e tipo é o tipo de resultado, que pode ser "dados"|"erro" onde {string} - id do elemento que receberá a mensagem de aguarde size {numeric} - tamanho dos elementos input editáveis prefixo {string} - Prefixo que será usado no id de cada elemento */ checkItensEditaveis: function(tema,funcao,onde,size,prefixo){ if (onde !== "") {$i(onde).innerHTML="buscando itens...";} var monta = function(retorno) { var ins = [], i, temp, n; if (retorno.data !== undefined) { ins.push(""); n = retorno.data.valores.length; for (i=0;i"); ins.push(""); } ins.push("
"); ins = ins.join(''); temp = {dados:ins,tipo:"dados"}; } else {temp = {dados:'
Ocorreu um erro
',tipo:"erro"};} eval("funcao(temp)"); }; i3GEO.php.listaItensTema(monta,tema); }, /* Function: proximoAnterior Cria uma sequência de opções com botão de anterior e próximo. É utilizado principalmente pelas ferramentas de análise espacial, onde o usuário segue uma sequência de operações de escolha de parâmetros. Parametros: anterior {String} - nome da função que é executada para voltar à tela anterior. Pode ser "". proxima {String} - nome da função que é executada para avançar para a próxima tela. Pode ser "". texto {String} - texto que comporá a tela atual idatual {String} - id do elemento DIV que será criado para inserir o conteúdo definido em 'texto" container {String} - id do elemento DIV já existente que receberá as telas. */ proximoAnterior: function(anterior,proxima,texto,idatual,container){ var temp = $i(idatual), ndiv = document.createElement("div"), nids, i, fundo; if(temp){$i(container).removeChild(temp);} if (!document.getElementById(idatual)) { fundo = $i(container).style.backgroundColor; ndiv.id = idatual; texto += "

"; if (anterior !== "") {texto += "";} if (proxima !== "") {texto += "";} ndiv.innerHTML = texto+"
"; $i(container).appendChild(ndiv); new YAHOO.widget.Button(idatual+"anterior_",{ onclick:{fn: function(){ eval(anterior+"()"); }, lazyloadmenu:true }}); new YAHOO.widget.Button(idatual+"proxima_", {onclick:{fn: function(){ eval(proxima+"()"); }, lazyloadmenu:true }}); i = $i(idatual+"proxima_-button"); if(i){ i.style.backgroundImage = "url('"+i3GEO.configura.locaplic+"/imagens/player_avanca.png')"; i.style.backgroundRepeat = "no-repeat"; i.style.backgroundPosition = "center center"; } i = $i(idatual+"anterior_-button"); if(i){ i.style.backgroundImage = "url('"+i3GEO.configura.locaplic+"/imagens/player_volta.png')"; i.style.backgroundRepeat = "no-repeat"; i.style.backgroundPosition = "center center"; } } temp = $i(container).getElementsByTagName("div"); nids = temp.length; for (i=0;i