var SISAD = { abrirPopup : function(url) { return abrirJanelaCentralizada(url, 'estruturaOrganizacional', 650, 400, 'yes'); }, atalhoDeTeclado: function(evt) { window.alert(evt.charCode); window.alert(evt.keyCode); window.alert(evt.which); }, naoDisponivel : function(casoDeUso) { if (casoDeUso == null) { casoDeUso = 'selecionado'; } else if (typeof(casoDeUso) != 'string' ){ casoDeUso = casoDeUso.innerHTML.stripTags(); } window.alert('O caso de uso #{casoDeUso} ainda não está disponível.' .interpolate( { 'casoDeUso' : casoDeUso }) ); }, removerPendencia : function(url, id) { new Ajax.Request(url, { method: 'get', parameters: { 'n': id }, onComplete: function (t) { $('notificao' + id).blindUp({ afterFinish: function() { $('notificao' + id).remove(); var r = $('numMensagens').innerHTML - 1; $('numMensagens').innerHTML = r; if (r == 0) { $('areaDePendencias').fade({ afterFinish: function() { $('areaDePendencias').remove(); }}); } }}); } }); } }; /** Específico do prototype * */ Form.Element.Methods.isTextBox = function(elemento) { return $(elemento).is('input') && [ 'text' ].include($(elemento).type); }; Form.Element.Methods.isCheckBox = function(elemento) { return $(elemento).is('input') && [ 'checkbox' ].include($(elemento).type); }; Element.Methods.is = function(elemento, tag) { return $(elemento).tagName.toLowerCase() == tag.toLowerCase(); }; /** * Faz com que um elemento passe a funcionar como "selecionar todos" para um * conjunto de outros elementos. * * @param quem * Lista de elementos ou uma expressão selector (CSS) indicando os * elementos a serem filtrados. */ Form.Element.Methods.selectsAll = function(elemento, quem) { elemento = $(elemento); if (elemento.isCheckBox()) { if (typeof (quem) == 'string') { quem = $$(quem); } elemento.title = 'Selecionar Tudo'; elemento.observe('click', function(event) { quem.each(function(checkbox) { $(checkbox).checked = $(elemento).checked; }); }); } return elemento; }; /** * Faz com que um elemento passe a funcionar como filtro de uma tabela. * * @param tbody * Elemento do tipo tbody, em que estão as linhas (tr) que contem o * texto a ser filtrado. */ Form.Element.Methods.isFilterBoxFor = function(textbox, tbody) { textbox = $(textbox); tbody = $(tbody); if (textbox.isTextBox() && tbody.is('tbody')) { var filtrar = function() { var criterio = textbox.value.strip().replace(/[-\/.]/g, ''); var cri = new RegExp(criterio, "gi"); tbody.select('tr').each(function(tr) { tr.select('td').each(function(td) { var conteudo = td.innerHTML.stripTags().strip().replace(/[-\/.]/g, ''); if (cri.match(conteudo)) { tr.show(); throw $break; } else { tr.hide(); } }); }); } textbox.observe('focus', function(evt) { this.value = ''; this.setStyle( { fontStyle : 'normal', color : '' }); }); textbox.observe('blur', function(evt) { filtrar(); if (this.value.blank()) { this.value = 'Filtrar...'; this.setStyle( { fontStyle : 'italic', color : 'gray' }); } }); textbox.value = 'Filtrar...'; textbox.setStyle( { fontStyle : 'italic', color : 'gray' }); textbox.addClassName('sisad-filtro'); textbox.title = "Digite um critério e pressione ENTER para filtrar a tabela"; textbox.observe('keypress', function(evt) { if (evt.keyCode == Event.KEY_RETURN) { filtrar(); evt.stop(); } }); } return textbox; }; /** * Faz com que um elemento do tipo checkbox funcione como "liga-desliga" de um * outro elemento. * * @param element * Elemento a ser controlado pelo checkbox. */ Form.Element.Methods.toggles = function(checkbox, element) { checkbox = $(checkbox); element = $(element); if (checkbox.isCheckBox()) { function _toggles_internalHandler() { if (checkbox.checked) { element.show(); } else { element.hide(); } } _toggles_internalHandler(); checkbox.observe('click', function(evt) { _toggles_internalHandler(); }); } return element; }; // Atualiza a lista de métodos. Element.addMethods(); document.observe('dom:loaded', function() { $$('div.bannerAlerta').each( function(div) { div.observe('click', function() { div.fade(); }); }); $$('input.sisad-mascaraData').each( function (input) { input.observe('keypress', function (evt) { var code = evt.keyCode ? evt.keyCode : evt.which; var char = String.fromCharCode(code); if (/[0-9\/]/.test(char)) { formatarCampoData(input, evt); } else { if (evt.keyCode in [ Event.KEY_TAB, Event.KEY_BACKSPACE, Event.KEY_DELETE ]) { evt.stop(); } } }); }); });