(function(window, $) {
    'use strict';

    if ($ && $.fn && $.fn.dataTable) {
        $.extend(true, $.fn.dataTable.defaults, {
            language: {
                sEmptyTable: 'Nenhum registro encontrado',
                sInfo: 'Mostrando de _START_ até _END_ de _TOTAL_ registros',
                sInfoEmpty: 'Mostrando 0 até 0 de 0 registros',
                sInfoFiltered: '(Filtrados de _MAX_ registros)',
                sInfoPostFix: '',
                sInfoThousands: '.',
                sLengthMenu: '_MENU_ resultados por página',
                sLoadingRecords: 'Carregando...',
                sProcessing: 'Processando...',
                sZeroRecords: 'Nenhum registro encontrado',
                sSearch: 'Pesquisar',
                oPaginate: {
                    sNext: 'Próximo',
                    sPrevious: 'Anterior',
                    sFirst: 'Primeiro',
                    sLast: 'Último'
                },
                oAria: {
                    sSortAscending: ': Ordenar colunas de forma ascendente',
                    sSortDescending: ': Ordenar colunas de forma descendente'
                },
                select: {
                    rows: {
                        _: 'Selecionado %d linhas',
                        0: 'Nenhuma linha selecionada',
                        1: 'Selecionado 1 linha'
                    }
                },
                buttons: {
                    copy: 'Copiar para a área de transferência',
                    copyTitle: 'Cópia bem sucedida',
                    copySuccess: {
                        1: 'Uma linha copiada com sucesso',
                        _: '%d linhas copiadas com sucesso'
                    }
                }
            }
        });
    }

    $(function() {
        $('[data-toggle="tooltip"]').tooltip();
    });

    $(document).ready(function() {
        $('.isDate:not([readonly])').datepicker({
            format: 'dd/mm/yyyy',
            language: 'pt-BR',
            todayHighlight: true,
            orientation: 'bottom auto',
            autoclose: true
        });

        $('.isNumber').keydown(function(event) {
            if (
                $.inArray(event.keyCode, [46, 8, 9, 27, 13]) !== -1 ||
                (event.keyCode === 65 && (event.ctrlKey === true || event.metaKey === true)) ||
                (event.keyCode >= 35 && event.keyCode <= 40)
            ) {
                return;
            }

            if (
                (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57)) &&
                (event.keyCode < 96 || event.keyCode > 105)
            ) {
                event.preventDefault();
            }
        });

        $('.isDate').attr('autocomplete', 'off');
        $('.isDate').mask('00/00/0000');
        $('.isDateTime').attr('autocomplete', 'off');
        $('.isDateTime').mask('00/00/0000 00:00:00');
        $('.isTime').mask('00:00:00');

        $('.isDateMonth').mask('00/0000');
        $('.isCPF').mask('000.000.000-00');
        $('.isCNPJ').mask('00.000.000/0000-00');
        $('.isCEP').mask('00000-000');
        $('.isCNS').mask('000.0000.0000.0000');
        $('.isMoney').mask('###.###.###.#00,00', {
            reverse: true
        });
        $('.isDecimal').mask('#####,000', {
            reverse: true
        });
        $('.isPeso').mask('#00,000', {
            reverse: true
        });
        $('.isAltura').mask('000');
        $('.isTemperatura').mask('00,000');

        var spMaskBehavior = function(value) {
            return value.replace(/\D/g, '').length === 11
                ? '(00) 00000-0000'
                : '(00) 0000-00009';
        };

        var spOptions = {
            onKeyPress: function(value, event, field, options) {
                field.mask(spMaskBehavior.apply({}, arguments), options);
            }
        };

        $('.isTelefone').mask(spMaskBehavior, spOptions);
    });
})(window, window.jQuery);
