function indicador(id, tipo, endereco){
    if ($('#a'+tipo+'_'+id).html()=='minimizar'){
        ocultar(id,tipo);
    } else {
        exibir(id, tipo, endereco);
    }
}

function ocultar(id,tipo){
    var textos = {'mais':'mais informações','map':'mapa de localização'}
    $('#'+tipo+'_'+id).slideToggle();
    $('#a'+tipo+'_'+id).html(textos[tipo]);
    $('#ind_'+id).css('background-color','#FFF');
}

function exibir(id,tipo,endereco){
    var tipos = new Array('mais','map');
    var aux;
    //Minimiza todos os conteudos que possam estar abertos antes de exibir o solicitado
    for (x=0;x<tipos.length;x++){
        aux = $('#a'+tipos[x]+'_'+id);
        if (aux.html()=='<B>minimizar</B>' || aux.html()=='<b>minimizar</b>'){
            ocultar(id,tipos[x]);
            //se o conteudo que foi minimizado é o que foi solicitado sai da funcao
            if (tipos[x]==tipo){
                return false;
            }
        }
    }
    /*exibe o conteudo solicitado*/

    //cria mapa dinamicamente da empresa
    if (tipo=='map' && endereco){
        mapa(id,endereco);
    }
    //da destaque a cor de fundo da opção que vai ser exibida e executa função para isso
    $('#ind_'+id).css('background-color','#DFEFFF');
    $('#'+tipo+'_'+id).slideToggle();
    //muda o link da opcao aberta
    $('#a'+tipo+'_'+id).html('<B>minimizar</B>');
}

function ajaxBuscarCep(){
    var cep = $('#id_cd_cep_endereco').val();
    cep = cep.replace('-','');
    getElement('id_nm_bairro').disabled = true;
    if (cep.length==8 && !isNaN(parseInt(cep))){
        var url = '/ajax-buscar-cep/?cep='+ cep;
        var sucess = function(data){
            if (data.bairro){
                //mensagem('',false,'msgCep');
                //getElement('msgCep').className = '';
                getElement('id_nm_bairro').value = data.bairro;
                getElement('id_nm_cidade').value = data.cidade;
                getElement('id_cd_estado').value = data.uf;
                /*getElement('bairro_' + cd).value = data.bairro;
                getElement('cidade_' + cd).value = data.cidade;
                getElement('uf_' + cd).value = data.uf;*/
            } else if (data.cidade){
                getElement('id_nm_cidade').value = data.cidade;
                getElement('id_cd_estado').value = data.uf;
                getElement('id_nm_bairro').value = '';
                getElement('id_nm_bairro').disabled = false;
                getElement('id_nm_bairro').focus();
            }else{
                getElement('id_nm_bairro').value = '';
                getElement('id_nm_cidade').value = '';
                getElement('id_cd_estado').value = '';
                /*getElement('bairro_' + cd).value = '';
                getElement('cidade_' + cd).value = '';
                getElement('uf_' + cd).value = '';*/
                //mensagem(data.erro,false,'msgCep');
                alert(data.erro);
            }
            getElement('id_cd_cep_endereco').disabled = false;
        }
        getElement('id_nm_bairro').value = 'carregando...';
        getElement('id_nm_cidade').value = 'carregando...';
        getElement('id_cd_estado').value = 'carregando...';
        getElement('id_cd_cep_endereco').disabled = true;
        $.getJSON(url,sucess);
    }else{
        //mensagem('',false,'msgCep');
        //getElement('msgCep').className = '';
        getElement('id_nm_bairro').value = '';
        getElement('id_nm_cidade').value = '';
        getElement('id_cd_estado').value = '';
        /*getElement('bairro_' + cd).value = '';
        getElement('cidade_' + cd).value = '';
        getElement('uf_' + cd).value = '';*/
    }
}

