/**
**********************************************************************************
* *
* @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|
+-------------------------------------------------------*/