function buildUrl() {
    var url = $('input[name="BaseUrl"]').val();
    for (var item in arguments) {
        url += arguments[item] + "/";
    }
    return url;
}

$("#form-alterar-senha").on("submit", function (e) {
    e.preventDefault();


    $(this).ajaxSubmit({
        url: buildUrl("conta", "alterar_senha"),
        type: "POST",
        dataType: "json",
        beforeSubmit: function () {
            $("#form-alterar-senha").modal("hide");
        },
        success: function (response) {
            notify(response[0], response[1]);
            if (response[0] === "success") {
                setTimeout(function () {
                    location.reload();
                }, 1500);
            } else {
                $("#form-alterar-senha").modal("show");
            }
        },
    });
});

$(document).on("click", ".btn-show-password", function () {
    var botao = $(this);
    var input = $(this).siblings();

    $.each(input, function (item, value) {
        if (value.type === "password") {
            input.attr("type", "text");
            botao.html("Ocultar");
        } else if (value.type === "text") {
            input.attr("type", "password");
            botao.html("Mostrar");
        }
    });
});

function load(tipo) {
    if (tipo == "open") {
        $("#modal-load").modal("show");
        $(".btn").attr("disable", true);
    }

    if (tipo == "close") {
        setTimeout(function () {
            $("#modal-load").modal("hide");
            $(".btn").attr("disable", false);
        }, 300);
    }
}

function MascaraValor(value) {
    let valor = value;

    valor = valor.toString().replace(/\D/g, "");
    valor = valor.toString().replace(/(\d)(\d{8})$/, "$1.$2");
    valor = valor.toString().replace(/(\d)(\d{5})$/, "$1.$2");
    valor = valor.toString().replace(/(\d)(\d{2})$/, "$1,$2");

    return valor;
}

function notify(type, text, title) {
    if (type === 'success') {
        $.gritter.add({
            title: "Ok!",
            text: text,
            class_name: 'gritter-success',
            time: 2500
        });
    } else if (type === 'error') {
        $.gritter.add({
            title: "Ops!",
            text: text,
            class_name: 'gritter-error',
            time: 2500
        });
    } else {
        $.gritter.add({
            title: "Atenção!",
            text: text,
            class_name: 'gritter-warning',
            time: 2500
        });
    }
}

function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e) {
    var sep = 0;
    var key = "";
    var i = (j = 0);
    var len = (len2 = 0);
    var strCheck = "0123456789";
    var aux = (aux2 = "");
    var whichCode = window.Event ? e.which : e.keyCode;

    if (whichCode == 13 || whichCode == 8 || whichCode == 0) return true;
    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for (i = 0; i < len; i++)
        if (
            objTextBox.value.charAt(i) != "0" &&
            objTextBox.value.charAt(i) != SeparadorDecimal
        )
            break;
    aux = "";
    for (; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i)) != -1)
            aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) objTextBox.value = "";
    if (len == 1) objTextBox.value = "0" + SeparadorDecimal + "0" + aux;
    if (len == 2) objTextBox.value = "0" + SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = "";
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = "";
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}

function numberToReal(numero = 0.00) {
    if (numero == 0) {
        numero = 0.00;
    }

    var numero = numero.toFixed(2).split(".");

    numero[0] = numero[0].split(/(?=(?:...)*$)/).join(".");
    return numero.join(",");
}

function maskMoney(number) {
    numeral.locale('en');
    let value = numeral(number ? number : 0.0).value();
    return numeral(value).format('0,0.00');
}

function getObjectFromArray(data) {
    var index = [];
    var length = Object.keys(data).length;

    if (length > 0) {
        for (var i = 1; i <= length; i++) {
            index.push(data[i]);
        }
    }

    return index;
}

function soNumero(string) {
    return string.replace(/[^0-9]/g, "");
}

function busca_cep(cep) {
    $.get("https://viacep.com.br/ws/" + cep + "/json/", function (response) {

        if (response.erro) {
            notify("error", "Não foi possível encontrar os dados de endereço pelo CEP.");
            return false;
        }

        busca_estado(response.uf);
        busca_cidades(response.localidade, response.uf);

        $("#Logradouro").val(response.logradouro);
        $("#Bairro").val(response.bairro);
        $("#Numero").focus();

    }, "json");
}

