﻿// constante para armazenar se o navegador é IE
var IE = false;

/*@cc_on
   /*@if (@_win32)
      IE = true;
   @else @*/
      IE = false;
   /*@end
@*/

// constante para armazenar o incremento da div de informações por frame
var ANIM_INCREMENTO_FRAMES = 40;

// constante para armazenar o tempo entre frames da animação
var ANIM_TEMPO = 4;

// constante para armazenar a diferença de tamanho entre a div de informações e a div principal
//var DIF_PRINCIPAL_INFO = 525;
var DIF_PRINCIPAL_INFO = 455;

// constante para armazenar a posição X inicial da div de legenda
//var LEGENDA_X_INI = 465;
var LEGENDA_X_INI = 0;

// constante para armazenar a posição Y inicial da div de legenda
//var LEGENDA_Y_INI = 210;
var LEGENDA_Y_INI = 0;

if(IE)
{
      LEGENDA_X_INI = 115;
      LEGENDA_Y_INI = 0;
}
else
{
      LEGENDA_X_INI = 235;
      LEGENDA_Y_INI = 0;
}

// variável para armazenar se a legenda deve se movimentar ou não
var moveLegenda = false;

// variável para armazenar a última posição X obtida do mouse na tela
var mouseX = -1;

// variável para armazenar a última posição Y obtida do mouse na tela
var mouseY = -1;

// variável que indica se a página possui mapa
var possuiMapa = false;

//variável para atualização do mapa
var cont = 0;

var arrayPaginas = new Array();

var posPaginaAtual = -1;

var direcaoTabela = 0;

var deslocamentoTabela = 17;

function paginaAnterior()
{
    return arrayPaginas[posPaginaAtual--];
}

function inserePaginaAnterior(link)
{
    posPaginaAtual++;
    arrayPaginas[posPaginaAtual] = link;
}

// atualiza a página da ficha de manancial
function atualizaPaginaManancial(codigo, pagina)
{
    // monta a string para o callback 
    chamadaCallServer(getCodigoEstado(),codigo,codigo,"res","man","","","",pagina,"","");
}

// mostra as fichas correspondentes ao mapa selecionado
function atualizaPaineisMunicipio(tipoMapa)
{
    if(document.getElementById("grupoInfoOferta") != null)
    {
        if(tipoMapa == "sist" || tipoMapa == "diag")
        {
            fechaGrupoInfo("grupoInfoPlanejamento");
            fechaGrupoInfo("grupoInfoProtecao");
        }
        else if(tipoMapa == "plan")
        {
            fechaGrupoInfo("grupoInfoOferta");
            fechaGrupoInfo("grupoInfoProtecao");
        }
        else if(tipoMapa == "ete")
        {
            fechaGrupoInfo("grupoInfoOferta");
            fechaGrupoInfo("grupoInfoPlanejamento");
        }
    }
}

// atualiza as divs das Regiões Hidográficas, mostrando apenas o selecionado
function mostraInfoRegiaoHidrografica(str) 
{
    document.getElementById("divHidroInicial").style.display = "none";
    document.getElementById("divHidroInfo").style.display = "block";
    
    for(i=1; i<=12; i++) 
    {
        var nome = "hidro" + i;
        document.getElementById(nome).className = "divMapaInfoInvisivel";
    }
    
    nomeRH = "";
    
    switch(str)
    {
        case "hidro1":
            nomeRH = "Amazônica";
            break;
        case "hidro2":
            nomeRH = "Tocantins";
            break;
        case "hidro3":
            nomeRH = "Ocidental";
            break;
        case "hidro4":
            nomeRH = "Parnaíba";
            break;
        case "hidro5":
            nomeRH = "São Francisco";
            break;
        case "hidro6":
            nomeRH = "Oriental";
            break;
        case "hidro7":
            nomeRH = "Leste";
            break;
        case "hidro8":
            nomeRH = "Sudeste";
            break;
        case "hidro9":
            nomeRH = "Paraguai";
            break;
        case "hidro10":
            nomeRH = "Paraná";
            break;
        case "hidro11":
            nomeRH = "Uruguai";
            break;
        case "hidro12":
            nomeRH = "Sul";
            break;
    }
    
    document.getElementById(str).className = "";
    
    document.getElementById("divTextoInfoTabela").style.display = "none";
    document.getElementById("divCarregandoTabelaRH").style.display = "block";
    
    CallServerResultadosRH(nomeRH);
}

