/* Variáveis globais */
var bounds = new GLatLngBounds();
var map;
var matPontos = new Array();
var markCasa;

var icoProj1 = new GIcon(); var icoProj2 = new GIcon(); var icoProj3 = new GIcon();
var icoProj4 = new GIcon(); var icoProj5 = new GIcon(); var icoInter = new GIcon();

icoProj1.image = MEDIA_URL + "/mapa/imagens/icone-marcador-vermelho.png";
icoProj2.image = MEDIA_URL + "/mapa/imagens/icone-marcador-verde.png";
icoProj3.image = MEDIA_URL + "/mapa/imagens/icone-marcador-amarelo.png";
icoProj4.image = MEDIA_URL + "/mapa/imagens/icone-marcador-azul.png";
icoProj5.image = MEDIA_URL + "/mapa/imagens/icone-marcador-lilas.png";
icoInter.image = MEDIA_URL + "/mapa/imagens/icone-marcador-cinza.png";

icoProj1.shadow = icoProj2.shadow  = icoProj3.shadow = icoProj4.shadow = icoProj5.shadow = icoInter.shadow = MEDIA_URL + "mapa/imagens/icone-sombra.png";
icoProj1.iconSize = icoProj2.iconSize  = icoProj3.iconSize = icoProj4.iconSize = icoProj5.iconSize = icoInter.iconSize = new GSize(12, 20);
icoProj1.shadowSize = icoProj2.shadowSize  = icoProj3.shadowSize = icoProj4.shadowSize = icoProj5.shadowSize = icoInter.shadowSize = new GSize(22, 20);
icoProj1.iconAnchor = icoProj2.iconAnchor  = icoProj3.iconAnchor = icoProj4.iconAnchor = icoProj5.iconAnchor = icoInter.iconAnchor = new GPoint(6, 20);
icoProj1.infoWindowAnchor = icoProj2.infoWindowAnchor = icoProj3.infoWindowAnchor = icoProj4.infoWindowAnchor = icoProj5.infoWindowAnchor = icoInter.infoWindowAnchor = new GPoint(5, 1);


/******************************************/

function inciaGoogleMap()
{
    $('map').removeClass('mapacompleto');
    if (GBrowserIsCompatible())
    {
        map =  new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(-14.782928,-52.382812),4);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        var mini = new GOverviewMapControl();
        map.addControl(mini);
        mini.hide();
        map.addControl(new GScaleControl());
        map.checkResize();
    }
    else
        alert('Infelizmente seu navegador não é compatível com o GoogleMaps.');
}

/******************************************/

function criaPontoCasa()
{
  if (lat != null && lon != null)
  {
    var icoCasa = new GIcon();
    icoCasa.image = "imagens/icone-local.png";
    icoCasa.iconSize = new GSize(20, 20);
    icoCasa.iconAnchor = new GPoint(10, 10);
    icoCasa.infoWindowAnchor = new GPoint(8, 8);

    var MarkerOptions = new Object();

    MarkerOptions.icon = icoCasa;

    markCasa = new GMarker(new GLatLng(lat,lon), MarkerOptions);
    map.addOverlay(markCasa);
  }
}

/******************************************/

function criaPonto(ponto)
{
    var MarkerOptions = new Object();
    MarkerOptions.title = ponto.nom;

  if (typeof(ponto.ico) != 'undefined')
    MarkerOptions.icon = eval(ponto.ico);
  else
    MarkerOptions.icon = icoProj1;

    var marker = new GMarker(ponto.coo, MarkerOptions);
    bounds.extend(ponto.coo);

    GEvent.addListener(marker, "click", function(e) {abreBalao(ponto.id)});
    GEvent.addListener(marker, "mouseover", function(e) {});
    GEvent.addListener(marker, "mouseout", function(e) {});

  matPontos[ponto.id] = marker
  map.addOverlay(marker);
}

/******************************************/

function ajustaMapaPontos()
{
    map.setZoom(map.getBoundsZoomLevel(bounds));
    map.setCenter(bounds.getCenter());
}

/******************************************/

function limpaMapa()
{
  boolProcuraRealizada = true;
  map.clearOverlays();
  criaPontoCasa();
  bounds = new GLatLngBounds();
  removeShapesEstados();
}

/******************************************/

function abreBalao(id)
{
    map.panTo(matPontos[id].getLatLng());
    matPontos[id].openInfoWindowHtml('<div class="loading">Carregando detalhes...</div>');
    getDetalhesPonto(id);
    window.location.hash = '#id=' + id
}

/******************************************/

function getDetalhesPonto(id)
{
  var url = '/mapa/detalhes_telecentro?id=' + id
  new Ajax(url,
    {
          method: 'get',
          onComplete: exibeDetalhesPonto
    }
  ).request();
}

