/*
 * Globais
 */

// Referentes ao PTPL
var points = [];
var polylines = [];

var addPoint = false;
var editPoint = false;
var addPolyline = false;
var editPolyline = false;
var closePolyline = false;

var buffer_points = [];
var buffer_marker = [];
var buffer_polyline = [];
var buffer_line = null;

var geoThemes = false;
var geoSearch = false;

var fPtPlTimeOut = null ;

// Referentes a Temas.
var addTheme = false;
var editTheme = false;
var themes = [];
var fThTimeOut = null;


// Para o Google Maps
var map = null;
var gdir;

// Icones do Google Maps
var iconRed = null;
var iconBlue = null;
var iconInfo= null;
var iconInfoPonto= null;

$.ajaxSetup({

    type: 'post',
    dataType: 'xml',
    error: function(XMLHttpRequest, textStatus, errorThrown){
        alert("> Error: "+ XMLHttpRequest.status + ' -  ' + textStatus + ' - ' + errorThrown);
    }

})

/*
 * Classe principal.
 */
geo2i = {

    /*
     *  Th: Sigla para Themes ou Temas
     *
     *  Todas os métodos para Temas
     */
    th: {

        // Limpa todo o Formulário
        clearForm: function(){

            // Removo todos os eventons
            geo2i.event.remove();

            // Limpa o formulário
            $("#fth_privado").val('S');
            document.form1.fth_titulo.value = "";

            // Fecha as mensagens, abre o formulário
            $('#fth_mensagem').hide();
            $('#formTheme').hide();
        },

        // Abre o Formulário
        openForm: function(event, i){

            // Caso tenha um setTimeOut ativado para fechar o formulário, ele limpa
            clearTimeout(fThTimeOut);

            // Removo todos os eventons
            geo2i.event.remove();

            // Escolhe o evento entre Inserir e Atualizar, então faz o ajuste necessário para cada ação
            if(event == "insert"){

                // Ativa o evento
                addTheme = true;
                
                // Atualiza o evento "click" do botão da enviar
                $("#fth_button_send").unbind('click',geo2i.th._update);
                $("#fth_button_send").bind('click',geo2i.th._insert);

            }else if(event == 'update'){

                // Atualiza os dados do formulário
                tema = themes[i];
                document.form1.fth_i.value = i;
                document.form1.fth_id.value = tema['id'];
                document.form1.fth_titulo.value = tema['titulo'];
                $("#fth_privado").val(tema['privado']);

                // Atualiza o evento "click" do botão da enviar
                editTheme = true;

                // Atualiza o evento "click" do botão da enviar
                $("#fth_button_send").unbind('click',geo2i.th._insert);
                $("#fth_button_send").bind('click',geo2i.th._update);
            }

            // Fecha as mensagens, abre o formulário.
            $("#fth_mensagem").html("");
            $("#fth_mensagem").hide();
            $("#formTheme").show();
        },

        // Insere um novo registro
        _insert: function(){

            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                     acao: "th.insert",
                     titulo: document.form1.fth_titulo.value,
                     privado: document.form1.fth_privado.value,
                     var_id_usuario: document.form1.var_id_usuario.value
                },

                beforeSend: function(){
                    $("#fth_mensagem").html("<img src='imagens/icones/carregando.gif'>");
                    $("#fth_mensagem").show();
                },

                success: function(xml){

                    // Atualiza o evento e limpa o formulário
                    addTheme = false;
                    geo2i.th.clearForm();

                    // Envia uma mensagem dizendo que o formulário foi enviado com sucesso
                    $("#fth_mensagem").show();
                    $("#fth_mensagem").html('Enviado com Sucesso ! <br><br> <a href="#" onclick="$(\'#formTheme\').hide();">[ fechar a janela ]</a>');

                    // Coloca um setTimeOut para limpa o formulário depois de 3 segundos
                    fThTimeOut = setTimeout('$("#formTheme").hide();',3000);

                    // Recarrega a lista de temas
                    geo2i.th._show();

                },

            });

        },

        // Atualiza um registro
        _update: function(){

            i = document.form1.fth_i.value;
            id = document.form1.fth_id.value;
            titulo = document.form1.fth_titulo.value;
            privado = document.form1.fth_privado.value;
                
            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                     acao: "th.update",
                     id: id,
                     titulo: titulo,
                     privado: privado,
                     var_id_usuario: document.form1.var_id_usuario.value
                },

                beforeSend: function(){
                    $("#fth_mensagem").html("<img src='imagens/icones/carregando.gif'>");
                    $("#fth_mensagem").show();
                },

                success: function(xml){

                    // Atualiza os dados na Matriz
                    themes[i]['titulo'] = titulo;
                    themes[i]['privado'] = privado;

                    // Atualiza o evento e executa o método para reescrever os Pontos/ Poligonos
                    editTheme = false;
                    geo2i.ptpl._show(id);

                    // Envia uma mensagem dizendo que o formulário foi enviado com sucesso
                    $("#fth_mensagem").show();
                    $("#fth_mensagem").html('Enviado com Sucesso ! <br><br> <a href="#" onclick="$(\'#formTheme\').hide(); ">[ fechar a janela ]</a>');

                    // Coloca um setTimeOut para limpa o formulário depois de 3 segundos
                    fThTimeOut = setTimeout('$("#formTheme").hide();',3000);

                },

            });

        },

        // Deleta um registro
        _delete: function(id_tema){
            
            if(geo2i._confirm("Você quer realmente deletar esse tema?")){

               // Removo todos os eventons
                geo2i.event.remove();

                $.ajax({
                    type: "POST",
                    url: "xml.php",
                    data:{
                         acao: "th.delete",
                         id_tema: id_tema,
                         var_id_usuario: document.form1.var_id_usuario.value
                    },

                    success: function(xml){

                        // Atualiza a Lista de temas
                        geo2i.th._show();
                    },

                });
            }

        },

        // Mostra todos os registros
        _show: function(){
            
            geo2i.event.geoThemes();

            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                     acao: "th.show",
                     var_id_usuario: document.form1.var_id_usuario.value
                },

                beforeSend: function(){
                    $("#geoCarregando").show();
                    $("#geoResultado").hide();
                },

                success: function(xml){

                    i = 0;
                    themes = [];
                    $("#geoTemas").html("");
                    
                    $(xml).find("tema").each(function(){
                        
                        // Pega as informaçõs do xml
                        id = $(this).find("id").text();
                        titulo = $(this).find("titulo").text();
                        privado = $(this).find("privado").text();

                        titulo = (titulo == "")?"-":titulo;

                        // Escreve o html
                        $("#geoTemas").append('<a href="#" onClick="geo2i.ptpl._show(\''+id+'\');"><img src="imagens/icones/mais.gif" width="9" height="9" border="0" />&nbsp;<span id="temaTitulo-'+id+'">'+titulo+'</span></a>');
                        $("#geoTemas").append('<div id="temaDiv-'+id+'" style="display:none; padding-left:15px; padding-top:4px;"></div><br>');

                        // Cria uma matriz
                        themes[i] = [];
                        themes[i]['id'] = id;
                        themes[i]['titulo'] = titulo;
                        themes[i]['privado'] = privado;
                        themes[i]['aberto'] = false;

                        i++;
                    });

                    // Fecha a janela de carregando, abre a janela de resposta
                    $("#geoCarregando").hide();
                    $("#geoResultado").show();

                },

            });
        },

        // Atualiza as listas com Temas em formulários
        refreshList: function(id_tema){
            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                     acao: "th.show",
                     var_id_usuario: document.form1.var_id_usuario.value
                },

                beforeSend: function(){
                    $("#fptplTema").html('<img src="imagens/icones/carregando.gif" align="absmiddle">');

                },

                success: function(xml){

                    i = 0;
                    temas = "";

                    $(xml).find("tema").each(function(){

                        // Pega as informaçõs do xml
                        id = $(this).find("id").text();
                        titulo = $(this).find("titulo").text();

                        titulo = (titulo == "")?"-":titulo;

                        temas += '<option value="'+id+'">'+titulo+'</option>';	
                    });

					// Para o formulário dos Pontos/ Poligonos. Necessita prever quando não existe temas.
					html = '';
					html += '<div id="fptplLista">';
					html += '<select id="fptplIdTema" name="fptplIdTema" style="width:155px" class="contornoLaranja , textoP">';
					html += temas;
					html += '</select>';
					$('#fptplTema').html(html);

					// Para o formulário da Pesquisa.
					html = '';
					html += '<div id="psqLista">';
					html += '<select id="psqIdTema" name="psqIdTema" style="width:272px" class="textoP">';
					html += temas;
					html += '</select>';

					$('#psqTema').html(html);

                    if($('#psqResultado').is(":hidden")){

                        $('#psqCarregando').hide();
                        $('#psqResultado').hide();
                        $('#psqRegiao').show();
                    }

                    id_tema = (id_tema)?id_tema:document.form1.fptpl_id_tema.value;
					if( id_tema != ""){

                        if(document.form1.fptplIdTema){
                            $("#fptplIdTema").val(id_tema);
                        }

                        if(document.form1.psqIdTema){
                            $("#fth_privado").val(id_tema);
                        }
					}

                },

            });

        }

    },

    /*
     * PtPl: Sigla para Point/ Polyline
     *
     * Todos os métodos para pontos ou poligonos
     */
    ptpl: {

        // Limpa todo o Formulário
        clearForm: function(){

            // Fecha o Formulário, caso esteja aberto e apaga as informações.
            document.form1.fptpl_titulo.value = "";
            document.form1.fptpl_matriz.value = "";
            document.form1.fptpl_ars.value = "";
            document.form1.fptpl_numero.value = "";
            document.form1.fptpl_bairro.value = "";
            document.form1.fptpl_cep.value = "";
            document.form1.fptpl_caixa_postal.value = "";
            document.form1.fptpl_codigo_area.value = "";
            document.form1.fptpl_telefone.value = "";
            document.form1.fptpl_fax.value = "";
            document.form1.fptpl_email.value = "";
            document.form1.fptpl_site.value = "";
            document.form1.fptpl_nome_responsavel.value = "";
            document.form1.fptpl_observacao.value = "";
            document.form1.fptpl_doc.value = "";
            document.form1.fptpl_foto.value = "";
            document.form1.fptpl_id.value = "";

            geo2i.changeTab('fptplEndereco',['fptplContato','fptplObservacao','fptplCamera','fptplDocs', 'fptplFotos'], true);
            $('#fptpl_mensagem').hide();
            $('#formPtPl').hide();

            // Fecha Qualquer Janela de informação no Google Maps.
            map.closeInfoWindow();

            // Caso tenha Poligono.
            if(buffer_marker.length > 0){

                // Deleta todos os marcadores
                for(var i = 0; i < buffer_marker.length; i++){
                    map.removeOverlay(buffer_marker[i]);
                }
                // Apaga o ultimo poligono;
                map.removeOverlay(buffer_line);

                // Apaga as matriezes dos ultimos pontos e os ultimos marcadores.
                buffer_points = [];
                buffer_marker = [];

                // Define poligono fechado como false, questão de lógica.
                closePolyline = false;

                // Define Ação ADICIONAR POLIGONO como 'false'.
                addPolyline = false;

            }

        },

        // Preenche o formulário
        fillInForm: function(i, id_tema, matriz){

            document.form1.fptpl_i.value = i;
            document.form1.fptpl_id_tema.value = id_tema;
            document.form1.fptpl_id.value = matriz['id'];
            document.form1.fptpl_titulo.value = matriz['titulo'];
            document.form1.fptpl_ars.value = matriz['ars'];
            document.form1.fptpl_numero.value = matriz['numero'];
            document.form1.fptpl_bairro.value = matriz['bairro'];
            document.form1.fptpl_cep.value = matriz['cep'];
            document.form1.fptpl_caixa_postal.value = matriz['caixa_postal'];
            //ponto['estado'] = null; document.form1.fptpl_estado.value;
            document.form1.fptpl_codigo_area.value = matriz['codigo_area'];
            document.form1.fptpl_telefone.value = matriz['telefone'];
            document.form1.fptpl_fax.value = matriz['fax'];
            document.form1.fptpl_email.value = matriz['email'];
            document.form1.fptpl_site.value = matriz['site'];
            document.form1.fptpl_nome_responsavel.value = matriz['nome_responsavel'];
            document.form1.fptpl_observacao.value = matriz['observacao'];
            document.form1.fptpl_ip_camera.value = matriz['ip_camera'];


            $("#fptpl_municipio").val(matriz['municipio']);

        },

        // Abre o Formulário
        openForm: function(event, ptpl, i, id_tema){

            // Caso tenha um setTimeOut ativado para fechar o formulário, ele limpa
            clearTimeout(fPtPlTimeOut);

            // Escolhe o evento entre Inserir e Atualizar, então faz o ajuste necessário para cada ação
            if(event == "insert"){

                // Ativa o evento
                if(ptpl == 'pt'){
                    addPoint = true;
                }else if(ptpl == 'pl'){
                    addPolyline = true;
                }

                // No formulário Fecha as Abas Docs e Fotos
                $("#fptplDocs_main").hide();
                $("#fptplFotos_main").hide();

                // Atualiza o evento "click" do botão da enviar
                $("#fptpl_button_send").unbind('click',geo2i.ptpl._update);
                $("#fptpl_button_send").bind('click',geo2i.ptpl._insert);

            }else if(event == 'update'){

                // Removo todos os eventons
                geo2i.event.remove();


                // No formulário Abre as Abas Docs e Fotos
                $("#fptplDocs_main").show();
                $("#fptplFotos_main").show();

                // Atualiza o evento "click" do botão da enviar
                if(ptpl == 'pt'){
                    editPoint = true;
                    geo2i.ptpl.fillInForm(i, id_tema, points[i]);
                }else if(ptpl == 'pl'){
                    editPolyline = true;
                    geo2i.ptpl.fillInForm(i, id_tema, polylines[i]);
                }

                // Atualiza os registros
                geo2i.ptpl.doc._show();
                geo2i.ptpl.foto._show();

                // Atualiza o evento "click" do botão da enviar
                $("#fptpl_button_send").unbind('click',geo2i.ptpl._insert);
                $("#fptpl_button_send").bind('click',geo2i.ptpl._update);
            }

            // Atualiza o input
            document.form1.fptpl_ptpl.value = ptpl;

            if(i)document.form1.fptpl_i.value = i;
            if(id_tema) document.form1.fptpl_id_tema.value = id_tema;

            // Fecha as mensagens, abre o formulário.
            $("#fptpl_mensagem").html("");
            $("#fptpl_mensagem").hide();
            $("#formPtPl").show();

            geo2i.th.refreshList(id_tema);
        },

        // Transforma um arquivo XML definido para pontos ou poligonos em um retorno com o HTML pronto
        xml2htmlPtPl: function(ptpl, xml){

            id_tema = $(xml).find("id_tema").text();

            if(ptpl == 'pl'){

               html_poligonos = "";

               i = 0;
               $(xml).find("polyline").each(function(){

                    polylines[i] = [];

                    id = $(this).find("id").text();
                    titulo = $(this).find("titulo").text();
                    ars = $(this).find("ars").text();
                    numero = $(this).find("numero").text();
                    bairro = $(this).find("bairro").text();
                    cep = $(this).find("cep").text();
                    caixa_postal = $(this).find("caixa_postal").text();
                    municipio = $(this).find("municipio").text();
                    estado = $(this).find("estado").text();
                    codigo_area = $(this).find("codigo_area").text();
                    telefone = $(this).find("telefone").text();
                    fax = $(this).find("fax").text();
                    email = $(this).find("email").text();
                    site = $(this).find("site").text();
                    nome_responsavel = $(this).find("nome_responsavel").text();
                    observacao = $(this).find("observacao").text();
                    ip_camera = $(this).find("ip_camera").text();

                    polylines[i]['matriz'] = [];
                    $(this).find("ponto").each(function(){
                        ponto = $(this).text();
                        ponto = ponto.split('(');
                        ponto = ponto[1].split(')');
                        ponto = ponto[0].split(',');

                        x = ponto[0];
                        y = ponto[1];

                        polylines[i]['matriz'].push(new GLatLng(x, y));

                    });

                    polylines[i]['matriz'].push(polylines[i]['matriz'][0]);

                    // Define a matriz com os dados.
 
                    polylines[i]['id'] = id;
                    polylines[i]['titulo'] = titulo;
                    polylines[i]['ars'] = ars;
                    polylines[i]['numero'] = numero;
                    polylines[i]['bairro'] = bairro;
                    polylines[i]['cep'] = cep;
                    polylines[i]['caixa_postal'] = caixa_postal;
                    polylines[i]['municipio'] = municipio;
                    polylines[i]['estado'] = estado;
                    polylines[i]['codigo_area'] = codigo_area;
                    polylines[i]['telefone'] = telefone;
                    polylines[i]['fax'] = fax;
                    polylines[i]['email'] = email;
                    polylines[i]['site'] = site;
                    polylines[i]['nome_responsavel'] = nome_responsavel;
                    polylines[i]['observacao'] = observacao;
                    polylines[i]['ip_camera'] = ip_camera;
                    polylines[i]['HS'] = false;

                    titulo = (titulo == "")?"-":titulo;

                    // Gera o HTML para os poligonos.
                    html_poligonos += '<tr><td class="bordaBottom" width="40px">&nbsp;<b>'+(i+1)+'</b>&nbsp;-&nbsp;</td><td class="bordaBottom"><a href="#" onclick="if(polylines['+i+'][\'HS\'] == false){ geo2i.ptpl.hideShow(\''+i+'\',\'pl\', '+x+', '+y+'); map.panTo(new GLatLng('+x+', '+y+'), 7); polylines['+i+'][\'marker\'].openInfoWindowTabsHtml(polylines['+i+'][\'tab\']);}else{ map.panTo(new GLatLng('+x+', '+y+'), 7); polylines['+i+'][\'marker\'].openInfoWindowTabsHtml(polylines['+i+'][\'tab\']); }" style=" font-size:10px;" valing="top">'+titulo+'</a></td>';

                    // Para o Ativar/ Desativar.
                    html_poligonos += '<td class="bordaBottom" width="15px" align="right"><a href="#" onclick="geo2i.ptpl.hideShow(\''+i+'\',\'pl\', '+x+', '+y+')"><img id="imgHSPoly'+id+'" src="imagens/icones/desativo.png" border="0"></a></td>';

                    if(document.form1.nivel_usuario.value == '1' || document.form1.nivel_usuario.value == '3'){

                        // Para Editar.
                        html_poligonos += '<td class="bordaBottom" width="15px" align="right"><a href="#" onclick="geo2i.ptpl.openForm(\'update\', \'pl\',\''+i+'\',\''+id_tema+'\')"><img src="imagens/icones/editar.png" border="0"></a></td>';

                        // Para o Deletar.
                        html_poligonos += '<td class="bordaBottom" width="15px" align="right"><a href="#" onclick="geo2i.ptpl._delete(\''+id+'\',\''+id_tema+'\')"><img src="imagens/icones/deletar.png" border="0"></a></td></tr>';

                    }else{
                        html_poligonos +='</tr>';
                    }
                    
                    i++;
               });

   
               return html_poligonos;

            }else{

                html_pontos = "";
                i = 0;

                $(xml).find("point").each(function(){

                    id = $(this).find("id").text();
                    titulo = $(this).find("titulo").text();
                    ponto = $(this).find("ponto").text();
                    ars = $(this).find("ars").text();
                    numero = $(this).find("numero").text();
                    bairro = $(this).find("bairro").text();
                    cep = $(this).find("cep").text();
                    caixa_postal = $(this).find("caixa_postal").text();
                    municipio = $(this).find("municipio").text();
                    estado = $(this).find("estado").text();
                    codigo_area = $(this).find("codigo_area").text();
                    telefone = $(this).find("telefone").text();
                    fax = $(this).find("fax").text();
                    email = $(this).find("email").text();
                    site = $(this).find("site").text();
                    nome_responsavel = $(this).find("nome_responsavel").text();
                    observacao = $(this).find("observacao").text();
                    ip_camera = $(this).find("ip_camera").text();

                    ponto = ponto.split('(');
                    ponto = ponto[1].split(')');
                    ponto = ponto[0].split(',');

                    x = ponto[0];
                    y = ponto[1];

                    // Define a matriz com os dados.
                    points[i] = [];
                    points[i]['id'] = id;
                    points[i]['titulo'] = titulo;
                    points[i]['ars'] = ars;
                    points[i]['numero'] = numero;
                    points[i]['bairro'] = bairro;
                    points[i]['cep'] = cep;
                    points[i]['caixa_postal'] = caixa_postal;
                    points[i]['municipio'] = municipio;
                    points[i]['estado'] = estado;
                    points[i]['codigo_area'] = codigo_area;
                    points[i]['telefone'] = telefone;
                    points[i]['fax'] = fax;
                    points[i]['email'] = email;
                    points[i]['site'] = site;
                    points[i]['nome_responsavel'] = nome_responsavel;
                    points[i]['observacao'] = observacao;
                    points[i]['ip_camera'] = ip_camera;
                    points[i]['HS'] = false;

                    titulo = (titulo == "")?"-":titulo;

                    html_pontos += '<tr><td class="bordaBottom" width="40px">&nbsp;<b>'+(i+1)+'</b>&nbsp;-&nbsp;</td><td class="bordaBottom"><a href="#" onclick="if(points['+i+'][\'HS\'] == false){ geo2i.ptpl.hideShow(\''+i+'\',\'pt\', '+x+', '+y+'); map.panTo(new GLatLng('+x+', '+y+')); points['+i+'][\'marker\'].openInfoWindowTabsHtml(points['+i+'][\'tab\']); }else{ map.panTo(new GLatLng('+x+', '+y+')); points['+i+'][\'marker\'].openInfoWindowTabsHtml(points['+i+'][\'tab\']); }" style=" font-size:10px;" valing="top">'+titulo+'</a></td>';

                    // Para o Ativar/ Desativar.
                    html_pontos += '<td class="bordaBottom" width="15px" align="right"><a href="#" onclick="geo2i.ptpl.hideShow(\''+i+'\',\'pt\', '+x+', '+y+')"><img id="imgHSPoint'+id+'" src="imagens/icones/desativo.png" border="0"></a></td>';

                    if(document.form1.nivel_usuario.value == '1' || document.form1.nivel_usuario.value == '3'){

                        // para Editar
                        html_pontos += '<td class="bordaBottom" width="15px" align="right"><a href="#" onclick="geo2i.ptpl.openForm(\'update\', \'pt\',\''+i+'\',\''+id_tema+'\')"><img src="imagens/icones/editar.png" border="0"></a></td>';

                        // Para o Deletar.
                        html_pontos += '<td class="bordaBottom" width="15px" align="right"><a href="#" onclick="geo2i.ptpl._delete(\''+id+'\',\''+id_tema+'\')"><img src="imagens/icones/deletar.png" border="0"></a></td></tr>';

                    }else{
                        html_pontos += '</tr>';
                    }

                    i++;
                });

                return html_pontos;
            }

        },

        // Insere um novo registro
        _insert: function(){

            id_tema = (document.form1.fptplIdTema.value == "")?document.form1.fptpl_id_tema:document.form1.fptplIdTema.value;
            ptpl = document.form1.fptpl_ptpl.value;

            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                    acao: "ptpl.insert",
                    titulo: document.form1.fptpl_titulo.value,
                    matriz: document.form1.fptpl_matriz.value,
                    ars: document.form1.fptpl_ars.value,
                    numero: document.form1.fptpl_numero.value,
                    bairro: document.form1.fptpl_bairro.value,
                    cep: document.form1.fptpl_cep.value,
                    caixa_postal: document.form1.fptpl_caixa_postal.value,
                    municipio: document.form1.fptpl_municipio.value,
                    estado: null, //document.form1.fptpl_estado.value,
                    codigo_area: document.form1.fptpl_codigo_area.value,
                    telefone: document.form1.fptpl_telefone.value,
                    fax: document.form1.fptpl_fax.value,
                    email: document.form1.fptpl_email.value,
                    site: document.form1.fptpl_site.value,
                    nome_responsavel: document.form1.fptpl_nome_responsavel.value,
                    observacao: document.form1.fptpl_observacao.value,
                    ip_camera: document.form1.fptpl_ip_camera.value,
                    ptpl: ptpl,
                    id_tema: id_tema,
                    var_id_usuario: document.form1.var_id_usuario.value
                },

                beforeSend: function(){
                    $("#fptpl_mensagem").html("<img src='imagens/icones/carregando.gif'>");
                    $("#fptpl_mensagem").show();
                },

                success: function(xml){

                    // Removo todos os eventons
                    geo2i.event.remove();


                    // Envia uma mensagem dizendo que o formulário foi enviado com sucesso
                    $("#fptpl_mensagem").show();
                    $("#fptpl_mensagem").html('Enviado com Sucesso ! <br><br> <a href="#" onclick="$(\'#formPtPl\').hide();">[ fechar a janela ]</a>');

                    // Coloca um setTimeOut para limpa o formulário depois de 3 segundos
                    fPtPlTimeOut = setTimeout('$("#formPtPl").hide();',3000);

                    // Recarrega a lista de temas
                    if(!$("#geo_div").is(":hidden")){
                       geo2i.ptpl._show(id_tema);
                    }else if(!$("#pesquisa_div").is(":hidden")){
                       geo2i.ptpl._search(id_tema);
                    }

                },

            });

        },

        // Atualiza um registro
        _update: function(){

            i = document.form1.fptpl_i.value;
            id = document.form1.fptpl_id.value;
            titulo = document.form1.fptpl_titulo.value;
            ponto = document.form1.fptpl_matriz.value;
            ars = document.form1.fptpl_ars.value;
            numero = document.form1.fptpl_numero.value;
            bairro = document.form1.fptpl_bairro.value;
            cep = document.form1.fptpl_cep.value;
            caixa_postal = document.form1.fptpl_caixa_postal.value;
            municipio = document.form1.fptpl_municipio.value;
            estado = null; //document.form1.fptpl_estado.value;
            codigo_area = document.form1.fptpl_codigo_area.value;
            telefone = document.form1.fptpl_telefone.value;
            fax = document.form1.fptpl_fax.value;
            email = document.form1.fptpl_email.value;
            site = document.form1.fptpl_site.value;
            nome_responsavel = document.form1.fptpl_nome_responsavel.value;
            observacao = document.form1.fptpl_observacao.value;
            ip_camera = document.form1.fptpl_ip_camera.value;

            id_tema = (document.form1.fptplIdTema.value == "")?document.form1.fptpl_id_tema:document.form1.fptplIdTema.value;
            ptpl = document.form1.fptpl_ptpl.value;

            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                    acao: "ptpl.update",
                    id: document.form1.fptpl_id.value,
                    titulo: document.form1.fptpl_titulo.value,
                    ponto: document.form1.fptpl_matriz.value,
                    ars: document.form1.fptpl_ars.value,
                    numero: document.form1.fptpl_numero.value,
                    bairro: document.form1.fptpl_bairro.value,
                    cep: document.form1.fptpl_cep.value,
                    caixa_postal: document.form1.fptpl_caixa_postal.value,
                    municipio: document.form1.fptpl_municipio.value,
                    estado: null, //document.form1.fptpl_estado.value,
                    codigo_area: document.form1.fptpl_codigo_area.value,
                    telefone: document.form1.fptpl_telefone.value,
                    fax: document.form1.fptpl_fax.value,
                    email: document.form1.fptpl_email.value,
                    site: document.form1.fptpl_site.value,
                    nome_responsavel: document.form1.fptpl_nome_responsavel.value,
                    observacao: document.form1.fptpl_observacao.value,
                    ip_camera: document.form1.fptpl_ip_camera.value,
                    ptpl: ptpl,
                    id_tema: id_tema,
                    var_id_usuario: document.form1.var_id_usuario.value
                },

                beforeSend: function(){
                    $("#fptpl_mensagem").html("<img src='imagens/icones/carregando.gif'>");
                    $("#fptpl_mensagem").show();
                },

                success: function(xml){

                    // Atualiza o evento
					if(ptpl == 'pt'){
                        points[i]['titulo'] = titulo;
                        points[i]['ars'] = ars;
                        points[i]['numero'] = numero;
                        points[i]['bairro'] = bairro;
                        points[i]['cep'] = cep;
                        points[i]['caixa_postal'] = caixa_postal;
                        points[i]['municipio'] = municipio;
                        points[i]['estado'] = estado;
                        points[i]['codigo_area'] = codigo_area;
                        points[i]['telefone'] = telefone;
                        points[i]['fax'] = fax;
                        points[i]['email'] = email;
                        points[i]['site'] = site;
                        points[i]['nome_responsavel'] = nome_responsavel;
                        points[i]['observacao'] = observacao;
                        points[i]['ip_camera'] = ip_camera;

                        editPoint = false;
                    }else{
                        polylines[i]['titulo'] = titulo;
                        polylines[i]['ars'] = ars;
                        polylines[i]['numero'] = numero;
                        polylines[i]['bairro'] = bairro;
                        polylines[i]['cep'] = cep;
                        polylines[i]['caixa_postal'] = caixa_postal;
                        polylines[i]['municipio'] = municipio;
                        polylines[i]['estado'] = estado;
                        polylines[i]['codigo_area'] = codigo_area;
                        polylines[i]['telefone'] = telefone;
                        polylines[i]['fax'] = fax;
                        polylines[i]['email'] = email;
                        polylines[i]['site'] = site;
                        polylines[i]['nome_responsavel'] = nome_responsavel;
                        polylines[i]['observacao'] = observacao;
                        polylines[i]['ip_camera'] = ip_camera;

                        editPolyline = false;
                    }

                    // Envia uma mensagem dizendo que o formulário foi enviado com sucesso
                    $("#fptpl_mensagem").show();
                    $("#fptpl_mensagem").html('Enviado com Sucesso ! <br><br> <a href="#" onclick="$(\'#formPtPl\').hide(); ">[ fechar a janela ]</a>');

                    // Coloca um setTimeOut para limpa o formulário depois de 3 segundos
                    fPtPlTimeOut = setTimeout('$("#formPtPl").hide();',3000);

                    // Recarrega a lista de temas
                    if(!$("#geo_div").is(":hidden")){
                       geo2i.ptpl._show(id_tema);
                    }else if(!$("#pesquisa_div").is(":hidden")){
                       geo2i.ptpl._search(id_tema);
                    }

                },

            });

        },

        // Deleta um registro
        _delete: function(id, id_tema){

            if(geo2i._confirm("Você quer realmente deletar esse Ponto ou Poligono?")){

                 // Removo todos os eventons
                geo2i.event.remove();   

                $.ajax({
                    type: "POST",
                    url: "xml.php",
                    data:{
                        acao: "ptpl.delete",
                        id: id,
                        var_id_usuario: document.form1.var_id_usuario.value
                    },

                    success: function(xml){
                       
                       if(!$("#geo_div").is(":hidden")){
                           geo2i.ptpl._show(id_tema);
                        }else if(!$("#pesquisa_div").is(":hidden")){
                           geo2i.ptpl._search(id_tema);
                        }

                    },

                });
            }

        },

        // Mostra todos os registros
        _show: function(id_tema){

            geo2i.event.remove();

            // Fecha todas as divs com conteudo menos com id_tema igual.
            i = 0;
            $("#geoTemas > div").each(function(){
                if(this.id == "temaDiv-"+id_tema){
                    $("#temaDiv-"+id_tema).html('<img src="imagens/icones/carregando.gif" align="absmiddle">');
                    $("#temaDiv-"+id_tema).show();
                    i_tema = i;
                }else{
                    $(this).hide();
                }
                i++;
            });

            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                     acao: "ptpl.show",
                     id_tema: id_tema,
                     var_id_usuario: document.form1.var_id_usuario.value
                },

                success: function(xml){

                    // Limpa as matrizes
                    points = [];
                    polylines = [];

                    // Pega as informaçõs do xml
                    id_tema = $(xml).find("id_tema").text();

                    html_pontos = geo2i.ptpl.xml2htmlPtPl('pt', xml);
                    html_poligonos = geo2i.ptpl.xml2htmlPtPl('pl', xml);

                    // Escreva O HTML

                    if(document.form1.nivel_usuario.value == '1' || document.form1.nivel_usuario.value == '3'){
                        html = '<div style="padding-top:5px;font-size:12px; font-weight: bold">&nbsp;&nbsp;>&nbsp;&nbsp;<a href="#" onclick="geo2i.th.openForm(\'update\',\''+i_tema+'\');">[&nbsp;editar&nbsp;]</a>&nbsp;-&nbsp;<a href="#" onclick="geo2i.th._delete(\''+id_tema+'\')">[&nbsp;deletar&nbsp;]</a></div>';
                    }else{
                        html = "";
                    }

                    html += '<div style="padding-top:12px;font-size:12px; font-weight: bold">Pontos</div>';
                    html += '<table cellpadding="2" cellspacing="0" class="texto" style="padding-left:8px; " width="95%">';
                    html += '<tr style=" display:none"><td><form></form></td></tr>';
                    html += html_pontos;
                    html += '</table>';
                    html += '<div style="padding-top:12px;font-size:12px; font-weight: bold">Poligonos</div>';
                    html += '<table cellpadding="2" cellspacing="0" class="texto" style="padding-left:8px; " width="95%">';
                    html += html_poligonos;
                    html += '</table>';

                    $("#temaDiv-"+id_tema).html(html);

                    // Atualizar o título do tema.
                    $("#temaTitulo-"+id_tema).html(themes[i_tema]['titulo']);

                },

            });

        },

        // Alterna entre Esconder e Mostra os registros
        hideShow: function(number, ptpl, x, y){
            geo2i.ptpl.clearForm();
            geoThemes = true;

            if(ptpl == 'pt'){ // Para os pontos.

                // Pega as informações de uma matriz pré definida.
                id = points[number]['id'];
                titulo = points[number]['titulo'];
                ars = points[number]['ars'];
                numero = points[number]['numero'];
                bairro = points[number]['bairro'];
                cep = points[number]['cep'];
                caixa_postal = points[number]['caixa_postal'];
                municipio = points[number]['municipio'];
                estado = points[number]['estado'];
                codigo_area = points[number]['codigo_area'];
                telefone = points[number]['telefone'];
                fax = points[number]['fax'];
                email = points[number]['email'];
                site = points[number]['site'];
                nome_responsavel = points[number]['nome_responsavel'];
                observacao = points[number]['observacao'];
                ip_camera = points[number]['ip_camera'];
                HS = points[number]['HS'];

                if(HS == true){

                    points[number]['HS'] = false;

                    // Fecha todas as janelas de informação abertas.
                    map.closeInfoWindow();

                    // Tira o poligono e seu marcador.
                    map.removeOverlay(points[number]['marker']);

                    // Arruma a imagem.
                   $('#imgHSPoint'+id).attr("src", "imagens/icones/desativo.png");

                }else{

                    points[number]['HS'] = true;

                    // Cria o marcador.
                    geo2i.gMaps.createMarkerPtPl(new GLatLng(x, y), 'pt', number, id, titulo, ars, numero, bairro, cep, caixa_postal, municipio, estado, codigo_area, telefone, fax, email, site, nome_responsavel, observacao,ip_camera);
                    map.addOverlay(points[number]['marker']);

                    // Arruma a imagem.
                    $('#imgHSPoint'+id).attr("src", "imagens/icones/ativo.png");

                }


            }else{ // Para os poligonos.

                id = polylines[number]['id'];
                titulo = polylines[number]['titulo'];
                ars = polylines[number]['ars'];
                numero = polylines[number]['numero'];
                bairro = polylines[number]['bairro'];
                cep = polylines[number]['cep'];
                caixa_postal = polylines[number]['caixa_postal'];
                municipio = polylines[number]['municipio'];
                estado = polylines[number]['estado'];
                codigo_area = polylines[number]['codigo_area'];
                telefone = polylines[number]['telefone'];
                fax = polylines[number]['fax'];
                email = polylines[number]['email'];
                site = polylines[number]['site'];
                nome_responsavel = polylines[number]['nome_responsavel'];
                observacao = polylines[number]['observacao'];
                ip_camera = polylines[number]['ip_camera'];
                HS = polylines[number]['HS'];

                if(HS == true){

                    polylines[number]['HS'] = false;

                    // Fecha todas as janelas de informação abertas.
                    map.closeInfoWindow();

                    // Tira o poligono e seu marcador.
                    map.removeOverlay(polylines[number]['polyline']);
                    map.removeOverlay(polylines[number]['marker']);

                    // Arruma a imagem.
                    $('#imgHSPoly'+id).attr("src", "imagens/icones/desativo.png");

                }else{

                    polylines[number]['HS'] = true;

                    // Cria Poligono.
                    cor = '#B7BCF9';
                    polylines[number]['polyline'] = new GPolygon(polylines[number]["matriz"], cor, 2, 0.8,cor,0.2);
                    map.addOverlay(polylines[number]['polyline']);

                    // Cria um marcador para o poligono.
                    geo2i.gMaps.createMarkerPtPl(new GLatLng(x, y), 'pl', number, id, titulo, ars, numero, bairro, cep, caixa_postal, municipio, estado, codigo_area, telefone, fax, email, site, nome_responsavel, observacao,ip_camera);
                    map.addOverlay(polylines[number]['marker']);

                    // Arruma a imagem.
                    $('#imgHSPoly'+id).attr("src", "imagens/icones/ativo.png");
                }
            }

        },

        // Psquisa em todos os registros
        _search: function(id_tema){

            geo2i.event.geoSearch();

            municipio = document.form1.PsqMunicipio.value;
            id_tema = (id_tema)?id_tema:document.form1.psqIdTema.value;
            campo = document.form1.PsqCampo.value;
            municipio = document.form1.PsqMunicipio.value;
            municipio_text = $('#psq'+municipio).attr("title");

            $.ajax({
                type: "POST",
                url: "xml.php",
                data:{
                     acao: "ptpl.search",
                     id_tema: id_tema,
                     municipio: municipio,
                     campo: campo,
                     var_id_usuario: document.form1.var_id_usuario.value
                },

                beforeSend: function(){
					$('#psqRegiao').hide();
					$('#psqResultado').hide();
					$('#psqCarregando').show();
                },

                success: function(xml){

                    // Limpa as matrizes
                    points = [];
                    polylines = [];

                    // Pega as informaçõs do xml
                    id_tema = $(xml).find("id_tema").text();
                    titulo_tema = $(xml).find("titulo_tema").text();

                    document.form1.fptpl_id_tema.value = id_tema;
                    $("#psqIdTema").val(id_tema)

                    html_pontos = geo2i.ptpl.xml2htmlPtPl('pt', xml);
                    html_poligonos = geo2i.ptpl.xml2htmlPtPl('pl', xml);

                    // Escreva O HTML

					html = '<div style="padding:12px; padding-left:20px;" class="texto"><a href="#" onclick="$(\'#psqRegiao\').show(); $(\'#psqResultado\').hide(); $(\'psqCarregando\').hide()" class="destaque2"><img src="imagens/icones/voltar.png" border="0" >&nbsp;Voltar à pesquisa</a><br><br>'+municipio_text+'&nbsp;>&nbsp;'+titulo_tema+'<br></div>';
                    html += '<div style="padding-top:5px;font-size:12px; font-weight: bold; padding-left:30px;">Pontos</div>';
                    html += '<table cellpadding="2" cellspacing="0" class="texto" style="padding-left:38px; " width="95%">';
					html += '<tr style=" display:none"><td><form></form></td></tr>';
					html += html_pontos;
					html += '</table>';
					html += '<div style="padding-top:12px;font-size:12px; font-weight: bold;padding-left:30px;">Poligonos</div>';
					html += '<table cellpadding="2" cellspacing="0" class="texto" style="padding-left:38px; " width="95%">';
					html += html_poligonos;
					html += '</table>';

                    // Escreve o html
                    $("#psqResultado").html(html);

                    // Aruma as divs
					$('#psqRegiao').hide();
					$('#psqResultado').show();
					$('#psqCarregando').hide();

                },

            });

        },

        // Tudo referente a Docs
        doc: {

            // Insere um novo registro
            _insert: function (){
                $("#docLista_msg")
                .ajaxStart(function(){
                    $(this).html("<img src='imagens/icones/carregando.gif'>");
                    $(this).show();
                    $("#docLista_tabela").hide();
                })
                .ajaxComplete(function(){
                    $(this).hide();

                });

                $.ajaxFileUpload({

                    url:'xml.php',
                    secureuri:false,
                    fileElementId:'fptpl_doc',
                    data: [{name: "acao", value: "ptpl.doc.insert"},{name: "id", value: document.form1.fptpl_id.value}],
                    dataType: 'xml',
                    success: function (data, status){

                        error = $(data).find("error").text();
                        msg = $(data).find("msg").text();

                        if(error != ''){
                            geo2i._alert(error);
                        }else{
                            geo2i._alert(msg);
                        }

                        geo2i.ptpl.doc._show();
                    },
                    error: function (data, status, e){
                        //alert(e); // Erros não interessantes para o usuário
                    }
                });

                return false;

            },

            // Deleta um registro
            _delete: function(id){
                if(geo2i._confirm("Você tem certeza em deletar esse arquivo?")){
                    $.ajax({
                        type: "POST",
                        url: "xml.php",
                        data:{
                             acao: "ptpl.doc.delete",
                             id: id
                        },

                        success: function(){

                            geo2i.ptpl.doc._show();
                        }
                    });
                }

            },

            // Mostra todos os registros
            _show: function(){
                $.ajax({
                    type: "POST",
                    url: "xml.php",
                    data:{
                         acao: "ptpl.doc.show",
                         geo_id_ptpl: document.form1.fptpl_id.value,
                         var_id_usuario: document.form1.var_id_usuario.value
                    },

                    beforeSend: function(){
                        $("#docLista_msg").html("<img src='imagens/icones/carregando.gif'>");
                        $("#docLista_msg").show();
                        $("#docLista_tabela").hide();
                    },

                    success: function(xml){

                        var css = "background:#ffffff";

                        Dtable.limpa('docLista_tabela');

                        $(xml).find("doc").each(function(){
                            geo_id_docs = $(this).find("geo_id_docs").text();
                            titulo = $(this).find("titulo").text();
                            arquivo = $(this).find("arquivo").text();

                            td_titulo = '<a href="arquivos/docs/'+arquivo+'" target="new">'+titulo+'</a>';
                            td_deletar = '<a href="#" onclick="geo2i.ptpl.doc._delete('+geo_id_docs+')"><img border="0" src="imagens/icones/deletar.png" alt="deletar"></a>';

                            Dtable.insere("docLista_tabela", [[td_deletar, 'width:15px; height: 5px'], [td_titulo, 'height: 5px']], css, false);

                            css = (css == "background:#f1f7fb")?"background:#ffffff":"background:#f1f7fb";
                        });

                        $("#docLista_msg").hide();
                        $("#docLista_tabela").show();

                    },

                });

            },

            // Mostra todos os registros no Marcador do google maps
            showMaker: function(id){
                $.ajax({
                    type: "POST",
                    url: "xml.php",
                    data:{
                         acao: "ptpl.doc.show",
                         geo_id_ptpl: id,
                         var_id_usuario: document.form1.var_id_usuario.value
                    },

                    beforeSend: function(){
                        $("#docs"+id).html("<img src='imagens/icones/carregando.gif'>");
                    },

                    success: function(xml){

                        var css = "background:#ffffff";
                        $("#docs"+id).html('<table id="docs_tabela'+id+'" width="500px" class="texto"><tbody></tbody></table>');

                        $(xml).find("doc").each(function(){
                            geo_id_docs = $(this).find("geo_id_docs").text();
                            titulo = $(this).find("titulo").text();
                            arquivo = $(this).find("arquivo").text();

                            td_titulo = '<a href="arquivos/docs/'+arquivo+'">'+titulo+'</a>';

                            Dtable.insere("docs_tabela"+id, [td_titulo], css, false);

                            css = (css == "background:#f1f7fb")?"background:#ffffff":"background:#f1f7fb";
                        });

                    },

                });

            }
        },

        // Tudo referente a Fotos
        foto: {

            // Insere um novo registro
            _insert: function (){
                $("#fotoLista_msg")
                .ajaxStart(function(){
                    $(this).html("<img src='imagens/icones/carregando.gif'>");
                    $(this).show();
                    $("#fotoLista_tabela").hide();
                })
                .ajaxComplete(function(){
                    $(this).hide();

                });

                $.ajaxFileUpload({

                    url:'xml.php',
                    secureuri:false,
                    fileElementId:'fptpl_foto',
                    data: [{name: "acao", value: "ptpl.foto.insert"},{name: "id", value: document.form1.fptpl_id.value}],
                    dataType: 'xml',
                    success: function (data, status){
                        error = $(data).find("error").text();
                        msg = $(data).find("msg").text();

                        if(error != '') {
                            geo2i._alert(error);
                        }else{
                            geo2i._alert(msg);
                        }

                        geo2i.ptpl.foto._show();
                    },
                    error: function (data, status, e){
                        //alert(e); //Erros não interessantes para o usuário
                    }
                })

                return false;

            },

            // Deleta um registro
            _delete: function(id){
                if(geo2i._confirm("Você tem certeza em deletar essa Foto?")){
                    $.ajax({
                        type: "POST",
                        url: "xml.php",
                        data:{
                             acao: "ptpl.foto.delete",
                             id: id
                        },

                        success: function(){
                            geo2i.ptpl.foto._show();
                        }
                    });
                }

            },

            // Mostra todos os registros
            _show: function(){
                $.ajax({
                    type: "POST",
                    url: "xml.php",
                    data:{
                         acao: "ptpl.foto.show",
                         geo_id_ptpl: document.form1.fptpl_id.value,
                         var_id_usuario: document.form1.var_id_usuario.value
                    },

                    beforeSend: function(){
                        $("#fotoLista_msg").html("<img src='imagens/icones/carregando.gif'>");
                        $("#fotoLista_msg").show();
                        $("#fotoLista_tabela").hide();
                    },

                    success: function(xml){

                        var css = "background:#ffffff";

                        Dtable.limpa('fotoLista_tabela');

                        $(xml).find("foto").each(function(){
                            geo_id_fotos = $(this).find("geo_id_fotos").text();
                            titulo = $(this).find("titulo").text();
                            arquivo = $(this).find("arquivo").text();

                            td_titulo = '<img src="imagens/usuarios/geo/p'+arquivo+'" />';
                            td_deletar = '<a href="#" onclick="geo2i.ptpl.foto._delete('+geo_id_fotos+')"><img border="0" src="imagens/icones/deletar.png" alt="deletar"></a>';

                            Dtable.insere("fotoLista_tabela", [[td_deletar, 'width:15px;'], td_titulo], css, false);

                            css = (css == "background:#f1f7fb")?"background:#ffffff":"background:#f1f7fb";
                        });

                        $("#fotoLista_msg").hide();
                        $("#fotoLista_tabela").show();

                    },

                });

            },

            // Mostra todos os registros no Marcador do google maps
            showMaker: function(id){
                $.ajax({
                    type: "POST",
                    url: "xml.php",
                    data:{
                         acao: "ptpl.foto.show",
                         geo_id_ptpl: id,
                         var_id_usuario: document.form1.var_id_usuario.value
                    },

                    beforeSend: function(){
                        $("#fotos"+id).html("<img src='imagens/icones/carregando.gif'>");
                    },

                    success: function(xml){

                        var css = "background:#ffffff";

                        i = 1;
                        html = "";
                        $(xml).find("foto").each(function(){
                            geo_id_fotos = $(this).find("geo_id_fotos").text();
                            titulo = $(this).find("titulo").text();
                            arquivo = $(this).find("arquivo").text();

                            html += '<a href="imagens/usuarios/geo/g'+arquivo+'" title="'+i+'" style="padding:5px"><img src="imagens/usuarios/geo/p'+arquivo+'" alt="'+i+'" /></a>';

                            i++;
                        });

                        $("#fotos"+id).html(html);
                        $("#fotos"+id + " > a").lightBox();
                    },

                });
            }

        }

    },

    /*
     * Métodos de controle de eventos
     */
    event: {

        // Remove todos os eventos
        remove: function(){

            map.enableDoubleClickZoom();

            if(addPolyline == true){
				addPolyline = false;
				$('#bAddPoly').attr("src", "imagens/estrutura_menu/adicionar_poligono.jpg");
                $('#bAddPoly').mouseout(function(){ this.src = 'imagens/estrutura_menu/adicionar_poligono.jpg'});
                geo2i.ptpl.clearForm();

            }
			if(addPoint == true){
                addPoint = false;
				$('#bAddPoint').attr("src", "imagens/estrutura_menu/adicionar_ponto.jpg");
                $('#bAddPoint').mouseout(function(){ this.src = 'imagens/estrutura_menu/adicionar_ponto.jpg' });
				geo2i.ptpl.clearForm();

			}
            if(addTheme == true){
                addTheme = false;
                geo2i.th.clearForm();
            }

            if(editPolyline == true){
                editPolyline = false;
				geo2i.ptpl.clearForm();
            }
            if(editPoint == true){
                editPoint = false;
				geo2i.ptpl.clearForm();

            }
            if(editTheme == true){
                editTheme = false;
                geo2i.th.clearForm();

            }
			if(geoThemes == true){
                geoThemes = false;
                geo2i.gMaps.clearPlPl();
                
			}
			if(geoSearch == true){
				geoSearch = false;
				geo2i.gMaps.clearPlPl();

			}
        },


        // Cria um evento para adiconar Pontos
        addPoint: function(){

            if(addPoint){

				this.remove();

			}else{

                this.remove();

				map.disableDoubleClickZoom();

			   	geo2i.ptpl.clearForm();
				$('#bAddPoint').attr("src", "imagens/estrutura_menu/adicionar_ponto_over.jpg");
                $('#bAddPoint').attr("onmouseout", "");
                $('#bAddPoint').unbind("mouseout");
				addPoint = true;

			}

        },

        // Cria um evento para adionar Poligonos
        addPolyline: function(){
			if(addPolyline == true){

				this.remove();

			}else{

                this.remove();

				map.disableDoubleClickZoom();

                geo2i.ptpl.clearForm();
				$('#bAddPoly').attr("src", "imagens/estrutura_menu/adicionar_poligono_over.jpg");
                $('#bAddPoly').attr("onmouseout", "");
                $('#bAddPoly').unbind("mouseout");
				addPolyline = true;				

			}
        },

        // Cria um evento para Abrir a janela de Temas
		geoThemes: function(){

            this.remove();

			geo2i.ptpl.clearForm();
			geoThemes = true;

        },

        // Cria um evento para Abrir a janela de Pesquisa
		geoSearch: function(){

            this.remove();

			geo2i.ptpl.clearForm();
			geoSearch = true;

        }


    },


    /*
     * Métodos referentes ao Google maps
     */
    gMaps: {

        // Carrega a API do google maps
        load: function(){

          if (GBrowserIsCompatible()) {

            // Define tudo para o mapa
            map = new GMap2(document.getElementById("map"));
            map.setCenter(new GLatLng(-27.1666666, -50.5000000), 7);
            map.addControl(new GScaleControl());

            map.addControl(new GLargeMapControl());

            map.setMapType(G_HYBRID_MAP);

            map.enableScrollWheelZoom();

            geocoder = new GClientGeocoder();

            // Global para manipulação de rotas
            gdir = new GDirections(map, false);
            GEvent.addListener(gdir, "error", geo2i.gMaps.setDirections.handleErrors);

            // Ícones

            // Info
            iconInfo = new GIcon();
            iconInfo.image = "imagens/icones/info.png";
            iconInfo.iconSize = new GSize(30, 30);
            iconInfo.iconAnchor = new GPoint(15, 15);
            iconInfo.infoWindowAnchor = new GPoint(15, 15);

            // Info para Pontos.
            iconInfoPonto = new GIcon();
            iconInfoPonto.image = "imagens/icones/info_ponto.png";
            iconInfoPonto.iconSize = new GSize(29, 30);
            iconInfoPonto.iconAnchor = new GPoint(0, 30);
            iconInfoPonto.infoWindowAnchor = new GPoint(15, 15);

            // Vermelho
            iconRed = new GIcon();
            iconRed.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
            iconRed.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
            iconRed.iconSize = new GSize(12, 20);
            iconRed.shadowSize = new GSize(22, 20);
            iconRed.iconAnchor = new GPoint(6, 20);

            // Azul
            iconBlue = new GIcon();
            iconBlue.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
            iconBlue.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
            iconBlue.iconSize = new GSize(12, 20);
            iconBlue.shadowSize = new GSize(22, 20);
            iconBlue.iconAnchor = new GPoint(6, 20);


            // Coloca um evento dbClick no google Maps.
            GEvent.addListener(map, "dblclick",
            function(overlay, point) {

                // Evento para adicionar Pontos
                if(addPoint == true){

                    document.form1.fptpl_matriz.value = point;
                    ponto = new GMarker(point);
                    map.openInfoWindowHtml(point,
                           'Voc&ecirc; deseja adicionar esse ponto?&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#" onclick="map.closeInfoWindow(); geo2i.ptpl.openForm(\'insert\', \'pt\'); " >sim</a>&nbsp;-&nbsp;<a href="#" onclick="map.closeInfoWindow();">n&atilde;o</a>');

                    // Carrega novamente os Temas.
                    geo2i.th.refreshList();

                // Para quando fechar o Poligone
                }else if(closePolyline == true){

                    // Caso acha uma Ação no botão, criar um função para marcar como 'desativado'.
                    addPolyline = false;

                // Evento para adicionar Poligonos.
                }else if(addPolyline == true){
                    buffer_points.push(point);

                    n = buffer_marker.length;
                    if(n == 0){
                        buffer_marker[n] = new GMarker(buffer_points[n], {icon:iconBlue, draggable: true});
                    }else{
                        buffer_marker[n] = new GMarker(buffer_points[n], {icon:iconRed, draggable: true});
                    }

                    map.addOverlay(buffer_marker[n]);
                    buffer_marker[n].enableDragging();
                    GEvent.addListener(buffer_marker[n],'drag', function(){drawPoly()});
                    GEvent.addListener(buffer_marker[n],'click',
                    function(){

                        // Caso o Poligono seja fechado.
                        if(buffer_marker[0].getPoint() == point){

                            pontos = buffer_points;

                            // desenha o último ponto
                            closePolyline = true;
                            geo2i.gMaps.drawPoly();

                            geo2i.ptpl.openForm("insert", "pl");

                            // Adiciona os pontos em um Campo
                            document.form1.fptpl_matriz.value = pontos;

                            // Carrega novamente os Temas do Formulário.
                            geo2i.th.refreshList();
                        }
                    });

                    geo2i.gMaps.drawPoly();
                }
            });
          }

        },

        // Desenha Poligonos no Mapa
        drawPoly: function(){
            buffer_polyline.length = 0;
            for(var i = 0; i < buffer_marker.length; i++){
                buffer_polyline.push(buffer_marker[i].getPoint());
            }

            if(closePolyline){ buffer_polyline.push(buffer_marker[0].getPoint())}
            if(buffer_line){ map.removeOverlay(buffer_line) }

            buffer_line = new GPolygon(buffer_polyline,'#FF0000', 2, 1,'#FF0000',0.2);
            map.addOverlay(buffer_line);
        },

        // Cria marcadores para Pontos/ Poligonos
        createMarkerPtPl: function(point, ptpl, number, id, titulo, ars, numero, bairro, cep, caixa_postal, municipio, estado, codigo_area, telefone, fax, email, site, nome_responsavel, observacao, ip_camera){

            endereco = '<div style="height:260px">';
            endereco += '<table width="438" cellpadding="0" cellspacing="0" class="texto">';
            endereco += '	<tr>';
            endereco += '		<td width="2" colspan="2" align="center" style="font-size:16px; padding-bottom:15px"><b>'+titulo+'</b></td>';
            endereco += '	</tr>';

            endereco += '	<tr>';
            endereco += '		<td width="2" class="bordaBottom" colspan="2" align="center"><div id="fotos'+id+'" style=" width:522px;"></div></b></td>';
            endereco += '	</tr>';

            endereco += '	<tr>';
            endereco += '		<td width="2" class="bordaBottom"><b>Avenida/&nbsp;Rua/&nbsp;Servid&atilde;o:</b></td>';
            endereco += '		<td class="bordaBottom">'+ars+'</td>';
            endereco += '	</tr>';
            endereco += '	<tr>';
            endereco += '		<td width="2" class="bordaBottom"><b>N&uacute;mero:</b></td>';
            endereco += '		<td class="bordaBottom">'+numero+'</td>';
            endereco += '	</tr>';
            endereco += '	<tr>';
            endereco += '		<td width="2" class="bordaBottom"><b>Bairro:</b></td>';
            endereco += '		<td class="bordaBottom">'+bairro+'</td>';
            endereco += '	</tr>';
            endereco += '	<tr>';
            endereco += '		<td width="2" class="bordaBottom"><b>CEP:</b></td>';
            endereco += '		<td class="bordaBottom">'+cep+'</td>';
            endereco += '	</tr>';           
            endereco += '	<tr>';
            endereco += '		<td width="2" class="bordaBottom"><b>Caixa&nbsp;Postal:</b></td>';
            endereco += '		<td class="bordaBottom">'+caixa_postal+'</td>';
            endereco += '	</tr>';

            endereco += '	<tr>';
            endereco += '		<td colspan="2" style="padding:8px; padding-top:18px; text-align:right"><b>Daqui&nbsp;para&nbsp;&nbsp;</b><input id="toAndress-'+id+'" type="text" style="width:250px;"><input type="button" value="ir" onclick="geo2i.gMaps.setDirections.load(\''+point+'\',$(\'#toAndress-'+id+'\').val())"></td>';
            endereco += '	</tr>';

            endereco += '</table>';
            endereco += '</div>';

            contato = '<table width="300" cellpadding="0" cellspacing="0" class="texto">';
            contato += '	<tr>';
            contato += '		<td width="2" class="bordaBottom"><b>Nome&nbsp;do&nbsp;Respons&aacute;vel:</b></td>';
            contato += '		<td class="bordaBottom">'+nome_responsavel+'</td>';
            contato += '	</tr>';
            contato += '	<tr>';
            contato += '		<td width="2" class="bordaBottom"><b>Telefone:</b></td>';
            contato += '		<td class="bordaBottom">('+codigo_area+')&nbsp;'+telefone+'</td>';
            contato += '	</tr>';
            contato += '	<tr>';
            contato += '		<td width="2" class="bordaBottom"><b>FAX:</b></td>';
            contato += '		<td class="bordaBottom">'+fax+'</td>';
            contato += '	</tr>';
            contato += '	<tr>';
            contato += '		<td width="2" class="bordaBottom"><b>E-Mail:</b></td>';
            contato += '		<td class="bordaBottom">'+email+'</td>';
            contato += '	</tr>';
            contato += '	<tr>';
            contato += '		<td width="2" class="bordaBottom"><b>Web&nbsp;Site:</b></td>';
            contato += '		<td class="bordaBottom">'+site+'</td>';
            contato += '	</tr>';
            contato += '</table>';

            outros = '<table width="300" cellpadding="0" cellspacing="0" class="texto">';
            outros += '	<tr>';
            outros += '		<td width="2" class="bordaBottom"><b>Observa&ccedil;&atilde;o:</b></td>';
            outros += '	</tr>';
            outros += '	<tr>';
            outros += '		<td class="bordaBottom">'+observacao+'</td>';
            outros += '	</tr>';
            outros += '</table>';

            camera = '<table width="300" cellpadding="0" cellspacing="0" class="texto">';
            camera += '	<tr>';
            
            if(ip_camera != ""){

                camera += '		<td class="bordaBottom"><div style="text-align:center; padding-top:20px"><EMBED SRC="'+ip_camera+'" AUTOSTART="1" TYPE="application/x-mplayer2"volume="-300" ShowControls="1" ShowStatusBar="1" EnableContextMenu="1" DisplaySize="1" pluginspage"Bow" name="NAS-DESIGN"></EMBED></DIV></td>';
            }else{

                camera += '     <td class="bordaBottom">&nbsp;-</td>';
            }
            camera += '	</tr>';
            camera += '</table>';

            docs = '<div id="docs'+id+'" style=" width:522px; height:200px; overflow: auto"></div>';

            if(ptpl == 'pt'){

                points[number]["marker"] = new GMarker(point, iconInfoPonto);

                points[number]["tab"] = [
                    new GInfoWindowTab("Dados", endereco),
                    new GInfoWindowTab("Contato", contato),
                    new GInfoWindowTab("Outros", outros),
                    new GInfoWindowTab("Câmera", camera),
                    new GInfoWindowTab("Docs", docs)
                ];

                GEvent.addListener(points[number]["marker"], "click", function() {
                  points[number]["marker"].openInfoWindowTabsHtml(points[number]["tab"]);
                });

                GEvent.addListener(points[number]["marker"], "infowindowopen", function() {
                    geo2i.ptpl.doc.showMaker(id);
                    geo2i.ptpl.foto.showMaker(id);
                });


                return points[number]["marker"];
            }else{

                polylines[number]["marker"] = new GMarker(point, iconInfo);

                polylines[number]["tab"] = [
                    new GInfoWindowTab("Dados", endereco),
                    new GInfoWindowTab("Contato", contato),
                    new GInfoWindowTab("Outros", outros),
                    new GInfoWindowTab("Câmera", camera),
                    new GInfoWindowTab("Docs", docs)
                ];

                GEvent.addListener(polylines[number]["marker"], "click", function() {
                  polylines[number]["marker"].openInfoWindowTabsHtml(polylines[number]["tab"]);
                });

                GEvent.addListener(polylines[number]["marker"], "infowindowopen", function() {
                    geo2i.ptpl.doc.showMaker(id);
                    geo2i.ptpl.foto.showMaker(id);
                });

                return polylines[number]["marker"];
            }
            
        },

        // Limpa todos o Pontos/ Poligonos ativados e qual quer Overlays do google maps ou janela de informação
        clearPlPl: function(){

            if(points.length > 0){
                for( i = 0; i < points.length; i++){
                    if(points[i]['HS'] == true){
                        points[i]['HS'] = false;
                        $('#imgHSPoint'+points[i]['id']).attr("src", "imagens/icones/desativo.png");
                    }
                }
            }

            // Remove os pontos para os poligonos.
            if(polylines.length > 0){
                for( i = 0; i < polylines.length; i++){
                   if(polylines[i]['HS'] == true){
                        polylines[i]['HS'] = false;
                        $('#imgHSPoly'+polylines[i]['id']).attr("src", "imagens/icones/desativo.png");
                   }
                }
            }

            map.clearOverlays();
            map.closeInfoWindow();
            
        },
        
        // Muda o tipo de mapa que é
        changeType: function(type){

            switch(type){

               // Ambos "Hibrido"
               case 1:

                    // Muda o tipo no Google Maps
                    map.setMapType(G_HYBRID_MAP);

                    // Muda as imagens
                    $('#mapaTipo1').attr("src","imagens/estrutura_menu/misto_over.jpg");
                    $('#mapaTipo2').attr("src", "imagens/estrutura_menu/mapa.jpg");
                    $('#mapaTipo3').attr("src", "imagens/estrutura_menu/satelite.jpg");

                    // Muda os OnMouseOver
                    $('#mapaTipo1').attr("onmouseout","");
                    $('#mapaTipo1').unbind("mouseout");
                    $('#mapaTipo2').mouseout(function(){ this.src = 'imagens/estrutura_menu/mapa.jpg' });
                    $('#mapaTipo3').mouseout(function(){ this.src = 'imagens/estrutura_menu/satelite.jpg' });

                    break;

                // Mapa "Mapa Normal"
                case 2:

                    // Muda o tipo no Google Maps
                    map.setMapType(G_NORMAL_MAP);

                    // Muda as imagens
                    $('#mapaTipo1').attr("src", "imagens/estrutura_menu/misto.jpg");
                    $('#mapaTipo2').attr("src", "imagens/estrutura_menu/mapa_over.jpg");
                    $('#mapaTipo3').attr("src", "imagens/estrutura_menu/satelite.jpg");

                    // Muda os OnMouseOver
                    $('#mapaTipo1').mouseout(function(){ this.src = 'imagens/estrutura_menu/misto.jpg' });
                    $('#mapaTipo2').attr("onmouseout","");
                    $('#mapaTipo2').unbind("mouseout");
                    $('#mapaTipo3mapaTipo3').mouseout(function(){ this.src = 'imagens/estrutura_menu/satelite.jpg' });

                    break;

                // Imagens "Mapa de satelite"
                case 3:

                    // Muda o tipo no Google Maps
                    map.setMapType(G_SATELLITE_MAP);

                    // Muda as imagens
                    $('#mapaTipo1').attr("src", "imagens/estrutura_menu/misto.jpg");
                    $('#mapaTipo2').attr("src", "imagens/estrutura_menu/mapa.jpg");
                    $('#mapaTipo3').attr("src", "imagens/estrutura_menu/satelite_over.jpg");

                    // Muda os OnMouseOver;
                    $('#mapaTipo1').mouseout(function(){ this.src = 'imagens/estrutura_menu/misto.jpg' });
                    $('#mapaTipo2').mouseout(function(){ this.src = 'imagens/estrutura_menu/mapa.jpg' });
                    $('#mapaTipo3').attr("onmouseout","");
                    $('#mapaTipo3').unbind("mouseout");

                    break;
            }

        },

        // Zoom no mapa
        zoom: function (add) {
            map.setZoom(map.getZoom() + add);
        },

        addAddressToMap: function(response) {
            if (!response || response.Status.code != 200) {
                //geo2i._alert("Desculpa, mas o endereço informado não é valido.");
            }else {
                place = response.Placemark[0];
                point = new GLatLng(place.Point.coordinates[1],
                                    place.Point.coordinates[0]);
                map.setCenter(point, 17);

                marker = new GMarker(point);
                map.addOverlay(marker);
                marker.openInfoWindowHtml( '<br>'+place.address);
                GEvent.addListener(marker, "infowindowclose", function() {
                    marker.hide();
                });

            }
        },

        showLocation: function() {
            geocoder.getLocations(document.form1.gMapSearch.value, geo2i.gMaps.addAddressToMap);
        },

        // Função que define rotas
        setDirections:{

            // Carrega a rota
            load: function(fromAddress, toAddress) {
                gdir.load("from: " + fromAddress + " to: " + toAddress);
            },

            // Chamadas de erros
            handleErrors: function(){
                if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
                    geo2i._alert("Endereço forcenido inválido. Isto pode ser devido ao fato de que o endereço é relativamente novo, ou ele pode estar incorreta. \nError code: " + gdir.getStatus().code);
                }else if (gdir.getStatus().code == G_GEO_SERVER_ERROR){
                    geo2i._alert("O geocoding não foi processado com sucesso por razões desconhecidas.\n Error code: " + gdir.getStatus().code);
                }else if (gdir.getStatus().code == G_GEO_MISSING_QUERY){
                    geo2i._alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);
                /*}else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS){  <--- Doc bug... this is either not defined, or Doc is wrong
                    alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
                    */
                }else if (gdir.getStatus().code == G_GEO_BAD_KEY){
                    geo2i._alert("O dado fundamental é inválido ou não corresponde ao domínio para o qual foi dado. \n Error code: " + gdir.getStatus().code);
                }else if(gdir.getStatus().code == G_GEO_BAD_REQUEST){
                    geo2i._alert("a direções pedida não pôde ser analisado com êxito.\n Error code: " + gdir.getStatus().code);
                }else{
                   geo2i._alert("Ocorreu um erro desconhecido")
               
                };

            }

        }

        
    },

    // Método para abrie e fechar a janela da Login
    openCloseLogin: function(){

        id_janela = "loginJanela";
        id_botao = "loginBotao";

        if(!$("#"+id_janela).is(":hidden")){
            $("#"+id_janela).hide();

            $("#"+id_botao).attr("src", "imagens/estrutura_menu/login.jpg");
            $("#"+id_botao).mouseout(function(){ this.src = 'imagens/estrutura_menu/login.jpg' });

        }else{
            $("#"+id_janela).show();

            $("#"+id_botao).attr("src","imagens/estrutura_menu/login_over.jpg");
            $("#"+id_botao).attr("onmouseout","");
            $("#"+id_botao).unbind("mouseout");

        }
    },

    // Muda o Usuário
    changeUser: function(){

        // Remove todos os eventos
        geo2i.event.remove();

        if(!$('#pesquisa_div').is(":hidden")){

            // Limpa os resultados.
            $('#psqResultado').html('');
            $('#geoTemas').html('');

            $('#psqRegiao').show();
            $('#psqResultado').hide();
            $('#psqCarregando').hide();

            geo2i.th.refreshList();
        }else if(!$('geo_div').is(":hidden")){
            geo2i.th._show();
        }

    },

    // Muda Abas
    changeTab: function(ativos, passivos, divDesativaFora, classAtiva, classDesativa){

        if(!divDesativaFora) divDesativaFora = false;
        if(!classAtiva) classAtiva = 'abaAtivada';
        if(!classDesativa) classDesativa = 'abaDesativada';

        if(typeof(passivos) == 'object'){
            for(i=0; i < passivos.length; i++){
                if(typeof(passivos[i]) == 'object'){
                    if(!passivos[i][1]){
                        document.getElementById(passivos[i][0]).className = classDesativa;
                        document.getElementById(passivos[i][0]+'_main').className = classDesativa+'_main';
                        if(divDesativaFora) document.getElementById(passivos[i][0]+'_div').style.display = 'none';
                    }else{
                        if(divDesativaFora) document.getElementById(passivos[i][0]).style.display = 'none';
                    }

                }else{
                    document.getElementById(passivos[i]).className = classDesativa;
                    document.getElementById(passivos[i]+'_main').className = classDesativa+'_main';
                    if(divDesativaFora) document.getElementById(passivos[i]+'_div').style.display = 'none';
                }
            }
        }else{
            document.getElementById(passivos).className = classDesativa;
            document.getElementById(passivos+'_main').className = classDesativa+'_main';

            if(divDesativaFora) document.getElementById(passivos+'_div').style.display = 'none';
        }

        if(typeof(ativos) == 'object'){
            for(i=0; i < ativos.length; i++){
                if(typeof(ativos[i]) == 'object'){
                    if(!ativos[i][1]){
                        document.getElementById(ativos[i][0]).className = classAtiva;
                        document.getElementById(ativos[i][0]+'_main').className = classAtiva+'_main';
                        if(divDesativaFora) document.getElementById(ativos[i][0]+'_div').style.display = '';
                    }else{
                        if(divDesativaFora) document.getElementById(ativos[i][0]).style.display = '';
                    }

                }else{
                    document.getElementById(ativos[i]).className = classAtiva;
                    document.getElementById(ativos[i]+'_main').className = classAtiva+'_main';
                    if(divDesativaFora) document.getElementById(ativos[i]+'_div').style.display = '';
                }
            }
        }else{
            document.getElementById(ativos).className = classAtiva;
            document.getElementById(ativos+'_main').className = classAtiva+'_main';
            if(divDesativaFora) document.getElementById(ativos+'_div').style.display = '';
        }

    },

    // Muda o Menu
    changeMenu: function(type){

        geo2i.event.remove();

        switch(type){

            // Estatisticas
            case 1: 

                // Muda as imagens.
                $('#menuTipo1').attr("src", "imagens/estrutura_menu/estatistica_over.jpg");
                $('#menuTipo2').attr("src", "imagens/estrutura_menu/pesquisa.jpg");
                $('#menuTipo3').attr("src", "imagens/estrutura_menu/temas.jpg");

                // Muda os OnMouseOver
                $('#menuTipo1').attr("onmouseout","");
                $('#menuTipo1').unbind("mouseout");
                $('#menuTipo2').mouseout(function(){ this.src = 'imagens/estrutura_menu/pesquisa.jpg' });
                $('#menuTipo3').mouseout(function(){ this.src = 'imagens/estrutura_menu/temas.jpg' });

                // Muda os display das Divs
                $('#estatistica_div').show();
                $('#pesquisa_div').hide();
                $('#geo_div').hide();
                break;

            // Pesquisa
            case 2:

                // Muda as imagens.
                $('#menuTipo1').attr("src", "imagens/estrutura_menu/estatistica.jpg");
                $('#menuTipo2').attr("src", "imagens/estrutura_menu/pesquisa_over.jpg");
                $('#menuTipo3').attr("src", "imagens/estrutura_menu/temas.jpg");

                // Muda os OnMouseOver
                $('#menuTipo1').mouseout(function(){ this.src = 'imagens/estrutura_menu/estatistica.jpg' });           
                $('#menuTipo2').attr("onmouseout","");
                $('#menuTipo2').unbind("mouseout");
                $('#menuTipo3').mouseout(function(){ this.src = 'imagens/estrutura_menu/temas.jpg' });

                // Muda os display das Divs
                $('#estatistica_div').hide();
                $('#pesquisa_div').show();
                $('#geo_div').hide();

                // Limpa os resultados.
                $('#psqResultado').html("");
                $('#geoTemas').html("");

                // Prepara a Janela
                $('#psqRegiao').hide();
                $('#psqResultado').hide();
                $('#psqCarregando').show();

                // Recarrega as litas com Temas
                geo2i.th.refreshList();

                break;

            // Temas 
            case 3: 

                // Muda as imagens.
                $('#menuTipo1').attr("src", "imagens/estrutura_menu/estatistica.jpg");
                $('#menuTipo2').attr("src", "imagens/estrutura_menu/pesquisa.jpg");
                $('#menuTipo3').attr("src", "imagens/estrutura_menu/temas_over.jpg");

                // Muda os OnMouseOver
                $('#menuTipo1').mouseout(function(){ this.src = 'imagens/estrutura_menu/estatistica.jpg' });
                $('#menuTipo2').mouseout(function(){ this.src = 'imagens/estrutura_menu/pesquisa.jpg' });
                $('#menuTipo3').attr("onmouseout","");
                $('#menuTipo3').unbind("mouseout");

                // Muda os display das Divs
                $('#estatistica_div').hide();
                $('#pesquisa_div').hide();
                $('#geo_div').show();
                
                // Limpa os resultados.
                $('#psqResultado').html("");
                $('#geoTemas').html("");

                // Executa as funções necessárias
                geo2i.th._show();

                break;
        }

    },

    // Janelas de alerta
    _alert: function(text){
        return alert(text);
    },

    // Janelas de Confirmar
    _confirm: function(text){
        return confirm(text);
    }

}