function ServerResponseResultadosRH(result)
{
    var resultados = result.split("§");
    var conteudo = resultados[0];
    var altura = resultados[1];
    
    document.getElementById("divTextoInfoTabela").innerHTML = conteudo;
    document.getElementById("divTextoInfoTabela").style.display = "block";
    document.getElementById("divCarregandoTabelaRH").style.display = "none";
    
    atualizaTamanhoDivRH(altura);
}

// atualiza as divs dos itens do menu, mostrando apenas o selecionado
function mostraItensMenu(id)
{
    mudaClasseCSS("divItensRegioes", "classeInvisivel");
    mudaClasseCSS("divItensSituacao", "classeInvisivel");
    mudaClasseCSS("divItensPlanejamento", "classeInvisivel");
    if(id != "")
        mudaClasseCSS(id, "divLnkItens");
}

// muda a classe de um objeto
function mudaClasseCSS(id, classe)
{
    document.getElementById(id).className = classe;
}

// altera o arquivo de uma tag img
function mudaIcone(img, arquivo)
{
    img.src = "../../images/icones/"+arquivo;
}

// monta a string de callback a partir dos parâmetros recebidos
function chamadaCallServer(codigoEstado, codigoResultado, codigoInformacao, tipoResultado, tipoInformacao, posMapaX, posMapaY, tipoMapa, paginaManancial, tipoPaginacao, tipoIdentify)
{
    mostraCarregandoAJAX();
    var chamada = codigoEstado + "&" + codigoResultado + "&" + 
                  codigoInformacao + "&" + tipoResultado + "&" + 
                  tipoInformacao + "&" + posMapaX + "&" + 
                  posMapaY + "&" + tipoMapa + "&" + 
                  paginaManancial + "&" + tipoPaginacao + "&" + 
                  tipoIdentify;
    CallServer(chamada);
}

// retorna o tipo de informação escolhido nos radio buttons
function getTipoInformacao()
{
//    for(var i=1; i<=3; i++)
//    {
//        var radio = document.getElementById("rdb" + i);
//        if(radio.checked)
//            return radio.value;
//    }
    return "mun";
}

// obtém o código do estado selecionado
function getCodigoEstado()
{
    return document.getElementById("ddlEstado").value;
}

// obtém o código do resultado selecionado
function getCodigoResultado()
{
    return document.getElementById("ddlResultado").value;
}

// altera o estado selecionado
function setCodigoEstado(codigoEstado)
{
    if(codigoEstado != "" && document.getElementById("ddlEstado").length > 1)
        document.getElementById("ddlEstado").value = codigoEstado;
}


// altera o resultado selecionado
function setCodigoResultado(codigoResultado)
{
    if(codigoResultado != "" && document.getElementById("ddlResultado").length > 1)
        document.getElementById("ddlResultado").value = codigoResultado;
}

// mudança inicial do estado
function mudaEstado(codigoEstado, tipoPaginacao)
{
    //alert("muda estado: " + codigoEstado);
    setCodigoEstado(codigoEstado);
    
    mudaBusca('est', tipoPaginacao);
}

// mudança na busca de estado / município / sistema / manancial
function mudaBusca(tipoResultado, tipoPaginacao)
{
    // recebe o código do estado escolhido no DDL
    var codigoEstado = getCodigoEstado();

    // se o código é maior que 0, mostra a div de Load
    if(codigoEstado > 0)
        mostraCarregandoAJAX();
        
    // verifica o objeto selecionado no grupo de radio buttons
    var tipoInformcao = getTipoInformacao();
    
    
    chamadaCallServer(codigoEstado, "", "", tipoResultado, tipoInformcao, "","","","",tipoPaginacao,""); 
}

// muda o resultado, recebendo o código do objeto e o tipo
function mudaResultadoPorCodigo(codigoEstado, codigoResultado, tipoInformacao, tipoPaginacao)
{
    //alert("muda res por codigo: " + codigoResultado + ", " + tipoInformacao);
    
    setCodigoEstado(codigoEstado);

    // se o tipo de consulta é o mesmo do selecionado nos radio buttons, atualiza a DDL
    if(tipoInformacao == getTipoInformacao())
        setCodigoResultado(codigoResultado);
        
    // monta a string para o callback 
    chamadaCallServer(getCodigoEstado(),codigoResultado,codigoResultado,"res",tipoInformacao,"","","","", tipoPaginacao,"");
}

// mostra a info. do manancial e seleciona o município
function mudaManancialComMunicipio(codigoEstado, codigoMunicipio, codigoManancial, tipoPaginacao)
{
    setCodigoEstado(codigoEstado);
    setCodigoResultado(codigoMunicipio);
    chamadaCallServer(codigoEstado, codigoMunicipio,codigoManancial,"res","manmun","","","","", tipoPaginacao,"");
}

