/*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){ if(typeof(console) !== 'undefined'){console.info("i3GEO.util.escapeURL()");} 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) { if(typeof(console) !== 'undefined'){console.info("i3GEO.util.insereCookie()");} 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){ if(typeof(console) !== 'undefined'){console.info("i3GEO.util.pegaCookie()");} 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) { if(typeof(console) !== 'undefined'){console.info("i3GEO.util.listaChaves()");} 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) { if(typeof(console) !== 'undefined'){console.info("i3GEO.util.criaBotaoAplicar()");} 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){ if(typeof(console) !== 'undefined'){console.info("i3GEO.util.arvore()");} //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){ if(typeof(console) !== 'undefined'){console.error(e);} } titulo = "
"+titulo+" |