$(document).ready(function () {
    var idx = 0;

    $(".lista-opcoes li").removeClass("menu-ativo");
    $(".lista-opcoes li").eq(idx).addClass("menu-ativo");

    $(".filtro-abas div[class^=aba-]").removeClass("aba-ativa");
    $(".filtro-abas div[class^=aba-]").eq(idx).addClass("aba-ativa");

    // Ativa o menu e a aba
    $(".lista-opcoes li").on("click", function () {
        idx = $(this).index();

        $(".lista-opcoes li").removeClass("menu-ativo");
        $(this).addClass("menu-ativo");

        $(".filtro-abas div[class^=aba-]").removeClass("aba-ativa");
        $(".filtro-abas div[class^=aba-]").eq(idx).addClass("aba-ativa");
        $(".filtro-abas div[class^=aba-]").find("input:text, input:password, input:file, select, textarea").focus();
    });

    // Marca ou desmarca todos os itens da lista de checkbox
    $(".todos").on("click", function () {
        var id = "#" + $(this).parents().find("ul").attr("id");

        if (this.checked) {
            $(id + " .sel").each(function () {
                this.checked = true;
            });
        } else {
            $(id + " .sel").each(function () {
                this.checked = false;
            });
        }
    });

    // Desmarca somente o primeiro item da lista checkbox
    $(".sel").on("click", function () {
        var id = "#" + $(this).parents().find("ul").attr("id");

        if ($(this).prop("checked") == false) {
            $(id + " .todos").prop("checked", false);
        }
    });

    // Marca o menu referente ao filtro preenchido através dos campos input, select ou textarea
    $(".filtro-abas div[class^=aba-]").find("input:text, input:password, input:file, select, textarea").not(".none").keyup(function () {
        if ($(this).val() !== "") {
            status = 1;
        } else {
            status = 0;
        }

        changeStatus(status);
    });

    // Marca o menu referente ao filtro preenchido através dos campos checkbox ou radio
    $(".filtro-abas input:radio, .filtro-abas input:checkbox").on("click", function () {
        var p = $(this).attr("name");

        if ($(".filtro-abas div[class^=aba-]").find("input[name= " + p + "]:checked").length > 0) {
            status = 1;
        } else {
            status = 0;
        }

        changeStatus(status);
    });

    // Marca o menu referente ao filtro preenchido através dos campos date ou time
    $(".filtro-abas div[class^=aba-]").find("input[type=date], input[type=time]").on("change", function () {
        if ($(this).val() !== "") {
            status = 1;
        } else {
            sattus = 0;
        }

        changeStatus(status);
    });

    // Sinaliza o item do menu
    function changeStatus(status) {
        var status = status;

        if (status == 1) {
            $(".lista-opcoes li .glyphicon-ok").eq(idx).show();
            $(".lista-opcoes li .glyphicon-minus").eq(idx).addClass("limpar-ativo");
        } else if (status == 0) {
            $(".lista-opcoes li .glyphicon-ok").eq(idx).hide();
            $(".lista-opcoes li .glyphicon-minus").eq(idx).removeClass("limpar-ativo");
        }
    }

    // Limpa os campos referentes a aba selecionada
    $(".btn-limpar").on("click", function () {
        var i = $(this).parent().index();

        $(".filtro-abas div[class^=aba-]").eq(i).find("input:text, input:password, input:file, select, textarea, input[type=date], input[type=time]").val("");
        $(".filtro-abas div[class^=aba-]").eq(i).find("input:radio, input:checkbox").removeAttr("checked").removeAttr("selected");
        $(".lista-opcoes li .glyphicon-ok").eq(i).hide();
        $(".lista-opcoes li .glyphicon-minus").eq(i).removeClass("limpar-ativo");
    });

    // Limpa todos os campos de todos os filtros e desmarca o menu
    $(".filtro-multiplo button[type=reset]").on("click", function () {
        $(".lista-opcoes li .glyphicon-ok").hide();
        $(".lista-opcoes li .glyphicon-minus").removeClass("limpar-ativo");
    });
});