function mudaResultadoInicial(codigoEstado, codigoResultado, tipoInformacao)
{
    mudaEstado(codigoEstado,"");
    
    mudaResultadoPorCodigo(codigoEstado, codigoResultado, tipoInformacao,'');
}

function mudaResultado()
{
    // verifica o objeto selecionado no grupo de radio buttons
    var tipoInformacao = getTipoInformacao();
    
    //alert("muda res: " + tipoInformacao);
    
    mostraCarregandoAJAX();

    // monta a string de callback e envia
    chamadaCallServer(getCodigoEstado(),getCodigoResultado(),getCodigoResultado(),"res",tipoInformacao,"","","","","","");
}

// resposta recebida do CallBack
function ServerResponse(result)
{   
    // separa a string pelo "§"
    var resultados = result.split("§");
    
    // código do Estado, caso seja necessário mudar.
    var codigoEstado = resultados[0];
    
    // código do Município, caso seja necessário mudar.
    var codigoResultado = resultados[1];

    // tipo do resultado ("est" para estado, "rad" para radio button e "res" para município, manancial ou sistema)
    var tipoResultado = resultados[2];
    
    // tipo do informação ("mun" para município, "man" para manancial e "sis" para sistema)
    var tipoInformacao = resultados[3];
    
    // string contendo a atualização do mapa
    var stringMapa = resultados[4];
    
    // string contendo os itens do combo de resultados
    var stringCombo = resultados[5];
    
    // coneúdo do div de Info. em HTML
    var conteudoDiv = resultados[6];
    
    // altura final do div de Info.
    var alturaFinal = resultados[7];
    
    // conteúdo da lista de regiões metropolitanas do menu
    var conteudoMenuRegioes = resultados[8];
    
    // região do Atlas
    var regiaoAtlas = resultados[9];
    
    // tipo do mapa
    var tipoMapa = resultados[10];
    
    // string contendo a atualização do overview
    var stringOverview = resultados[11];
    
    // string contendo o link para redirecionamento
    var linkRedirect = resultados[12];
    
    fechaGrupoInfo("divAreaOverview");
    
    // se deve fazer redirecionamento
    if(linkRedirect != "")
    {
        window.location = linkRedirect;
    }
    
    if(document.getElementById("lnkCreditos") != null)
    {
        document.getElementById("lnkCreditos").href = "CreditosEstado.aspx?est="+codigoEstado;
    }
    
    if(document.getElementById("lnkDownload") != null)
    {
        document.getElementById("lnkDownload").href = "DownloadEstado.aspx?est="+codigoEstado;
    }
    
    if(document.getElementById("lnkInvestimentos") != null)
    {
        document.getElementById("lnkInvestimentos").href = "Investimentos.aspx?est="+codigoEstado;
    }
    
    // se foi recebido o comando de imprimir, abra a popup de impressão
    if(tipoResultado == "print")
    {
        window.open("Imprimir.aspx","imprimir","scrollbars=1,menubar=1,resizable=1,width=550,height=600");
    }
    else
    {
        // obtém a DDL de resultados
        var ddl = document.getElementById("ddlResultado");
        
        if(codigoEstado != "")
            document.getElementById("ddlEstado").value = codigoEstado;
        
        // se não há resultados, desabilita o DDL
        ddl.disabled = (stringCombo == "");
        
        // se há resultados, popula o DDL
        if(stringCombo != ""){  
                 
            // procura a DDL de resultados e limpa
            var ddl = document.getElementById("ddlResultado");
            ddl.innerHTML = "";
            
            var itens = stringCombo.split("#");

            if(itens.length == 1)
                ddl.disabled = true;
            else
            {
                for(var i=0; i<itens.length; i++)
                { 
                    var valores = itens[i].split("|");
                    var opcao = document.createElement("option");
                    var objText = document.createTextNode(valores[1]);
                    opcao.value = valores[0];
                    opcao.appendChild(objText);
                    ddl.appendChild(opcao);
                }
            }
        }
        
        if(tipoInformacao != "man")
        {
            map = Maps["ctl00_conteudo_mapa"];
            map.redraw();
            if(codigoResultado != "")
                ddl.value = codigoResultado;
        }
        
        // faz as alterações no mapa
        if(stringMapa != "")
            processCallbackResult(stringMapa);
            
        if(stringOverview != "")
            processCallbackResult(stringOverview);
        
        // se foi feita uma atualização de resultado
        if(tipoResultado == "res"){
            
            if(document.getElementById("divMapaInfo").style.visibility != "visible")
            {
                // se a div de informações ainda não está visível, passa o conteúdo e inicia o crescimento da div 
                document.getElementById("divMapaInfo").innerHTML = conteudoDiv;
                document.getElementById("divMapaInfo").style.height = '1px';
                document.getElementById("divMapaInfo").style.filter = "alpha(opacity='0')";
                document.getElementById("divMapaInfo").style.visibility = 'visible';
                
                // esconde os painéis dependendo do tipo do mapa
                atualizaPaineisMunicipio(tipoMapa);
                
                setTimeout("aumentaDiv("+alturaFinal+",'"+regiaoAtlas+"')",ANIM_TEMPO);   
            }    
            else
            {
                // se a div de informações já está visível, copia o novo conteúdo para a div temporária e inicia a diminuição da div
                document.getElementById("divMapaInfoTemp").innerHTML = conteudoDiv;
                var alturaInicial = document.getElementById("divMapaInfo").style.height;
                alturaInicial = alturaInicial.substr(0, alturaInicial.length - 2);
                setTimeout("diminuiDiv("+alturaFinal+","+alturaInicial+", true,'"+regiaoAtlas+"', '"+tipoMapa+"')",ANIM_TEMPO);
            }
        }
        else if(tipoResultado == "pag")
        {
            document.getElementById("divMapaInfo").innerHTML = conteudoDiv;
            document.getElementById("divMapaInfo").style.height = alturaFinal + "px";
            
            var novaPrincipal = parseInt(parseInt(alturaFinal) + (parseInt(DIF_PRINCIPAL_INFO) + parseInt(ANIM_INCREMENTO_FRAMES)));
            //alert(alturaFinal +  "+");
            //alert("+" + DIF_PRINCIPAL_INFO + "+");
            //alert("+" + ANIM_INCREMENTO_FRAMES + "=");
            //alert("=" + novaPrincipal);
            // acrescenta o px no final
            novaPrincipal = novaPrincipal + "px";
            document.getElementById("divAnalise").style.height = novaPrincipal;
        }
        // senão (foi feita uma mudança de estado)
        else
        {
            // se a div de Info está visível, inicia a diminuição da div
            if(document.getElementById("divMapaInfo").style.visibility == "visible")
            {
                var alturaInicial = document.getElementById("divMapaInfo").style.height;
                alturaInicial = alturaInicial.substr(0, alturaInicial.length - 2);
                setTimeout("diminuiDiv(0,"+alturaInicial+", false,'','')",ANIM_TEMPO);
            }
        }
        
        if(conteudoMenuRegioes != "")
        {
            document.getElementById("divItensRegioes").innerHTML = conteudoMenuRegioes;
        }
        
    }
   
    atualizaOverviewVisivel();
    
    // esconde a div de Load
    escondeCarregandoAJAX();
}

