//--------------------------------------------------
var wh=0;
var showtippok;
var tipptext;
var mouse_x, mouse_y;
//--------------------------------------------------
var _painelLayersClicked = false;
var iTimerID = null;
//--------------------------------------------------
var ns4 = (document.layers)? true:false;
var ns6 = (document.getElementById)? true:false;
var ie = (document.all)? true:false;
var moz=!(document.all);
var ie5 = false;
var ie6 = false;
var ie7 = false;
//--------------------------------------------------
var _SERVER_NAME_   = "http://"+ location.host;
var _WEBRAIOS_HREF_ = _SERVER_NAME_ + "/webraios/wr_portal/";
var _TIME_OUT_LAYER_SELECT_ID_ = null;
var _TIME_OUT_LAYER_SELECT_    = 1;
var _TIME_RELOAD_MAP_ID_ = null;
var _TIME_RELOAD_MAP_ = 300000;
//--------------------------------------------------
var _SCRIPT_ATUALIZAR_DATA_MAPA_        = _WEBRAIOS_HREF_ +"php/atualizar_data_mapa.php";
var _SCRIPT_GET_IMAGE_PNG_STATE_SELECT_ = "getImagePNGStationSelect.php?";
var _SCRIPT_GERA_IMAGEM_ESTAT_ = "/webraios/sensores/gerarImagemEstatisticas.php";
var _SCRIPT_VERIFICAR_NUMERO_DESCARGAS_ = _WEBRAIOS_HREF_ +"verificarNumeroDescargas.php";
//--------------------------------------------------
var _imgEstatTop = 445;
var _imgEstatLeft = 445;
//--------------------------------------------------
function frmProcessDebug(_data) {
    getIframeContent("frmProcess").body.innerHTML += _data;
}

function _cacheImages(_images) {
  for (var i=0; i<_images.length; i++) {
      var _imageCache = new Image();
      _imageCache.src = _images[i];
  }
}

if (ie) {
    if (navigator.userAgent.indexOf('MSIE 5') > 0)
        ie5 = true;
    else
      if (navigator.userAgent.indexOf('MSIE 6') > 0)
          ie6 = true;
      else
        if (navigator.userAgent.indexOf('MSIE 7') > 0)
            ie7 = true;
    if (ns6)
        ns6 = false;
}

