$(document).ready(function(){
    infos = {
        baseURL: '/mapa-de-cobertura/',
        textoCarregando: 'Carregando...',
        textoRede: 'Rede ',
        textoNotOk: 'Escolha sua localidade ao lado.',
        charSplit: ',',
        textoPaisEstado: {
          'naci': 'Estado escolhido:',
          'inte': 'País escolhido:'
        }
    }
    
    objects = {
        ok: $(".ok"),
        notOk: $(".not-ok"),
        infoRede: $('#info-rede'),
        paisEstado: $('#pais-estado'),
        listaPais: $("#lista-pais"),
        nomeEstado: $('#nome-estado')
    }
    
    objects.ok.hide();
    
    function pega_pais(index) {
        
        index = index.split(infos.charSplit)
        objects.infoRede.text(infos.textoRede + index[2]);
        objects.ok.hide();
        objects.notOk.text(infos.textoCarregando).show();
        $("#lista-pais li, #lista-cidade li, #resultado-busca li").remove();
        objects.paisEstado.text(infos.textoPaisEstado[index[1]])
        $.getJSON(infos.baseURL+'rede-'+index[0],
            function(data){ 
              $.each(data, function(i,item){ 
                objects.listaPais.append('' +
                  '<li>' +
                  '  <input type="radio" name="opA" id="opA-' + item.pk + '" value="'+item.pk+','+item.fields.abreviacao+'">' +
                  '  <label>' + item.fields.nome + '</label>' +
                  '  <div class="clear"></div>' +
                  '</li>' +
                '');
                $("#opA-"+item.pk).click(function() {
                    pega_cidade($(this).val().split(',')[0]);
                    objects.nomeEstado.text($(this).val().split(',')[1]);
                });
                if (i==0) {
                    $("#opA-"+item.pk).attr("checked", "checked").trigger("click");
                }
            });
            objects.notOk.text(infos.textoNotOk).show();
        });
        
    }
    
    function pega_cidade(index) {
        objects.ok.hide();
        objects.notOk.text(infos.textoCarregando).show();
        $("#lista-cidade li, #resultado-busca li").remove();
        $.getJSON(infos.baseURL+'pais-'+index,
            function(data){$.each(data, function(i,item){
                $("#lista-cidade").append('' +
                  '<li>' +
                  '  <input type="checkbox" name="opB" id="opB-' + item.pk + '" value="' + item.pk + '">' +
                  '  <label>' + item.fields.nome + '</label>' +
                  '  <div class="clear"></div>' +
                  '</li>'+
                '');
                $("#opB-"+item.pk).click(function() {
                    pega_empresa();
                });
            });
            
            if ($("#lista-cidade li").length==1) {
                    $("#lista-cidade li input").attr("checked", "checked");
                    pega_empresa();
            }
            objects.notOk.text(infos.textoNotOk).show();
        });
    }
    
    function pega_empresa() {
        objects.ok.hide();
        objects.notOk.text(infos.textoCarregando).show();
        $("#resultado-busca li").remove();
        var cidades = Array();
        $("input[name='opB']:checked").each(function (i) {
            cidades[i] = $(this).val();
        });
           
        $.getJSON(infos.baseURL+'cidade-'+cidades.join(','),
            function(data){$.each(data, function(i,item){
              if (item.empresas.length>0) {
                html = '' +
                  '<li>' +
                  '  <h4><strong>' + item.cidade + ' - ' + item.pais_abreviado + '</strong></h4>' +
                  '  <ul>' +
                '';
                
                $.each(item.empresas, function(i,empresa){
                    html += '' +
                      '    <li>' +
                      '      <p><strong>' + empresa.nome + '</strong></p>' +
                      '      <p>' + empresa.telefone + '</p>' +
                      '      <p>' + empresa.localizacao + '</p>' +
                      '    </li>' +
                    '';
                });
                
                html += '' +
                  '  </ul>' +
                  '</li>' +
                '';
                $("#resultado-busca").append(html);
              }
            });
            num = $("#resultado-busca li p strong").length;
            if (num>0) {
                $('#numero-resultado').text(num);
                objects.ok.show();
                objects.notOk.hide();
            } else {
                objects.ok.hide();
                objects.notOk.text(infos.textoNotOk).show();
            }
        });
    }
    
    $('#select-rede').change(function(){
        if($(this).val() == "1,naci,SIBEM"){
            pega_pais($(this).val());
            $("#siem").hide();
            $("#texto-descritivo, .lista-opcoes").show();
        } else {
            $("#siem").show();
            $("#texto-descritivo, .lista-opcoes").hide();
        }
        
    }).trigger("change");
});