function atualizaOverviewVisivel()
{
    if(document.getElementById("divInfoEstadoEsq") == null )
    {
        abreGrupoInfoSistema("divAreaOverview");
    }
    else
    {
        fechaGrupoInfo("divAreaOverview");
    }
}

// processo de crescimento da div de informações
function aumentaDiv(alturaFinal, regiaoAtlas){

    // atualiza as barras da ficha
    if(regiaoAtlas != "" && document.getElementById("divTabelaMunicipioTopo") != null)
    {
        document.getElementById("divTabelaMunicipioTopo").className = "tabelaInfoTopo" + regiaoAtlas;
        document.getElementById("divTabelaMunicipioFundo").className = "tabelaInfoFundo" + regiaoAtlas;
    }

    // obtém a altura atual da div de informações e da div principal
    var alturaInfo = document.getElementById("divMapaInfo").style.height;
    var alturaPrincipal = document.getElementById("divAnalise").style.height;
    
    // se a div principal está sem altura, passa a altura default
    if(alturaPrincipal == "")
        alturaPrincipal = "643px";
        
    // remove o px do final
    alturaInfo = alturaInfo.substr(0, alturaInfo.length - 2);
    alturaPrincipal = alturaPrincipal.substr(0, alturaPrincipal.length - 2);
    
    // armazena se deve haver um aumento da div
    var aumento = false;
    
    // verifica se a div de informações atingiu o tamanho máximo
    if(alturaInfo < (alturaFinal - ANIM_INCREMENTO_FRAMES))
    {
        // aumenta a altura
        var novaInfo = parseInt(alturaInfo) + ANIM_INCREMENTO_FRAMES;
        
        // calcula a opacidade, com relação à altura
        var opacidade = (parseInt(novaInfo) / alturaFinal) * 100;
        var opacidadeMoz = (opacidade / 100);
        var filtro = "alpha(opacity='"+opacidade+"')";
        
        // acrescenta o px no final
        novaInfo = novaInfo + "px";
        
        // atualiza a altura e a opacidade
        document.getElementById("divMapaInfo").style.opacity = opacidadeMoz;
        document.getElementById("divMapaInfo").style.height = novaInfo;
        document.getElementById("divMapaInfo").style.filter = filtro;
        
        // continua o processo de crescimento
        aumento = true;
        
    }
    // se a altura ultrapassou a altura final
    else {
        // muda a altura para a altura final
        var novaInfo = parseInt(alturaFinal);
        
        // acrescenta o px no final
        novaInfo = novaInfo + "px";
        document.getElementById("divMapaInfo").style.height = novaInfo;
       
    }
    
    // verifica se a div principal atingiu o tamanho máximo 
    if(alturaPrincipal < (alturaFinal + DIF_PRINCIPAL_INFO))
    {
        // se ainda não atingiu, continua o processo de crescimento
        var novaPrincipal = parseInt(alturaPrincipal) + ANIM_INCREMENTO_FRAMES;
        novaPrincipal = novaPrincipal + "px";
        document.getElementById("divAnalise").style.height = novaPrincipal;
        aumento = true;
    }
    // se a altura do div principal é muito grande
    else if(alturaPrincipal > (alturaFinal + (DIF_PRINCIPAL_INFO + ANIM_INCREMENTO_FRAMES)))
    {
        // diminui a div
        var novaPrincipal = parseInt(alturaPrincipal) - ANIM_INCREMENTO_FRAMES;
        novaPrincipal = novaPrincipal + "px";
        document.getElementById("divAnalise").style.height = novaPrincipal;
        aumento = true;
    }
    // a altura atingiu o valor final
    else{
        var novaPrincipal = parseInt(alturaFinal + (DIF_PRINCIPAL_INFO + ANIM_INCREMENTO_FRAMES));
        
        // acrescenta o px no final
        novaPrincipal = novaPrincipal + "px";
        document.getElementById("divAnalise").style.height = novaPrincipal;
    }
    
    // se é necessário fazer um aumento, chama novamente a função
    if(aumento)
        setTimeout("aumentaDiv("+alturaFinal+",'')",ANIM_TEMPO);
}