/*function ajaxBuscarCidades(){
    var uf = $('#id_cd_estado').val();
    var url = '/ajax-buscar-cidades/';
    var sucesso = function (resp){
        var options = '<option value="" selected="selected">[ Selecione uma cidade ]</option>';
        if (resp.cidades){
            var cidades = resp.cidades;
            for (x=0;x<cidades.length;x++){
                options += '<option value="'+cidades[x]+'">'+cidades[x]+'</option>';
            }
            $('#id_nm_cidade_endereco').html(options);
            $('#id_nm_cidade_endereco').attr('disabled',false);
        } else {
            $('#id_nm_cidade_endereco').html('');
        }
    }
    $('#id_nm_cidade_endereco').attr('disabled',true);
    $('#id_nm_bairro_endereco').attr('disabled',true);
    $('#id_nm_cidade_endereco').html('<option value="">carregando...</option>');
    $('#id_nm_bairro_endereco').html('');
    $.post(url,{uf:uf},sucesso,'json');
}



function ajaxBuscarBairros(){
    var uf = $('#id_cd_estado').val();
    var cidade = $('#id_nm_cidade_endereco').val();
    var url = '/ajax-buscar-bairros/';
    var sucesso = function (resp){
        var options = '<option value="" selected="selected">[ Selecione um bairro ]</option>';
        if (resp.bairros){
            var bairros = resp.bairros;
            for (x=0;x<bairros.length;x++){
                options += '<option value="'+bairros[x]+'">'+bairros[x]+'</option>';
            }
            $('#id_nm_bairro_endereco').html(options);
            $('#id_nm_bairro_endereco').attr('disabled',false);
        } else {
            $('#id_nm_bairro_endereco').html('');
        }
    }
    $('#id_nm_bairro_endereco').attr('disabled',true);
    $('#id_nm_bairro_endereco').html('<option value="">carregando...</option>');
    $.post(url,{uf:uf,cidade:cidade},sucesso,'json');
}*/

function relacionarMaterias(){
    exibirMenu('materias','ic_buffet');
    var valor = (getElement('ic_buffet').innerHTML=='(+)')? 'True':'False';
    getElement('id_ic_buffet').value=valor;
}

function fck(){
    var oFCKeditor = new FCKeditor( 'ds_materia' ) ;
    oFCKeditor.BasePath = "/fckeditor/" ;
    oFCKeditor.Config["AutoDetectLanguage"] = false ;
    oFCKeditor.Config["DefaultLanguage"] = "pt-br" ;
    oFCKeditor.ToolbarSet = "Custom";
    oFCKeditor.ReplaceTextarea();
}

function formObrigatorios(){
    var labels = getByTag('label');
    for (x=0;x<labels.length;x++){
        txt = labels[x].innerHTML;
        txt = txt.replace('*','<font color="#ff0000">*</font>');
        labels[x].innerHTML = txt;
    }
}

function verificarMenus(div){
    if (getElement(div).className=='menu_invisivel'){
        for(x=1;x<28;x++){
            getElement('sub'+x).className = 'menu_invisivel';
        }
    }
    exibirMenu(div);
}


function excluirEmpresa(url){
    if (confirm('Deseja excluir a empresa?')){
        location.href = url;
    }
}

function teste(){
    alert('mudou');
}

function formEmpresa(){
    formObrigatorios();
    if (getElement('form')){
        MaskInput(getElement('id_cd_numero_endereco'), '999999999');
        MaskInput(getElement('id_cd_cep_endereco'), '99999-999'); // máscara para e-mail: 'a^-_@.'
        MaskInput(getElement('id_cd_telefone1_empresa'), '(99)9999-9999');
        MaskInput(getElement('id_cd_telefone2_empresa'), '(99)9999-9999');
        MaskInput(getElement('id_cd_0800_empresa'), '0800 999 99999');
        /*$('#id_nm_cidade_endereco').attr('disabled',true);
        $('#id_nm_bairro_endereco').attr('disabled',true);*/
        $('#id_cd_cep_endereco').keyup(ajaxBuscarCep);
        /*$('#id_cd_estado').change(ajaxBuscarCidades);
        $('#id_nm_cidade').change(ajaxBuscarBairros);*/
        //var linhas = (document.all) ? 5 : 4;
        with (getElement('id_ds_empresa')){
            //rows = linhas;
            //onkeyup = function f(){getElement('contador').innerHTML=getElement('id_ds_empresa').value.length;}
            onkeyup = function contador(){
                tamanho = getElement('id_ds_empresa').value.length;
                maxLength(getElement('id_ds_empresa'), 221);
                if (tamanho<220){
                    getElement('contador').innerHTML=tamanho;
                }else{
                    getElement('contador').innerHTML='Tamanho Máximo';
                }
            }
            onmousemove = function contador(){
                tamanho = getElement('id_ds_empresa').value.length;
                maxLength(getElement('id_ds_empresa'), 221);
                if (tamanho<220){
                    getElement('contador').innerHTML=tamanho;
                }else{
                    getElement('contador').innerHTML='Tamanho Máximo';
                }
            }
        }
    }
}

