/* Title: core.js Carrega os arquivos js e css básicos utilizados pela interface de administração e define algumas funções de uso geral File: i3geo/admin/js/core.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: $i Pega um objeto do documento. Exemplo: $i("box1") Parâmetros: id - id do objeto Retorno: object - objeto javaScript */ var $i = function(id) {return document.getElementById(id);}; /* Variable: $mapfiles Armazena o objeto com a lista de mapfiles */ var $mapfiles = ""; /* Variable: $tags Armazena o objeto com a lista de tags */ var $tags = ""; /* Variable: $perfis Armazena o objeto com a lista de perfis */ var $perfis = ""; /* Function: core_movimentaNo Movimenta um nó para cima ou para baixo na árvore. Essa função utiliza uma árvore que deve estar armazenada no objeto tree Parameters: tipo - sobe|desce no - objeto no que será movimentado Return: true|false - se o movimento ocorreu */ function core_movimentaNo(tipo,no) { var movimenta = false if(tipo == "sobe") { var noanterior = no.previousSibling if(noanterior) { if(noanterior.previousSibling && noanterior.data.tipo != "etiqueta") { tree.popNode(no) no.insertBefore(noanterior) tree.draw() var movimenta = true } } } if(tipo == "desce") { var noseguinte = no.nextSibling if(noseguinte) { tree.popNode(no) no.insertAfter(noseguinte) tree.draw() var movimenta = true } } return movimenta; } /* Function: core_handleSuccess Processa o retorno da chamada em ajax quando tiver sucesso. Esta é uma função genérica, pouco usada. Parameters: o - string retornada pelo ajax */ function core_handleSuccess(o) { //div onde será mostrado o log if(!$i('logajax')) {document.body.innerHTML += "
";} log = $i('logajax'); YAHOO.log("The success handler was called. tId: " + o.tId + ".", "info", "example"); if(o.responseText !== undefined) { log.innerHTML = "
  • Transaction id: " + o.tId + "
  • "; log.innerHTML += "
  • HTTP status: " + o.status + "
  • "; log.innerHTML += "
  • Status code message: " + o.statusText + "
  • "; log.innerHTML += "
  • HTTP headers:
  • "; log.innerHTML += "
  • Server response: " + o.responseText + "
  • "; log.innerHTML += "
  • Argument object: Object ( [foo] => " + o.argument.foo + " [bar] => " + o.argument.bar +" )
  • "; } } /* Function: core_handleFailure Processa o retorno da chamada em ajax quando tiver falhado. Parameters: o - string retornada pelo ajax */ function core_handleFailure(o,texto) { //div onde será mostrado o log alert(texto) if(!$i('logajax')) {return;} log = $i('logajax'); YAHOO.log("The failure handler was called. tId: " + o.tId + ".", "info", "example"); if(o.responseText !== undefined) { log.innerHTML = ""; } if (!YAHOO.example.container.wait) { YAHOO.example.container.wait = new YAHOO.widget.Panel("wait",{width: "240px",fixedcenter: true,close: true,draggable: false,zindex:4,modal: true,visible: false}); YAHOO.example.container.wait.setHeader("Aguarde..."); YAHOO.example.container.wait.render(document.body); } else {YAHOO.example.container.wait.setBody(log.innerHTML);} } /* Function: core_makeRequest Executa uma chamada em ajax. Parameters: sUrl - url que será executada callback - função que processará o retorno */ function core_makeRequest(sUrl,callback,tipo) { var sUrl = escape(sUrl); var re = new RegExp("%3F", "g"); var sUrl = sUrl.replace(re,'?'); var re = new RegExp("%3D", "g"); var sUrl = sUrl.replace(re,'='); var re = new RegExp("%26", "g"); var sUrl = sUrl.replace(re,'&'); //alert(sUrl) if(arguments.length == 2) {var tipo = "GET";} var request = YAHOO.util.Connect.asyncRequest(tipo, sUrl, callback); YAHOO.log("Initiating request; tId: " + request.tId + ".", "info", "example"); } /* Function: core_carregando Mostra uma janela de aguarde Parameters: tipo - ativa|desativa|string com uma mensagem */ function core_carregando(tipo) { if (!YAHOO.example.container.wait) { YAHOO.example.container.wait = new YAHOO.widget.Panel("wait",{width: "240px",fixedcenter: true,close: true,draggable: false,zindex:4,modal: true,visible: false}); YAHOO.example.container.wait.setHeader("Aguarde..."); YAHOO.example.container.wait.setBody(""); YAHOO.example.container.wait.render(document.body); } YAHOO.example.container.wait.setBody(""); if(tipo == "ativa") {YAHOO.example.container.wait.show();} if(tipo == "desativa") {YAHOO.example.container.wait.hide();} if(tipo != "ativa" && tipo != "desativa") {YAHOO.example.container.wait.setBody(" "+tipo);} } /* Function: core_dialogoContinua Mostra um diálogo do tipo sim não Parameters: handleYes - função para sim handleNo - função para não mensagem - mensagem do diálogo largura - largura do diálogo em px */ function core_dialogoContinua(handleYes,handleNo,mensagem,largura) { // Instantiate the Dialog YAHOO.namespace("continua.container"); YAHOO.continua.container.simpledialog1 = new YAHOO.widget.SimpleDialog("simpledialog1", { width: largura+"px", fixedcenter: true, visible: false, draggable: false, close: true, text: mensagem, icon: YAHOO.widget.SimpleDialog.ICON_HELP, modal: true, constraintoviewport: true, buttons: [ { text:"Sim", handler:handleYes, isDefault:true }, { text:"Não", handler:handleNo } ] } ); YAHOO.continua.container.simpledialog1.setHeader("Tem certeza?"); YAHOO.continua.container.simpledialog1.render(document.body); YAHOO.continua.container.simpledialog1.show(); } /* Function: core_ativaPainelAjuda Parameters: id - id do elemento que receberá o painel botao - id do elemento que deverá ser lcicado para abrir o painel */ function core_ativaPainelAjuda(id,botao) { if(!YAHOO.example.container.panelAjuda) { YAHOO.example.container.panelAjuda = new YAHOO.widget.Panel(id, { width:"350px", height:"200px",overflow:"auto", visible:false,constraintoviewport:true } ); YAHOO.example.container.panelAjuda.render(); } if(arguments.length == 2) YAHOO.util.Event.addListener(botao, "click", YAHOO.example.container.panelAjuda.show, YAHOO.example.container.panelAjuda, true); else YAHOO.example.container.panelAjuda.show(); } /* Function: core_ativaPainelTexto Parameters: id - id do elemento que receberá o painel */ function core_ativaPainelTexto(id) { YAHOO.example.container.panelTexto = new YAHOO.widget.Panel(id, { width:"350px", height:"200px",overflow:"auto", visible:false,constraintoviewport:true } ); YAHOO.example.container.panelTexto.render(); YAHOO.example.container.panelTexto.show(); } /* function: core_pegaPerfis Pega a lista de perfis Parameters: funcao - (opcional) string com o nome da funcao que será executada após a chamada ajax ter tido sucesso Return $perfis - variável global com o objeto perfis $perfisArray - array com a lista de perfis */ function core_pegaPerfis(funcao) { if(arguments.length == 0) {var funcao = "";} //pega a lista de perfis var sUrl = "../php/menutemas.php?funcao=pegaPerfis"; var callback = { success:function(o) { try { $perfis = YAHOO.lang.JSON.parse(o.responseText); $perfisArray = new Array(); for (i=0;i<$perfis.length;i++) {$perfisArray.push($perfis[i].perfil);} if(funcao != "") eval(funcao); } catch(e){core_handleFailure(o,o.responseText);} }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } }; core_carregando("buscando perfis..."); core_makeRequest(sUrl,callback) } /* function: core_pegaMapfiles Pega a lista de mapfiles Parameters: funcao - (opcional) nome da funcao que será executada ao terminar a busca pelos dados */ function core_pegaMapfiles(funcaoM) { if(arguments.length == 0) {var funcao = "";} var sUrl = "../php/menutemas.php?funcao=listaMapsTemas"; var callbackM = { success:function(o) { try { $mapfiles = YAHOO.lang.JSON.parse(o.responseText); if(funcaoM != "") eval(funcaoM); } catch(e){core_handleFailure(o,o.responseText);} }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } }; core_makeRequest(sUrl,callbackM) } /* Function: core_comboMapfiles Cria um combo para escolha do mapfile Parameters: onde - id do elemento que receberá o combo id - id do combo que será criado marcar - valor que será marcado como selecionado funcao - string com o nome da função que será executada no evento onchange */ function core_comboMapfiles(onde,id,marcar,funcao) { if(arguments.length == 3) {var funcao = "";} if($mapfiles == "") { core_pegaMapfiles("core_comboMapfiles('"+onde+"','"+id+"','"+marcar+"','"+funcao+"')") } else { if (funcao != "") {var funcao = "onchange='"+funcao+"'";} ins = "

    " $i(onde).innerHTML = ins; } } /* Function: core_comboPerfis Cria um combo para escolha de perfil Parameters: onde - id do elemento que receberá o combo id - id do combo que será criado marcar - valor que será marcado como selecionado funcao - string com o nome da função que será executada no evento onchange */ function core_comboPerfis(onde,id,marcar,funcao) { if(arguments.length == 3) {var funcao = "";} if($perfis == "") { core_pegaPerfis("core_comboPerfis('"+onde+"','"+id+"','"+marcar+"','"+funcao+"')") } else { if (funcao != "") {var funcao = "onchange='"+funcao+"'";} ins = "

    " $i(onde).innerHTML = ins; } } /* Function: core_comboPranchas Cria um combo para escolha de pranchas de um atlas Parameters: onde - id do elemento que receberá o combo id - id do combo que será criado marcar - valor que será marcado como selecionado funcao - string com o nome da função que será executada no evento onchange */ function core_comboPranchas(onde,id,marcar,funcao,id_atlas) { var sUrl = "../php/atlas.php?funcao=pegaPranchas&id_atlas="+id_atlas; var callback = { success:function(o) { try { var valores = YAHOO.lang.JSON.parse(o.responseText); if(arguments.length == 3) {var funcao = "";} if (funcao != "") {var funcao = "onchange='"+funcao+"'";} ins = "

    " $i(onde).innerHTML = ins; } catch(e){core_handleFailure(e,o.responseText);} }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } }; core_makeRequest(sUrl,callback) } /* Function: core_comboGrupos Cria um combo para escolha de um grupo Parameters: onde - id do elemento que receberá o combo id - id do combo que será criado marcar - valor que será marcado como selecionado funcao - string com o nome da função que será executada no evento onchange */ function core_comboGrupos(onde,id,marcar,funcao) { var sUrl = "../php/menutemas.php?funcao=pegaGrupos"; var callback = { success:function(o) { try { var valores = YAHOO.lang.JSON.parse(o.responseText); if(arguments.length == 3) {var funcao = "";} if (funcao != "") {var funcao = "onchange='"+funcao+"'";} ins = "

    " $i(onde).innerHTML = ins; } catch(e){core_handleFailure(e,o.responseText);} }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } }; core_makeRequest(sUrl,callback) } /* Function: core_comboSubGrupos Cria um combo para escolha de um sub-grupo Parameters: onde - id do elemento que receberá o combo id - id do combo que será criado marcar - valor que será marcado como selecionado funcao - string com o nome da função que será executada no evento onchange */ function core_comboSubGrupos(onde,id,marcar,funcao) { var sUrl = "../php/menutemas.php?funcao=pegaSubGrupos"; var callback = { success:function(o) { try { var valores = YAHOO.lang.JSON.parse(o.responseText); if(arguments.length == 3) {var funcao = "";} if (funcao != "") {var funcao = "onchange='"+funcao+"'";} ins = "

    " $i(onde).innerHTML = ins; } catch(e){core_handleFailure(e,o.responseText);} }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } }; core_makeRequest(sUrl,callback) } /* Function: core_comboTemas Cria um combo para escolha de um tema Parameters: onde - id do elemento que receberá o combo id - id do combo que será criado marcar - valor que será marcado como selecionado funcao - string com o nome da função que será executada no evento onchange */ function core_comboTemas(onde,id,marcar,funcao) { var sUrl = "../php/menutemas.php?funcao=pegaTemas2"; var callback = { success:function(o) { try { var valores = YAHOO.lang.JSON.parse(o.responseText); if(arguments.length == 3) {var funcao = "";} if (funcao != "") {var funcao = "onchange='"+funcao+"'";} ins = "

    " $i(onde).innerHTML = ins; } catch(e){core_handleFailure(e,o.responseText);} }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } }; core_makeRequest(sUrl,callback) } /* function: core_pegaTags Pega a lista de tags Parameters: funcao - (opcional) nome da funcao que será executada ao terminar a busca pelos dados */ function core_pegaTags(funcao) { if(arguments.length == 0) {var funcao = "";} var sUrl = "../php/menutemas.php?funcao=pegaTags"; var callback = { success:function(o) { try { $tags = YAHOO.lang.JSON.parse(o.responseText); if($tags == ""){$tags = " ";} if(funcao != "") eval(funcao); } catch(e){core_handleFailure(e,o.responseText);} }, failure:core_handleFailure, argument: { foo:"foo", bar:"bar" } }; core_makeRequest(sUrl,callback) } /* Function: core_comboTags Cria um combo para escolha de tags Parameters: onde - id do elemento que receberá o combo id - id do combo que será criado marcar - valor que será marcado como selecionado change - nome da função do evento onchange */ function core_comboTags(onde,id,change) { if($tags == "") { core_pegaTags("core_comboTags('"+onde+"','"+id+"','"+change+"')") } else { ins = "

    " $i(onde).innerHTML = ins; } } /* Function: gera uma janela flutuante com opções de escolha baseadas em checkbox Parameters: valores - array com os valores de cada checkbox textos - array com os nomes de cada checkbox selecionados - array com os valores marcados target - objeto para receber o resultado record - objeto record key - chave (nome do item) */ function core_menuCheckBox(valores,textos,selecionados,target,record,key) { function on_menuCheckBoxChange(p_oEvent) { var ins = ""; if(p_oEvent.newValue.get("value") == "OK") { var cks = $i("core_menuCK_bd").getElementsByTagName("input"); var ins = new Array(); for (i=0;i" record.setData(key,ins.toString()); } YAHOO.example.container.panelCK.destroy(); YAHOO.example.container.panelCK = null; }; if(!YAHOO.example.container.panelCK) { var novoel = document.createElement("div"); novoel.id = "core_menuCK"; var ndiv = document.createElement("div"); ndiv.className= "yui-dt-editor"; ndiv.style.height = "144px"; ndiv.style.overflow = "auto"; ndiv.innerHTML = "
    "; novoel.appendChild(ndiv); document.body.appendChild(novoel); var og_core = new YAHOO.widget.ButtonGroup({id:"okcancel_checkbox_id", name:"okcancel_checkbox_id", container:"core_menuCK_bd" }); og_core.addButtons([ { label: "OK", value: "OK", checked: false}, { label: "Cancel", value: "CANCEL", checked: false } ]); og_core.on("checkedButtonChange", on_menuCheckBoxChange); YAHOO.example.container.panelCK = new YAHOO.widget.Overlay("core_menuCK", { zindex:"100",close:false,underlay:false,width:"200px", height:"200px",overflow:"auto", visible:false,constraintoviewport:true } ); YAHOO.example.container.panelCK.render(); } var onde = $i("core_menuCK_bd"); onde.innerHTML = ""; for (i=0;i"+textos[i]+"
    "; novoCK.innerHTML = ins; onde.appendChild(novoCK); } YAHOO.example.container.panelCK.moveTo(YAHOO.util.Dom.getX(target),YAHOO.util.Dom.getY(target)); YAHOO.example.container.panelCK.show(); } /* Function: core_combosimnao Retorna os itens option de um combo sim nao */ function core_combosimnao(marcar) { var ins = "