// processo de diminuição da div de informações
function diminuiDiv(alturaFinal, alturaInicial, abre, regiaoAtlas, tipoMapa)
{
    // armazena se deve haver uma diminuição da div
    var diminui = false;
    
    // obtém as alturas atuais das divs
    var alturaInfo = document.getElementById("divMapaInfo").style.height;
    var alturaPrincipal = document.getElementById("divAnalise").style.height;
    
    // se a div principal está sem altura, passa a altura default
    if(alturaPrincipal == "")
        alturaPrincipal = "643px";
        
    // remove o "px" do final
    alturaInfo = alturaInfo.substr(0, alturaInfo.length - 2);
    alturaPrincipal = alturaPrincipal.substr(0, alturaPrincipal.length - 2);
    
    // se a altura é maior que o mínimo
    if(alturaInfo > (ANIM_INCREMENTO_FRAMES + 1))
    {
        // calcula a nova altura, a nova opacidade e atualiza
        var novaInfo = parseInt(alturaInfo) - ANIM_INCREMENTO_FRAMES;
        var opacidade = (parseInt(novaInfo) / alturaInicial) * 100;
        var opacidadeMoz = (opacidade / 100);
        var filtro = "alpha(opacity='"+opacidade+"')";
        novaInfo = novaInfo + "px";
        document.getElementById("divMapaInfo").style.opacity = opacidadeMoz;
        document.getElementById("divMapaInfo").style.height = novaInfo;
        document.getElementById("divMapaInfo").style.filter = filtro;
        diminui = true;
    }
    // senão (atingiu a altura mínima)
    else
    {
        // se deve abrir novamente, inicia o processo de aumento da div
        if(abre){
            document.getElementById("divMapaInfo").innerHTML = document.getElementById("divMapaInfoTemp").innerHTML;
            
            // esconde os painéis dependendo do tipo do mapa
            atualizaPaineisMunicipio(tipoMapa);
            
            atualizaOverviewVisivel();
            
            setTimeout("aumentaDiv("+alturaFinal+",'"+regiaoAtlas+"')",ANIM_TEMPO);
        }
        // se não deve abrir mais, muda a altura para 0 e deixa invisível
        else
        {
            document.getElementById("divMapaInfo").style.height = "0px";
            document.getElementById("divMapaInfo").style.visibility = "hidden"
        }
    }
    
    // se a div não abre novamente, diminui a div principal
    if(!abre)
    {
        // se a div é maior que o tamanho mínimo, continua dimiunindo
        if(alturaPrincipal > DIF_PRINCIPAL_INFO + ANIM_INCREMENTO_FRAMES)
        {
            var novaPrincipal = parseInt(alturaPrincipal) - ANIM_INCREMENTO_FRAMES;
            novaPrincipal = novaPrincipal + "px";
            document.getElementById("divAnalise").style.height = novaPrincipal;
            diminui = true;
        }
        else{
            var novaPrincipal = DIF_PRINCIPAL_INFO;
            
            // acrescenta o px no final
            novaPrincipal = novaPrincipal + "px";
            document.getElementById("divAnalise").style.height = novaPrincipal;
        }
    }
    
    // se deve haver uma diminuição, chama novamente a função
    if(diminui)
        setTimeout("diminuiDiv("+alturaFinal+","+alturaInicial+","+abre+",'"+regiaoAtlas+"','"+tipoMapa+"')",ANIM_TEMPO);
}