/******************************************/

function exibeDetalhesPonto(jsonResult)
{
    jsonData = eval("(" + jsonResult.replace(/\n/g,'').replace(/\r/g,'') + ")");
    var infoTabs = new Array();

    /* Monta a aba principal com as informações sobre o ponto */
    var tabPontoHtml = '<div class="infowindow">';
    tabPontoHtml += '<p class="programa">' + jsonData.marker.programa + '</p><h2>' + jsonData.marker.telecentro + '</h2>';
    tabPontoHtml += '<p class="entidade">' + jsonData.marker.entidade + '</p>';

    tabPontoHtml += '<p class="endereco">';

    if (jsonData.marker.endereco != "")
        tabPontoHtml += jsonData.marker.endereco + ', ' + jsonData.marker.bairro + '<br>';
    if (typeof(jsonData.marker.cep) == 'string' && jsonData.marker.cep != "")
        tabPontoHtml += 'CEP ' + jsonData.marker.cep + ', ';

    tabPontoHtml += jsonData.marker.municipio + ' - ' + jsonData.marker.uf + '</p>';

    if (jsonData.marker.telefones != "")
        tabPontoHtml += '<p class="tel">' + jsonData.marker.telefones + '</p>';

    if (typeof(jsonData.marker.email) == 'string' && jsonData.marker.email != "")
    {
    
        tabPontoHtml += '<p class="email">';
        tabPontoHtml += '<a href="mailto:' + jsonData.marker.email + '">' + jsonData.marker.email + '</a>';
        if (typeof(jsonData.marker.url) == 'string' && jsonData.marker.url != "")
            tabPontoHtml += ' - ';
        tabPontoHtml += '</p>';
    }

    if (typeof(jsonData.marker.depoimentosexta) == 'string' || typeof(jsonData.marker.depoimentosetima) == 'string')
    {
    tabPontoHtml += '<a class="act_toggledepoimento depoimento" href="javascript:void(0)">depoimentos</a> |'; 
    if (typeof(jsonData.marker.depoimentosexta) == 'string') {
        tabPontoHtml += '<div id="depoimento"><a class="act_toggledepoimento fecha" href="javascript:void(0)"></a> Depoimento da 6ª Oficina em Salvador - 2007<object style="margin-top:6px;" type="application/x-shockwave-flash" data="' + MEDIA_URL + 'dewplayer.swf?mp3=' + jsonData.marker.depoimentosexta + '" width="200" height="20"><param name="wmode" value="transparent" /><param name="movie" value="' + MEDIA_URL + '/dewplayer.swf?mp3=' + jsonData.marker.depoimentosexta + '" /> </object>'; 
    }
    if (typeof(jsonData.marker.depoimentosetima) == 'string') {
        tabPontoHtml += 'Depoimento da 7ª Oficina em Belém - 2008: <object style="margin-top:6px;" type="application/x-shockwave-flash" data="' + MEDIA_URL + 'dewplayer.swf?mp3=' + jsonData.marker.depoimentosetima + '" width="200" height="20"><param name="wmode" value="transparent" /><param name="movie" value="' + MEDIA_URL + '/dewplayer.swf?mp3=' + jsonData.marker.depoimentosetima + '" /> </object>';
    }
    tabPontoHtml += '</div>';
    }

    if (typeof(jsonData.marker.url) == 'string' && jsonData.marker.url != "")
    {
        tabPontoHtml += '<p>';
        tabPontoHtml += '<a href="';
        if (jsonData.marker.url.indexOf('http://') != 0)
            tabPontoHtml += 'http://';
        tabPontoHtml += jsonData.marker.url + '" target="_blank">' + jsonData.marker.url + '</a>';
        tabPontoHtml += '</p>';
    }
    tabPontoHtml += '<a class="act_togglelinkmapa link" href="javascript:void(0)">link no mapa</a>';
    tabPontoHtml += '<div id="linkmapa">';
    tabPontoHtml += '<a class="act_togglelinkmapa fecha" href="javascript:void(0)"></a>';
    tabPontoHtml += '<input type="text" value="http://mapa.onid.org.br/#id='+jsonData.marker.id+'">';
    tabPontoHtml += '</div>';
    tabPontoHtml += ' | <a class="act_form_correcao corrige" href="javascript:void(0)">corrigir dados</a>';
    tabPontoHtml += jsonData.formulario_correcao;
    

    infoTabs.push(new GInfoWindowTab("Telecentro", tabPontoHtml))

    /* Monta a aba de detalhes */
    if (typeof(jsonData.detalhes) == 'object') {
        var tabDetalhes = '<div class="infowindow">'
        tabDetalhes += '<p class="programa">' + jsonData.marker.programa + '</p><h2>' + jsonData.marker.telecentro + '</h2><div class="overflow">';
        tabDetalhes += jsonData.detalhes.valor;
        tabDetalhes += '</div></div>';

        infoTabs.push(new GInfoWindowTab("Detalhes", tabDetalhes));
    }


    /* Monta a aba do dataIpso */
    if (typeof(jsonData.dataipso) == 'string')
        infoTabs.push(new GInfoWindowTab("DataIPSO", jsonData.dataipso));

    matPontos[jsonData.marker.id].openInfoWindowTabsHtml(infoTabs);
    
    GEvent.addListener(matPontos[jsonData.marker.id], "infowindowopen", function(e)
        {
            detalhes_programas(jsonData.marker.detalhes_programa);
            prepara_depoimento()
            prepara_linkmapa()
            prepara_form_correcao()
        });
}