function $( _id) {
    return document.getElementById( _id);
}
function P$( _id) {
    return parent.document.getElementById( _id);
}
function PP$( _id) {
    return parent.parent.document.getElementById( _id);
}
function N$(tag, _name) {
    var elem = document.getElementsByTagName(tag);
    var arr = new Array();
    for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == _name) {
              arr[iarr] = elem[i];
              iarr++;
          }
    }
    return arr;
}
function EN$(tag, _name) {
    return N$(tag, _name)[0];
}
function IfrmN$(IfrmID,tag, _name) {
    var elem = getIframeContent(IfrmID).getElementsByTagName(tag);
    var arr = new Array();
    for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == _name) {
              arr[iarr] = elem[i];
              iarr++;
          }
    }
    return arr;
}
function IfrmEN$(IfrmID, tag, _name) {
    return IfrmN$(IfrmID, tag, _name)[0];
}
function ENIfrm$(IfrmID, tag, _name) {
    return ie ? IfrmEN$(IfrmID,tag, _name) : getIframeContent(IfrmID).getElementsByName(_name)[0];
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function createXMLHttpRequest() {
    try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
    try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
    try { return new XMLHttpRequest(); } catch(e) {}
    alert("XMLHttpRequest not supported");
    return null;
}
//---------------------------------------------------------------------------------
function getIframe( iframe_id){
  if(moz) return $(iframe_id) ? $(iframe_id) : P$(iframe_id);
  else return frames[iframe_id] ? frames[iframe_id] : parent.frames[iframe_id];
}
function getIframeContent( iframe_id){
  if(moz) return $(iframe_id) ? $(iframe_id).contentDocument : P$(iframe_id).contentDocument;
  else return frames[iframe_id] ? frames[iframe_id].document : parent.frames[iframe_id].document;
}
function getIfrmElem( iframe_id, elem_id){
  return !getIframeContent(iframe_id).getElementById(elem_id) ? P$(elem_id):getIframeContent(iframe_id).getElementById(elem_id);
}
function gerarImagemEstatisticaEstadoSelecionado(_regiao) {
    var _navParam = "?regiao="+_regiao;
    if (!ie) _navParam += "&nav=notIE";
    else if (ie6) _navParam += "&nav=ie6";
    else if (ie7) _navParam += "&nav=ie7";
    P$("imgEstat").src = _SCRIPT_GERA_IMAGEM_ESTAT_+_navParam;
//     xMoveTo("imgEstat", 435, 450);
}
function atualizarImagemEstatisticaBrasil() {
    var _navParam = "?regiao=BR";
    if (!ie) _navParam += "&nav=notIE";
    else if (ie6) _navParam += "&nav=ie6";
    else if (ie7) _navParam += "&nav=ie7";
    P$("imgEstat").src = _SCRIPT_GERA_IMAGEM_ESTAT_+_navParam;
    P$("imgEstat").style.top  =_imgEstatTop+"px"
    P$("imgEstat").style.left =_imgEstatLeft+"px";
}
//---------------------------------------------------------------------------------
function janela_ajuda( _id) {
    var url = _WEBRAIOS_HREF_ +'ajuda.php';
    if ( _id != '')
        url += _id;
    window.open( url, "_blank", "resizable=no,width=520,height=500,top=50,left=100");
}
//---------------------------------------------------------------------------------
function ativarPainelStatic() {
    /*
    return;
    var _painelStatic=getIfrmElem("mapIframe","painelStatic");
    _painelStatic.style.position="absolute";
    _painelStatic.style.top="0px";
    _painelStatic.style.left="0px";
    _painelStatic.style.width="100%";
    _painelStatic.style.height="38px";
    _painelStatic.style.zIndex=1000;
    _painelStatic.style.background="white";
    if (ie)_painelStatic.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=60)";
    else _painelStatic.style.MozOpacity = 0.6;
    */
}
function desativarPainelStatic() {
    /*
    return;
    var _painelStatic=getIfrmElem("mapIframe","painelStatic");
    _painelStatic.style.position="absolute";
    _painelStatic.style.top="-10px";
    _painelStatic.style.left="-10px";
    _painelStatic.style.width="1px";
    _painelStatic.style.height="1px";
    _painelStatic.style.zIndex=1;
    */
}
//---------------------------------------------------------------------------------
function ativarProcessando() {
    var _docRootMapa_ = getIframeContent("mapIframe");
//     _docRootMapa_.getElementById("clsPageGreyDiv").style.display = "block";
    _docRootMapa_.getElementById("clsPageGreyMsg").style.display = "block";
}
//---------------------------------------------------------------------------------
function desativarProcessando() {
    var _docRootMapa_ = getIframeContent("mapIframe");
//     _docRootMapa_.getElementById("clsPageGreyDiv").style.display = "none";
    _docRootMapa_.getElementById("clsPageGreyMsg").style.display = "none";
}
//---------------------------------------------------------------------------------
function atualizarLayersMapserver() {
    var _docRootMapa_ = getIframeContent("mapIframe");
    var _queryString = montarMapservQueryStringMap();
    //-------------------------------------------------
    _TIME_OUT_LAYER_SELECT_ID_= null;
    _TIME_RELOAD_MAP_ID_ = null;
    ativarPainelStatic();
    ativarProcessando();
    getIfrmElem("mapIframe","imgMap").src = $("mapserv").program.value +"?"+_queryString;
//     frmProcessDebug(getIfrmElem("mapIframe","imgMap").onload);
}
function atualizarLayersMapserverEstadoSelect() {
    var _docRootMapa_ = getIframeContent("mapIframe");
    var _mapservInputs = montarArrayMapservHiddenInputs(_docRootMapa_);
    //++++++++++++++++++++++++++++ Query String para obter somente a imagem e substituí-la +++++++++++++++++++++++++++++++++++++
    var _queryStringEstadoSelect="map="+_mapservInputs["estado_select_map"]+"&mapext=shapes&qitem=sigla&qstring="+_mapservInputs["sigla_esc"]+
                                  "&mode=itemquerymap&qlayer=estado_selecionado&layers="+_mapservInputs["layers"];
    _TIME_OUT_LAYER_SELECT_ID_= null;
    _TIME_RELOAD_MAP_ID_ = null;
    ativarPainelStatic();
    ativarProcessando();
    getIfrmElem("mapIframe","imgMap").src = _SCRIPT_GET_IMAGE_PNG_STATE_SELECT_+_queryStringEstadoSelect;
}
//-------------------------------------------------------------------------------
function montarArrayMapservHiddenInputs( _pFrm) {
    var _inputsHidden  = _pFrm.getElementsByTagName("input");
    var _mapservInputs = new Array();
    
    for (idx = 0; idx < _inputsHidden.length; idx++) {
        if (_inputsHidden[idx].type == "hidden") {
            _mapservInputs[_inputsHidden[idx].name] = _inputsHidden[idx].value;
        }
    }
    return _mapservInputs;
}
function montarMapservQueryStringMap() {
    var _inputsHidden  = document.getElementsByTagName("input");
    var _query_string = "";
    
    for (idx = 0; idx < _inputsHidden.length; idx++) {
        if (_inputsHidden[idx].type == "hidden") {
            if (_inputsHidden[idx].name == "mode")
                _inputsHidden[idx].value = "map";
            _query_string += "&"+ _inputsHidden[idx].name +"="+ _inputsHidden[idx].value;
        }
    }
    return _query_string;
}
//-------------------------------------------------------------------------------
function processa_click() {
    var _docRootMapa_ = getIframeContent("mapIframe");
    var _mapserv = _docRootMapa_.forms[0];
    var _mapservInputs = montarArrayMapservHiddenInputs(_docRootMapa_);
    var _queryStringQLayer = _mapservInputs["program"]+"?map="+_mapservInputs["map"]+"&imgext="+_mapservInputs["imgext"]+"&mode=query";
    _queryStringQLayer += "&qlayer=exec_query_estado_select";
    _mapserv.action = _queryStringQLayer;
    _mapserv.target = getIframe("frmProcess").name;
}
//---------------------------------------------------------------------------------
function atualizarDataMapa() {
    var xmlhttp    = new createXMLHttpRequest();
    var data_label = "Atualizada em: ";
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4)
            if (xmlhttp.status == 200)
                getIfrmElem("mapIframe","mapa_data").innerHTML = data_label + xmlhttp.responseText + " GMT";
    };
    xmlhttp.open("GET", _SCRIPT_ATUALIZAR_DATA_MAPA_, true);
    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xmlhttp.send(null);
}
function atualizarDadosMapa() {
    var  _docRootMapa_ = getIframeContent("mapIframe");
    var _mapserv       = _docRootMapa_.forms[0];
    var _ckbsSelected  = _mapserv.layers.value.split(" ");
    
    for (var idx=0; idx < _ckbsSelected.length; ++idx)
        _docRootMapa_.getElementById(_ckbsSelected[idx]).checked = true;
    atualizarDataMapa();
}
//---------------------------------------------------------------------------------
function restaurarMapa() {
    var _docRootMapa_ = getIframeContent("mapIframe");
    var _mapserv      = _docRootMapa_.getElementById("mapserv");
    var _queryString  = Base64.decode(_mapserv._queryStringInit.value);
    //---------------- Atualiza vars CGI -------------------------
//     ENIfrm$("mapIframe","input","layers").value = _inputsHiddenArray["layers"]; //--- Restaura layers iniciais
    ENIfrm$("mapIframe","input","flagEstadoSelect").value = 0;
    _queryString += "&layers="+ ENIfrm$("mapIframe","input","layers").value;
//     _mapxy = ENIfrm$("mapIframe","mapxy");
//     _sigla_esc = ENIfrm$("mapIframe","sigla_esc");
//     _docRootMapa_.removeChild(_mapxy);
//     _docRootMapa_.removeChild(_sigla_esc);
    //------------------------------------------------------------------------------------
    getIfrmElem("mapIframe","imgMap").src = _SCRIPT_GET_IMAGE_PNG_STATE_SELECT_+_queryString;
    getIfrmElem("mapIframe","imgMap").onclick = function onclick(event) {
        clearInterval(_TIME_RELOAD_MAP_ID_);
        _TIME_RELOAD_MAP_ID_ = null;
        processa_click();
        ativarProcessando();
        ativarPainelStatic();
        return true;
    };
    getIfrmElem("mapIframe","imgMap").onload = function() {
//         getIfrmElem("frmProcess","debugMsg").innerHTML += "Map Reloaded...<br />";
        atualizarImagemEstatisticaBrasil();
        atualizarDataMapa();
        
        if (!_TIME_RELOAD_MAP_ID_) {
            _TIME_RELOAD_MAP_ID_ = setInterval("wrMapaReloadFrm()", _TIME_RELOAD_MAP_);
            desativarProcessando();
        }
    };
}
//---------------------------------------------------------------------------------
function wrMapaReload() {
    var _layers = "&layers="+ ENIfrm$("mapIframe","input","layers").value;
    var _queryStringReloadMap = Base64.decode(ENIfrm$("mapIframe","input","_queryStringInit").value);
    getIfrmElem("mapIframe","imgMap").src = "getImagePNGStationSelect.php?"+_queryStringReloadMap + _layers +"&_id="+ Math.random();
    
}
function wrMapaReloadFrm() {
    var _layers = "&layers="+ ENIfrm$("mapIframe","input","layers").value;
    var _queryStringReloadMap = Base64.decode(ENIfrm$("mapIframe","input","_queryStringInit").value);
    getIfrmElem("mapIframe","imgMap").src = "getImagePNGStationSelect.php?"+_queryStringReloadMap + _layers +"&_id="+ Math.random();
    
}
function wrMapUpdateStateSelect() {
    var _itemQueryMapString = Base64.decode(ENIfrm$("mapIframe","input","itemQueryMapString").value);
    var _layers = "&layers="+ ENIfrm$("mapIframe","input","layers").value;
    getIfrmElem("mapIframe","imgMap").src = _SCRIPT_GET_IMAGE_PNG_STATE_SELECT_+_itemQueryMapString + _layers +"&_id="+ Math.random();
}
function submit_layers( _ckbClicked) {
    var _mapserv     = document.forms[0];
    var _mode        = _mapserv.mode;
    var _ckbImgEstat = "ckbImgEstat";

    if ( _ckbClicked.id == _ckbImgEstat ) {
        if (_ckbClicked.checked) P$("imgEstat").style.visibility="visible";
        else P$("imgEstat").style.visibility="hidden";
        
        return;
    }
    
    verificar_layers();
    if (_mode.value == "query") {
        _mode.value = "browse";
    }
    if (!_TIME_OUT_LAYER_SELECT_ID_) {
//         _TIME_RELOAD_MAP_ID_ = getIfrmElem("mapIframe","_TIME_RELOAD_MAP_ID_").value;
//         alert(_TIME_RELOAD_MAP_ID_)
//         clearTimeout(_TIME_RELOAD_MAP_ID_);
//         _TIME_RELOAD_MAP_ID_ = null;
        if (getIfrmElem("mapIframe","flagEstadoSelect").value == 0)
            _TIME_OUT_LAYER_SELECT_ID_ = setTimeout("atualizarLayersMapserver()", _TIME_OUT_LAYER_SELECT_);
        else _TIME_OUT_LAYER_SELECT_ID_ = setTimeout("atualizarLayersMapserverEstadoSelect()", _TIME_OUT_LAYER_SELECT_);
    }
}
function verificarNumeroDescargas() {
    var xmlhttp = new createXMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            if (xmlhttp.responseText == 0) {
                $("statusDescargas").innerHTML = "Não há ocorrência de descargas atmosféricas no momento!";
                $("statusDescargas").style.visibility = "visible";
            }
            else {
                $("statusDescargas").innerHTML = "";
                $("statusDescargas").style.visibility = "hidden";
                wrMapaReload(); //TODO: nova inclusão de instrução para teste...
            }
        }
    };
    xmlhttp.open("GET", _SCRIPT_VERIFICAR_NUMERO_DESCARGAS_, true);
    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xmlhttp.send(null);
}
function start_mapserv(_query_string) {
    var xmlhttp  = new createXMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
            
        if ( xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            getIframeContent("mapIframe").body.innerHTML = xmlhttp.responseText;
            getIfrmElem("mapIframe","imgMap").src = getIfrmElem("mapIframe","imgMapa").value;
            $("statusDescargas").style.top = (ie) ? getIfrmElem("mapIframe","mapaContainer").offsetTop + getIfrmElem("mapIframe","mapa_data").offsetHeight +"px" :
                                                    getIfrmElem("mapIframe","mapaContainer").offsetTop + getIfrmElem("mapIframe","mapa_data").offsetHeight + 12 +"px";
            verificarNumeroDescargas();
            getIfrmElem("mapIframe","imgMap").onload = function() {
                desativarProcessando();
                atualizarDadosMapa();
                if (!_TIME_RELOAD_MAP_ID_) {
                    _TIME_RELOAD_MAP_ID_ = setInterval("wrMapaReload()", _TIME_RELOAD_MAP_);
                }
                xStyle("visibility", "visible", "imgEstat");
            };
            getIfrmElem("mapIframe","imgMap").onclick = function() {
                clearInterval(_TIME_RELOAD_MAP_ID_);
                _TIME_RELOAD_MAP_ID_ = null;
                processa_click();
                ativarProcessando();
                return true;
            };
        }
    };
    xmlhttp.open("GET", _query_string, true);
    xmlhttp.send(null);
}
function gerarImagemEstatisticaBrasil() {
    var _navParam = "?regiao=BR";
    var x1=0,y1=30,x2,y2;
    if (!ie) _navParam += "&nav=notIE";
    else if (ie6) _navParam += "&nav=ie6";
    else if (ie7) _navParam += "&nav=ie7";
    $("imgEstat").src = _SCRIPT_GERA_IMAGEM_ESTAT_+_navParam;
    x2=$("mapIframe").offsetWidth;
    y2=$("mapIframe").offsetHeight + 10;
    xEnableDrag2("imgEstat", null,null,null, x1,y1,x2,y2);
    xMoveTo("imgEstat", _imgEstatTop, _imgEstatLeft);
}
function verificar_layers() {
    var _mapserv       = document.forms[0];
    var layers         = _mapserv.layers;
    var _camadasLayer  = _mapserv.mapLayer;
    var _ckbRaiosLayer = _mapserv.ckbRaiosLayer;
    var _layersArray = new Array();
    
    for (var idx = 0; idx < _ckbRaiosLayer.length; idx++) {
        if (_ckbRaiosLayer[idx].checked)
            _layersArray.push(_ckbRaiosLayer[idx].id);
    }
    for (var i = 0; i < _camadasLayer.length; i++) {
        if ( _camadasLayer[i].checked)
            _layersArray.push(_camadasLayer[i].id);
    }
    layers.value = _layersArray.join(" ");
}
function atualizar_data_cliente() {
    var d, s = "Atualizada em: ";
    var _dia, _mes, _ano, _hora, _min;

    d = new Date();    
    _dia = d.getDate().toString();
    if (_dia.length == 1)
        _dia = "0" + _dia;
    
    s += _dia + "/";
    _mes = (d.getMonth() + 1).toString();
    if (_mes.length == 1)
        _mes = "0" + _mes;
        
    s += _mes + "/";
    if ( !ie) {
        var YE = Math.round(d.getTime() / 31556952000) + 1970;
        _ano = YE + (d.getYear()-YE)%100;
    }
    else _ano = d.getYear().toString();
    
    s += _ano + "  ";
    _horaGMT = d.getHours() + 3;
    _hora = _horaGMT.toString();
    if (_hora.length == 1)
        _hora = "0" + _hora;
    
    s += _hora + ":";
    
    _min = d.getMinutes().toString();
    if (_min.length == 1)
        _min = "0" + _min;
    
    s += _min;
    s += "  GMT";
}
/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
var Base64 = {
  // private property
  _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

  // public method for encoding
  encode : function (input) {
    var output = "";
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    var i = 0;

    input = Base64._utf8_encode(input);

    while (i < input.length) {

      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
        enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
        enc4 = 64;
      }

      output = output +
      this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
      this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

    }

    return output;
  },

  // public method for decoding
  decode : function (input) {
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

    while (i < input.length) {

      enc1 = this._keyStr.indexOf(input.charAt(i++));
      enc2 = this._keyStr.indexOf(input.charAt(i++));
      enc3 = this._keyStr.indexOf(input.charAt(i++));
      enc4 = this._keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
        output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
        output = output + String.fromCharCode(chr3);
      }

    }

    output = Base64._utf8_decode(output);

    return output;

  },

  // private method for UTF-8 encoding
  _utf8_encode : function (string) {
    string = string.replace(/\r\n/g,"\n");
    var utftext = "";

    for (var n = 0; n < string.length; n++) {

      var c = string.charCodeAt(n);

      if (c < 128) {
        utftext += String.fromCharCode(c);
      }
      else if((c > 127) && (c < 2048)) {
        utftext += String.fromCharCode((c >> 6) | 192);
        utftext += String.fromCharCode((c & 63) | 128);
      }
      else {
        utftext += String.fromCharCode((c >> 12) | 224);
        utftext += String.fromCharCode(((c >> 6) & 63) | 128);
        utftext += String.fromCharCode((c & 63) | 128);
      }

    }

    return utftext;
  },

  // private method for UTF-8 decoding
  _utf8_decode : function (utftext) {
    var string = "";
    var i = 0;
    var c = c1 = c2 = 0;

    while ( i < utftext.length ) {

      c = utftext.charCodeAt(i);

      if (c < 128) {
        string += String.fromCharCode(c);
        i++;
      }
      else if((c > 191) && (c < 224)) {
        c2 = utftext.charCodeAt(i+1);
        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
        i += 2;
      }
      else {
        c2 = utftext.charCodeAt(i+1);
        c3 = utftext.charCodeAt(i+2);
        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
        i += 3;
      }

    }

    return string;
  }

}