/*function validarFormulario(){
    //valida formulário de empresa no admin
    if (getElement('form')){
        var responsavel = strip(definir(getElement('id_nm_responsavel_empresa').value,''));
        var titulo = strip(definir(getElement('id_nm_titulo_empresa').value,''));
        var descricao = strip(definir(getElement('id_ds_empresa').value,''));
        var endereco = strip(definir(getElement('id_ds_endereco').value,''));
        var bairro = definir(getElement('id_nm_bairro').value,'');
        var cidade = strip(definir(getElement('id_nm_cidade').innerHTML,''));
        var numero = strip(definir(getElement('id_cd_numero_endereco').value,''));
        var cep = strip(definir(getElement('id_cd_cep_endereco').value,''));
        var uf = definir(getElement('id_cd_estado').value,'');
        var fone = strip(definir(getElement('id_cd_telefone1_empresa').value,''));
        var email = strip(definir(getElement('id_nm_email_empresa').value,''));
        var tipo = definir(getElement('id_cd_tipo_cadastro').value,'');
        var buffet = getElement('ic_buffet').innerHTML;
        if (responsavel==''){
            alert('O seu nome é obrigatório!');
        }else if (titulo==''){
            alert('O Título é obrigatório!');
        }else if (descricao==''){
            alert('A descrição é obrigatória!');
        }else if (descricao.length>220){
            alert('A descrição pode ter no máximo 220 caracteres!');
        }
        else if (endereco==''){
            alert('O endereço é obrigatório!');
        }
        else if (numero==''){
            alert('O número é obrigatório!');
        }
        else if (cep==''){
            alert('O CEP é obrigatório!');
        }
        else if (bairro=='' || cidade=='' || uf=='' || bairro=='carregando...' || cidade=='carregando...' || uf=='carregando...'){
            alert('Digite um CEP válido para que o bairro, a cidade e a UF sejam preenchidos!');
        }
        else if (fone==''){
            alert('O telefone1 é obrigatório!');
        }
        else if(email!='' && !validaEmail(email)){
            alert('Email inválido!');
        }
        else if(tipo==''){
            alert('Selecione o tipo de cadastro!');
        }
        else if(buffet=='(-)'){
            var valido = false;
            var inputs = getByTag('input');
            for(x=0;x<inputs.length;x++){
                if (inputs[x].type=='checkbox' && inputs[x].checked && inputs[x].id.indexOf('materia')!=-1){
                    valido = true;
                    break;
                }
            }
            if (!valido){
                alert('Se você selecionou atribuir materias, selecione pelo menos uma!');
            }else{
                getElement('form').submit();
            }
        }
        else{
            getElement('form').submit();
        }
    }
}*/