function busca_cep_evento(cep) {
    $.get("https://viacep.com.br/ws/" + cep + "/json/", function (response) {

        if (response.erro) {
            notify("error", "Não foi possível encontrar os dados de endereço pelo CEP.");
            return false;
        }

        busca_estado_evento(response.uf);
        busca_cidades_evento(response.localidade);

        $("#LogradouroEvento").val(response.logradouro);
        $("#BairroEvento").val(response.bairro);
        $("#NumeroEvento").focus();

    }, "json");
}

function busca_estado_evento(uf) {
    $.get(buildUrl("estados", "find") + uf, function (response) {
        $("#EstadosIdEvento").val(response[1]["Id"]);
    }, "json");
}

function busca_cidades_evento(cidade) {
    $.get(buildUrl("cidades", "find") + cidade, function (response) {
        $("#CidadesIdEvento").val(response[1]["Id"]);
    }, "json");
}

function busca_estado(uf) {
    $.get(buildUrl("estados", "find") + uf, function (response) {
        $("#EstadosId").val(response[1]["Id"]).select2();
    }, "json");
}

function busca_cidades(cidade, estado) {
    $.get(buildUrl("cidades", "find", cidade, estado), function (response) {
        $("#CidadesId").val(response[1]["Id"]).select2();
    }, "json");
}

//Recebe os campos que para faze a busca e setor os valores
function busca_cepGenerico(cep, estado, cidade, logradouro, bairro, numero, complemento = null) {
    $.get("https://viacep.com.br/ws/" + cep + "/json/", function (dados) {
        const estadoEl = $("#" + estado);
        const cidadeEl = $("#" + cidade);
        const logradouroEl = $("#" + logradouro);
        const bairroEl = $("#" + bairro);
        const numeroEl = $("#" + numero);

        if (dados.erro) {
            // liberar e limpar campos
            estadoEl.val("").select2().attr('readonly', false);
            cidadeEl.html(`<option selected value="">- Selecione -</option>`).select2().attr('readonly', false);
            logradouroEl.val("").attr('readonly', false);
            bairroEl.val("").attr('readonly', false);
            numeroEl.val("").attr('readonly', false);

            if (complemento) {
                $('#' + complemento).val("").attr('readonly', false);
            }

            notify("error", "Não foi possível encontrar os dados de endereço pelo CEP.");
            return false;
        }

        $.get(buildUrl("Estados", "find") + dados.uf, function (response) {
            estadoEl.val(response[1]["Id"]).select2();
            if (estadoEl.data('select2')) {
                estadoEl.select2('destroy');
            }
            estadoEl.attr('readonly', true);

            $.get(buildUrl("Cidades", "getCidades") + response[1]["Id"], function (response) {
                let option = "";

                $.each(response, function (item, value) {
                    const selected = value.Nome.replace("'", "").toLowerCase() === dados.localidade.replace("'", "").toLowerCase() ? ' selected="" ' : '';
                    option += `<option ${selected} value="${value.Id}">${value.Nome}</option>`;
                });

                cidadeEl.html(option);

                if (cidadeEl.data('select2')) {
                    cidadeEl.select2('destroy');
                }

                cidadeEl.attr('readonly', true);
            }, "json");
        }, "json");

        logradouroEl.val(dados.logradouro);
        bairroEl.val(dados.bairro);
        numeroEl.focus();
    }, "json");
}

function busca_cidades_estado(estadoId, campoCidade) {
    $("#" + campoCidade).html('<option values="">Carregando...</option>');
    load("open");
    $.get(buildUrl("ConsultoresPublic", "getCidades") + estadoId, function (response) {
        var option = `<option value="">- Selecione um estado -</option>`;

        if (response.erro) {
            $(`#${campoCidade}`).html(option);
            load("close");
            return
        }

        $.each(response, function (item, value) {
            option += '<option value="' + value.Id + '">' + value.Nome + "</option>";
        });

        $("#" + campoCidade).html(option);
        load("close");
    }, "json");
}