function prepara_linkmapa()
{
    $$('.act_togglelinkmapa').addEvent('click', function(e)
        {
            if ($('linkmapa').getStyle('visibility') == 'hidden')
                mostra_elemento('linkmapa')
            else
                apaga_elemento('linkmapa')
        }
    );
}

function prepara_form_correcao()
{
    $$('.act_form_correcao').addEvent('click', function(e) {
        if ($('form_correcao').getStyle('visibility') == 'hidden') {
            mostra_elemento('form_correcao');
            
            $$('#form_correcao a.fecha').addEvent('click', function(){
                apaga_elemento('form_correcao');
            });
        }
        else
            apaga_elemento('form_correcao')
    });
    
    $('form_correcao').removeEvents('submit');
    $('form_correcao').addEvent('submit', function(e)
    {
        var valida = function(){
            var campos = {
                nome: $$('#form_correcao #correcao_nome')[0],
                email: $$('#form_correcao #correcao_email')[0],
                telefone: $$('#form_correcao #correcao_telefone')[0],
                mensagem: $$('#form_correcao #msg')[0]
            }
            
            if ((typeof campos.nome !== 'undefined' && !campos.nome.getValue()) ||
                (typeof campos.email !== 'undefined' && !campos.email.getValue()) ||
                (!campos.telefone.getValue()) ||
                (!campos.mensagem.getValue())) {
                $$('#form_correcao .erro').setProperty('style', 'display:block;');
                return false;
            }
                
            return true;
        }
        
        var limpaErros = function(){
            $$('#form_correcao .erro').removeProperty('display')
        }
        
        new Event(e).stop();
        limpaErros();
        
        if (valida()) {
            $$('#form_correcao .campos').setStyle('display', 'none');
            var divMsg = $('mensagem_correcao').addClass('loading').appendText('Enviando..');;
            $(this).send({
                update: divMsg,
                onComplete: function() {
                    divMsg.removeClass('loading');
                }
            });
        }
    });
}

function prepara_depoimento()
{
    $$('.act_toggledepoimento').addEvent('click', function(e)
        {
            if ($('depoimento').getStyle('visibility') == 'hidden')
                mostra_elemento('depoimento')
            else
                apaga_elemento('depoimento')
        }
    );

}

function detalhes_programas(obj){
  $$('.programas').addEvent('click', function(){

    apaga_elemento('balao_programas', 100);

    var programa_id = $$(this).getProperty('programa_id');

    $('balao_programas').setHTML("<img id='fecha_balao_programas' src='http://maps.google.com/intl/en_ALL/mapfiles/iw_close.gif'/>"+obj[programa_id]);
    mostra_elemento('balao_programas');
    fecha_balao_programas();
  });
}

function fecha_balao_programas(){
  $('fecha_balao_programas').addEvent('click', function(){
    apaga_elemento('balao_programas');
  });
}

function balaoProgramasToggle(acao)
{

  if ($type(acao) != 'number')
  {
    if ($('balao_programas').getStyle('visibility') == 'hidden')
      acao = 1;
    else
      acao = 0;
  }

  if (acao)
  {
    if ($('balao_programas').getStyle('visibility') == 'hidden')
      $('balao_programas')
          .effect('opacity', {duration:400, transition:Fx.Transitions.linear})
          .start(0,1);
  }
  else
  {
    if ($('balao_programas').getStyle('visibility') != 'hidden')
      $('balao_programas')
        .effect('opacity', {duration:400, transition:Fx.Transitions.linear})
        .start(1,0);
  }

}

function apaga_elemento(id, duracao){
    if(!duracao)
        duracao = 400;
    $(id)
        .effect('opacity', {duration: duracao, transition:Fx.Transitions.linear})
        .start(1,0);
}

function mostra_elemento(id, duracao){
    if(!duracao)
        duracao = 400;
  $(id)
        .effect('opacity', {duration: duracao, transition:Fx.Transitions.linear})
        .start(0,1);
}
