function chamaURLnewWin(url, data) { const form = document.createElement('form'); form.method = 'POST'; form.action = url; form.target = '_blank'; // Abre em uma nova janela/aba for (const key in data) { if (data.hasOwnProperty(key)) { const input = document.createElement('input'); input.type = 'hidden'; input.name = key; input.value = data[key]; form.appendChild(input); } } document.body.appendChild(form); form.submit(); document.body.removeChild(form); } function abrePOP(pagina, Args) { // Pega os elementos do modal var modal = document.getElementById('modalFundo'); var iframe = document.getElementById('modalFrame'); var fecharBtn = document.getElementsByClassName("fechar-btn")[0]; // Converte o objeto de argumentos para uma string de URL let queryParams = new URLSearchParams(Args).toString(); let url = pagina; if (queryParams) { url += '?' + queryParams; } // Define o src do iframe com a URL e mostra o modal iframe.src = url; modal.style.display = "block"; // Fecha o modal ao clicar no botão 'X' fecharBtn.onclick = function() { modal.style.display = "none"; // Limpa a URL do iframe para evitar carregamento indesejado iframe.src = ""; } // Fecha o modal se o usuário clicar fora do conteúdo window.onclick = function(event) { if (event.target == modal) { modal.style.display = "none"; iframe.src = ""; } } } function selecionar(campo, conteudo) { // Acessa o formulário na janela pai (a que contém o modal) let destino = window.parent.document.getElementById(campo); if (destino) { destino.value = conteudo; // Opcional: Fechar o modal após a seleção window.parent.fecharModal(); } else { alert("Campo "+campo+" nao encontrado na página principal."); } } function fecharModal() { var modal = document.getElementById('modalFundo'); var iframe = document.getElementById('modalFrame'); if (modal) { modal.style.display = 'none'; // Limpa a URL do iframe if (iframe) { iframe.src = ''; } } } function abrePOP1(pagina,WinSettings,Args) { var ret = window.open(pagina, Args, WinSettings); return ret; } function abrePOPold(pagina,WinSettings) { var MyArgs = new Array(); var MyArgsRet = window.showModalDialog(pagina, MyArgs, WinSettings); if (MyArgsRet != null) { var erro = MyArgsRet[0].toString(); var msgerro = MyArgsRet[1].toString(); if(erro == "OK") { document.all.retorno.innerHTML = "Alteração efetuada com sucesso."; } else { var msgerro = MyArgsRet[1].toString(); alert("Não foi possível salvar as alterações.\n\n"+msgerro); document.all.retorno.innerHTML = "Alteração não efetuada.
"+msgerro; } } else { alert("Você fechou a janela sem escolher Cancelar ou Salvar.\n\nSeus dados não foram salvos.\n\nCaso tenha alterado algum dado, você perdeu a alteração efetuada."); document.all.retorno.innerHTML = "Você fechou a janela sem escolher Cancelar ou Salvar.
Seus dados não foram salvos.
Caso tenha alterado algum dado, você perdeu a alteração efetuada."; } } /* Validação de datas: A explicação a seguir representa os níveis de validação para campos de data. Cada variável (reDate + numero) está explicada abaixo. Estas expressões regulares vão do mais simples ao mais completo, da seguinte forma: 1- Simples — valida apenas o uso de dígitos, nas posições e quantidade certas: 1 a 2 dígitos para dia e para mês, 1 a 4 dígitos para ano. 2- Média — testa os dígitos possíveis em cada posição: o primeiro dígito do dia, se houver, deve ser de 0 a 3 ([0-3]?\d); o primeiro dígito do mês, se houver, deve ser 0 ou 1 ([01]?\d); passamos a aceitar apenas 2 ou 4 dígitos para o ano. 3- Avançada — garante as faixas de valores corretas para dias 1 a 31 ((0?[1-9]|[12]\d|3[01])) e meses 1 a 12 ((0?[1-9]|1[0-2])). E aqui optamos por forçar os 2 primeiros dígitos do ano (correspondentes ao século), quando fornecidos, a serem 19 ou 20 ((19|20)?\d{2}). 4- Completa — valida os dias permitidos de acordo com o mês. Para este último, foram criados três grupos alternativos de pares dia/mês: Os dias 1 a 29 ((0?[1-9]|[12]\d)) são aceitos em todos os meses (1 a 12): (0?[1-9]|1[0-2]) Dia 30 é válido em todos os meses, exceto fevereiro (02): (0?[13-9]|1[0-2]) Dia 31 é permitido em janeiro (01), março (03), maio (05), julho (07), agosto (08), outubro (10) e dezembro (12): (0?[13578]|1[02]). 5- Tradicional — data no formato DD/MM/AAAA, basicamente é a data Completa, porém sem a opcionalidade do zero à esquerda no dia ou mês menor que 10 e sem a opcionalidade e verificação de século no ano, aceitando qualquer seqüência de 4 dígitos (\d{4}) como ano. Para utiliza-las, basta passar como parametro o campo a ser testado + o numero correspondente da validaçao que se deseje fazer. */ var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/; var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/; var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/; var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/; var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/; var reDate = reDate4; var precadA = 0; var precadE = 0; function doDate(pStr, pFmt) { eval("reDate = reDate" + pFmt); if (reDate.test(pStr)) { return true; // Data válida } else if (pStr != null && pStr != "") { return false; // Data inválida } } // doDate function ValorMonetario(campo) { //coloca so numeros no campo FrmtValor(campo,2,','); } function ValorDB(valor) { var naux = "0123456789"; var aux = ""; var tam = valor.length; var comp = false; for (i=0;i0) ) ) { aux = aux+''+valor.charAt(i); } } return aux; } function FrmtValor(campo,decimais,caractere) { var valor = campo.value; var tam = valor.length; var naux = "0123456789"; var aux = ""; for (i=0;i0) ) ) { aux = aux+''+valor.charAt(i); } } tam = aux.length; if(tam>0) { while(tam<(decimais+1)) { aux="0"+aux; tam = aux.length; } var ind1 = aux.substr(0,tam-decimais); var ind2 = aux.substr(tam-decimais,decimais); campo.value = ""+ind1+caractere+ind2; } else { campo.value = "0"; } } function FrmtValorRet(valor,decimais,caractere) { var sinal = ""; if( valor < 0 ) { sinal = "-"; } var ret = ""+LimpaNumero(valor); var tam = ret.length; while(tam