/* * Padronizaçãoo das funções utils (via javascript). * * ATENÇÃO: Para adicionar novos m�todos, deve-se realizar testes nos browsers: IE, Firefox, Chrome * (e confirmar que a fun��o funciona corretamente em todos). * * DEPEND�NCIAS: jquery-1.8.3.js, jquery-ui-1.9.2.custom.min.js * */ //####################### //## VARI�VEIS GLOBAIS ## //####################### var temp = ""; // #################### // ## M�todos Jquery ## // #################### $(function() { /* * mensagem de Alerta no top da página após certa altura do scroll; Caso não * seja homologado esta melhoria, basta remover este código. (Manin) */ var pageAltura = $('html').css('height'); var altura = pageAltura.split("px") if (parseInt(altura[0]) > 1030) { $(window).off().scroll(function() { if ($(this).scrollTop() > 310) { $('#area-mensagens').addClass('box-fixed'); if ($('#area-mensagens').length > 0) { $('#corpo form').css('margin-top', '0px'); } } else { $('#area-mensagens').removeClass('box-fixed'); $('#corpo form').css('margin-top', '0'); } }); } $('.table-grid tbody tr td > input[type=radio]:checked').parent().parent() .addClass('active'); $('.table-grid tbody tr td > input[type=checkbox]:checked').parent() .parent().addClass('active'); $('.table-grid tbody tr td > input[type=checkbox]').change(function() { if ($(this).is(':checked')) { $(this).parent('td').parent('tr').addClass('active') } else { $(this).parent('td').parent('tr').removeClass('active') } }); $('.table-grid tbody tr td > input[type=radio]').off('change').change( function(event) { $('.table-grid tbody tr td > input[type=radio]').parent('td') .parent('tr').removeClass('active') $(this).parent('td').parent('tr').addClass('active') }); $('.table-grid tbody tr td').off('click').click( function() { if ($(this).find('input:text').length <= 0 && $(this).find('select').length <= 0) { if ($(this).parent().children('td').first().children( 'input').is(':radio')) { if (!$(this).is(':first-child') && $(this).find('a').length == 0) { var elem = $(this).parent().children('td').first() .children('input').not(':disabled'); elem.trigger('click'); } } else { if (!$(this).is(':first-child') && $(this).find('a').length == 0) { $(this).parent().children('td').first().children( 'input').not(':disabled').trigger('click'); } var marcarTodos = $(this).parent().parent().parent() .find('thead tr th > input[type=checkbox]') .attr('id'); if ($(this).parent().parent().find( 'tr td > input[type=checkbox]:checked').not( '#' + marcarTodos).length == $(this).parent() .parent().find('tr td > input[type=checkbox]') .not('#' + marcarTodos).length) { $(this).parent().parent().parent().find( 'thead tr th > input[type=checkbox]').attr( 'checked', 'checked'); } else { $(this).parent().parent().parent().find( 'thead tr th > input[type=checkbox]') .removeAttr('checked'); } } } }); $.ajaxSetup({ scriptCharset : "utf-8", contentType : "application/x-www-form-urlencoded; charset=UTF-8" }); var foco = function() { var elementos = new Array(); if ($('.obrigatorio').length == 0) return false; $('.obrigatorio input[type=text], .obrigatorio textarea').not( ':disabled').each(function(i, e) { if ($(this).val().length == 0) { elementos.push($(this)); } }); $('.obrigatorio input.popupLink').each(function(i, e) { var hiddens = $(this).parent().find('input[type=hidden]'); var hiddenComValor = false; $(hiddens).each(function(i, e) { if ($(this).val().length > 0) { hiddenComValor = true; } }); if (hiddenComValor == false) { elementos.push($(this)); } }); $('.obrigatorio select').not(':disabled').each( function(i, e) { if ($(this).val() == '' || $(this).val() == undefined || $(this).val() == null) { elementos.push($(this)); } }); var radioGrupos = new Array(); $('.obrigatorio input[type=radio],.obrigatorio input[type=checkbox]') .each(function(i, e) { if ($.inArray($(this).attr('class'), radioGrupos) == -1) { radioGrupos.push($(this).attr('name')); } }); $.each(radioGrupos, function(i, e) { if (!$('input.' + e).is(':checked')) { elementos.push($('input' + e)); } }); $('.obrigatorio input,.obrigatorio textarea,.obrigatorio select').each( function(i, e) { var elem1 = $(this); var isFirst = false; $.each(elementos, function(i2, e2) { if (elem1.get(0) === $(this).get(0)) { isFirst = true; } }); if (isFirst == true) { $(this).first().focus(); if ($(this).is('select')) { $(this).first().select(); } return false; } }); }; foco(); $.fn.invisible = function() { return this.each(function() { $(this).css("visibility", "hidden"); }); }; $.fn.visible = function() { return this.each(function() { $(this).css("visibility", "visible"); }); }; $.fn.disable = function() { return this.each(function() { $(this).prop('disabled', true); }); }; $.fn.enable = function() { return this.each(function() { $(this).prop('disabled', false); }); }; $.fn.carregarCombo = function(options) { var settings = $.extend({ from : this, target : null, action : null }, options) $(settings.from).change( function() { $(settings.target).empty(); $(settings.target).append( ""); if ($(settings.from).val() != '') { $.post(settings.action, { 'id' : $(settings.from).val() }, function(data) { $.each(data, function(i, e) { var option = ""; $(settings.target).append(option) }); }, "JSON") } }).trigger('change'); return $(settings.from) }; $.fn.characterCounter = function(limit) { return this.filter("textarea, input:text").each(function() { var $this = $(this), checkCharacters = function(event) { if ($this.val().length > limit) { $this.val($this.val().substring(0, limit)); event.preventDefault(); event.stopPropagation(); } }; $this.keyup(function(event) { var keys = { BACKSPACE : 8, TAB : 9, LEFT : 37, UP : 38, RIGHT : 39, DOWN : 40 }; switch (event.which) { case keys.UP: case keys.DOWN: case keys.LEFT: case keys.RIGHT: case keys.TAB: break; default: checkCharacters(event); break; } }); $this.bind("paste cut", function(event) { setTimeout(function() { checkCharacters(event); event = null; }, 150); }); }); }; function ordenarSelect(campo, orderByValue) { var selectToSort = campo; var optionActual = selectToSort.val(); selectToSort.html(selectToSort.children('option').sort(function(a, b) { if (orderByValue) { return a.value === b.value ? 0 : a.value < b.value ? -1 : 1; } else { return a.text === b.text ? 0 : a.text < b.text ? -1 : 1; } })).val(optionActual); } $.fn.multiploSelect = function(options) { var settings = $.extend({ target : null, idAdd : null, idRemove : null, idAddAll : null, idRemoveAll : null, orderByValue : false }, options); var from = $(this); $('#' + settings.idAdd).click( function() { from.find('option').each( function(i, e) { if ($(e).is(':selected')) { $(settings.target).append( ''); $(e).remove(); ordenarSelect($(settings.target), settings.orderByValue); } }); }); $('#' + settings.idRemove).click( function() { $(settings.target).find('option') .each( function(i, e) { if ($(e).is(':selected')) { from .append(''); $(e).remove(); ordenarSelect(from, settings.orderByValue); } }); }); $('#' + settings.idRemoveAll).click( function() { $(settings.target).find('option').each( function(i, e) { from.append(''); $(e).remove(); ordenarSelect(from, settings.orderByValue); }); }); $('#' + settings.idAddAll).click( function() { from.find('option').each( function(i, e) { $(settings.target).append( ''); $(e).remove(); ordenarSelect($(settings.target), settings.orderByValue); }); }); $('form').submit(function() { $(settings.target + " option").each(function() { $(this).attr('selected', 'selected'); }); from.find('option').each(function() { $(this).attr('selected', 'selected'); }); }) }; $.fn.marcarTodos = function(options) { var settings = $.extend({ classTarget : null, botaoToggle : null }, options); if (settings.classTarget == null) { console.log("Erro: O atributo classTarget é obrigatório."); return false; } if (settings.classTarget.length <= 0) { console .log("Erro: O atributo classe definida em classTarget não existe."); return false; } var idClass = $(this).attr('id'); var checkMarcarTodos = $(this); if ($(settings.classTarget).length == 0) { $(this).hide(); } var desabilitarBotao = function() { if ($(settings.classTarget).not('#' + idClass).is(':checked')) { $(settings.botaoToggle).removeAttr("disabled"); $(settings.botaoToggle).removeClass("form-button-disabled") .addClass("form-button"); } else { $(settings.botaoToggle).attr("disabled", "disabled"); $(settings.botaoToggle).removeClass("form-button").addClass( "form-button-disabled"); } }; if ($(settings.classTarget + ':checked').length == $(settings.classTarget).length) { checkMarcarTodos.attr('checked', 'checked'); } else { checkMarcarTodos.removeAttr('checked'); } checkMarcarTodos .change(function() { if ($(this).is(':checked')) { $(settings.classTarget).not(':disabled').attr( 'checked', 'checked') $(settings.classTarget).not(':disabled').parent() .parent().addClass('active'); } else { $(settings.classTarget).removeAttr('checked'); $(settings.classTarget).parent().parent().removeClass( 'active'); } desabilitarBotao(); }); $(settings.classTarget) .change( function() { if ($(settings.classTarget + ':checked').not( '#' + idClass).length == $( settings.classTarget).not('#' + idClass).length) { checkMarcarTodos.attr('checked', 'checked'); } else { checkMarcarTodos.removeAttr('checked'); } desabilitarBotao(); }).trigger('change'); }; $.fn.toScroll = function() { return this.each(function() { $('html, body').animate({ scrollTop : $(this).offset().top }, 1000); }); }; $.fn.verificaCheck = function() { if ($(this).is(':checked')) { return true; } return false; }; $.fn.apenasNumerosSemCaracteres = function() { return this.each(function() { $(this).keypress(function(e) { var keyCode = e.keyCode || 0; var charCode = e.charCode || 0; return (keyCode == 8 || // backspace keyCode == 9 || // tab keyCode == 46 || // delete (keyCode >= 37 && keyCode <= 40) || // setas (charCode >= 48 && charCode <= 57)); // 0 - 9 }); }); }; }); // ############# // ## FUN��ES ## // ############# /** * Esta fun��o retorna uma refer�ncia do elemento pai que contenha a tagPai e o * idPai quando este for informado. */ function getElementoPai(elementFilho, tagPai, idPai) { var elementoPai = $(elementFilho) .parents() .map( function() { if ((this.tagName == tagPai) && (($(this).attr('id').indexOf(idPai) > -1) || (typeof (idPai) == "undefined"))) { return this; } }).get(0); return elementoPai; } function bloquearBrowser() { $("#bloquerBrowser").show(); } function gerarAreaMsg() { var divMsg = $("
"); var ul = $('