/** ********************************************************************************** * * * @package URBEM CNM - Soluções em Gestão Pública * * @copyright (c) 2013 Confederação Nacional de Municípos * * @author Confederação Nacional de Municípios * * * * O URBEM CNM é um software livre; você pode redistribuí-lo e/ou modificá-lo sob * * os termos da Licença Pública Geral GNU conforme publicada pela Fundação do * * Software Livre (FSF - Free Software Foundation); na versão 2 da Licença. * * * * Este programa é distribuído na expectativa de que seja útil, porém, * * SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU * * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU * * para mais detalhes. * * * * Você deve ter recebido uma cópia da Licença Pública Geral do GNU "LICENCA.txt" * * com este programa; se não, escreva para a Free Software Foundation Inc., * * no endereço 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * * ********************************************************************************** */ /** * Funções * Data de Criação: 25/07/2005 * @author Analista: Cassiano * @author Desenvolvedor: Cassiano $Revision: 18993 $ $Name$ $Author: cako $ $Date: 2006-12-26 17:02:26 -0200 (Ter, 26 Dez 2006) $ Casos de uso: uc-01.01.00 */ function mudaTelaPrincipal(sPag){ parent.frames["telaPrincipal"].location.replace(sPag); } //carrega o frame telaMensagem com a página informada function mudaTelaMensagem(sPag){ parent.frames["telaMensagem"].location.replace(sPag); } //carrega o frame oculto com a página informada function mudaFrameOculto(sPag){ parent.frames["oculto"].location.replace(sPag); } function Hoje(){ var a; var sHoje; a = new Date(); lm_year=a.getYear();lm_year=((lm_year<1000)?((lm_year<70)?2000:1900):0)+lm_year; lm_month=a.getMonth()+1;lm_month=((lm_month<10)?'0':'')+lm_month; lm_day=a.getDate();lm_day=((lm_day<10)?'0':'')+lm_day; sHoje = lm_day+'-'+lm_month+'-'+lm_year; return sHoje; } function Agora(){ var a; var sAgora; a = new Date(); lm_hour=a.getHours();lm_hour=((lm_hour<10)?'0':'')+lm_hour; lm_minute=a.getMinutes();lm_minute=((lm_minute<10)?'0':'')+lm_minute; lm_second=a.getSeconds();lm_second=((lm_second<10)?'0':'')+lm_second; sAgora = lm_hour+':'+lm_minute+':'+lm_second; return sAgora; } function HojeAgora(){ var sHoje = Hoje(); var sHora = Agora(); sAux = "&sAgora=" + sHoje + "_" + sHora; return sAux; } /********************************************************************************* Função para alterar o valor de um campo para a data atual Utilizar preferencialmente com o atributo onDblClick que chama a função ao executar um clique duplo dentro do campo ********************************************************************************* Autor: Ricardo Lopes de Alencar -- 22/07/2003 Exemplo: */ function retornaData(campo){ var data = Hoje(); data = data.replace(/-/gi,"\/"); campo.value = data; } function MostraCalendario(sForm,sCampo,sessao){ var x = 400; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/framework/legado/data0100Legado.php?'+sessao+'&sForm='+sForm+'&sCampo='+sCampo; var wVolta=false; var sAux = "wCal"+ sessaoid +" = window.open(sArq,'wCal"+ sessaoid +"','width=180px,height=180px,resizable=0,scrollbars=0,left='+x+',top='+y);"; eval(sAux); } function MontaCSS(caminho){ var sLinha; var sNavegador = navigator.appName; if (sNavegador == "Microsoft Internet Explorer"){ sLinha = ""; } else { sLinha = ""; } document.write(sLinha); } function MontaCSSInclude(caminho){ var sLinha; var sNavegador = navigator.appName; if (sNavegador == "Microsoft Internet Explorer"){ sLinha = ""; } else { sLinha = ""; } document.write(sLinha); } function MontaCSSMenu(){ var sLinha; var sNavegador = navigator.appName; if (sNavegador == "Microsoft Internet Explorer"){ sLinha = ""; } else { sLinha = ""; } document.write(sLinha); } function AbreTela(sTela,iTamH, iTamV){ var sNow = HojeAgora(); var sArq = sTela + sNow; var sVar = sTela.substr(0,8); eval(sVar+"= window.open (sArq, \""+sVar+"\", \"width="+iTamH+",height="+iTamV+",resizable=1,scrollbars=1\");"); } function mnuEntra(obj){ var sID = obj.id; eval("document.all."+ sID +".style.backgroundColor = '#ccccff'"); eval("document.all."+ sID +".style.borderBottom = '1 solid #000080'"); eval("document.all."+ sID +".style.borderRight = '1 solid #000080'"); eval("document.all."+ sID +".style.borderLeft = '1 solid #ffffff'"); eval("document.all."+ sID +".style.borderTop = '1 solid #ffffff'"); } function mnuSai(obj){ var sID = obj.id; eval("document.all."+ sID +".style.backgroundColor = '#526c9f'"); eval("document.all."+ sID +".style.borderBottom = '1 solid #dcdcdc'"); eval("document.all."+ sID +".style.borderRight = '1 solid #dcdcdc'"); eval("document.all."+ sID +".style.borderLeft = '1 solid #dcdcdc'"); eval("document.all."+ sID +".style.borderTop = '1 solid #dcdcdc'"); } function alerta(msg) { alert(msg); } function toFloat( strValor ) { // Descrição: Garante retorno numérico para entradas de strings // toFloat('-12,345') -> -12.345 // toFloat('') -> 0 // toFloat('12.3') -> 12.3 // toFloat('-12.3') -> -12.3 // toFloat() -> 0 // toFloat('12,3') -> 12.3 // toFloat('-12,3') -> -12.3 // toFloat('abc') -> 0 if ( (strValor == null) || (strValor.length == 0) ) { return 0; } if (!isNaN(strValor)) { return parseFloat(strValor); } retorno = limpaParaMascara(strValor,'valores'); procurado = /,/; retorno = retorno.replace(/,/, "."); if ( (retorno == "") || (isNaN(retorno)) ) { return 0; } return parseFloat(retorno); } function numericToFloat( stValor ){ stValor = stValor.replace( ".", "" ); stValor = stValor.replace( ",", "." ); return parseFloat(stValor); } function incluiZerosAEsquerda(str,tamanho,permiteZero) { // Descrição: Retorna 'str' preenchido com zeros à esquerda até o 'tamanho' especificado // incluiZerosAEsquerda("123",6) -> 000123 // incluiZerosAEsquerda(" 123",6) -> 00 123 // incluiZerosAEsquerda("abc",6) -> // incluiZerosAEsquerda(" 1 3 ",6) -> 013 retorno = str; if ( (str.length > 0) && (str.length < tamanho) && ( (toFloat(str) != 0) || permiteZero ) ) { for (i=(tamanho - str.length) ; i>0 ; i--) { retorno = '0' + retorno; } return retorno; } if (toFloat(str) == 0 && !permiteZero) { return ""; } else { return str; } } function limpaZerosAEsquerda(inputString,tipo) { // Descrição: Retira 'zeros' à esquerda do 'inputString' (usar tipo = 1 para permitir zero) // limpaZerosAEsquerda("000123") -> 123 // limpaZerosAEsquerda(" 000123") -> 000123 // limpaZerosAEsquerda("000123",1) -> 123 // limpaZerosAEsquerda("000123",0) -> 123 // limpaZerosAEsquerda("-000123",1) -> 0123 // limpaZerosAEsquerda("-000123",0) -> -000123 // limpaZerosAEsquerda("000abc") -> abc outputString = ''; espacosAntes = 0; if (tipo == 1) { re = /^0*$/; res = inputString.match(re); // if (inputString.substr(0,1) != "-" && inputString.substr(0,inputString.length) != "0") inic = 0; if (inputString.substr(0,1) != "-" && res == null) inic = 0; else inic = 1; } else inic = 0; for(i = inic ; i < inputString.length ; i++){ if(inputString.charAt(i) == '0'){ espacosAntes++; } else { break; } } outputString = inputString.substr(espacosAntes); return outputString; } function trimString(inputString,trimLeft,trimRight){ // Descrição: Remove espaços em branco à direita e/ou à esquerda de 'inputString' // trimString(" 123 ",true,true) -> '123' // trimString(" 123 ",true,false) -> '123 ' // trimString(" 123 ",false,true) -> ' 123' // trimString(" 123 ",false,false) ->' 123 ' outputString = ''; espacosAntes = 0; espacosDepois = 0; if(trimLeft){ for(i = 0 ; i < inputString.length ; i++){ if(inputString.charAt(i) == ' '){ espacosAntes++; } else { break; } } } if(trimRight){ for(i = inputString.length-1 ; i>0 ; i--){ if(inputString.charAt(i) == ' '){ espacosDepois++; } else { break; } } } outputString = inputString.substr(espacosAntes); outputString = outputString.substr(0,(outputString.length-espacosDepois)); return outputString; } function formatoMonetario(oque,tipo){ // Descrição: Formata um campo de formulário como um valor monetário no evento onblur. // Usar tipo = true para permitir "0,00". Se não informado este parâmetro, não permite. // onblur = "formatoMonetario(this,true)" if (oque.value == "-" || oque.value == "") { oque.value = "" return; } retorno = ''; for (contador=0;contador < oque.value.length;contador++) { if( (oque.value.charAt(contador) != ".")) {retorno += oque.value.charAt(contador);} } procurado = /,/; retorno = retorno.replace(procurado, "."); retorno = retornaFormatoMonetario(retorno-0,tipo); oque.value = retorno; } function formatoMonetarioSemCentavos(oque,tipo){ // Descrição: Formata um campo de formulário como um valor monetário sem os centavos no evento onblur. // Usar tipo = true para permitir "0". Se não informado este parâmetro, não permite. // onblur = "formatoMonetarioSemCentavos(this,true)" if (oque.value == "-" || oque.value == "") { oque.value = "" return; } retorno = ''; for (contador=0;contador < oque.value.length;contador++) { if( (oque.value.charAt(contador) != ".")) {retorno += oque.value.charAt(contador);} } procurado = /,/; retorno = retorno.replace(procurado, "."); retorno = retornaFormatoMonetario(retorno-0,tipo); oque.value = retorno.substr(0,(retorno.length-3)); } function retornaFormatoMonetario(valor,tipo) { // Descrição: Retorna o parâmetro 'valor' formatado como um valor monetário. // Usar tipo = true para permitir "0,00". Se não informado este parâmetro, não permite. // requerida pela função formatoMonetario // retornaFormatoMonetario("12345") -> 12.345,00 // retornaFormatoMonetario("12.345") -> 12,35 // retornaFormatoMonetario("12,345") -> 12,35 // retornaFormatoMonetario("-12345") -> -12.345,00 // retornaFormatoMonetario("-12.345") -> -12,35 // retornaFormatoMonetario('-12,345') -> -12,35 // retornaFormatoMonetario("0",0) -> // retornaFormatoMonetario("") -> // retornaFormatoMonetario("0",1) -> 0,00 // retornaFormatoMonetario("0",true) -> 0,00 // retornaFormatoMonetario("0",false) -> valorNegativo = false; retorno = ''; valor = toFloat(valor); if (valor < 0) { valorNegativo = true; valor = valor*(-1); } if(valor != 0 || (tipo == 1 && valor == 0) ) { retorno = parteInteira(Math.floor(valor) + '') + parteFracao(valor); if (valorNegativo) { retorno = '-'+retorno; } } return retorno; } function retornaFormatoMonetarioInteiro(valor) { // Descrição: Retorna o parâmetro 'valor' formatado como um valor monetário inteiro. // retornaFormatoMonetarioInteiro("12345") -> 12.345 // retornaFormatoMonetarioInteiro("12.345") -> 12 // retornaFormatoMonetarioInteiro("12,345") -> NaN // retornaFormatoMonetarioInteiro("") -> if((valor-0) != 0) { return parteInteira(Math.floor(valor-0) + ''); } else return ''; } function parteInteira(valor) { // Descrição: Requerida pela função formatoMonetario. Retorna a parte inteira formatada. if (valor.length <= 3) return (valor == '' ? '0' : valor); else { vezes = valor.length % 3; retorno = (vezes == 0 ? '' : (valor.substring(0,vezes))); for (i=0 ; i < Math.floor(valor.length/3) ; i++) { if ( (vezes ==0) && (i ==0) ) retorno += valor.substring(vezes + 3 * i,vezes + 3 * i + 3); else retorno += '.' + valor.substring(vezes + 3 * i,vezes + 3 * i + 3); } retorno = retorno.replace(/-\./,"-"); return (retorno); } } function parteFracao(resto) { // Descrição: Requerida pela função formatoMonetario. Retorna a parte fracionária. // Autor: Eduardo Pinheiro // Data: 04/01/2001 resto = Math.round( ( (resto) - Math.floor(resto) ) *100); return (resto < 10 ? ',0' + resto : ',' + resto); } function validaLengthData(oque,tipo,permiteZero){ // Descrição: Testa o tamanho de um campo de formulário, preenche-o com zeros e valida o conteúdo, no evento onblur. // tipos: 'cc','cep','cpf','cgc' switch (tipo) { /******************************************************************** Completa o campo com zeros do cartao ********************************************************************/ case 'visa': { if(oque.value == '') return true; var StringVisa = limpaParaMascara(oque.value,'numeros'); if(StringVisa.length < 16) { oque.value = limpaParaMascara(oque.value,'numeros'); oque.value = incluiZerosAEsquerda(oque.value,16); if(digitoVisa(oque) != 1) { mascara(oque,'cartao'); alerta("Número do cartão inválido") oque.value = ""; oque.focus(); return false; } mascara(oque,'cartao',16); } return true; break; } /******************************************************************** Completa o campo da Conta Corrente com zeros a direita e testa a CC ********************************************************************/ case 'cc': { if(oque.value == '' || oque.value.length >= 13){ return true; } retorno = ''; retorno = limpaParaMascara(oque.value,'numeros'); if (retorno.length < 11) { zeros = '00000000000'; retorno = retorno + zeros.substr(0,(11-retorno.length)); if (retorno.length >= 4) { retorno = retorno.substr(0,4) + "-" + retorno.substr(4); } if (retorno.length >= 10) { retorno = retorno.substr(0,10) + "-" + retorno.substr(10); } oque.value = retorno; } if (!isContaCorrente(limpaParaMascara(oque.value,'numeros'))) { alerta(oque.value+"\n"+"Conta Corrente inválida."); oque.value = ""; oque.focus(); return false; } return true; break; } case 'cep': { if(oque.value == ''){ return true; } retorno = ''; retorno = limpaParaMascara(oque.value,'numeros'); if (retorno.length < 8) { zeros = '00000000'; retorno = retorno+zeros.substr(0,(8-retorno.length)); if (retorno.length >= 5) { retorno = retorno.substr(0,5)+"-"+retorno.substr(5,7); } oque.value = retorno ; }; if ( (limpaParaMascara(oque.value,'numeros') - 0) == 0) { alerta(oque.value+"\n"+"CEP inválido."); oque.value=""; oque.focus(); return false; } break; } case 'cpf': { if(oque.value == ''){ return true; } retorno = ''; retorno = limpaParaMascara(oque.value,'numeros'); if (retorno.length < 11) { cpf_zeros = '00000000000'; retorno = cpf_zeros.substr(0,(11-retorno.length))+retorno; if (retorno.length >= 3) { retorno = retorno.substr(0,3)+"."+retorno.substr(3); } if (retorno.length >= 7) { retorno = retorno.substr(0,7)+"."+retorno.substr(7); } if (retorno.length >= 11) { retorno = retorno.substr(0,11)+"-"+retorno.substr(11); } oque.value = retorno ; if (retorno == '000.000.000-00' && permiteZero) return true; if (!validaCPF(retorno)) { alerta(oque.value+"\n"+"CPF inválido."); oque.value=""; oque.focus(); return false; } }; break; } case 'cgc': { if(oque.value == ''){ return true; } retorno = ''; retorno = limpaParaMascara(oque.value,'numeros'); if (retorno.length < 14) { cgc_zeros = '00000000000000'; retorno = cgc_zeros.substr(0,(14-retorno.length))+retorno; if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"."+retorno.substr(2); } if (retorno.length >= 6) { retorno = retorno.substr(0,6)+"."+retorno.substr(6); } if (retorno.length >= 10) { retorno = retorno.substr(0,10)+"/"+retorno.substr(10); } if (retorno.length >= 15) { retorno = retorno.substr(0,15)+"-"+retorno.substr(15); } oque.value = retorno ; if (!validaCGC(retorno)) { alerta(oque.value+"\n"+"CNPJ inválido."); oque.value=""; oque.focus(); return false; } }; break; } case 'bdu': { if(oque.value == ''){ return true; } retorno = ''; retorno = limpaParaMascara(oque.value,'numeros'); while ( retorno.length < 7 ) { retorno = '0'+retorno; } retorno = retorno.substr(0,5)+"-"+retorno.substr(5,2); oque.value = retorno; if (!ValidaBDU(retorno)) { alerta(oque.value+"\n"+"BDU inválido."); oque.value=""; oque.focus(); return false; } break; } } return true; } function formataAoSair(campo,separador,digitosFracao,prePos,simbolo) { // Descrição: formata um campo de formulário ao sair do mesmo respeitando o formato especificado // onblur="formataAoSair(this,',',4,1,'%')" resulta em 12.345,6789% // parametros: // campo : this, para receber o objeto // separador : '.' ou ',' ou o separador da parte inteira/fracao // digitosFracao : quantos dígitos devem existir após o separador // prePos : 0 para colocar o simbolo antes do número ou 1 para depois do número // simbolo : o símbolo que deve ser colocado dentro do campo if ( campo.value.length == 0 ) { return; } posicaoSeparador = campo.value.indexOf(separador); if (posicaoSeparador == -1) { posicaoSeparador = campo.value.length; } retorno = separador+limpaParaMascara(campo.value.substring(posicaoSeparador),'numeros') // inicializa a parte fracionária do string de retorno while ( retorno.length < digitosFracao+separador.length ) { retorno = retorno + '0'; } retorno = campo.value.substr(0,posicaoSeparador) + retorno ; // completa a parte numérica do retorno if (prePos == 0) { retorno = simbolo + retorno ; } if (prePos == 1) { retorno = retorno + simbolo; } campo.value = retorno; } function mascara(objEmFoco,tipo,tamanho1,tamanho2,sinal){ // Descrição: Máscaras para edição de campos de formulário. // usar sinal = 1 para valores positivos/negativos. tamanho1 e tamanho2 são opcionais e determinam o tamanho máximo de um campo numérico e suas casas decimais. // tipos: cep,cpf,cgc,cnpj10,ddd,ramal,fone,celular,DD/MM/AA,DD/MM/AAAA,MM/AAAA,IE,caracter,numero,valor,percentual,cartao,cc,poupanca,unidade, HH:MM // Exemplo: onKeyUp="mascara(this,'cep');" // Exemplo: onKeyUp="mascara(this,'valor',13,2);" // Exemplo: onKeyUp="mascara(this,'valor',13,2,1);" if ( (event.keyCode == 8) || (event.keyCode == 13) || (event.keyCode == 37) || (event.keyCode == 39) || (event.keyCode == 46) || (event.keyCode == 16) || (event.keyCode == 17) ) return ; tamanho1 = toFloat(tamanho1); tamanho2 = toFloat(tamanho2); retorno = ''; switch (tipo) { case 'cep': { // 99999-999 objEmFoco.maxLength=9; retorno = limpaParaMascara(objEmFoco.value,'numeros'); retorno = retorno.substr(0,9); if (retorno.length >= 8 && (retorno-0 == 0) ) { alerta(retorno.substr(0,5)+"-"+retorno.substr(5,7)+"\n"+"CEP inválido."); objEmFoco.value=""; objEmFoco.focus(); return; } if (retorno.length >= 5) { retorno = retorno.substr(0,5)+"-"+retorno.substr(5,7); } objEmFoco.value = retorno.substr(0,9); break; } case 'cpf': { // 999.999.999-99 objEmFoco.maxLength=14; retorno = limpaParaMascara(objEmFoco.value,'numeros'); if (retorno.length >= 3) { retorno = retorno.substr(0,3)+"."+retorno.substr(3); } if (retorno.length >= 7) { retorno = retorno.substr(0,7)+"."+retorno.substr(7); } if (retorno.length >= 11) { retorno = retorno.substr(0,11)+"-"+retorno.substr(11); } retorno = retorno.substr(0,14); objEmFoco.value = retorno; if (retorno == '000.000.000-00' && tamanho1 == 1) return true; if (retorno.length >= 14) { if (!validaCPF(retorno) || retorno == '00000000000000') { alerta(objEmFoco.value+"\n"+"CPF inválido."); objEmFoco.value=""; objEmFoco.focus(); return; } } break; } case 'cgc': { // 99.999.999/9999-99 objEmFoco.maxLength=18; retorno = limpaParaMascara(objEmFoco.value,'numeros'); if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"."+retorno.substr(2); } if (retorno.length >= 6) { retorno = retorno.substr(0,6)+"."+retorno.substr(6); } if (retorno.length >= 10) { retorno = retorno.substr(0,10)+"/"+retorno.substr(10); } if (retorno.length >= 15) { retorno = retorno.substr(0,15)+"-"+retorno.substr(15); } objEmFoco.value = retorno.substr(0,18); if (retorno.length >= 18) { if (!validaCGC(retorno)) { alerta(objEmFoco.value+"\n"+"CNPJ inválido."); objEmFoco.value=""; objEmFoco.focus(); return; } } break; } case 'ramal': { // 9999 objEmFoco.maxLength=4; retorno = limpaParaMascara(objEmFoco.value,'numeros'); objEmFoco.value = retorno.substr(0,4); break; } case 'DD/MM/AA': { // 99/99/99 objEmFoco.maxLength=8; retorno = limpaParaMascara(objEmFoco.value,'numeros'); if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"/"+retorno.substr(2); } if (retorno.length >= 5) { retorno = retorno.substr(0,5)+"/"+retorno.substr(5); } objEmFoco.value = retorno.substr(0,8); if (retorno.length >= 8) { dataEmTeste = retorno.substr(0,6)+'20'+retorno.substr(6,2) ; if (!retornaValidaData(dataEmTeste)) { objEmFoco.value=""; objEmFoco.focus(); return; } } break; } case 'DD/MM/AAAA': { // 99/99/9999 objEmFoco.maxLength=10; retorno = limpaParaMascara(objEmFoco.value,'numeros'); if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"/"+retorno.substr(2); } if (retorno.length >= 5) { retorno = retorno.substr(0,5)+"/"+retorno.substr(5); } objEmFoco.value = retorno.substr(0,10); if (retorno.length >= 10) { if (!retornaValidaData(objEmFoco.value,tamanho1)) { objEmFoco.value=""; objEmFoco.focus(); return; } } break; } case 'MM/AAAA': { // 99/9999 objEmFoco.maxLength=7; retorno = limpaParaMascara(objEmFoco.value,'numeros'); if (retorno.length >= 2) { retorno = retorno.substr(0,2)+"/"+retorno.substr(2); } objEmFoco.value = retorno.substr(0,7); if (retorno.length >= 7) { dataEmTeste = '01/'+retorno if (!retornaValidaData(dataEmTeste)) { objEmFoco.value=""; objEmFoco.focus(); return; } } break; } case 'numero': { if(tamanho1 != 0){ objEmFoco.maxLength = tamanho1; } retorno = limpaParaMascara(objEmFoco.value,'numeros'); objEmFoco.value = retorno.substr(0,objEmFoco.maxLength); break; } case 'inteiro': { if(tamanho1 != 0){ objEmFoco.maxLength = tamanho1; } retorno = limpaZerosAEsquerda(limpaParaMascara(objEmFoco.value,'numeros')); objEmFoco.value = retorno.substr(0,objEmFoco.maxLength); break; } case 'valor': { retorno = objEmFoco.value; if (tamanho1+tamanho2 >0) { objEmFoco.maxLength = tamanho1 + 1 + tamanho2 + Math.floor(tamanho1/3); } var isNeg = false; if (retorno.charAt(0) == '-') { isNeg = true; retorno = retorno.substring(1); objEmFoco.maxLength++; } retorno = limpaParaMascara(retorno,'valores'); var posPrimVirgula = retorno.indexOf(","); retorno = limpaParaMascara(retorno,'numeros'); if (posPrimVirgula > 0) { valorInteiro = retorno.substr(0,posPrimVirgula); valorCentavo = retorno.substring(posPrimVirgula); if (retorno.charAt(0) == '0') { retorno = "0,"+valorCentavo.substr(0,tamanho2); } else { valorInteiro = retornaFormatoMonetarioInteiro(valorInteiro); valorCentavo = valorCentavo.substr(0,tamanho2); retorno = valorInteiro+","+valorCentavo; } } else { retorno = retorno.substr(0,tamanho1); retorno = retornaFormatoMonetarioInteiro(retorno); } if (retorno == "" && (event.keyCode == 48 || event.keyCode == 96)) { retorno = '0'; } if (isNeg) { retorno = "-"+retorno; } objEmFoco.value = retorno; break; } case 'percentual': { // 999 objEmFoco.maxLength=3; retorno = limpaParaMascara(objEmFoco.value,'numeros'); objEmFoco.value = retorno.substr(0,3); /* objEmFoco.maxLength=6; retorno = limpaParaMascara(objEmFoco.value,'valores'); if (retorno.length >= 3) { retorno = retorno.substr(0,3)+","+retorno.substr(3); } posicaoPrimeiraVirgula = retorno.indexOf(","); retorno = limpaParaMascara(retorno,'numeros'); if (posicaoPrimeiraVirgula > -1) { retorno = retorno.substr(0,posicaoPrimeiraVirgula)+","+retorno.substr(posicaoPrimeiraVirgula,2); }; objEmFoco.value = retorno ; */ break; } case 'cartao': { // 9999 9999 9999 9999 objEmFoco.maxLength=19; retorno = limpaParaMascara(objEmFoco.value,'numeros'); if (retorno.length >= 4) { retorno = retorno.substr(0,4)+" "+retorno.substr(4); } if (retorno.length >= 9) { retorno = retorno.substr(0,9)+" "+retorno.substr(9); } if (retorno.length >= 14) { retorno = retorno.substr(0,14)+" "+retorno.substr(14); } objEmFoco.value = retorno.substr(0,19); if (objEmFoco.value.length == 19) { if (!validaCartao(objEmFoco.value)) { alerta(objEmFoco.value+"\nNúmero do Cartão inválido") objEmFoco.value = ""; objEmFoco.focus(); return; } } break; } case 'cc': { // 9999-99999-99 objEmFoco.maxLength=13; retorno = limpaParaMascara(objEmFoco.value,"numeros"); if (retorno.length >= 4) { retorno = retorno.substr(0,4) + "-" + retorno.substr(4); } if (retorno.length >= 10) { retorno = retorno.substr(0,10) + "-" + retorno.substr(10); } objEmFoco.value = retorno.substr(0,13); if (objEmFoco.value.length == 13) { if (!isContaCorrente(objEmFoco.value)) { alerta(objEmFoco.value+"\nConta corrente inválida") objEmFoco.value = ""; objEmFoco.focus(); return; } } break; } case 'HH:MM': { // 12:00 objEmFoco.maxLength=5; retorno = limpaParaMascara(objEmFoco.value,"numeros"); if ( retorno.substr(0,1) > 2 ) { retorno = ''; } if ( retorno.substr(0,2) > 23 ) { retorno = retorno.substr(0,1); } if ( retorno.substr(2,1) > 5 ) { retorno = retorno.substr(0,2); } if (retorno.length >= 2) { retorno = retorno.substr(0,2) + ":" + retorno.substr(2); } objEmFoco.value = retorno.substr(0,5); break; } } } function limpaParaMascara(sujeira,filtro,tipo){ // Descrição: Recebe um string e retorna somente os caracteres que pertencem ao filtro. Usar tipo = 1 para valores positivo/negativo. // limpaParaMascara('12.3ABC -def456','valores') -> 123456 // limpaParaMascara('12,3ABC -def456','valores') -> 12,3456 // limpaParaMascara('-12,3ABC -def456','valores') -> -12,3456 // limpaParaMascara('12,3ABC -def456','letras') -> 12,3ABC -def456 // limpaParaMascara('12,3ABC -def456','numeros') -> 123456 // limpaParaMascara('0','numeros') -> 0 // ****** // Filtros: numeros = "0123456789"; valores = "0123456789,"; letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÃÕáéíóúàèìòùäëïöüâêîôûãõçÇ&ªº'\"\|@_<>!#$%&*()={[}]?:+-.,;/\\0123456789 "; // ****** retorno2 = ''; if (tipo == 1) { if (sujeira.substring(0,1) == "-") ind = 1; else ind = 0; } else ind = 0; switch (filtro){ case 'numeros': { for ( i=ind; i < sujeira.length; i++ ) { if( numeros.indexOf(sujeira.charAt(i))>-1 ) { retorno2 += sujeira.charAt(i); } } break; } case 'valores': { for ( i=ind; i < sujeira.length; i++ ) { if( valores.indexOf(sujeira.charAt(i))>-1 ) { retorno2 += sujeira.charAt(i); } } if (sujeira.charAt(0)=='-') { retorno2 = "-"+retorno2; } break; } case 'letras': { for ( i=0; i < sujeira.length; i++ ) { if( letras.indexOf(sujeira.charAt(i))>-1 ) { retorno2 += sujeira.charAt(i); } } break; } } if (tipo == 1) { if (sujeira.substring(0,1) == "-") retorno2 = "-" + retorno2; } return retorno2; } function validaCPF (CPF) { // Descrição : Função de validação de CPF. CPF = limpaParaMascara(CPF,'numeros'); if (CPF.length != 11) { for(countZeros=0 ; countZeros < ((11-CPF.length)+2) ; countZeros++){ CPF = "0"+CPF; } }; if(CPF == '00000000000'){ return false; } soma = 0; for(i=0 ; i<9 ; i++) { soma = soma + eval(CPF.charAt(i) * (10 - i)); } Resto = 11 - ( soma - (parseInt(soma / 11) * 11) ); if ( (Resto == 10) || (Resto == 11) ) { Resto = 0; } if ( Resto != eval( (CPF.charAt(9) ) ) ) { return false; } soma = 0; for (i = 0;i<10;i++) { soma = soma + eval(CPF.charAt(i) * (11 - i)); } Resto = 11 - ( soma - (parseInt(soma / 11) * 11) ); if ( (Resto == 10) || (Resto == 11)) { Resto = 0; } if ( Resto != eval( (CPF.charAt(10)) )) { return false; } return true; } function VerificaCPF(valor) { function moduloCPF(str) { soma=0; ind=2; for(pos=str.length-1;pos>-1;pos=pos-1) { soma = soma + (parseInt(str.charAt(pos)) * ind); ind++; if(str.length>11) { if(ind>9) ind=2; } } resto = soma - (Math.floor(soma / 11) * 11); if(resto < 2) { return 0 } else { return 11 - resto } } primeiro=valor.substr(1,1); falso=true; size=valor.length; if (size!=11){ return false; } size--; for (i=2; i-1;pos=pos-1) { soma = soma + (parseInt(str.charAt(pos)) * ind); ind++; if(str.length>11) { if(ind>9) ind=2; } } resto = soma - (Math.floor(soma / 11) * 11); if(resto < 2) { return 0 } else { return 11 - resto } } primeiro=valor.substr(1,1); falso=true; size=valor.length; if (size!=14){ return false; } size--; for (i=2; i 12345abc t_field=''; for (i=0;i 999.999.999-99 // formataCPF("abc99999999") -> abc99999999 // formataCPF("9999999999") -> 9999999999 // formataCPF("999999999990") -> 999999999990 cpfSemMascara = limpaParaMascara(paramCpf,'numeros'); if (cpfSemMascara.length == 11) { cpfRetorno = ''; cpfRetorno += cpfSemMascara.substr(0,3); cpfRetorno += "."; cpfRetorno += cpfSemMascara.substr(3,3); cpfRetorno += "."; cpfRetorno += cpfSemMascara.substr(6,3); cpfRetorno += "-"; cpfRetorno += cpfSemMascara.substr(9,2); return cpfRetorno; } else { return paramCpf; } } function formataCGC(paramCgc) { // Descrição: Função de máscara para CGC. // formataCGC("99999999999999") -> 99.999.999/9999-99 // formataCGC("abc99999999999") -> abc99999999999 // formataCGC("9999999999999") -> 9999999999999 // formataCGC("999999999999990") -> 999999999999990 cgcSemMascara = limpaParaMascara(paramCgc,'numeros'); if (cgcSemMascara.length == 14) { cgcRetorno = ''; cgcRetorno = cgcSemMascara.substr(0,2); cgcRetorno += '.'; cgcRetorno += cgcSemMascara.substr(2,3); cgcRetorno += '.'; cgcRetorno += cgcSemMascara.substr(5,3); cgcRetorno += '/'; cgcRetorno += cgcSemMascara.substr(8,4); cgcRetorno += '-'; cgcRetorno += cgcSemMascara.substr(12,2); return cgcRetorno; } else { return paramCgc; } } function alertaDataInvalida(data,tipoTratamento) { // !!! Veja a função dataValida() com vários tipos de teste // Descrição : Verifica se a data informada é válida. Se não, emite alerta. falhou = false; t_data = data.value; t_data = limpaCampo(t_data); dia = t_data.substr(0,2); mes = t_data.substr(2,2) - 1; ano = t_data.substr(4,4); dataCorr = new Date(); dataObj = new Date(ano,mes,dia); diaObj = dataObj.getDate(); mesObj = dataObj.getMonth(); anoObj = dataObj.getFullYear(); if ( ( t_data.length < 8 ) || (dia != diaObj) || (mes != mesObj) || (ano != anoObj) ) falhou = true; // Data não maior ou igual a data do dia if (tipoTratamento == 0 ) { if (dataObj >= dataCorr) { falhou = true; } } // Data não maior a data do dia if (tipoTratamento == 1) { if (dataObj > dataCorr) { falhou = true; } } if (tipoTratamento == 2 && data.value == '00/00/0000') falhou = false; if ( falhou ) { alerta("Data inválida"); data.value = ''; if (!data.disabled) { data.focus(); } } } function dataValida(dataValor,tipoTeste){ // Descrição: Retorna false caso o string 'dataValor' não passe no 'tipoTeste', ou true no caso de passar no teste. // Tipos de teste: anterior,ult120anos,futura,futuraOUigual,anteriorOUigual,2mesesMMAAAA // Exemplo: if(dataValida(document.form.txtData.value,'anterior')) {alerta("a data é anterior à atual e é válida")} dataValor = limpaCampo(dataValor); dia = dataValor.substr(0,2); mes = dataValor.substr(2,2) - 1; ano = dataValor.substr(4,4); dataObj = new Date(ano,mes,dia); diaObj = dataObj.getDate(); mesObj = dataObj.getMonth(); anoObj = dataObj.getFullYear(); dataObj.setHours(0); dataObj.setMinutes(0); dataObj.setSeconds(0); dataObj.setMilliseconds(0); dataCorr = new Date(); diaCorr = dataCorr.getDate(); mesCorr = dataCorr.getMonth(); anoCorr = dataCorr.getFullYear(); dataCorr.setHours(0); dataCorr.setMinutes(0); dataCorr.setSeconds(0); dataCorr.setMilliseconds(0); data120 = new Date(anoCorr-120,mesCorr,diaCorr); data120.setHours(0); data120.setMinutes(0); data120.setSeconds(0); data120.setMilliseconds(0); if ( ( dataValor.length < 8 ) || (dia != diaObj) || (mes != mesObj) || (ano != anoObj) ) return false; /* if(tipoTeste != null && tipoTeste != 'anterior' && tipoTeste != 'ult120anos' && tipoTeste != 'futura' && tipoTeste != 'anteriorOUigual' && tipoTeste != '2mesesMMAAAA' && tipoTeste != 'futuraOUigual') { alerta("parâmetro de teste de data inválido"); return false; } */ switch (tipoTeste){ case 'anterior':{ if (dataObj >= dataCorr) { return false; } break; } case 'ult120anos':{ if (dataObj < data120) { return false; } if (dataObj >= dataCorr) { return false; } break; } case 'futura':{ if (dataObj <= dataCorr) { return false; } break; } case 'futuraOUigual':{ if (dataObj < dataCorr) { return false; } break; } case 'anteriorOUigual':{ if (dataObj > dataCorr) { return false; } break; } case '2mesesMMAAAA':{ dia = '01'; dataObj = new Date(ano,mes,dia); dataObj.setHours(0); dataObj.setMinutes(0); dataObj.setSeconds(0); dataObj.setMilliseconds(0); if( mesCorr >= 2) {mesCorr -= 2;} // mes a partir de março else { anoCorr -= 1; if(mesCorr == 0){mesCorr = 10}; if(mesCorr == 1){mesCorr = 11}; } data2meses = new Date(anoCorr,mesCorr,dia); data2meses.setHours(0); data2meses.setMinutes(0); data2meses.setSeconds(0); data2meses.setMilliseconds(0); if (dataObj < data2meses) { return false; } break; } } return true; } function retornaValidaData(t_data,tipoTratamento) { // Descrição: Recebe o value da data e retorna true se é data válida ou false caso contrário. falhou = false; t_data = limpaCampo(t_data); dia = t_data.substr(0,2); mes = t_data.substr(2,2) - 1; ano = t_data.substr(4,4); dataCorr = new Date(); dataObj = new Date(ano,mes,dia); diaObj = dataObj.getDate(); mesObj = dataObj.getMonth(); anoObj = dataObj.getFullYear(); if ( ( t_data.length < 8 ) || (dia != diaObj) || (mes != mesObj) || (ano != anoObj) ) falhou = true; if (tipoTratamento && tipoTratamento == 2 && t_data == '00000000') falhou = false; if ( falhou ) { return false; } else return true; } function imprimir(){ // Descrição: Função de impressão var WebBrowser = ''; document.body.insertAdjacentHTML('beforeEnd', WebBrowser); window.onerror=printerrortrap; // Configura o tratamento de erros na impressão do documento WebBrowser1.ExecWB(6, 2); window.onerror = null ; // Libera o tratamento de erros WebBrowser1.outerHTML = ""; } function printerrortrap(){ // Descrição: Função de tratamento de erro de impressão alerta("Impressão do documento não ocorreu."); window.onerror = null ; WebBrowser1.outerHTML=""; return true; } function manipulaDatas(strData,nDias,futuroOuPassado) { // Descrição: Retorna um string no formato de uma data nDias no futuro ou passado a partir de uma data em formato string informada dateArray = strData.split('/'); sdate = new Date(dateArray[2],dateArray[1]-1,dateArray[0]); if(futuroOuPassado == '+'){ sdate.setDate(sdate.getDate() + nDias); } if(futuroOuPassado == '-'){ sdate.setDate(sdate.getDate() - nDias); } var dia = sdate.getDate(); var mes = sdate.getMonth()+1 if (dia < 10) { dia = '0'+dia; } if (mes < 10) { mes = '0'+mes; } return dia + '/' + mes + '/' + sdate.getFullYear(); } function periodoDatas(dataFimPeriodo,dataInicioPeriodo) { // Descrição: Subtrai datas dateFim = new Date(dataFimPeriodo.substring(6,10),dataFimPeriodo.substring(3,5)-1,dataFimPeriodo.substring(0,2)); dateInicio = new Date(dataInicioPeriodo.substring(6,10),dataInicioPeriodo.substring(3,5)-1,dataInicioPeriodo.substring(0,2)); return ((dateFim - dateInicio)/86400000); } function dateToddmmaaaa(objDate) { // Descrição: recebe um objeto Date e retorna ele formatado como DD/MM/AAAA var dia = objDate.getDate(); var mes = objDate.getMonth()+1; if (dia < 10) { dia = '0'+dia; } if (mes < 10) { mes = '0'+mes; } return dia+"/"+mes+"/"+objDate.getFullYear(); } function toData(stringData){ // Descrição: Gera um objeto data a partir de um string no formato dd/mm/aaaa if (stringData.substr(0,1) == "0") dia = stringData.substr(1,1); else dia = stringData.substr(0,2); if (stringData.substr(3,1) == "0") mes = (stringData.substr(4,1)-1); else mes = (stringData.substr(3,2)-1); ano = stringData.substr(6,4); tmp_Data = new Date(ano,mes,dia,0,0,0,0); // ATENCAO: PROBLEMA DA PENDENCIA 3820 E 6411 // Foi constatado em algumas máquinas fora do padrão do HSBC que ao criar um objeto Date(), este era criado no Timezone GMT 0200, ao invés do // GMT 0300, por enquanto, inexplicavelmente, então o teste abaixo corrige este problema. Isto pode ocorrer em outros lugares da Aplicação. corrigeBugTimeZoneGMT3(tmp_Data) // fim do PROBLEMA DA PENDENCIA 3820 E 6411 return (tmp_Data); } function limitaTexto(objText,limiteChars){ // Descrição: quando associada ao evento onkeyup, limita o tamanho do objText ao tamanho limiteChars. ( trunca ) if(objText.value.length > limiteChars){ objText.value = objText.value.substr(0,limiteChars); return(false); } return(true); } function getRandom() { // Descrição: return Math.random() } function desabilitaCampo(str) { // Descrição: // Autor: fernando // Data: arrDesabilita = new Array(); arrDesabilita = str.split(",") for (i=0; i 0) { var field = document.forms[0]; for (i = 0; i < field.length; i++) { if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) { document.forms[0].elements[i].focus(); break; } } } } function obrigatorio(campo){ if (campo.value == "") { alert("Este campo é um campo Obrigatório\nPor favor, complete seu preenchimento."); return false; } } function MostraImageUpload(sessao){ var x = 400; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/framework/legado/imagens/uploadImageLegado.php?'+sessao; var wVolta=false; var sAux = "up"+ sessaoid +" = window.open(sArq,'up"+ sessaoid +"','width=400px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } function validaDecimais(fieldName, fieldValue, decal) { if (fieldValue.indexOf(',') == -1) fieldValue += ","; dectext = fieldValue.substring(fieldValue.indexOf(',')+1, fieldValue.length); if (dectext.length != decal) { alert ("Por favor, use um número com " + decal + " casas decimais."); fieldName.focus(); return false } } // function validaNumeros(fieldName) { fieldValue = fieldName.value retorno = fieldValue.replace(",", "."); if (isNaN(retorno)) { alert("Você deve usar apenas números."); fieldName.focus(); return false; } } // function abreAjuda(sessao){ var x = 10; var y = 10; var sessaoid = sessao.substr(10,6); var sArq = 'ajuda/index.php?'+sessao; var wVolta=false; var sAux = "hlp"+ sessaoid +" = window.open(sArq,'hlp"+ sessaoid +"','width=500px,height=300px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } function alertaMensagem(erro,tipo){ var x = 350; var y = 200; var sArq = '../../includes/mensagem.php?mensagem='+erro+'&tipo='+tipo; //var wVolta=false; mensagem = window.open(sArq,'mensagem','width=300px,height=200px,resizable=1,scrollbars=0,left='+x+',top='+y); } function alertaConfirma(template,pagina,chave,valor,men){ var x = 350; var y = 200; var sArq = '../../includes/mensagem.php?mensagem='+men+'&tipo='+template+'&chave='+chave+'&valor='+valor+'&pag='+pagina; var wVolta=false; mensagem = window.open(sArq,'mensagem','width=300px,height=200px,resizable=1,scrollbars=0,left='+x+',top='+y); } function alertaDecisao(pagina,men){ var x = 350; var y = 200; var sArq = '../../includes/mensagem.php?mensagem='+men+'&tipo=decisao&pag='+pagina; var wVolta=false; mensagem = window.open(sArq,'mensagem','width=300px,height=200px,resizable=1,scrollbars=0,left='+x+',top='+y); } function MostraEstados(nomeform,nomeestado,codestado,nommunicipio,codmunicipio,sessao){ var x = 350; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = '../../includes/estados.php?'+sessao+'&nomForm='+nomeform+'&nomEstado='+nomeestado+'&codEstado='+codestado+'&nomMunicipio='+nommunicipio+'&codMunicipio='+codmunicipio; var wVolta=false; var sAux = "mest"+ sessaoid +" = window.open(sArq,'mest"+ sessaoid +"','width=300px,height=120px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } /*************************************************************************** Esta função faz o cursor mudar de campo automaticamente ao atingir um valor previamente estabelecido Utilização: Insira o seguinte o comando dentro da tag : onKeyUp="return autoTab(this, n, event);" onde n é o contador de caracteres Exemplo: Na tag acima o cursor passa para o próximo campo após a entrada de dois caracteres /**************************************************************************/ function autoTab(input,len, e) { var isNN = (navigator.appName.indexOf("Netscape")!=-1); var keyCode = (isNN) ? e.which : e.keyCode; var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46]; if(input.value.length >= len && !containsElement(filter,keyCode)) { input.value = input.value.slice(0, len); input.form[(getIndex(input)+1) % input.form.length].focus(); } function containsElement(arr, ele) { var found = false, index = 0; while(!found && index < arr.length) if(arr[index] == ele) found = true; else index++; return found; } function getIndex(input) { var index = -1, i = 0, found = false; while (i < input.form.length && index == -1) if (input.form[i] == input)index = i; else i++; return index; } return true; } /********************************************************************************* Função para formatar o número no momento em que o usuário está digitando O número permanece sempre no formato xxxxx,xx *********************************************************************************/ /********************************************************************************* Exemplo: onKeyPress="return(formataNumeroDecimais(this,'.',',',event))" retorna 1.057.689,04 *********************************************************************************/ function formataNumeroDecimais(fld, milSep, decSep, e) { var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; // Enter if (whichCode == 0) return true; if (whichCode == 1) return true; if (whichCode == 2) return true; if (whichCode == 3) return true; if (whichCode == 4) return true; if (whichCode == 5) return true; if (whichCode == 6) return true; if (whichCode == 7) return true; if (whichCode == 8) return true; // Backspace if (whichCode == 9) return true; if (whichCode == 10) return true; key = String.fromCharCode(whichCode); // Get key value from key code if (strCheck.indexOf(key) == -1) return false; // Not a valid key len = fld.value.length; for(i = 0; i < len; i++) if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i); aux += key; len = aux.length; if (len == 0) fld.value = ''; if (len == 1) fld.value = '0'+ decSep + '0' + aux; if (len == 2) fld.value = '0'+ decSep + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += milSep; j = 0; } aux2 += aux.charAt(i); j++; } fld.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) fld.value += aux2.charAt(i); fld.value += decSep + aux.substr(len - 2, len); } return false; } /********************************************************************************* Função para formatar o número no momento em que o usuário está digitando O número permanece sempre no formato xxxxx,xx *********************************************************************************/ /********************************************************************************* Exemplo: onKeyPress="return(formataNumeroDecimais(this,'.',',',event))" retorna 1.057.689,04 *********************************************************************************/ function formataNumeroDecimaisNegativos(fld, milSep, decSep, e) { var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '-0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; // Enter if (whichCode == 0) return true; if (whichCode == 1) return true; if (whichCode == 2) return true; if (whichCode == 3) return true; if (whichCode == 4) return true; if (whichCode == 5) return true; if (whichCode == 6) return true; if (whichCode == 7) return true; if (whichCode == 8) return true; // Backspace if (whichCode == 9) return true; if (whichCode == 10) return true; key = String.fromCharCode(whichCode); // Get key value from key code if (strCheck.indexOf(key) == -1) return false; // Not a valid key len = fld.value.length; for(i = 0; i < len; i++) if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i); aux += key; len = aux.length; if (len == 0) fld.value = ''; if (len == 1) fld.value = '0'+ decSep + '0' + aux; if (len == 2) fld.value = '0'+ decSep + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += milSep; j = 0; } aux2 += aux.charAt(i); j++; } fld.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) fld.value += aux2.charAt(i); fld.value += decSep + aux.substr(len - 2, len); } return false; } /********************************************************************************* Função para abrir janela de Procura BEM ********************************************************************************* Exemplo: procuraBem("frm","codbem") */ function procuraBem(nomeform,campobem,sessao){ var x = 200; var y = 120; var sessaoid = sessao.substr(10,6); var sArq = '../../../../../../gestaoPatrimonial/fontes/PHP/patrimonio/popups/bem/procuraBem.php?'+sessao+'&nomForm='+nomeform+'&campoBem='+campobem; var wVolta=false; var sAux = "prbem"+ sessaoid +" = window.open(sArq,'prbem"+ sessaoid +"','width=650px,height=500px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } //********************************************************************************************** // Faz o chamada de alerta // Opções: // tipo: incluir, n_incluir, alterar, n_alterar, sn_excluir, excluir, n_excluir, form e unica // chamada: erro, aviso, cc, sn // Ex.: alertaAviso('Carro Sport','incluir','aviso'); // Ex.: alertaAviso('@Campo nome obrigatório@Campo idade Obrigatorio','form','erro'); // Ex.: alertaAviso('Inflatores corrigidos','unica','erro'); //********************************************************************************************** function alertaAviso(objeto,tipo,chamada,sessao,caminho){ var x = 350; var y = 200; var sessaoid = sessao.substr(10,6); if( caminho == undefined ){ caminho = ""; } // var sArq = caminho+'../../includes/mensagem.php?'+sessao+'&tipo='+tipo+'&chamada='+chamada+'&obj='+objeto; var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/framework/instancias/index/mensagem.php?'+sessao+'&tipo='+tipo+'&chamada='+chamada+'&obj='+objeto; //var wVolta=false; //var sAux = "msga"+ sessaoid +" = window.open(sArq,'msga"+ sessaoid +"','width=300px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; //eval(sAux); mudaTelaMensagem(sArq); } //********************************************************************************************** // Faz o chamada de alerta para Nivel 2 // Opções: // tipo: incluir, n_incluir, alterar, n_alterar, sn_excluir, excluir, n_excluir, form e unica // chamada: erro, aviso, cc, sn // Ex.: alertaAviso('Carro Sport','incluir','aviso'); // Ex.: alertaAviso('@Campo nome obrigatório@Campo idade Obrigatorio','form','erro'); // Ex.: alertaAviso('Inflatores corrigidos','unica','erro'); //********************************************************************************************** function alertaAvisoNivel2(objeto,tipo,chamada,sessao){ var x = 350; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = 'alerta.inc.php?'+sessao+'&tipo='+tipo+'&chamada='+chamada+'&obj='+objeto; //var wVolta=false; var sAux = "window.open(sArq,'','width=300px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } //********************************************************************************************** // Faz o chamada de alerta de Questão // Ex.: alertaQuestao('../protocolo/andamentoPadrao/excluiPadrao.php','codAndamentoPadrao','21','Andamento no Gabinete do Diretor','sn_excluir'); //********************************************************************************************** function alertaQuestao(pagina,chave,valor,objeto,tipo,sessao){ var x = 350; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/framework/popups/alerta/alerta.php?'+sessao+'&tipo='+tipo+'&chamada=sn&chave='+chave+'&valor='+valor+'&pagQuestao='+pagina+'&obj='+objeto; var wVolta=false; var sAux = "window.open(sArq,'','width=350px,height=250px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } function alertaQuestaoFabio(pagina,tipo,sessao){ var x = 350; var y = 200; //alert(caminho); var sessaoid = sessao.substr(10,6); var sArq = '../../includes/alerta.inc.php?'+sessao+'&tipo='+tipo+'&chamada=pp&chave='+chave+'&valor='+valor+'&pag='+pagina+'&obj='+objeto; var wVolta=false; var sAux = "msgc"+ sessaoid +" = window.open(sArq,'msgc"+ sessaoid +"','width=350px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } function alertaQuestaoPopUp(pagina,tipo,sessao){ var x = 350; var y = 200; var valor = 'pp_excluir'; var chave = 'cod'; var sessaoid = sessao.substr(10,6); var sArq = '../../popups/alertaGenerico.inc.php?'+sessao+'&tipo='+tipo+'&chamada=pp&chave='+chave+'&valor='+valor+'&pag='+pagina; var wVolta=false; var sAux = "msgc"+ sessaoid +" = window.open(sArq,'msgc"+ sessaoid +"','width=350px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } function alertaQuestao2(pagina,tipo,sessao){ var x = 350; var y = 200; var valor = 'teste'; var chave = 1; var sessaoid = sessao.substr(10,6); var sArq = '../../../framework/popups/alerta/alerta.php?'+sessao+'&tipo='+tipo+'&chamada=sn&chave='+chave+'&valor='+valor+'&pagQuestao='+pagina; var wVolta=false; var sAux = "msgc"+ sessaoid +" = window.open(sArq,'msgc"+ sessaoid +"','width=350px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } //********************************************************************************************** // Faz o chamada de alerta de Questão // Ex.: alertaQuestao('../protocolo/andamentoPadrao/excluiPadrao.php','codAndamentoPadrao','21','Andamento no Gabinete do Diretor','sn_excluir'); //********************************************************************************************** function alertaQuestaoOculto(pagina,chave,valor,objeto,tipo,sessao){ var x = 350; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = '../../includes/alerta.inc.php?'+sessao+'&tipo='+tipo+'&chamada=oculto&chave='+chave+'&valor='+valor+'&pag='+pagina+'&obj='+objeto; var wVolta=false; var sAux = "msgd"+ sessaoid +" = window.open(sArq,'msgd"+ sessaoid +"','width=300px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } //********************************************************************************************** // Faz o chamada de alerta de Questão e faz o submit // Ex.: alertaSubmit("O mês da Data do Lote é diferente do mês de Processamento. Deseja continuar assim mesmo ?"); //********************************************************************************************** function alertaSubmit(objeto,sessao){ var x = 350; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = '../../includes/alerta.inc.php?'+sessao+'&tipo=ccform&chamada=ccform&chave=&valor=&pag=&obj='+objeto; var wVolta=false; var sAux = "msge"+ sessaoid +" = window.open(sArq,'msge"+ sessaoid +"','width=300px,height=200px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Local ********************************************************************************* Exemplo: procuraLocal('frm','codLocal','codExercicio') */ function procuraLocal(nomeform,campolocal,campoexercicio,sessao){ var x = 350; var y = 200; var sArq = '../../includes/procuraLocal.php?'+sessao+'&nomForm='+nomeform+'&campoBem='+campolocal+'&campoexercicio='+campoexercicio; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prloc"+ sessaoid +" = window.open(sArq,'prloc"+ sessaoid +"','width=350px,height=250px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Setor ********************************************************************************* Exemplo: procuraSetor('frm','nomSetor','codSetor','codExercicio') */ function procuraSetor(nomeform,camponomesetor,camposetor,campoexercicio,sessao){ var x = 350; var y = 200; var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/framework/popupsLegado/setor/procuraSetor.php?'+sessao+'&nomForm='+nomeform+'&campoNomeSetor='+camponomesetor+'&campoSetor='+camposetor+'&campoexercicio='+campoexercicio; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prset"+ sessaoid +" = window.open(sArq,'prset"+ sessaoid +"','width=550px,height=250px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Veículo ********************************************************************************* Exemplo: procuraVeiculo('frm','codVeiculo') */ function procuraVeiculo(nomeform,campoveiculo,sessao){ var x = 350; var y = 200; var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/framework/popupsLegado/veiculo/procuraVeiculo.php?'+sessao+'&nomForm='+nomeform+'&campoCodVeiculo='+campoveiculo; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prvei"+ sessaoid +" = window.open(sArq,'prvei"+ sessaoid +"','width=350px,height=250px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Motorista ********************************************************************************* Exemplo: procuraMotorista('frm','nomMotorista','codMotorista') */ function procuraMotorista(nomeform,camponommotorista,campocodmotorista,sessao){ var x = 350; var y = 200; var sArq = '../../includes/procuraMotorista.php?'+sessao+'&nomForm='+nomeform+'&campoNomMotorista='+camponommotorista+'&campoCodMotorista='+campocodmotorista; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prmot"+ sessaoid +" = window.open(sArq,'prmot"+ sessaoid +"','width=350px,height=250px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Processo ********************************************************************************* Exemplo: procuraProcesso('frm','codProcesso','anoExercicioProcesso') */ function procuraProcesso(nomeform,campocodprocesso,campoexercicio,sessao){ var x = 200; var y = 140; var sArq = '../../includes/procuraProcesso.php?'+sessao+'&nomForm='+nomeform+'&campoCodProcesso='+campocodprocesso+'&campoExercicio='+campoexercicio; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prpro"+ sessaoid +" = window.open(sArq,'prpro"+ sessaoid +"','width=400px,height=390px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Conta de Despesa ********************************************************************************* Exemplo: procuraContaDespesa('frm','nomConta','codConta'); procuraContaDespesa('frm','','codConta'); */ function procuraContaDespesa(nomeform,camponomeconta,campoconta,sessao){ var x = 200; var y = 180; var sArq = '../../includes/procuraContaDespesa.php?'+sessao+'&nomForm='+nomeform+'&campoNomeConta='+camponomeconta+'&campoCodConta='+campoconta; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prcde"+ sessaoid +" = window.open(sArq,'prcde"+ sessaoid +"','width=450px,height=250px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Conta de Receita ********************************************************************************* Exemplo: procuraContaReceita('frm','nomConta','codConta','codReduzido','0'); procuraContaReceita('frm','','codConta','','1'); A variável reduzido indica se a busca deve procurar todas as classificações de receita ou somente as que possuem código reduzido (reduzido = 1). */ function procuraContaReceita(nomeform,camponomeconta,campoconta,camporeduzido,reduzido,sessao){ var x = 200; var y = 180; var sArq = '../../includes/procuraContaReceita.php?'+sessao+'&nomForm='+nomeform+'&campoNomeConta='+camponomeconta+ '&campoCodConta='+campoconta+'&campoCodReduz='+camporeduzido+'&reduzido='+reduzido; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prcre"+ sessaoid +" = window.open(sArq,'prcre"+ sessaoid +"','width=450px,height=250px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura CGM ********************************************************************************* Exemplo: procurarCgm("frm","numCgm","nomCgm","geral") Exemplo: procurarCgm("frm","numCgm","nomCgm","fisica") Exemplo: procurarCgm("frm","numCgm","nomCgm","juridica") Exemplo: procurarCgm("frm","numCgm","nomCgm","funcionario") */ /* ALTERAÇÃO: * Foi acrescentado o parametro innerHtml que será usado quando o formulário possuir algum campo para ser preenchido com a funcionalidade innerHtml. * Ao parametro 'camponom' deve-se informar o 'id' do campo a ser preenchido com o nome via innerHtml * O valor a ser passado para innerHtml é '1'. Exemplo: procurarCgm("frm","numCgm","nomCgm","funcionario","1") */ function procurarCgm(nomeform,camponum,camponom,tipodebusca,sessao,innerHtml){ var x = 350; var y = 200; var sessaoid = sessao.substr(10,6); var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/CGM/popups/cgm/FLProcurarCgm.php?'+sessao+'&nomForm='+nomeform+'&campoNum='+camponum+'&campoNom='+camponom+'&tipoBusca='+tipodebusca+'&innerHtml='+innerHtml; var wVolta=false; var sAux = "window.open(sArq,'','width=800px,height=550px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Plano de Contas ********************************************************************************* Exemplo: procuraPlanoConta('frm','nomConta','codConta','codPlano,'0'); procuraPlanoConta('frm','','codConta','','1'); A variável reduzido indica se a busca deve procurar todas os planos de contas ou somente as que possuem código reduzido (reduzido = 1). ALTERAÇÃO: * Foi acrescentado o parametro innerHtml que será usado quando o formulário possuir algum campo para ser preenchido com a funcionalidade innerHtml. * Ao parametro 'camponomeconta' deve-se informar o 'id' do campo a ser preenchido com o nome da conta via innerHtml * O valor a ser passado para innerHtml é '1'. Exemplo: procuraPlanoConta('frm','nomConta','codConta','codPlano,'0','1'); */ function procuraPlanoConta(nomeform,camponomeconta,campoconta,campocodplano,reduzido,sessao,innerHtml){ var x = 200; var y = 180; var sArq = '../../includes/procuraPlanoConta.php?'+sessao+'&nomForm='+nomeform+'&campoNomeConta='+camponomeconta+ '&campoCodConta='+campoconta+'&campoCodPlano='+campocodplano+'&reduzido='+reduzido+'&innerHtml='+innerHtml; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prpco"+ sessaoid +" = window.open(sArq,'prpco"+ sessaoid +"','width=450px,height=250px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Programa de Trabalho ********************************************************************************* Exemplo: procuraPlanoConta('frm','nomConta','codConta','codDespesa'); procuraPlanoConta('frm','','codConta',''); */ function procuraProgramaTrabalho(nomeform,camponomeconta,campoconta,campocoddespesa,sessao){ var x = 200; var y = 180; var sArq = '../../includes/procuraProgramaTrabalho.php?'+sessao+'&nomForm='+nomeform+'&campoNomeConta='+camponomeconta+ '&campoCodConta='+campoconta+'&campoCodDespesa='+campocoddespesa; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prptb"+ sessaoid +" = window.open(sArq,'prptb"+ sessaoid +"','width=450px,height=250px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função que permite a digitação de apenas números e ponto ********************************************************************************* Exemplo: */ function isNumber(fld, e){ var key = ''; var strCheck = '0123456789.'; var whichCode = (window.Event) ? e.which : e.keyCode; //Os códigos abaixo permitem a navegação através das setas, tecla home, end, delete... if (whichCode == 13) return true; // Enter if (whichCode == 0) return true; if (whichCode == 1) return true; if (whichCode == 2) return true; if (whichCode == 3) return true; if (whichCode == 4) return true; if (whichCode == 5) return true; if (whichCode == 6) return true; if (whichCode == 7) return true; if (whichCode == 8) return true; // Backspace if (whichCode == 9) return true; if (whichCode == 10) return true; key = String.fromCharCode(whichCode); // Get key value from key code if (strCheck.indexOf(key) == -1) return false; // Not a valid key } /********************************************************************************* Função que permite a digitação de apenas números ********************************************************************************* Exemplo: */ function isNumeric(fld, e){ var key = ''; var strCheck = '0123456789'; var whichCode = (window.Event) ? e.which : e.keyCode; //Os códigos abaixo permitem a navegação através das setas, tecla home, end, delete... if (whichCode == 13) return true; // Enter if (whichCode == 0) return true; if (whichCode == 1) return true; if (whichCode == 2) return true; if (whichCode == 3) return true; if (whichCode == 4) return true; if (whichCode == 5) return true; if (whichCode == 6) return true; if (whichCode == 7) return true; if (whichCode == 8) return true; // Backspace if (whichCode == 9) return true; if (whichCode == 10) return true; key = String.fromCharCode(whichCode); // Get key value from key code if (strCheck.indexOf(key) == -1) return false; // Not a valid key } /********************************************************************************* Função que permite digitar apenas os caracteres que estiverem na variável dominio ********************************************************************************* Exemplo: Neste caso o usuário só poderia digitar "1", "2" , "3" ou "-" */ function isValido(fld, e, dominio){ var key = ''; var strCheck = dominio; var whichCode = (window.Event) ? e.which : e.keyCode; //Os códigos abaixo permitem a navegação através das setas, tecla home, end, delete... if (whichCode == 13) return true; // Enter if (whichCode == 0) return true; if (whichCode == 1) return true; if (whichCode == 2) return true; if (whichCode == 3) return true; if (whichCode == 4) return true; if (whichCode == 5) return true; if (whichCode == 6) return true; if (whichCode == 7) return true; if (whichCode == 8) return true; // Backspace if (whichCode == 9) return true; if (whichCode == 10) return true; key = String.fromCharCode(whichCode); // Get key value from key code if (strCheck.indexOf(key) == -1) return false; // Not a valid key } /********************************************************************************* Função que estabelece um limite de caracteres que podem ser inseridos dentro de uma textarea. Similar ao maxlength da tag input. Exemplo: *********************************************************************************/ function maxTextArea(campo,limite,e,blur){ //var iLimite = limite - 1; var key = ''; var strCheck = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if(blur){ // se estiver maior que o tamanho estabelecido, reduza-o campo.value = campo.value.substring(0, limite); return true; } //Se estiver maior que o tamanho estabelecido, não permitirá mais a entrada de caracteres if (campo.value.length > limite){ campo.value = campo.value.substring(0, limite); return false; } } /********************************************************************************* Função para abrir janela de Procura Arquivos de Documentos Digitais ********************************************************************************* Exemplo: copiaDigital() */ /*function copiaDigital(sessao){ var x = 200; var y = 140; var sArq = '../../includes/copiaDigital.php?'+sessao; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "cpdig"+ sessaoid +" = window.open(sArq,'cpdig"+ sessaoid +"','width=700px,height=390px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); }*/ /********************************************************************************* Função para abrir janela de Procura Domicilio ********************************************************************************* Exemplo: procuraDomicilio('frm','codDomicilio','logradouro') */ function procuraDomicilio(nomeform,campocoddomicilio,campologradouro,sessao){ var x = 200; var y = 140; var sArq = '../../../../../../gestaoAdministrativa/fontes/PHP/CSE/popups/domicilio/procuraDomicilio.php?'+sessao+'&nomForm='+nomeform+'&campoCodDomicilio='+campocoddomicilio+'&campoLogradouro='+campologradouro; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "window.open(sArq,'','width=500px,height=350px,resizable=1,scrollbars=0,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para apagar todas as opções de uma combo Informar o campo e a opção a partir da qual os itens serão apagados ********************************************************************************* Autor: Ricardo Lopes de Alencar -- 18/07/2003 Exemplo: limpaSelect(document.frm.comboOrgao,1); -- Apaga todas as opções menos a primeira opção: [0] limpaSelect(window.parent.frames["telaPrincipal"].document.frm.comboOrgao,0); -- Força apagar uma combo do frame principal */ function limpaSelect(sCampo,iOption){ var campo = sCampo; var tam = campo.options.length; while (tam >= iOption) { campo.options[tam] = null; tam = tam - 1 ; } if(iOption > 0){ campo.options[0].selected = true; } } /********************************************************************************* Função para abrir janela de Procura de Autorização de empenho ********************************************************************************* Exemplo: procuraAutorizacaoEmpenho('frm','codAutorizacao') */ function procuraAutorizacaoEmpenho(nomeform,campoautorizacao,flag,sessao){ var x = 200; var y = 140; var sArq = '../../includes/procuraAutorizacaoEmpenho.php?'+sessao+'&nomForm='+nomeform+'&flag='+flag+'&campoAutorizacao='+campoautorizacao; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "window.open(sArq,'','width=450px,height=350px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura de Empenho ********************************************************************************* Exemplo: procuraEmpenho('frm','codEmpenho') */ function procuraEmpenho(nomeform,campoempenho,sessao){ var x = 200; var y = 140; var sArq = '../../includes/procuraEmpenho.php?'+sessao+'&nomForm='+nomeform+'&campoEmpenho='+campoempenho; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prem"+ sessaoid +" = window.open(sArq,'prem"+ sessaoid +"','width=450px,height=350px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura de Empenho ********************************************************************************* Exemplo: mostraDadosProcesso("observacao",sessao) */ function mostraDadosProcesso(tipo,sessao){ var x = 200; var y = 140; var sArq = '../../includes/mostraDadosProcesso.php?'+sessao+'&tipo='+tipo; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prem"+ sessaoid +" = window.open(sArq,'mdpr"+ sessaoid +"','width=450px,height=350px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /********************************************************************************* Função para abrir janela de Procura Genérica ********************************************************************************* Exemplo: procuraGenerica('frm','nomConta','codConta'); */ function procuraGenerica(nomeform,campocodigo,campodescricao,tabela,atributocod,atributonom,orderby,titulo,label,sessao){ var x = 200; var y = 180; var sArq = '../../includes/procuraGenerica.php?'+sessao+'&nomForm='+nomeform+'&campoCodigo='+ campocodigo+'&campoDescricao='+campodescricao+'&tabela='+tabela+'&atributoCod='+ atributocod+'&atributoNom='+atributonom+'&orderBy='+orderby+'&titulo='+titulo+'&label='+label; var sessaoid = sessao.substr(10,6); var wVolta=false; var sAux = "prcde"+ sessaoid +" = window.open(sArq,'prcde"+ sessaoid +"','width=450px,height=250px,resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } /*------------------------------------------------+ |VERIFICA SE A DATA INFORMADA EH VÁLIDA | |DEVER SE USADA NO MÉTODO ONBLUR | +------------------------------------------------*/ function verificaData(campoData){ if( campoData.value.length ){ var stErro = false; if (campoData.value.substr(0,2)<1 || campoData.value.substr(0,2)>31){ stErro = true; } if (campoData.value.substr(3,2)<1 || campoData.value.substr(3,2)>12){ stErro = true; } if (campoData.value.substr(3,2)==4 || campoData.value.substr(3,2)==6 || campoData.value.substr(3,2)==9 || campoData.value.substr(3,2)==11){ if (campoData.value.substr(0,2)>30){ stErro = true; } } if (campoData.value.substr(3,2)==2){ var bissexto=Number(campoData.value.substr(6,4)) % 4; if (bissexto!=0 && campoData.value.substr(0,2)>28){ stErro = true; } if (bissexto==0 && campoData.value.substr(0,2)>29){ stErro = true; } } if( stErro ){ campoData.focus(); return false; }else{ return true; } }else{ return true; } } /*------------------------------------------------+ |FILTRA A STRING INFORMADA, RETIRANDO TODOS | |CARACTERS NÃO ALFA NUMÉRICOS | +------------------------------------------------*/ function filtraMascara( campo ){ var expReg = new RegExp("[^a-zA-Z0-9]","g"); var inCont = 0; var novoCampo = ""; var tmpCampo; while(campo.length > inCont ){ tmpCampo = campo.substr(inCont, 1); if( !expReg.test(tmpCampo) ){ novoCampo += tmpCampo; } inCont++; } return novoCampo; } /*-------------------------------------------------------+ |VÁLIDA O CARACTER EM RELAÇÃO A SUA POSIÇÃO NA MÁSCARA | |VALIDANDO TIPO E VALOR | |EX.: "99:9X" O CARACTER X NÃO É VÁLIDO NA MASCARA 99:99 | | "55:56" O CARACTER 6 NÃO É VÁLIDO NA MASCARA 55:55 | | "AB=CD"O CARACATER D NÃO É VÁLIDO NA MASCARA CC=CC | +-------------------------------------------------------*/ function validaCaracter( masc, caracter, posicao){ var caracterMasc = masc.charAt(posicao); var expRegCharNumber = new RegExp("[a-zA-Z0-9]","ig"); if( expRegCharNumber.test( caracterMasc ) ){ if( isNaN(caracterMasc)){ var expValReg = new RegExp("[a-"+caracterMasc+"]","ig"); }else{ var expValReg = new RegExp("[0-"+caracterMasc+"]"); } return expValReg.test(caracter); }else{ return false; } } /*-------------------------------------------------------+ |MASCARA O CAMPO CONFORME A MÁSCARA INFORMADA | +--------------------------------------------------------+ Ex.: */ function mascaraDinamico( mascara, campo, evento){ var expReg = new RegExp("[^a-zA-Z0-9]","g"); var expRegTmp; var arExecExp = expReg.exec(mascara); var stCampoNovo = ""; var stMascaraTmp = mascara.substr(arExecExp.index + 1 ); var campoMasc = filtraMascara( campo.value ); var inContIndex = 1; var inCont=0 ; var flagIndex = true; var whichCode = (window.Event) ? evento.which : evento.keyCode; if (whichCode == 13) return true; // Enter if (whichCode == 0) return true; if (whichCode == 1) return true; if (whichCode == 2) return true; if (whichCode == 3) return true; if (whichCode == 4) return true; if (whichCode == 5) return true; if (whichCode == 6) return true; if (whichCode == 7) return true; if (whichCode == 8) return true; // Backspace if (whichCode == 9) return true; if (whichCode == 10) return true; while( inCont < campoMasc.length && stCampoNovo.length < mascara.length ){ caracter = campoMasc.substr(inCont, 1); if(validaCaracter( mascara, caracter, inContIndex - 1)){ stCampoNovo += caracter; expRegTmp = new RegExp("[^a-zA-Z0-9]","g"); if(expRegTmp.test(stMascaraTmp) || flagIndex){ if( arExecExp.index == inContIndex){ stCampoNovo += arExecExp[0]; arExecExp = expReg.exec(mascara); inContIndex++; stMascaraTmp = mascara.substr(inContIndex ); flagIndex = false; } } } inCont++; inContIndex++; } campo.value = stCampoNovo; return false; } /*-------------------------------------------------------+ |MASCARA O CAMPO CONFORME A MÁSCARA DE CPF | +--------------------------------------------------------+ Ex.: */ function mascaraCPF( campo, evento ){ return mascaraDinamico( '999.999.999-99', campo, evento); } /*-------------------------------------------------------+ |MASCARA O CAMPO CONFORME A MÁSCARA DE CNPJ | +--------------------------------------------------------+ Ex.: */ function mascaraCNPJ( campo, evento ){ return mascaraDinamico( '99.999.999/9999-99', campo, evento); } /*-------------------------------------------------------+ |MASCARA O CAMPO CONFORME A MÁSCARA CEP | +--------------------------------------------------------+ Ex.: */ function mascaraCEP( campo, evento ){ return mascaraDinamico( '99999-999', campo, evento); } /*-------------------------------------------------------+ |MASCARA O CAMPO CONFORME A MÁSCARA DATA | +--------------------------------------------------------+ Ex.: */ function mascaraData( campo, evento ){ return mascaraDinamico( '99/99/9999', campo, evento); } /*-------------------------------------------------------+ |FUNÇÕES PARA MASCARAMENTO DE VALORES TIPO MOEDA | +-------------------------------------------------------*/ //EX.: // /*-------------------------------------------------------+ |RETIRA OS ZEROS A ESQUERDA DO VALOR DA MOEDA | +-------------------------------------------------------*/ function limpaZerosMoeda( valor ){ while( valor.substr(0,1) == "0" ){ valor = valor.substr(1, valor.length ); } return valor; } /*-------------------------------------------------------+ |SEPARA UM INTEIRO NOS MILHARES | +-------------------------------------------------------*/ function montaMilharMoeda( valor ){ if( valor != "0" ){ var expReg = new RegExp("[^0-9\-]","g"); valor = valor.replace(expReg, ''); valor = limpaZerosMoeda( valor ); var tamanho = valor.length; var pos = tamanho - 3; var milhar = ""; var cont = 0; while( pos > 0 && tamanho > 3 ){ if(valor.substr(0, pos) != '-'){ valor = valor.substr(0, pos)+"."+valor.substr(pos, tamanho); } tamanho = valor.length; pos = pos - 3; } } return valor; } /*-------------------------------------------------------+ |FORMATA UM NÚMERO PARA MOEDA, FORMATANDO EM MILHARES | |E CASAS DECIMAIS | +-------------------------------------------------------*/ function formataMoeda( campo, decimais, evento , negativo){ var moeda = ""; if( campo.value.length > 0 ){ var virgPos = campo.value.search(','); if( virgPos >= 0 ){//VERIFICA SE EXISTE VRIGULA NO CAMPO if(campo.value.search('-') == 0 && negativo) stMenos = campo.value.substring(1,campo.value.length); else stMenos = campo.value; var arMoeda = stMenos.split(',');//QUEBRA O CAMPO NA VIRGULA while( arMoeda[1].length < decimais ){//PREENCHE COM ZEROS AS CASAS DECIMAIS QUE ESTIVEREM FALTANDO arMoeda[1] += "0"; } var milhar = montaMilharMoeda( arMoeda[0] ); if( milhar.length == 0 ){ milhar = "0"; } moeda = milhar+","+arMoeda[1]; } else { var zeros = ""; while( zeros.length < decimais ){ zeros += "0"; } if(campo.value.search('-') == 0 && negativo) stMenos = campo.value.substring(1,campo.value.length); else stMenos = campo.value; moeda = montaMilharMoeda( stMenos )+","+zeros; } if(campo.value.search('-') == 0 && negativo) campo.value = '-'+ moeda; else campo.value = moeda; } return true; } /*-------------------------------------------------------+ |FORMATA O CAMPO PARA MOEDA DURANTE A DIGITAÇÃO DA MESMA | +-------------------------------------------------------*/ function mascaraMoeda( campo, decimais, evento , negativo ){ var virgPos = campo.value.search(','); var stMenos = ''; if ( (evento.keyCode != 9)) { if ( (evento.keyCode != 16)) { //evento.keyCode == 188 é a virgula //VERIFICA SE O USUARIO TENTOU COLOCAR A VIRGULA NUMA POSICAO INVALIDA //SE ISSO OCORRER A VIRGULA SERA APAGADA if( evento.keyCode == 109){ if(negativo){ if(campo.value.length != 1 ) campo.value = campo.value.substring(0,campo.value.length-1); }else campo.value = campo.value.substring(0,campo.value.length-1); }else if( evento.keyCode == 188 ){ if( (campo.value.length - (decimais + 1)) > virgPos ){ campo.value = campo.value.replace(',',''); }else if( campo.value.length == 1 ){ campo.value = "0,";//CASO TENHA SIDO DIGITADO SÁ A VIRGULA A FUNÇÃO COLOCA O ZERO } }else{ if(campo.value.search('-') == 0 && negativo) stMenos = campo.value.substring(1,campo.value.length); else stMenos = campo.value; var arMoeda = stMenos.split(','); var inMoeda = montaMilharMoeda( arMoeda[0] ); if( typeof(arMoeda[1]) != 'undefined'){//VERIFICA SE EXISTEM CASAS DECIMAIS DIGITADAS if( inMoeda.length == 0 ){// inMoeda = "0"; } stMenos = inMoeda+","+arMoeda[1].substr(0, decimais); }else{ stMenos = inMoeda; } if(campo.value.search('-') == 0 && negativo) campo.value = '-'+stMenos; else campo.value = stMenos; } } } } /*-------------------------------------------------------+ |FORMATA O CAMPO PARA MOEDA DURANTE A DIGITAÇÃO DA MESMA | +-------------------------------------------------------*/ function mascaraNumerico( campo, tamanho, decimais, evento, negativo ){ RegExpMenos = new RegExp ("-","g"); var boValorNegativo = false; if ( (evento.keyCode != 9)) { if ( (evento.keyCode != 16)) { if( (evento.keyCode != 0) ){ if( (campo.value.length < (tamanho-(decimais+2))) || (campo.value.search(',') !='-1') || (evento.keyCode == 8) ){ if( negativo ) { //Verifica se o número é negativo if( evento.keyCode == 109 ){ boValorNegativo = true; } else { if( (campo.value.charAt(0) == "-") && ( evento.keyCode != 107 && evento.keyCode != 61 ) ){ boValorNegativo = true; } } //Calcula o tamanho máximo do campo if( (campo.value.charAt(0) != "-") && (evento.keyCode == 109) ){ campo.maxLength = campo.maxLength + 1; } else if( (campo.value.charAt(0) == "-") && ( evento.keyCode == 107 || evento.keyCode == 61 ) ) { campo.maxLength = campo.maxLength - 1; } } campo.value = campo.value.replace( RegExpMenos, '' ); var virgPos = campo.value.search(','); //evento.keyCode == 188 é a virgula //VERIFICA SE O USUARIO TENTOU COLOCAR A VIRGULA NUMA POSICAO INVALIDA //SE ISSO OCORRER A VIRGULA SERA APAGADA if( evento.keyCode == 188 || evento.keyCode == 108){ if( (campo.value.length - (decimais + 1)) > virgPos ){ campo.value = campo.value.replace(',',''); }else if( campo.value.length == 1 ){ campo.value = "0,";//CASO TENHA SIDO DIGITADO Só A VIRGULA A FUNÇÃO COLOCA O ZERO } }else { var arMoeda = campo.value.split(',');//SEPARA O VALOR NA VIRGULA var inMoeda = montaMilharMoeda( arMoeda[0] ); if( typeof(arMoeda[1]) != 'undefined'){//VERIFICA SE EXISTEM CASAS DECIMAIS DIGITADAS if( inMoeda.length == 0 ){// inMoeda = "0"; } campo.value = inMoeda+","+arMoeda[1].substr(0, decimais); }else{ campo.value = inMoeda; } } //Coloca o menos da frente se o valor for negativo if( negativo ) { if( boValorNegativo ) { campo.value = "-" + campo.value; } } } else { campo.value = campo.value + ','; } } else { campo.value = campo.value.replace(/\^|~|´|`/g,''); } } } } /*-------------------------------------------------------+ |FORMATA O CAMPO PARA MOEDA DURANTE A DIGITAÇÃO DA MESMA | +-------------------------------------------------------*/ function mascaraNumericoBR( campo, tamanho, decimais, evento, negativo ){ RegExpMenos = new RegExp ("-","g"); var boValorNegativo = false; if ( (evento.keyCode != 9)) { if ( (evento.keyCode != 16)) { if( (evento.keyCode != 0) ){ campo.value = campo.value.replace(/[\.]/g, ''); if( (campo.value.length < (tamanho-decimais)) || (campo.value.search(',') !='-1') || (evento.keyCode == 8) ){ if( negativo ) { //Verifica se o número é negativo if( evento.keyCode == 109 ){ boValorNegativo = true; } else { if( (campo.value.charAt(0) == "-") && ( evento.keyCode != 107 && evento.keyCode != 61 ) ){ boValorNegativo = true; } } //Calcula o tamanho máximo do campo if( (campo.value.charAt(0) != "-") && (evento.keyCode == 109) ){ campo.maxLength = campo.maxLength + 1; } else if( (campo.value.charAt(0) == "-") && ( evento.keyCode == 107 || evento.keyCode == 61 ) ) { campo.maxLength = campo.maxLength - 1; } } campo.value = campo.value.replace( RegExpMenos, '' ); var virgPos = campo.value.search(','); //evento.keyCode == 188 é a virgula //VERIFICA SE O USUARIO TENTOU COLOCAR A VIRGULA NUMA POSICAO INVALIDA //SE ISSO OCORRER A VIRGULA SERA APAGADA if( evento.keyCode == 188 || evento.keyCode == 108){ if( (campo.value.length - (decimais + 1)) > virgPos ){ campo.value = campo.value.replace(',',''); }else if( campo.value == ',' ){ campo.value = "0,";//CASO TENHA SIDO DIGITADO Só A VIRGULA A FUNÇÃO COLOCA O ZERO } }else { var arMoeda = campo.value.split(',');//SEPARA O VALOR NA VIRGULA var inMoeda = montaMilharMoeda( arMoeda[0] ); if( typeof(arMoeda[1]) != 'undefined'){//VERIFICA SE EXISTEM CASAS DECIMAIS DIGITADAS if( inMoeda.length == 0 ){// inMoeda = "0"; } campo.value = inMoeda+","+arMoeda[1].substr(0, decimais); }else{ campo.value = inMoeda; } } //Coloca o menos da frente se o valor for negativo if( negativo ) { if( boValorNegativo ) { campo.value = "-" + campo.value; } } } else { var inMoeda = montaMilharMoeda( campo.value ); campo.value = inMoeda + ','; } } else { campo.value = campo.value.replace(/\^|~|´|`/g,''); } } } } /*-------------------------------------------------------+ |SÓ PERMITE A ENTRADA DE CARACTERES VÁLIDOS PARA MOEDAS | +-------------------------------------------------------*/ function validaCharMoeda( campo, evento ){ var arMoeda = campo.value.split(',');//SEPARA O VALOR NA VIRGULA if ( navigator.appName == "Netscape" ){ var teclaPress = evento.which; } else { var teclaPress = evento.keyCode; } var retorno = true; var expReg = new RegExp("[0-9,\-]","g"); var novo = String.fromCharCode( teclaPress ); if( !validaTecla( evento.keyCode ) ){ //NÃO PERMITE A ENTRADA DE CARACTERES DIFERENTES DE NUMEROS E VIRGULA if( novo.search(expReg) ){ retorno = false; }else{ //VERIFICA SE JAH EXISTE VIRGULA NO CAMPO //SE HOUVER NAO PERMITE A ENTRADA DE OUTRA var strTemp = campo.value + String.fromCharCode( teclaPress ); if( strTemp.search(',') != strTemp.lastIndexOf(',') ){ retorno = false; } } } return retorno; } function validaTecla( tecla ){ var retorno = false; if ( navigator.appName == "Netscape" ){ switch(tecla){ //backspace case 8: retorno = true; break; //tab case 9: retorno = true; break; //enter case 13: retorno = true; break; //capslock case 20: retorno = true; break; //esc case 27: retorno = true; break; //pagup case 33: retorno = true; break; //pagdown case 34: retorno = true; break; //end case 35: retorno = true; break; //home case 36: retorno = true; break; //esquerda case 37: retorno = true; break; //cima case 38: retorno = true; break; //direita case 39: retorno = true; break; //baixo case 40: retorno = true; break; //insert case 45: retorno = true; break; //delete case 46: retorno = true; break; } } else { switch(tecla){ //backspace case 8: retorno = true; break; } } return retorno; } /*-------------------------------------------------------+ |FIM DAS FUNÇÕES PARA MASCARAMENTO DE VALORES TIPO MOEDAS| +--------------------------------------------------------+ /*--------------------------------------------------------+ |PREENCHE UM CAMPO CONFORME O VALOR SETADO EM OUTRO CAMPO | |ex.: | | +--------------------------------------------------------*/ function preencheCampo( selecionado, preenchido ){ var iIndice = 0; var formulario = selecionado.form.name; var d = eval("document."+formulario); var iIndex; if( selecionado.type == "select-one" && selecionado.value.toUpperCase() == "XXX" ){ preenchido.value = ""; return true; }else{ preenchido.value = selecionado.value; if( preenchido.type == "select-one" && preenchido.value != selecionado.value ){ alertaAviso("@Valor inválido. ("+selecionado.value+")",'form','erro','id?>'); //selecionado.value = ""; preenchido.selectedIndex = 0; return false; }else{ for(var iCont = 1 ; iCont < d.elements.length ; iCont++){ if( d.elements[iCont].name == selecionado.name ){ break; } } if( selecionado.type == "select-one" ){ iIndex = iCont+1; }else{ iIndex = iCont+2; } if( ( d.elements.length - iIndex ) > 0 ){ //d.elements[iIndex].disabled = false; d.elements[iIndex].focus(); } return true; } } return true; } /*--------------------------------------------------------+ |PREENCHE AS COMBOS DE CLASSIFICAÇÃO E ASSUNTO | |ex.: | +--------------------------------------------------------*/ function preencheCA(variavel, valor){ var targetTmp = document.frm.target; document.frm.target = "oculto"; var actionTmp = document.frm.action; //var actionTmp = "includes/filtrosProcesso.inc.php?id?>"; document.frm.action += "&variavel="+variavel+"&valor="+escape(valor)+"&ctrl=100&controle=100"; document.frm.submit(); //document.frm.action = actionTmp; document.frm.target = targetTmp; } function preencheCA_ano(variavel, valor){ ano = valor.substr((valor.length)-4,4); valor = valor.substr(0,(valor.length)-4); var targetTmp = document.frm.target; document.frm.target = "oculto"; var actionTmp = document.frm.action; //var actionTmp = "includes/filtrosProcesso.inc.php?id?>"; document.frm.action += "&anoOrgao="+ano+"&variavel="+variavel+"&valor="+escape(valor)+"&ctrl=100&controle=100"; document.frm.submit(); //document.frm.action = actionTmp; document.frm.target = targetTmp; } /*--------------------------------------------------------+ |Verifica se existe um valor dentro de uma combo, |selecionando-o se houver |ex.: | | |Autor: Ricardo Lopes 27/01/2004 +--------------------------------------------------------*/ function validaCombo(iCod,campo){ var cod = iCod; var val; var erro = true; var f = document.frm; var tam = campo.options.length - 1; //Percorre todos os valores para encontrar qual item da combo tem o valor digitado while (tam >= 0) { val = campo.options[tam].value; if(cod==val){ campo.options[tam].selected = true; erro = false; } tam = tam - 1 ; } //Se não encontrou o valor o código digitado é inválido if(erro){ return false; }else{ return true; } } /*------------------------------------------------------------------+ |Abre popUp de pesquisa - por Marcelo B. Paulino (27/02/2004) | | | +------------------------------------------------------------------*/ /* Definicao dos Paramentros: -> arquivo: nome do arquivo que sera aberto na janela -> nomeform: nome do formulario -> camponum: campo para onde sera enviado o codigo encontrado apos a pesquisa -> camponom: campo para onde sera enviado o nome encontrado apos a pesquisa -> tipodebusca: geral ou usuario -> sessao: Session Id -> width: largura da janela -> height: altura da janela */ function abrePopUp(arquivo,nomeform,camponum,camponom,tipodebusca,sessao,width,height){ // Definicao de Largura e Altura da Janela if (width == '') { width = 800; } if (height == '') { height = 550; } // Definicao da Localizacao da Janela var x = 0; var y = 0; var sessaoid = sessao.substr(10,6); // Definicao da URL completa do arquivo a ser aberto var sArq = '../../popups/popups/'+arquivo+'?'+sessao+'&nomForm='+nomeform+'&campoNum='+camponum+'&campoNom='+camponom+'&tipoBusca='+tipodebusca; //var wVolta=false; var sAux = "prcgm"+ sessaoid +" = window.open(sArq,'prcgm"+ sessaoid +"','width="+width+",height="+height+",resizable=1,scrollbars=1,left="+x+",top="+y+"');"; eval(sAux); } function formataValor(campo) { campo.value = filtraCampo(campo); vr = campo.value; tam = vr.length; if ( tam <= 2 ){ campo.value = vr ; } if ( (tam > 2) && (tam <= 5) ){ campo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; } if ( (tam >= 6) && (tam <= 8) ){ campo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; } if ( (tam >= 9) && (tam <= 11) ){ campo.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; } if ( (tam >= 12) && (tam <= 14) ){ campo.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; } if ( (tam >= 15) && (tam <= 18) ){ campo.value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;} } function filtraCampo(campo) { var s = ''; var cp = ''; var regra = new RegExp("[0-9]"); vr = campo.value; tam = vr.length; for (i = 0; i < tam ; i++) { var conferir = regra.exec(vr.substring(i,i + 1)); if (vr.substring(i,i + 1) != "/" && vr.substring(i,i + 1) != "-" && vr.substring(i,i + 1) != "." && vr.substring(i,i + 1) != "," && conferir != null){ s = s + vr.substring(i,i + 1);} } campo.value = s; return cp = campo.value } function atualizaFormataValor(campo) { campo.value = filtraCampo(campo); vr = campo.value; tam = vr.length; if ( tam <= 2 ){ campo.value = campo.value + ',' + '00'; } else { formataValor(campo); } }