function validarEmpresa(){
        var titulo = strip(definir(getElement('id_nm_titulo_empresa').value,''));
        var descricao = strip(definir(getElement('id_ds_empresa').value,''));
        var endereco = strip(definir(getElement('id_ds_endereco').value,''));
        var cidade = strip(definir(getElement('id_nm_cidade').value,''));
        var bairro = strip(definir(getElement('id_nm_bairro').value,''));
        var numero = strip(definir(getElement('id_cd_numero_endereco').value,''));
        var cep = strip(definir(getElement('id_cd_cep_endereco').value,''));
        var uf = strip(definir(getElement('id_cd_estado').value,''));
        var fone = strip(definir(getElement('id_cd_telefone1_empresa').value,''));
        var email = strip(definir(getElement('id_nm_email_empresa').value,''));
        if (titulo==''){
            alert('O Título é obrigatório!');
            return false;
        }else if (descricao==''){
            alert('A descrição é obrigatória!');
            return false;
        }else if (descricao.length>220){
            alert('A descrição não pode ter mais do que 220 caracteres!');
            return false;
        }
        else if (endereco==''){
            alert('O endereço é obrigatório!');
            return false;
        }
        else if (numero==''){
            alert('O número é obrigatório!');
            return false;
        }
        else if (cep==''){
            alert('O CEP é obrigatório!');
            return false;
        }
        else if (bairro=='' || cidade=='' || uf=='' || bairro=='carregando...' || cidade=='carregando...' || uf=='carregando...'){
            alert('Digite um CEP válido para que o bairro, a cidade e a UF sejam preenchidos!');
            return false;
        }
        else if (fone==''){
            alert('O telefone1 é obrigatório!');
            return false;
        }
        else if(email=='' || validaEmail(email)){
            return '&cd_estado='+uf+'&nm_cidade='+replaceAll(cidade,' ','+')+'&nm_bairro='+replaceAll(bairro,' ','+');
        }
        else{
            alert('Email inválido!');
            return false;
        }
}


function validarCadastro(action){
    //valida formulário de empresa pro usuários do site
    if (getElement('form')){
        var sucesso = validarEmpresa();
        if (sucesso){
            var dados = $('#form').serialize() + sucesso;
            sucesso = function(resp){
                $('#btnEnviar').attr('disabled',false);
                if (resp.msg){
                    $('#abaCadastro').html(resp.msg);
                } else if (resp.erro){
                    alert(resp.erro);
                } else {
                    alert(resp);
                }
            }
            $('#btnEnviar').attr('disabled',true);
            $.post(action,dados,sucesso,'json');
        }
    } else if (getElement('formHidden')){
        var sucesso = function(resp){
            $('#btnEnviar').attr('disabled',false);
            if (resp.url){
                window.location = resp.url;
            } else if (resp.msg){
                $('#abaCadastro').html(resp.msg);
            } else if (resp.erro){
                alert(resp.erro);
            } else {
                alert(resp);
            }
        }
        $('#btnEnviar').attr('disabled',true);
        var dados = $('#formHidden').serialize();
        $.post(action,dados,sucesso,'json');
    }
}

function validarContato(){
    if (getElement('form')){
        var nome = strip(definir(getElement('nome').value,''));
        var uf = strip(definir(getElement('id_cd_estado').value, ''));
        var email = strip(definir(getElement('email').value,''));
        var comentario = strip(definir(getElement('comentario').value, ''));

        if (nome==''){
            alert('O Nome é obrigatório!');
        }else if (!validaEmail(email)){
            alert('Email inválido!');
        }
        else if(uf==''){
            alert('Selecione uma UF!');
        }
        else if(comentario==''){
            alert('Digite seu comentário!');
        }
        else{
            getElement('form').submit();
        }
    }
}

function validarUsuario(){
    var nome = $.trim($('#nome').val());
    var email = $.trim($('#email').val());
    var senha = $.trim($('#senha').val());
    var confirmacao = $.trim($('#confirmacao').val());
    var captcha = $.trim($('#id_captcha').val());
    if (nome==''){
        alert('O nome é obrigatório!');
    } else if (!validaEmail(email)){
        alert('E-mail inválido!');
    } else if (senha==''){
        alert('A senha é obrigatória!');
    } else if(senha!=confirmacao){
        alert('Confirmação de senha inválida!');
    } else if(captcha==''){
        alert('Digite o código de verificação!');
    } else {
        var sucesso = function(resp){
            $('#enviarUsuario').html('<input type="submit" value="Enviar" />');
            if (resp.captcha){
                $('#captcha').html(resp.captcha);
            }
            if (resp.msg){
                $('#abaCadastro').html(resp.msg);
            } else if (resp.erro){
                alert(resp.erro);
            } else {
                alert(resp);
            }
        }
        $('#enviarUsuario').html('<img src="/imgs/aguarde.gif" />');
        var dados = $('#formUsuario').serialize();
        $.post('/conta/criar/',dados,sucesso,'json');
    }
}