// associa o evento de mouseclick no mapa com a função correspondente
function MapIdentify(divid, tipoIdentify) {
    map = Maps["ctl00_conteudo_mapa"];
    MapPoint(map.controlName, "Selecao", false);
    if(tipoIdentify == "mun")
    {
        map.divObject.onmousedown = MapIdClick;
    }
    else
    {
        map.divObject.onmousedown = MapIdClickSistema;
    }
}


// função chamada ao fazer um click sobre o mapa
function MapIdClick(e) {
    mostraCarregandoAJAX();
    
    map.cursor = map.divObject.style.cursor;

    // obtém as coordenadas x e y
	getXY(e);
	var box = calcElementPosition(map.containerDivId);
	zleft = mouseX - box.left;
	ztop = mouseY - box.top;

	map.xMin=zleft;
	map.yMin=ztop;
	
	chamadaCallServer(getCodigoEstado(),getCodigoResultado(),getCodigoResultado(),"click","",map.xMin,map.yMin,"","","","mun");
}

// identify sistema
function MapIdClickSistema(e) {
    mostraCarregandoAJAX();
    
    map.cursor = map.divObject.style.cursor;

    // obtém as coordenadas x e y
	getXY(e);
	var box = calcElementPosition(map.containerDivId);
	zleft = mouseX - box.left;
	ztop = mouseY - box.top;

	map.xMin=zleft;
	map.yMin=ztop;
	
	chamadaCallServer(getCodigoEstado(),getCodigoResultado(),getCodigoResultado(),"click","",map.xMin,map.yMin,"","","","sis");
}

// fecha ou abre uma Div, pela ID
function abreFechaGrupoInfo(id)
{
    var visivel = document.getElementById(id).style.display;

    if(visivel == "" || visivel == "inline")
        document.getElementById(id).style.display = "none";
    else
        document.getElementById(id).style.display = "inline";
}

// fecha uma Div, pela ID
function fechaGrupoInfo(id)
{
    var visivel = document.getElementById(id).style.display;

    if(visivel == "" || visivel == "inline" || visivel == "block")
        document.getElementById(id).style.display = "none";
}

// abre uma Div, pela ID
function abreGrupoInfo(id)
{
    var visivel = document.getElementById(id).style.display;

    if(visivel != "" && visivel != "inline")
        document.getElementById(id).style.display = "inline";
}

function abreGrupoInfoSistema(id)
{
    var visivel = document.getElementById(id).style.display;

    if(visivel != "" && visivel != "block")
        document.getElementById(id).style.display = "block";
}



// função para fazer Zoom no estado selecionado
function clickZoomEstado()
{
    if(getCodigoEstado() > 0)
    {
        mostraCarregandoAJAX();
        chamadaCallServer(getCodigoEstado(), 0, 0, "est", "mun", "", "","","","","");
    }
}

// função para abrir a página de impressão
function clickImprimir()
{
    chamadaCallServer(0, 0, 0, "print", "", "", "","","","","");
}

// fecha ou abre a legenda do Mapa
function abreFechaLegendaMapa()
{
    var id = "divLegendaMapa";
    var visivel = document.getElementById(id).style.display;

    if(visivel == "" || visivel == "none")
    {
        document.getElementById(id).style.display = "block";
        if(document.getElementById("divLegendaMapa").style.left == "")
        {
            var altura = document.getElementById("divLegendaMapa").offsetHeight;
            document.getElementById("divLegendaMapa").style.left = LEGENDA_X_INI + "px";
            document.getElementById("divLegendaMapa").style.top = (LEGENDA_Y_INI - altura - 3) + "px";
        }
    }
    else
        document.getElementById(id).style.display = "none";
}