function retiraApostrofo() {

    $('.retiraApostrofo').on('keyup', function (e) {
        var digitado = $(this).val();
        var replaced = '';

        if (e.keyCode == 192) {
            notify("error", "Apóstrofo não é permitido!");
            replaced = digitado.replace(/´|`/g, '');
            replaced = digitado.replace("'", '');
            $(this).val(replaced);
        }
    });

}

function moneyBr(value) {
    return Intl.NumberFormat("pt-BR", {
        style: "currency",
        currency: "BRL",
    }).format(value);
}

function createCookie(name, value, days) {
    var expires;

    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
        expires = "; expires=" + date.toGMTString();
    } else {
        expires = "";
    }

    document.cookie = name + "=" + value + expires + "; path=/";
}

function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) {
                c_end = document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

function clearCookie(name) {
    createCookie(name, "", -1);
}

/**
 * @method Verificar se a variavel esta Nula ou Vazia
 * @param {*} variable
 */
function isEmpty(variable) {
    if (!variable || 0 === variable.length) return "";
    return variable;
}

$(document).on("click", ".btn-password", function () {
    let btn = $(this);
    let input = btn.siblings();
    $.each(input, function (item, value) {
        if (value.type === "password") {
            input.attr("type", "text");
            btn.html(
                '  <div class="input-group-text"><i class="fa fa-eye-slash" title="Mostrar senha" aria-hidden="true"></i></div>'
            );
        } else if (value.type === "text") {
            input.attr("type", "password");
            btn.html(
                '  <div class="input-group-text"><i class="fa fa-eye" title="Ocultar senha" aria-hidden="true"></i></div>'
            );
        }
    });
});

/**
 * Função para criar um Datatables com server-side
 * @string url | Onde será feita a consulta
 * @string typeUrl | POST, GET
 * @array buttonsWanted | PDF, EXCEL, CSV, COPY, COLVIS
 * @string formId | Id do formulário para filtros e transformar seus inputs e campos de busca externo
 * @string tableId | Id da tabela para aplicar o datatables
 * @array columnsWanted | Colunas da tabela HTML
 */
var makeDatatables = function (
    url,
    typeUrl,
    buttonsWanted,
    formId,
    tableId,
    columnsWanted
) {
    var buttonsStandard = [
        //Paginação
        {
            extend: "pageLength",
            collectionLayout: "two-column",
        },
    ];
    var buttonsOptionals = {
        //EXCEL
        EXCEL: {
            extend: "excel",
            text: '<i class="fas fa-file-excel"></i>',
            titleAttr: "Gerar Excel",
            header: true,
            title: "Plamev - Gerenciador",
            autoFilter: true,
            sheetName: "Relatório Colaboradores",
            exportOptions: {
                columns: ":visible",
                search: "applied",
                order: "applied",
                format: {
                    body: function (data, row, column, node) {
                        //data = data.replace( /[$,.]/g, '' )
                        //data = data.replace(/(&nbsp;|<([^>]+)>)/ig, "")
                        data = data.replace(/<.*?>/gi, "");
                        return data.replace(/<br\s*\/?>/gi, "\n");
                    },
                },
            },
        },
        //PDF
        PDF: {
            extend: "pdfHtml5",
            text: '<i class="far fa-file-pdf"></i>',
            titleAttr: "Gerar PDF",
            orientation: "landscape",
            pageSize: "A4",
            header: true,
            footer: true,
            title: "Relatório Colaboradores",
            messageTop: "Plamev - Gerenciador",
            download: "open",
            exportOptions: {
                columns: ":visible",
                search: "applied",
                order: "applied",
                stripNewlines: false,
            },
            customize: function (doc) {
                doc.pageMargins = [20, 60, 20, 30];
                doc.defaultStyle.fontSize = 12;
                doc.styles.tableHeader.fontSize = 14;
                doc["styles"] = {
                    userTable: {
                        margin: [0, 15, 0, 15],
                    },
                    title: {
                        color: "black",
                        fontSize: "20",
                        alignment: "center",
                    },
                    tableHeader: {
                        bold: !0,
                        fontSize: 15,
                        color: "white",
                        padding: "5px",
                        fillColor: "#3366CC",
                        alignment: "center",
                    },
                };
                /*doc.content.splice( 1, 0, {
                            margin: [ 0, 0, 0, 0 ],
                            alignment: 'center',
                            image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOUAAABpCAYAAADFu+S1AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjlFM0U1QzlBOEM4MURCMTE4NzM0REI1OEZEREU0QkE3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk4RTc2RUU4MTU3ODExRUI4MUE4OUYwMzg0RDlGN0MzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk4RTc2RUU3MTU3ODExRUI4MUE4OUYwMzg0RDlGN0MzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCODYzMjU0ODBFNDIxMUVCQUVGQkFBQkFFMDk2RTU2RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCODYzMjU0OTBF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'
                        } );*/
            },
        },
        //PRINT
        PRINT: {
            extend: "print",
            text: '<i class="fas fa-print corrige-fas"></i>',
            titleAttr: "Imprimir",
            header: true,
            title: "Relatório MEEP",
            messageTop: "Dados exportados do relatório Relatório MEEP",
            orientation: "landscape",
            customize: function (doc) {
                $(doc.document.body)
                    .css("font-size", "15pt")
                    .prepend
                    //'<img src="#" style="position:absolute; top:0; left:0;" />'
                    ();
                $(doc.document.body)
                    .find("table")
                    .addClass("compact")
                    .css("font-size", "inherit");
            },
            exportOptions: {
                columns: ":visible",
                search: "applied",
                order: "applied",
            },
        },
        //CSV
        CSV: {
            extend: "csv",
            text: '<i class="fas fa-file-excel"></i>',
            titleAttr: "Gerar CSV",
            header: true,
            title: "Relatório MEEP",
            exportOptions: {
                columns: ":visible",
                search: "applied",
                order: "applied",
            },
        },
        //COPIAR
        COPY: {
            extend: "copy",
            text: '<i class="far fa-copy"></i>',
            titleAttr: "Copiar",
            header: true,
            title: "Relatório MEEP",
        },
        //Ocultar colunas
        COLVIS: {
            extend: "colvis",
            text: '<i class="fas fa-eye-slash"></i>',
            titleAttr: "Ocultar colunas",
            collectionLayout: "two-column",
        },
    };
    var columnsStandard = [
        {
            data: "action",
            name: "action",
            orderable: false,
            searchable: false,
            class: "text-center",
        },
    ];

    for (let i = 0; i < buttonsWanted.length; i++) {
        if (typeof buttonsOptionals[buttonsWanted[i]] !== "undefined") {
            buttonsStandard.push(buttonsOptionals[buttonsWanted[i]]);
        }
    }

    for (let j = 0; j < columnsWanted.length; j++) {
        columnsStandard.push(columnsWanted[j]);
    }
    reorderArray(columnsStandard, 0, columnsStandard.length);

    var table = $("#" + tableId).DataTable({
        processing: true,
        serverSide: true,
        ordering: false,
        colReorder: false,
        rowReorder: false,
        stateSave: false,
        select: false,
        dom: "Brftip",
        lengthMenu: [
            [10, 25, 50, -1],
            [10, 25, 50, "Todos"],
        ],
        language: {
            url: "public/plugins/DataTables-1.10.24/pt-br.json",
        },
        buttons: buttonsStandard,
        ajax: {
            url: url,
            type: typeUrl,
            data: function (d) {
                if (formId !== "") {
                    $.each($("input, select, textarea", "#" + formId), function (k, v) {
                        if (v.type !== "radio" && v.type !== "checkbox") {
                            if (v.value != "") {
                                d[v.name] = v.value;
                            }
                        } else {
                            d[v.name] = $("input[name=" + v.name + "]:checked").val();
                        }
                    });
                }
            },
        },
        columns: columnsStandard,
        initComplete: function () {
            $(".dt-buttons > button").addClass("shadow2");
            /*$(".dataTables_filter > label > input").click(function() {
                      $('#' + formId).trigger("reset")
                  })*/
        },
    });

    if (formId !== "") {
        $("#" + formId).on("submit", function (e) {
            e.preventDefault();
            table.draw();
        });

        $("#" + formId).click(function () {
            $(".dataTables_filter > label > input").val("");
        });
    }
};

/**
 * Função para reordenar array
 * @param arr
 * @param from
 * @param to
 */
var reorderArray = function (arr, from, to) {
    if (Object.prototype.toString.call(arr) !== "[object Array]") {
        throw new Error("Por favor, insira um array válido");
    }

    // Remover o item de sua posição original, salvando em uma variável temporária
    var item = arr.splice(from, 1);

    // Verificar se tem mesmo um item
    if (!item.length) {
        throw new Error(
            "Item na posição " + from + " não encontrado no array fornecido."
        );
    }

    // Adiciona o item na nova posição
    arr.splice(to, 0, item[0]);
};

/**
 * Setar menu lateral como ativo
 * @param url
 */
function setActive() {
    let url = window.location.href
    let hasBackslash = url.substr(-1, 1)
    let positionBackslash = 0

    //Verificar se a url termina com uma /. Se sim, remove a mesma
    if (hasBackslash === "/") {
        positionBackslash = url.lastIndexOf(hasBackslash) //Posição da barra final
        url = url.substr(0, positionBackslash) //Remontar a url, sem a barra final
    }

    let urlSemInterrogacao = url.split("?");
    let aUrl = urlSemInterrogacao[0].split("/")
    if ((aUrl[2] === "localhost") || (aUrl[2] === "projetos")) {
        url = `${aUrl[0]}\/\/${aUrl[2]}/${aUrl[3]}/${aUrl[4]}`;
    } else {
        url = `${aUrl[0]}\/\/${aUrl[2]}/${aUrl[3]}`;
    }

    let filho = $(`a[href='${url}']`).attr("id") //Pegar o id do elemento <a> que possui a url acessada

    if (!filho) {
        $(`#dashboard_menu`).parents().eq(0).addClass("active");
    } else {
        const id = filho.split('_');
        if (id[1] === 'menu') {
            $(`#${filho}`).parents().eq(0).addClass("active");
        } else if (id[1] === 'submenu') {
            $(`#${filho}`).parents().eq(0).addClass("active");
            $(`#${filho}`).parents().eq(2).addClass("active");
        } else if (id[1] === 'subsubmenu') {
            $(`#${filho}`).parents().eq(0).addClass("active");
            $(`#${filho}`).parents().eq(2).addClass("active");
            $(`#${filho}`).parents().eq(4).addClass("active");
        }
    }
}

/**
 * Remover a classe de erro no campo no click do botao
 * @param field
 */
function removeErrorClick(campo) {
    $(`#${campo}`).parents().eq(0).removeClass("has-error");
}

function isInt(n) {
    return Number(n) === n && n % 1 === 0;
}

function isFloat(n) {
    return Number(n) === n && n % 1 !== 0;
}

//VERIFICA SE HA CARACTERES ESPECIAIS NO EVENT PASSADO
function checkChar(e) {
    var char = String.fromCharCode(e.keyCode);

    var pattern = '[a-zA-Z0-9]';
    if (char.match(pattern)) {
        return true;
    }
}

$(document).ready(function () {
    //Remover as classes de erro de campos obrigatórios não preenchidos
    $("input").keyup(function () {
        var id = $(this).attr("id");

        removeErrorClick(id);
    });

    //Remover caractetes especiais de inputs selecionados com a classe noEspecialChar
    $('.noEspecialChar').on('keypress', function (e) {
        if (!checkChar(e)) {
            e.preventDefault();
        }
    });

    $("select").change(function () {
        var id = $(this).attr("id");

        removeErrorClick(id);
    });

    $("radio").click(function () {
        var id = $(this).attr("id");

        removeErrorClick(id);
    });

    $("checkbox").click(function () {
        var id = $(this).attr("id");

        removeErrorClick(id);
    });
    //Analisar radio com style

    $("textarea").keyup(function () {
        var id = $(this).attr("id");

        removeErrorClick(id);
    });
    //Analisar o textarea com ckeditor
});

if ($('.select-checkbox').length > 0) {
    $('.select-checkbox').multipleSelect({filter: true});
}

// PARSLEY VALIDATOR
function validaFormParsley(validator) {
    if (!validator.isValid()) {
        load("close");
        // - INICIO - Ajusta mensagem de erro para select2
        let divSelect2El = $(document).find('.select2.select2-container.select2-container--default:visible').parent();
        $.each(divSelect2El, function (i, v) {
            let ul = $(v).find('> ul');
            if (ul.length > 0) {
                let select2 = $(v).find('> span');
                ul.insertAfter(select2)
                select2.find('.select2-selection--single').attr('style', 'border-color: #DC3545FF !important');
            }
        });
        // - FIM - Ajusta mensagem de erro para select2
        return false;
    }
}

window.Parsley.on('field:error', function (fieldInstance) {
    let arrErrorMsg = fieldInstance.getErrorsMessages();
    let errorMsg = arrErrorMsg.join(';');
    let nome = fieldInstance.$element.attr('name');
    nome = nome.replace('[]', '');
    notify('error', `${nome} - ${errorMsg} `);
});

function geraAutoComplete(classe, rota = '', min = 3, seletor = '') {
    let elemento = seletor || `.${classe}`;

    $(document).find(`${elemento}-autocomplete`).select2({
        placeholder: '- Selecione -',
        minimumInputLength: min,
        language: 'pt-BR',
        width: "100%",
        allowClear: true,
        ajax: {
            url: buildUrl(`${rota}`),
            data: function (params) {
                return {
                    termoPesquisa: params.term
                };
            }
        }
    });
}

$(document).on('click', '.btn-search-with-loading', function (e) {
    e.preventDefault();
    const $button = $(this);

    $button.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i> Pesquisando...');
    $button.closest('form')[0].submit();

    $(window).on('load', function () {
        $button.prop('disabled', false).html('<i class="fas fa-search"></i> Pesquisar');

    });
});