/************************* A D M I N ********************************/

function validarComplemento(opcao){
    //valida formulário dos dados complementares da empresa
    var tipo = $('#tipo_cadastro').val();
    if (tipo==''){
        alert('Selecione um tipo de cadastro!');
        return;
    }
    var buffet = $('#ic_buffet').html();
    //armazena a quantidade de todos os inputs onde o id comece com 'materia' e estejam 'checked'
    var materias = $('input[id^="materia"]:checked').length;
    if(buffet=='(-)' && materias<1){
        alert('Se você selecionou relacionar materias, escolha pelo menos uma!');
        return false;
    }
    if ($('#microrregiao')){
        var micro = $('#microrregiao').val();
        if (micro==''){
            alert('Associe a cidade a uma microrregião!');
            return false;
        }
    }
    if (getElement('preposicao_bairro')){
        var bairro = $.trim(definir($('#preposicao_bairro').val(),''));
        if (bairro==''){
            alert('Digite uma preposição para o bairro!');
            return false;
        }
    }
    if (getElement('preposicao_cidade')){
        var cidade = $.trim(definir($('#preposicao_cidade').val(),''));
        if (cidade==''){
            alert('Digite uma preposição para a cidade!');
            return false;
        }
    }
    if (opcao){
        $('#formComplemento').attr('action','salvar/?comp='+opcao);
        $('#formComplemento').submit();
    } else {
        return true;
    }
}


function validarFormulario(){
    var emp = validarEmpresa();
    if (emp){
        var sucesso = function(resp){
            if (resp.url){
                window.location = resp.url;
            } else if (resp.erro){
                alert(resp.erro);
            } else {
                alert(resp);
            }
        }
        var dados = $('#form').serialize();
        dados += emp;
        $.post('salvar/',dados,sucesso,'json');
    }
}


function validarCidade(){
    var uf = strip(definir(getElement('id_cd_estado').value,''));
    var grupo = strip(definir(getElement('id_cd_grupo_cidade').value,''));
    var cidade = strip(definir(getElement('id_nm_cidade').value,''));
    var preposicao = strip(definir(getElement('id_nm_preposicao_cidade').value,''));
    if (uf==''){
        alert('A UF é obrigatória!');
    }else if(grupo==''){
        alert('O grupo é obrigatório!');
    }else if(cidade==''){
        alert('A cidade é obrigatória!');
    }else if(preposicao==''){
        alert('A preposição é obrigatória!');
    }else{
        getElement('form').submit();
    }
}

function validarMateria(){
    var titulo = strip(definir(getElement('id_nm_titulo_materia').value,''));
    //trecho de código baseado no Samples de html do FCKeditor
    var fck = FCKeditorAPI.GetInstance('ds_materia');
    fck = fck.EditorDocument ;
    var conteudo;
    if ( document.all )     // If Internet Explorer.
    {
        conteudo = fck.body.innerText;
    }
    else                    // If Gecko.
    {
        var r = fck.createRange() ;
        r.selectNodeContents( fck.body ) ;
        conteudo = r.toString();
    }
    conteudo = strip(definir(conteudo,''));
    var autor = strip(definir(getElement('id_nm_autor_materia').value,''));
    if (titulo==''){
        alert('O título é obrigatório!');
    }else if(conteudo==''){
        alert('O conteúdo é obrigatório!');
    }else if(autor==''){
        alert('O autor é obrigatório!');
    }else{
        getElement('form').submit();
    }
}