// função quando o mouse passa por cima da legenda
function mouseSobreLegenda()
{
    // deixa a legenda transparente
    document.getElementById("divLegendaMapaBarraSuperior").style.filter = "alpha(opacity=30)";
    document.getElementById("divLegendaMapaBarraSuperior").style.opacity = "0.3";
    document.getElementById("divLegendaMapaConteudo").style.filter = "alpha(opacity=30)";
    document.getElementById("divLegendaMapaConteudo").style.opacity = "0.3";
}

// função quando o mouse sai de cima da legenda
function mouseForaLegenda()
{
    // deixa a legenda opaca
    document.getElementById("divLegendaMapaBarraSuperior").style.filter = "alpha(opacity=100)";
    document.getElementById("divLegendaMapaBarraSuperior").style.opacity = "1";
    document.getElementById("divLegendaMapaConteudo").style.filter = "alpha(opacity=100)";
    document.getElementById("divLegendaMapaConteudo").style.opacity = "1";
}


// função quando o mouse está sobre a barra da legenda
function mouseSobreBarraLegenda()
{
    // muda o cursor para tipo "move"
    //document.body.style.cursor = 'move';
}

// função quando o mouse está fora da barra da legenda
function mouseForaBarraLegenda()
{
    // volta o cursor ao normal e cancela o movimento da legenda
    //document.body.style.cursor = 'default';
//    moveLegenda = false;
//    mouseX = -1;
//    mouseY = -1;
}

// função quando o botão do mouse é pressionado sobre a barra da legenda
function mouseDownBarraLegenda(e)
{
    // inicia o movimento da legenda
    moveLegenda = true;

    mouseX = e.clientX;
    mouseY = e.clientY;
}

// função quando o botão do mouse é soltado sobre a barra da legenda
function mouseUpBarraLegenda(e)
{
    // cancela o movimento da legenda
    moveLegenda = false;
    mouseX = -1;
    mouseY = -1;
}


// função quando o mouse é movimentado na página
document.onmousemove = function(e)
{

    if(IE)
        e = window.event;
    
    // calcula a diferença em X e Y em relação à posição anterior
    var difX = e.clientX - mouseX;
    var difY = e.clientY - mouseY;
    
    
    
    // atualiza as posições
    mouseX = e.clientX;
    mouseY = e.clientY;
    
    // se está no modo de movimento da legenda
    if(moveLegenda)
    {
        // obtém a div da legenda
        var div = document.getElementById("divLegendaMapa");
        
        // atualiza a posição X
        var left = div.style.left;
        if(left == "")
            left = LEGENDA_X_INI + "px";
        left = left.substr(0, left.length - 2);
        var posLeft = parseInt(left) + difX;
        div.style.left = posLeft + "px";
        
        // atualiza a posição Y
        var top = div.style.top;
        if(top == "")
            top = LEGENDA_Y_INI + "px";
        top = top.substr(0, top.length - 2);
        var posTop = parseInt(top) + difY;
        div.style.top = posTop + "px";
    }
}

// função para mostrar a div do Loading do mapa
function mostraDivCarregandoMapa(sender)
{
    // cont armazena o número de partes do mapa que falta carregar
    cont = sender.pendingTiles.length;
    document.getElementById("divCarregandoMapa").className = "divCarregandoMapaVisivel";
}

// função para esconder a div de Loading do mapa
function escondeDivCarregandoMapa(sender)
{
    // cont decrementa
    cont--;
    
    // se cont atingiu zero, acabou de carregar: esconde a div
    if(cont <= 0)
    {
        cont = 0;
        document.getElementById("divCarregandoMapa").className = "divCarregandoMapaInvisivel";
    }
}

// função para iniciar as funções de mostrar e esconder o Loading do mapa
function iniciaFuncoesCarregando()
{
    // se a página possui mapa, obtém o objeto e passa as funções correspondentes
    if(possuiMapa){
        map = Maps["ctl00_conteudo_mapa"];
        map.pendingTiles.add_onRequestsPending(mostraDivCarregandoMapa); 
        map.pendingTiles.add_onRequestsRemove(escondeDivCarregandoMapa); 
    }
    //map.pendingTiles.add_onRequestsCompleted(escondeDivCarregandoMapa); 
}

// mostra as divs de carregando
function mostraCarregandoAJAX()
{
    document.getElementById("divLoad").className = "divLoadVisivel";
    var altura = document.getElementById("divMapaInfo").style.height;
    var divCortina = document.getElementById("divCortina");
    
    // se a div Info está visível, mostra o carregando da ficha
    if(altura != "" && (divCortina.style.display == "" || divCortina.style.display == "none"))
    {
        altura = altura.substr(0, altura.length - 2);
        divCortina.style.display = "block";
        divCortina.style.top = "-"+(parseInt(altura) - 0)+"px";
        divCortina.style.height = altura + "px";
    }
}

