var tipoFuncao = typeof (function () {});
var tipoObjeto = typeof ({});
var tipoString = typeof ("");
$(function () {
$("textarea[maxlength]").bind('input propertychange', function () {
var maxLength = $(this).attr('maxlength');
if ($(this).val().length > maxLength) {
$(this).val($(this).val().substring(0, maxLength));
}
});
/*
$(".campo-data").calendario();
$(".campo-cpf").cpf();
$(".campo-cnpj").cnpj();
*/
$('.btn-impressao-relatorio').click(function () {
isRelatorioCall();
});
$().ajaxStart(function () {
$("#bloquerBrowser").show();
});
$().ajaxComplete(function () {
$("#bloquerBrowser").hide();
});
$().ajaxSuccess(function (evnt, request, settings) {
$("#bloquerBrowser").hide();
});
$().ajaxError(function (request, settings, exception) {
$("#bloquerBrowser").hide();
});
$("form").submit(function (eventObject) {
$('#area-mensagens').remove();
//Solução encontrada para Corrigir problema ao fazer download de relatorios, etc.
if ($('#isRelatorio') == undefined || $('#isRelatorio').attr('value') == undefined || $('#isRelatorio').attr('value') == 'false') {
$("#bloquerBrowser").show();
} else {
$('#isRelatorio').attr('value', 'false');
}
//}
});
$("input[type='submit']").click(function (eventObject) {
if (($(this).attr('value').toUpperCase() == 'CONSULTAR')
|| ($(this).attr('value').toUpperCase() == 'CONSULTA')) {
$("input[name='paginaAtual']").attr('value', '1');
}
});
// Dialog exemplo
$('#dialog-exemplo').dialog({
autoOpen: false,
modal: true,
width: 600,
height: 400,
resizable: false
});
// Dialog exemplo link
$('#dialog-exemplo-link').click(function () {
$('#dialog-exemplo').dialog('open');
return false;
});
// Dialog confirm
$('#dialog-confirm').dialog({
autoOpen: false,
modal: true,
resizable: false,
buttons: {
"Não": function () {
$(this).dialog("close");
},
"Sim": function () {
$(this).dialog("close");
}
}
});
// Dialog confirm link
$('#dialog-confirm-link').click(function () {
$('#dialog-confirm').dialog('open');
return false;
});
// Dialog fun��es gerais
$('#dialog-funcoes').dialog({
autoOpen: false,
modal: true,
width: 600,
height: 400,
resizable: false
});
// Dialog fiun��es gerais link
$('#dialog-funcoes-link').click(function () {
$('#dialog-funcoes').dialog('open');
return false;
});
// Dialog fiun��es gerais link
$('#dialog-situacao-link').click(function () {
$('#dialog-situacao').dialog('open');
return false;
});
// Datepicker
$('#campo-data-de').datepicker({
changeMonth: true,
changeYear: true,
yearRange: '1900:2010'
});
$('#campo-data-a').datepicker({
changeMonth: true,
changeYear: true,
yearRange: '1900:2010'
});
$("input[name='paginaAtual']").keypress(function (e) {
if (e.which == 13) {
e.preventDefault();
}
});
});
// Chamada protegida. Evita que submits saiam da página em caso de erro.
function pcall(f) {
var args = [];
for (var i = 1; i < arguments.length; i += 1) {
args.push(arguments[i]);
}
try {
f.apply(this, args);
} catch (e) {
console.error(e);
}
}
/**
* Prepara os grids da tela que possuam campos selecionáveis, para que permitam seleção
* de elementos clicando em qualquer lugar da linha, e "ativem" a linha juntamente com
* o input (checkbox ou radio) selecionado.
* A "ativação" da se dá pela simples adição da classe css "active".
*/
function prepararSelecaoGrid() {
$(document).on('click', 'tr.linha-grid', function (e) {
var input = $(this).find('input[type=radio], input[type=checkbox]').get(0);
if (!input || input.disabled) {
// Se não há input selecionável - ou o input está desabilitado - não é possível
// selecionar a linha.
// Nesse caso, simplesmente propagamos o evento normalmente.
return true;
}
var tipo = input.type;
if (tipo === 'radio') {
// Para radio, é preciso limpar a linha atual antes de setar a nova.
$(this).parent().find('tr.active').removeClass('active');
$(this).addClass('active');
if (!input.checked) {
input.checked = true;
$(input).trigger('change');
}
} else {
// Para checkbox, é preciso limpar ou ativar a linha de acordo com o novo estado,
// Além de detectar se o clique não é no próprio checkbox, para evitar que o estado
// do mesmo seja modificado duas vezes.
if (e.target === input) {
// O checkbox foi clicado, ao invés do resto da linha.
// Não alterar o checkbox, apenas a cor da linha
if (input.checked) {
$(this).addClass('active');
} else {
$(this).removeClass('active');
}
} else {
// Foi clicado na linha, mas não no próprio checkbox.
// Alterar o estado do checkbox, juntamente com a própria linha.
if (input.checked) {
$(this).removeClass('active');
input.checked = false;
} else {
$(this).addClass('active');
input.checked = true;
}
$(input).trigger('change');
}
}
})
}
function limitarTextArea(limitField, limitNum) {
var length = 0;
for (var i = 0; i < limitField.value.length; i++) {
if (limitField.value[i] == '\r' || limitField.value[i] == '\n') {
length += 2;
if (i < limitNum) {
limitNum = limitNum - 1;
}
} else {
length++;
}
}
if (length > limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
}
}
function dwrErrorHandler(mensagem, exception) {
if (exception.javaClassName == 'br.gov.mapa.arquitetura.exception.BusinessExceptionAlert') {
desbloquearBrowser();
adicionarMensagem(mensagem, 'A');
} else if (exception.javaClassName == 'br.gov.mapa.arquitetura.exception.BusinessExceptionInfo') {
desbloquearBrowser();
adicionarMensagem(mensagem, 'I');
} else {
desbloquearBrowser();
adicionarMensagem(mensagem, 'E');
}
}
function erroInterno(e) {
if (typeof (e) !== tipoString) {
console.error(e);
}
$('#popup-detalhe-erro-interno').html(typeof (e) === tipoString ? e : _.escape(e.toString()));
inicializarModalOkParametrizado('popup-detalhe-erro-interno', {largura: 800, altura: 600}, function () {
});
adicionarMensagem('Ocorreu um erro interno. ', 'E');
desbloquearBrowser();
}
function completeDwrErrorHandler(mensagem, exception) {
if (!exception.javaClassName.match('BusinessException')) {
desbloquearBrowser();
var trace = '';
trace += mensagem + ' ';
exception.stackTrace.map(function (val) {
trace += val.className + "." + val.methodName + "[" + val.lineNumber + "]" + ' '
})
var cause = exception.cause;
while (cause) {
trace += "Caused by: "
cause.stackTrace.map(function (val) {
trace += val.className + "." + val.methodName + "[" + val.lineNumber + "]" + ' '
})
cause = cause.cause;
}
erroInterno(trace);
} else {
dwrErrorHandler(mensagem, exception);
}
}
function removerAreaMensagem() {
$('#area-mensagens').html('');
$('#areaMensagemDownload').html('');
}
function adicionarMensagem(mensagem, tipo) {
exibirMensagem("area-mensagens", mensagem, tipo);
}
/**
* Método de baixo nível para exibir mensagem em qualquer localização necessária.
* Para exibir mensagens na área de mensagens padrão, utilize a função {@code adicionarMensagem(mensagem, tipo)}
*
* @param id O id da div dentro da qual a mensagem será incluída.
* @param mensagem O texto da mensagem a apresentar.
* @param tipo O tipo de mensagem. 'S' para sucesso, 'A' para alerta e 'E' para erro.
* @param contexto O objeto document que define o contexto da página.
* Ex.: Se um popup deseja exibir uma mensagem na janela pai, deverá passar o objeto {@code window.parent.document}.
* Importante: Não passar um objeto jquery, ou um contexto diferente de um objeto document, pois o comportamento será indefinido.
*/
function exibirMensagem(id, mensagem, tipo, contexto) {
var mensagemFormatada = mensagem.replace(/~/g, " ").replace(/\ $/, '');
var $div = $('#' + id, contexto);
if (tipo == 'A') {
$div.html(
"
"
+ mensagemFormatada
+ "
");
} else if (tipo == 'S') {
$div.html(
"
"
+ mensagemFormatada
+ "
");
} else if (tipo == 'I') {
$div.html(
"
"
+ mensagemFormatada
+ "
");
} else {
$div.html(
"
"
+ mensagemFormatada
+ "
");
}
$div.show();
var body = $('html, body');
if (contexto) {
body = $(contexto.querySelectorAll('html, body'));
window.parent.closeIframe();
}
body.animate({
scrollTop: $div.parent().offset().top
}, 'slow');
}
function exibirNovaMensagem(msg, tipo) {
limparMsgs();
exibirMensagem("area-mensagens", msg, tipo);
}
function inicializarModalOk(dialog, func) {
inicializarModalOkParametrizado(dialog, {largura: 320, altura: 220}, func);
}
function inicializarModalOkParametrizado(dialog, opcoes, func) {
$('#' + dialog).dialog({
autoOpen: false,
modal: true,
resizable: false,
width: opcoes.largura,
height: opcoes.altura,
buttons: {
"Ok": function () {
$(this).dialog("close");
if (typeof (func) === tipoFuncao) {
func();
} else if (typeof (func) === tipoObjeto && typeof (func.ok) === tipoFuncao) {
func.ok();
}
}
},
close: function () {
if (typeof (func) === tipoObjeto && typeof (func.close) === tipoFuncao) {
func.close();
}
},
open: function () {
$(this).parent().find('button:nth-child(1)').focus();
}
});
}
function inicializarModalParametrizado(dialog, opcoes, func) {
return $('#' + dialog).dialog({
autoOpen: false,
modal: true,
resizable: false,
width: opcoes.largura,
height: opcoes.altura,
buttons: {
"Não": function () {
$(this).dialog("close");
if (typeof (func) !== tipoFuncao) {
func.callbackNao();
}
},
"Sim": function () {
$(this).dialog("close");
if (opcoes.naoBloquearBrowser == undefined || opcoes.naoBloquearBrowser == false) {
bloquearBrowser();
}
if (typeof (func) === tipoFuncao) {
func();
} else {
func.callbackSim();
}
}
},
open: function () {
$(this).parent().find('button:nth-child(1)').focus();
}
});
}
function inicializarModal(dialog, func) {
return inicializarModalParametrizado(dialog, {largura: 320, altura: 220}, func);
}
/**
* Registra um modal sem a necessidade de incluir uma div na página.
*
* @param opcoes
* @returns
*/
function registrarModal(opcoes) {
$('#area-popup').append('');
$('#' + opcoes.id).append('
' + opcoes.msg + '
');
if (!opcoes.largura) opcoes.largura = 320;
if (!opcoes.altura) opcoes.altura = 220;
var func = typeof (opcoes.nao) === tipoFuncao ? {callbackSim: opcoes.sim, callbackNao: opcoes.nao} : opcoes.sim;
return inicializarModalParametrizado(opcoes.id, opcoes, func);
}
function abrirModal(dialog) {
$('#' + dialog).dialog('open');
}
/*
* Remover a div de mensagens da popup
*/
function removerBarraMensagens(popup) {
$("#" + popup + " > div").remove();
}
/*function resetarForm(formNumber, campos){
if (formNumber == null){
formNumber = 1;
}
$($('form').get(formNumber)).find('input:text,textarea').each(function(){
if($(campos).index($(this).attr('name')) == -1){
if($(this).attr('name') != 'paginaAtual'){
$(this).val('');
}
}
});
$($('form').get(formNumber)).find('select').each(function(){
if($(campos).index($(this).attr('name')) == -1){
$(this).find('option').removeAttr('selected');
}
});
$($('form').get(formNumber)).find('input:radio').each(function(){
if($(campos).index($(this).attr('name')) == -1){
$(this).removeAttr('checked');
}
});
$($('form').get(formNumber)).find('input:radio').each(function(){
if($(campos).index($(this).attr('name')) == -1){
$($($('form').get(formNumber)).find('input[name='+$(this).attr('name')+']:first')).attr('checked', 'checked');
}
});
}*/
function bloquearBrowser() {
$("#bloquerBrowser").show();
}
function desbloquearBrowser() {
$("#bloquerBrowser").hide();
}
function sleep(ms) {
var start = new Date().getTime();
var end = start;
while (end < start + ms) {
end = new Date().getTime();
}
}
/*
* Bloquear ctrl + v
*
*/
function noCopy(event) {
var tecla = String.fromCharCode(event.keyCode).toLowerCase();
if (event.ctrlKey && (tecla == "c" || tecla == "v")) {
window.event ? event.returnValue = false : event.preventDefault();
return false;
}
}
function noSubmit(event) {
var tecla = event.keyCode || event.witch;
if (tecla == 13) {
return false;
}
}
function htmlFocus(elemento) {
if (document.getElementById(elemento) != undefined)
document.getElementById(elemento).focus();
}
function isRelatorioCall() {
$('#isRelatorio').attr('value', 'true');
removerAreaMensagem();
$("#bloquerBrowser").hide();
}
function formataCPFCNPJ(campo, teclapres) {
const valorSemMascara = String(campo.value).replace(/[^0-9]/g, '');
if (valorSemMascara.length > 11) {
return FormataCNPJ(campo, teclapres)
} else {
return FormataCPF(campo, teclapres)
}
}
function formataCpfCnpjPorTipo(campo, teclapres, tipo) {
if (SomenteNumero(teclapres)) {
if (tipo === '') {
return formataCPFCNPJ(campo, teclapres);
} else {
if (tipo === 'J') {
return FormataCNPJ(campo, teclapres)
} else {
return FormataCPF(campo, teclapres)
}
}
} else {
return false;
}
}
function FormataCPF(campo, teclapres) {
// Remove os caracteres que não sejam numéricos (0-9)
const valorSemMascara = String(campo.value).replace(/[^0-9]/g, '');
const tamanho = valorSemMascara.length;
const tecla = teclapres.keyCode;
if (tecla !== 8 && tecla !== 9) {
if (tamanho > 11) {
return false;
} else if (tamanho > 3 && tamanho < 7) {
campo.value = valorSemMascara.substr(0, 3) + '.' + valorSemMascara.substr(3, tamanho);
} else if (tamanho >= 7 && tamanho < 10) {
campo.value = valorSemMascara.substr(0, 3) + '.' + valorSemMascara.substr(3, 3) + '.' + valorSemMascara.substr(6, tamanho - 6);
} else if (tamanho >= 10 && tamanho < 12) {
campo.value = valorSemMascara.substr(0, 3) + '.' + valorSemMascara.substr(3, 3) + '.' + valorSemMascara.substr(6, 3) + '-' + valorSemMascara.substr(9, tamanho - 9);
}
}
}
function FormataCNPJCPF(campo, teclapres) {
// Remove os caracteres que não sejam numéricos (0-9)
const valorSemMascara = String(campo.value).replace(/[^0-9]/g, '');
const tamanho = valorSemMascara.length;
const tecla = teclapres.keyCode;
if (tecla !== 8 && tecla !== 9) {
if (tamanho > 11) {
return FormataCNPJ(campo, teclapres);
} else if (tamanho > 3 && tamanho < 7) {
campo.value = valorSemMascara.substr(0, 3) + '.' + valorSemMascara.substr(3, tamanho);
} else if (tamanho >= 7 && tamanho < 10) {
campo.value = valorSemMascara.substr(0, 3) + '.' + valorSemMascara.substr(3, 3) + '.' + valorSemMascara.substr(6, tamanho - 6);
} else if (tamanho >= 10 && tamanho < 12) {
campo.value = valorSemMascara.substr(0, 3) + '.' + valorSemMascara.substr(3, 3) + '.' + valorSemMascara.substr(6, 3) + '-' + valorSemMascara.substr(9, tamanho - 9);
}
}
}
function FormataCNPJ(campo, teclapres) {
// Remove os caracteres que não sejam numéricos (0-9)
const valorSemMascara = campo.value.replace(/[^\d]+/g, '');
const tamanho = valorSemMascara.length;
const tecla = teclapres.keyCode;
if (tecla !== 8 && tecla !== 9) {
if (tamanho > 14) {
return false;
} else if (tamanho > 2 && tamanho < 6)
campo.value = valorSemMascara.substr(0, 2) + '.' + valorSemMascara.substr(2, tamanho);
if (tamanho >= 6 && tamanho < 9)
campo.value = valorSemMascara.substr(0, 2) + '.' + valorSemMascara.substr(2, 3) + '.' + valorSemMascara.substr(5, tamanho - 5);
if (tamanho >= 9 && tamanho < 13)
campo.value = valorSemMascara.substr(0, 2) + '.' + valorSemMascara.substr(2, 3) + '.' + valorSemMascara.substr(5, 3) + '/' + valorSemMascara.substr(8, tamanho - 8);
if (tamanho >= 13 && tamanho < 15)
campo.value = valorSemMascara.substr(0, 2) + '.' + valorSemMascara.substr(2, 3) + '.' + valorSemMascara.substr(5, 3) + '/' + valorSemMascara.substr(8, 4) + '-' + valorSemMascara.substr(12, tamanho - 12);
}
}
function SomenteNumero(e) {
var tecla = (window.event) ? event.keyCode : e.which;
if ((tecla > 47 && tecla < 58) || tecla === 9) return true;
else {
if (tecla !== 8) return false;
else return true;
}
}
function campoNumeroDecimal(campo, evt) {
// Remove os caracteres que não sejam numéricos (0-9) e '.' (ponto)
campo.val(campo.val().replace(/[^0-9.-]/g, ''));
// Caso o usuário digite mais de um '.' (ponto) ou '-' (traço) será removido
if ((campo.val().split('.').length > 2) || (campo.val().split('-').length > 2)) {
campo.val(campo.val().substring(0, campo.val().length - 1));
}
// O sinal de '-' só é permitido na primeira posição
if (campo.val().indexOf('-') !== -1 && campo.val().charAt(0) !== '-') {
campo.val(campo.val().substring(0, campo.val().length - 1));
}
}
function somenteNumeral(campo) {
var digits = "0123456789";
var campo_temp;
for (var i = 0; i < campo.value.length; i++) {
campo_temp = campo.value.substring(i, i + 1);
if (digits.indexOf(campo_temp) == -1) {
campo.value = campo.value.substring(0, i);
}
}
}
function selecionarTodosComboMultiple(idCombo) {
$("#" + idCombo + " option").each(function () {
$(this).attr('selected', true);
});
}
function adicionarItemCombo(select, value, text) {
if (value != '') {
var naoAchou = true;
$("#" + select + " option").each(function () {
if ($(this).attr("value") == value) {
naoAchou = false;
}
});
if (naoAchou) {
$("#" + select).append("");
}
}
}
function preencherListaCombo(idSelect, idSelectDestino) {
var select = document.getElementById(idSelect);
for (var i = 0; i < select.length; i++) {
if (select[i].selected) {
adicionarItemCombo(idSelectDestino, select[i].value, select[i].text);
}
}
$("#" + idSelect + " option:selected").remove();
$("#" + idSelectDestino).sortOptions();
}
function preencherTodosListaCombo(idSelect, idSelectDestino) {
var select = document.getElementById(idSelect);
for (var i = 0; i < select.length; i++) {
adicionarItemCombo(idSelectDestino, select[i].value, select[i].text);
}
$("#" + idSelect).attr("value", '');
$("#" + idSelect).empty();
$("#" + idSelectDestino).sortOptions();
}
function removerTodosListaCombo(idSelect) {
$('#' + idSelect).children().remove();
}
//Opções de validação que existirão em cada formulário.
// nome -> valor do atributo name do campo.
// rotulo -> rótulo utilizado quando rótulo da mensagem é diferente do apresentado em tela.
// dependencias -> funções que implementam lógica de dependência para obrigatoriedade. Retornam valor booleano.
// Tag que indica que uma query de dependência aceita qualquer valor para o campo.
var qualquerValor = {};
// Obtém o objeto jquery do campo.
function obterObjetoJqueryDoCampo(campo) {
var seletor = null;
if (campo.id) {
seletor = '#' + campo.id;
} else {
seletor = '[name="' + campo.nome + '"]';
}
var isRadioCheckBox = $(seletor + '[type="radio"], ' + seletor + '[type="checkbox"]').length > 1;
if (isRadioCheckBox) {
// É um radio ou checkbox. Voltar apenas o(s) valor(es) marcado(s).
return $(seletor + ':checked');
} else {
return $(seletor);
}
}
// Verifica se uma dependência está sendo cumprida.
function dependenciaValida(dependencia) {
var valor = obterObjetoJqueryDoCampo(dependencia.campo).val();
if (typeof (dependencia.query) === 'function') {
return dependencia.query(valor);
}
if (dependencia.query === qualquerValor) {
return valor !== '';
}
return valor === dependencia.query;
}
// Verifica se todas as dependências estão sendo cumpridas.
function dependenciasValidas(dependencias) {
if (!dependencias) return true;
for (var i = 0; i < dependencias.length; ++i) {
if (!dependenciaValida(dependencias[i])) {
return false;
}
}
return true;
}
// Valida todos os campos como obrigatórios e apresenta mensagem caso não estejam preenchidos.
function validarCamposObrigatorios(opcoes) {
var mensagens = '';
if (!opcoes.areaMensagens) {
opcoes.areaMensagens = "area-mensagens";
}
if (opcoes && opcoes.campos) {
var camposObrigatorios = opcoes.campos;
for (var i = 0; i < camposObrigatorios.length; i++) {
var campo = camposObrigatorios[i];
var obj = obterObjetoJqueryDoCampo(campo);
if (dependenciasValidas(campo.dependencias)) {
if (
(campo.queryCampoPreenchido && !campo.queryCampoPreenchido(obj.val())) ||
(!campo.queryCampoPreenchido && (obj.length < 1 || obj.val() === '' || (campo.notAllowZero && !isPreenchidoNaoPermiteZero(obj.val()))))) {
var rotulo = campo.rotulo;
if (!rotulo) {
var idCampo = obj.prop("id");
rotulo = $('label[for="' + idCampo + '"]').text().trim().replace(":", "");
}
if (campo.mensagem) {
mensagens += campo.mensagem;
} else {
mensagens += 'O campo {0} é de preenchimento obrigatório!~'.replace("{0}", rotulo);
}
}
}
}
}
if (mensagens !== '') {
limparMsgs(opcoes.areaMensagens);
exibirMensagem(opcoes.areaMensagens, mensagens, 'A');
}
return mensagens === '';
}
function validaData(digData) {
var bissexto = 0;
var data = digData.value;
var tam = data.length;
if (tam === 10) {
var dia = data.substr(0, 2);
var mes = data.substr(3, 2);
var ano = data.substr(6, 4);
if ((ano > 1900) || (ano < 2100)) {
switch (mes) {
case '01':
case '03':
case '05':
case '07':
case '08':
case '10':
case '12':
if (dia <= 31) {
return true;
}
break
case '04':
case '06':
case '09':
case '11':
if (dia <= 30) {
return true;
}
break
case '02':
/* Validando ano Bissexto / fevereiro / dia */
if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0)) {
bissexto = 1;
}
if ((bissexto == 1) && (dia <= 29)) {
return true;
}
if ((bissexto != 1) && (dia <= 28)) {
return true;
}
break
}
}
digData.value = '';
} else {
digData.value = '';
}
return false;
}
function limpar() {
limparFilhos(null);
}
function limparMsgs(id) {
if (!id) id = 'area-mensagens';
$('#' + id).html('');
}
function limparFilhos(elementoPai) {
var prefixo = elementoPai ? (elementoPai + ' ') : '';
// Limpar todos os inputs, selects e radios;
limparCampos(elementoPai);
// Remover elementos opcionais
$(prefixo + '.remover-ao-limpar').remove();
$(prefixo + '[type="hidden"].limpar').val('');
$(prefixo + '.desabilitar-ao-limpar').attr('disabled', 'disabled');
// Remover o grid e a barra de paginação.
limparTabelas(elementoPai);
}
function limparTabelas(elementoPai) {
var prefixo = elementoPai ? (elementoPai + ' ') : '';
$(prefixo + '.link-paginador+script').remove();
$(prefixo + '.link-paginador').remove();
$(prefixo + '.table-grid').remove();
}
function limparCampos(elementoPai) {
var prefixo = elementoPai ? (elementoPai + ' ') : '#conteudo ';
$(prefixo + 'input').not('[type="radio"]').not('[type="submit"]').not('[type="checkbox"]').not('[type="hidden"]').not(':disabled').val('');
$(prefixo + 'input[type="radio"]').not(':disabled').removeAttr('checked');
$(prefixo + 'input[type="checkbox"]').not(':disabled').removeAttr('checked');
$(prefixo + 'select').not(':disabled').val('');
$(prefixo + 'textarea').not(':disabled').val('');
$('#area-mensagens').html('');
}
function bloqueiaEnter() {
$('input').keypress(function (e) {
if (e.which == 13) {
e.preventDefault();
}
});
}
function bloqueiaColar() {
$('.form-text').bind("cut copy paste", function (e) {
$(this).val("");
e.preventDefault();
});
}
function bloqueiaArrastaSolta() {
$('input').on('drop', function (event) {
$(this).val("");
event.preventDefault();
});
}
function desabilitarBotao(idBotao) {
$('#' + idBotao).attr('disabled', 'disabled');
$('#' + idBotao).addClass('form-button-disabled');
}
function habilitarBotao(idBotao) {
$('#' + idBotao).removeAttr('disabled');
$('#' + idBotao).removeClass('form-button-disabled');
}
function isPreenchido(valor) {
return valor && valor != null && valor != '' && valor != undefined && valor != '[]' && valor != {};
}
function isNaoPreenchido(valor) {
return !isPreenchido(valor);
}
function isPreenchidoNaoPermiteZero(valor) {
return valor !== null && valor !== '' && getFloat(valor) > 0;
}
function getMascaraDecimal() {
return {thousands: '.', decimal: ',', allowZero: false};
}
function getMascaraDecimalPermiteZero() {
return {thousands: '.', decimal: ',', allowZero: true};
}
function getHiddenTable(nmCampo, idRegistro) {
return $('#' + idRegistro + '_' + nmCampo).val();
}
function get(idCampo) {
return $('#' + idCampo).val();
}
function set(idCampo, valor) {
return $('#' + idCampo).val(valor);
}
function getFloat(valorStr) {
var valor = '';
if (isPreenchido(valorStr)) {
valorStr = replaceAll(valorStr, '.', '');
valorStr = replaceAll(valorStr, ',', '.');
valor = parseFloat(valorStr);
}
return valor;
}
function replaceAll(valor, oldChar, newChar) {
if (isPreenchido(valor)) {
while (valor.indexOf(oldChar) >= 0) {
valor = valor.replace(oldChar, newChar);
}
}
return valor;
}
function getDate(dateStr) {
var newDate;
if (isPreenchido(dateStr)) {
newDate = new Date(replaceAll(dateStr, '-', '/').replace(/(\d{2})\/(\d{2})\/(\d{4})/, '$2/$1/$3'));
}
return newDate;
}
function getDataFormatada(date) {
return $.datepicker.formatDate('dd/mm/yy', date);
}
function isDataMaiorQueAtual(dataStr) {
return isDataMaiorQue(dataStr, getDataFormatada(new Date()));
}
function isDataMaiorQue(dataStr1, dataStr2) {
var date1 = getDate(dataStr1);
var date2 = getDate(dataStr2);
return date1 > date2;
}
function validateDate(dataStr) {
var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02]) [\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
if (!((dataStr.match(RegExPattern)) && (dataStr != ''))) {
return false;
} else
return true;
}
function alterarCamposLinhaAlternada() {
var i = 0;
$('#table > tbody > tr').each(function () {
if (i % 2) {
$(this).addClass('linha-alternada');
} else {
$(this).removeClass('linha-alternada');
}
i++;
});
}
function tratarSubmitAoClicarNaTeclaEnter(idForm) {
if (isPreenchido(idForm)) {
$('#' + idForm).keypress(function (e) {
if (e.which == 13 && e.target.type != 'submit') {//13 - Tecla 'enter' e input diferente de submit
e.preventDefault();
}
});
}
}
function getIdRadioButtonsSelecionado() {
var qtdCamposMarcados = $('.radiobuttons:checked').length;
if (qtdCamposMarcados !== 0) {
var regSelecionado = $(".radiobuttons").getRadioCheck();
return regSelecionado.value;
}
return null;
}
function getValorHiddenPorName(linha, name) {
var valor = $(linha).find('[name="' + name + '"]').val();
if (isPreenchido(valor)) {
return valor;
} else {
return 'null';
}
}
function formatReal(valor) {
var int = parseInt(valor.toFixed(2).toString().replace(/[^\d]+/g, ''));
var tmp = int + '';
tmp = tmp.replace(/([0-9]{2})$/g, ",$1");
if (tmp.length > 6)
tmp = tmp.replace(/([0-9]{3}),([0-9]{2}$)/g, ".$1,$2");
return tmp;
}
function formatarIdentificadorPropriedadeUF(campo, teclapres) {
var tecla = teclapres.keyCode;
if (tecla === 0) {
tecla = teclapres.charCode;
}
var vr = String(campo.value);
vr = vr.replace(".", "");
vr = vr.replace(".", "");
vr = vr.replace("-", "");
tam = vr.length + 1;
if (tecla !== 8 && tecla !== 9) {
//Se numero e já digitou 2 caracteres
if ((tecla >= 48 && tecla <= 57)) {
if (tam > 2) {
if (tam < 5)
campo.value = vr.substr(0, 2).toUpperCase() + '-'
+ vr.substr(2, tam);
if (tam >= 5 && tam < 8)
campo.value = vr.substr(0, 2).toUpperCase() + '-'
+ vr.substr(2, 3) + '.' + vr.substr(5, tam - 5);
if (tam >= 8 && tam < 12)
campo.value = vr.substr(0, 2).toUpperCase() + '-'
+ vr.substr(2, 3) + '.' + vr.substr(5, 3) + '.'
+ vr.substr(8, tam - 8);
} else {
return false;
}
} else if (tam > 2 && tecla !== 46) {
return false;
}
}
}
var GeoUtil = {
converterGrauSexagesimalParaDecimal: function (grau, minuto, segundo, orientacao) {
var grauDecimal = parseFloat((grau + (minuto / 60) + (segundo / 3600)).toFixed(6));
if (orientacao === 'S' || orientacao === 'W') {
grauDecimal = grauDecimal * -1;
}
return grauDecimal;
},
converterGrauDecimalParaGrauSexagesimal: function (latitude, longitude) {
// Função interna que faz a conversão
function converter(grauDecimal) {
var grauSexagesimal = {
grau: 0, minuto: 0, segundo: 0
};
// Você tem graus decimais (-73.9874°) e quer converter para sexagesimal: graus, minutos e segundos (-73° 59’ 14.64 ")
var numeroInteiro = Math.abs(Math.trunc(grauDecimal)); // 73
var numeroDecimal = Math.abs(grauDecimal) - numeroInteiro; // 0.9874
// As unidades inteiras de graus permanecerá o mesmo (-73.9874°) fica (73°)
grauSexagesimal.grau = numeroInteiro;
// Multiplique o decimal por 60 (0.9874 * 60 = 59.244). O número total torna-se o minuto (59’)
grauSexagesimal.minuto = Math.trunc(numeroDecimal * 60);
// Multiplique o restante decimal por 60 (0.244 * 60 = 14.64). O resultado será o segundo (14.64). Obs.: Os segundos podem permanecer como decimal.
grauSexagesimal.segundo = ((numeroDecimal * 60) - grauSexagesimal.minuto) * 60;
grauSexagesimal.segundo = parseFloat(grauSexagesimal.segundo.toFixed(3));
return grauSexagesimal;
}
var latitudeGMS = converter(parseFloat(latitude));
var longitudeGMS = converter(parseFloat(longitude));
return {
latitudeGrau: latitudeGMS.grau,
latitudeMinuto: latitudeGMS.minuto,
latitudeSegundo: latitudeGMS.segundo,
latitudeOrientacao: parseFloat(latitude) < 0.0 ? 'S' : 'N',
longitudeGrau: longitudeGMS.grau,
longitudeMinuto: longitudeGMS.minuto,
longitudeSegundo: longitudeGMS.segundo,
longitudeOrientacao: parseFloat(longitude) < 0.0 ? 'W' : 'E'
}
}
};