function validarBairro(){
    var nome = strip(definir(getElement('id_nm_bairro').value,''));
    var preposicao = strip(definir(getElement('id_nm_preposicao_bairro').value,''));
    if (nome==''){
        alert('O nome do bairro é obrigatório!');
    }else if(preposicao==''){
        alert('A preposição é obrigatória!');
    }else{
        getElement('form').submit();
    }
}


function validarBusca(){
    var radio = getByTag('input');
    var conteudo;
    for(i=0;i<radio.length;i++){
        if (radio[i].type=='radio' && radio[i].checked){
            conteudo = radio[i].id;
            break;
        }
    }
    var input = getElement('id_'+conteudo).value;
    if (strip(input)!=''){
        getElement('form').submit();
    }else{
        alert('Preencha o campo selecionado!');
    }
}

function confirmacao(endereco){
    if (confirm('Se você sair antes de confirmar, irá perder os dados digitados. Tem certeza?')){
        location.href = endereco;
    }
}

var Bairros = new Array();
var qtdPaginas;

function carregarBairros(){
    //cria um array com o html dos bairros no input hidden
    var bairros = getElement('bairros').value;
    bairros = bairros.split(';');
    var qtd=25;
    qtdBairros = bairros.length/qtd;
    //cria um array com os bairros de cada pagina e joga na variável global
    for(x=0;x<qtdBairros;x++){
        ini = x*qtd;
        fim = ini+qtd;
        aux = bairros.slice(ini,fim);
        Bairros.push(aux);
    }
    //calcula e armazena a quantidade de páginas que terá o navegador
    qtdPaginas = Math.floor(qtdBairros)
    if (bairros.length%qtd>0){qtdPaginas += 1}
    navegarBairros(1);
}

function navegarBairros(pagina){
    //troca a lista de bairros a serem exibidos
    var conteudo = getElement('listaBairros');
    conteudo.innerHTML = '';
    var pag = Bairros[pagina-1]
    var qtdBairros = pag.length;
    for (x=0;x<qtdBairros;x++){
        conteudo.innerHTML += pag[x];
        if (x<qtdBairros-1){
            conteudo.innerHTML += '&nbsp;&nbsp;-&nbsp;&nbsp;'
        }
    }
    //chama função para remontar o navegador de bairros se tiver mais de uma página
    if (qtdPaginas>1){ criarNavegadorBairros(pagina) }
}

function criarNavegadorBairros(pagAtual){
    var navegador = document.getElementById('navegadorBairros');
    navegador.innerHTML = "<b>Mais bairros:</b> ";
    /* página anterior */
    if (pagAtual>1){
        anterior = pagAtual-1;
        pagAnterior = "<a id='pagAnterior' href='javascript:navegarBairros("+anterior+")'>";
        pagAnterior += "«Anterior</a>&nbsp;";
        navegador.innerHTML += pagAnterior;
    }

    /* número de páginas */
    var inicio=1;
    var fim= (qtdPaginas<=10)? qtdPaginas : 10;
    if ((qtdPaginas>10)&(pagAtual>5)){
        fim = (qtdPaginas>pagAtual+5) ? pagAtual+5 : qtdPaginas;
        inicio = (qtdPaginas>pagAtual+5) ? pagAtual - 4 : qtdPaginas-9;
    }
    if (qtdPaginas>1){
        for(pag=inicio;pag<=fim;pag++){
            if (pag!=pagAtual){
              navegador.innerHTML += "<a id='pag"+pag+"' href='javascript:navegarBairros("+pag+")';>"+pag+" </a>&nbsp;";
            }else{
              navegador.innerHTML += "<b id='pag"+pag+"' >"+pag+" </b>&nbsp;";
            }
        }
    }


    /* próxima página */
    if (pagAtual<qtdPaginas){
        prox = pagAtual+1;
        pagProxima = "<a id='pagProxima' href='javascript:navegarBairros("+prox+")' ";
        pagProxima+=">&nbsp;Pr&oacute;xima»</a>";
        navegador.innerHTML += pagProxima;
    }

}