// esconde as divs de carregando
function escondeCarregandoAJAX()
{
    document.getElementById("divLoad").className = "divLoadInvisivel";
    var divCortina = document.getElementById("divCortina");
    divCortina.style.display = "none";
}

// muda o tipo de mapa
function mudaMapa(tipoMapa)
{
    var codigoResultado = getCodigoResultado();
    var stringParam = "est=" + getCodigoEstado();
    var tipoResultado = "mun";
    if(codigoResultado > 0)
        stringParam = tipoResultado + "=" + codigoResultado;
        
    document.location = "Geral.aspx?" + stringParam + "&mapa=" + tipoMapa;
}

function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}


function mostraPopUpExplicativo(id, e)
{
    div = document.getElementById(id);
    var cursor = getPosition(e);
    if(div!=null)
    {
        div.style.display = "block";
        
        var curX = cursor.x + 10;
        var curY = cursor.y - div.offsetHeight - 5;
        
        div.style.top = curY + "px";
        div.style.left = curX + "px";
    }
}

function movePopUpExplicativo(id, e)
{
    div = document.getElementById(id);
    var cursor = getPosition(e);
    if(div!=null)
    {
        var curX = cursor.x + 10;
        var curY = cursor.y - div.offsetHeight - 5
        
        div.style.top = curY + "px";
        div.style.left = curX + "px";
        
        if(div.offsetWidth > 50)
        {
            div.style.width = "250px";
            div.style.height = "250px";
        }
    }
}

function escondePopUpExplicativo(id)
{
    div = document.getElementById(id);
    if(div!=null)
    {
        div.style.display = "none";
    }
}

function mostraDivCreditos(id, idEsconder, imgSeta)
{
    div = document.getElementById(id);
    if(div!=null)
    {
        if(div.style.display == "none" || div.style.display=="")
        {
            div.style.display = "block";
            escondePopUpExplicativo(idEsconder);
            //escondePopUpExplicativo(imgSeta);
        }
        else
        {
            //document.getElementById(idEsconder).style.display = "block";
            //document.getElementById(imgSeta).style.display = "inline";
            escondePopUpExplicativo(id);
        }
    }
    
}

function carregaTabela()
{
    CallServerResultados();
}

function ServerResponseResultados(result)
{
    var resultados = result.split("§");
    
    var conteudo = resultados[0];
    var divTexto = resultados[1];
    
    document.getElementById(divTexto).innerHTML = conteudo;
    document.getElementById(divTexto).style.display = "block";
    document.getElementById("divCarregandoTabela").style.display = "none";
    
}

function ServerResponseResultadosETE(result)
{
    var resultados = result.split("§");
    
    var conteudo = resultados[0];
    var conteudoETE = resultados[1];
    
    document.getElementById("divTextoInfoCelulaTabela").innerHTML = conteudo;
    document.getElementById("divTextoInfoCelulaTabela").style.display = "block";
    
    document.getElementById("divInfoETE").innerHTML = conteudoETE;
    document.getElementById("divInfoETE").style.display = "block";
    
    document.getElementById("divCarregandoTabela").style.display = "none";
    
}

function marcaLinhasRegiaoBrasil(regiao)
{
    for(i=0; i<50; i++)
    {
        var tr = document.getElementById("tr" + regiao + i);
        if(tr != null)
        {
            tr.className = "tabelaInfoAlter";
        }
    }
}

function desmarcaLinhasRegiaoBrasil(regiao)
{
    for(i=0; i<50; i++)
    {
        var tr = document.getElementById("tr" + regiao + i);
        if(tr != null)
        {
            tr.className = "";
        }
    }
}

function movimentaTabela(id)
{
    document.getElementById(id).scrollTop += (deslocamentoTabela * direcaoTabela);
}

function clickBotaoTabela(id, dir)
{
    direcaoTabela = dir;
    //movimentaTabela(id);
    timerBotaoTabela(id, 200)
}

function soltaBotaoTabela()
{
    direcaoTabela = 0;
}

function timerBotaoTabela(id, tempo)
{
    if(direcaoTabela != 0)
    {
        movimentaTabela(id);
        setTimeout("timerBotaoTabela('"+id+"',50)",tempo);
    }
    
}

function atualizaTamanhoDivRH(altura)
{
    document.getElementById("divTabelaInfoFixa").style.height = altura + "px";
}