/** ********************************************************************************** * * * @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: 15591 $ $Name$ $Author: cassiano $ $Date: 2006-09-18 11:10:06 -0300 (Seg, 18 Set 2006) $ Casos de uso: uc-01.01.00 */ function validaCaracterMascara( 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.toLowerCase()+"A-"+caracterMasc.toUpperCase()+"]","ig"); }else{ var expValReg = new RegExp("[0-"+caracterMasc+"]","ig"); } 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]","ig"); var expRegTmp; var arExecExp = expReg.exec(mascara); var stCampoNovo = ""; if( arExecExp ){ var stMascaraTmp = mascara.substr(arExecExp.index + 1 ); } var campoMasc = filtraAlfaNumerico( 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(validaCaracterMascara( mascara, caracter, inContIndex - 1)){ stCampoNovo += caracter; expRegTmp = new RegExp("[^a-zA-Z0-9]","ig"); if(expRegTmp.test(stMascaraTmp) || flagIndex){ if( arExecExp && 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); } /*-------------------------------------------------------+ |MASCARA O CAMPO CONFORME A MÁSCARA HORA | +--------------------------------------------------------+ Ex.: */ function mascaraHora( campo, evento ){ return mascaraDinamico( '29:59', campo, evento); } /*-------------------------------------------------------+ |FUNÇÕES PARA MASCARAMENTO DE VALORES TIPO MOEDA | +-------------------------------------------------------*/ //EX.: // /*-------------------------------------------------------+ |FORMATA O CAMPO PARA MOEDA DURANTE A DIGITAÇÃO DA MESMA | +-------------------------------------------------------*/ function mascaraFloat( campo, decimais, evento ){ 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 ){ 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 = inteiroParaMilhar( 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; } } } function preencheComZeros( mascara, campo, posicao ){ var expReg = new RegExp("[a-zA-Z0-9]","ig"); var stComplemento = ''; var inInicio = 0; var inFim = 0; if ( campo.value != "" ) { //posicao == 'E' || posicao == 'D' if(posicao == 'E'){ inInicio = 0; inFim = mascara.length - campo.value.length; }else{ inInicio = campo.value.length; inFim = mascara.length; } for(var inCount=inInicio; inCount resultado => 00001/002-01 |valor informado = 1 => resultado => 00001/000-00 |valor informado = 1/2 => resultado => 00001/002-00 +----------------------------------------------------------*/ function preencheComZerosPelaMascara( valor, mascara ){ var expReg = new RegExp("[^a-zA-Z0-9]","ig");//EXPRESSÃO REGULAR PARA A MASCARA var expRegAN = new RegExp("[a-zA-Z0-9]","ig");//EXPRESSÃO REGULAR PARA OS SEPADORES mascara = mascara.replace( expRegAN, "0" );//TROCA OS VALORES DA MASCARA POR ZEROS var arMascara = mascara.split( expReg );//QUEBRA A MASCARA NOS SEPARADORES var arValor = valor.split( expReg );//SEPARA O VALOR PASSADO NOS SEPARADORES //REMOVE OS CARACTERES ALFANUMERICOS E MONTA UM ARRAY COM OS SEPARADORES var arSeparador = mascara.replace( expRegAN, "" ).split(""); var inCont = 0; var stValorPreenchido = ""; var stTmp = ""; do{ if( arValor[inCont] ){//A CADA ITERAÇÃO VERIFICA SE EXISTE UM VALOR stTmp = arValor[inCont]; //CASO O VALOR TENHA MAIS CARACTERES QUE A POSIÇÃO NA MASCARA //ESTE VALOR SERA EMPURRADO PARA A PRÓXIMA POSIÇÃO. //EX.:(MASC = 99/99, VALOR 111 => [0] = 11, [1] = 01 ) if( stTmp.length > arMascara[inCont].length ){ if( arValor[inCont + 1] == undefined ){ arValor[inCont + 1] = "";//SE O VALOR NÃO FOR DEFINIDO SETA UM AVALOR VAZIO } //CONTATENA O VALOR SEMPRE NA FRENTE DO PRÓXIMO VALOR arValor[inCont + 1] = stTmp.substr(arMascara[inCont].length ) + arValor[inCont + 1]; stTmp = stTmp.substr(0, arMascara[inCont].length );//REMOVE O EXESSO DA STRING } }else{//SE NÃO EXISTIR UM VALOR PARA A POSIÇÃO NA MASCARA É SETADO UM VALOR VAZIO stTmp = ""; } //CONCATENA OS ZEROS COM O VALOR REFERENTE A POSIÇÃO NA MASCARA stValorPreenchido += arMascara[inCont].substr( 0, arMascara[inCont].length - stTmp.length ); stValorPreenchido += stTmp; if( arSeparador[inCont] ){//SE EXISTIR UM SEPARADOR É FEITO A CONCATENAÇÃO AQUI stValorPreenchido += arSeparador[inCont]; } inCont++; }while( inCont < arMascara.length ); return stValorPreenchido; } /*---------------------------------------------------------+ |preenche o processo com os zeros e caso não tenha sido |o exercício, concatena este no final do valor |valor informado = 1,"99999/9999","2006" => resultado => 00001/2006 |valor informado = "1/06,"99999/9999","" => resultado => 00001/0006 |valor informado = "1/2005","99999/9999","2006" => resultado => 00001/2005 +----------------------------------------------------------*/ function preencheProcessoComZeros( valor, mascara, exercicio ){ //REMOVE OS CARACTERES ALFANUMERICOS E MONTA UM ARRAY COM OS SEPARADORES var arSeparador = mascara.replace( RegExp("[0-9a-zA-Z]", "ig"), "" ).split(""); //PROCURA POR ALGUM CARACTER SEPARADOR SE NÃO ENCONTRAR PREENCHE CONCATENA O ANO DE EXERCÍCIO if( !RegExp("[^0-9a-zA-Z]").test( valor) ){ valor += arSeparador[0]+exercicio; }else{ //VERIFICA SE NÃO FOI INFORMADO O EXERCICIO, CASO NÃO ESTE É CONCATENADO AO VALOR if( parseInt(mascara.length) - parseInt(valor.length) == parseInt(exercicio.length) ){ valor += exercicio; } } return preencheComZerosPelaMascara( valor, mascara ); } function verificaHora( hora) { if ( hora.value.length == 1 ){ hora.value = hora.value + '0:00'; }else if ( hora.value.length == 3 ) { hora.value = hora.value + '00'; }else if (hora.value.length == 4){ hora.value = hora.value + '0'; } } /*-------------------------------------------------------+ |FIM DAS FUNÇÕES PARA MASCARAMENTO DE VALORES TIPO MOEDAS| +-------------------------------------------------------*/