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