/**
**********************************************************************************
* *
* @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
* $Id: tipo.js 60017 2014-09-25 17:43:38Z franver $
Casos de uso: uc-01.01.00
*/
function inteiro(evento)
{
var expRegular = new RegExp("[0-9]","g");
var retorno = true;
var teclaPressionada;
var caracter;
if (navigator.appName == "Netscape") {
teclaPressionada = evento.which;
} else {
teclaPressionada = evento.keyCode;
}
caracter = String.fromCharCode(teclaPressionada);
if (!validaTecla(evento.keyCode)) {
if (!evento.ctrlKey && caracter.search(expRegular)
|| evento.ctrlKey && !(caracter=='c' || caracter=='x' || caracter=='v') && caracter.search(expRegular)) {
retorno = false;
}
}
return retorno;
}
function validaInteiroKeyUp( campo ) {
RegExpNumero = new RegExp ("[^0-9]","g");
campo.value = campo.value.replace( RegExpNumero, '' );
}
/*------------------------------------------------------------------+
|VERIFICA SE O VALOR INFORMADO EH UM TIPO INTERIO |
+------------------------------------------------------------------*/
function isInt( valor ){
var expRegular = new RegExp("[^0-9]","g");
var retorno = true;
if( expRegular.test( valor ) ){
retorno = false;
}
return retorno;
}
/*------------------------------------------------------------------+
|VERIFICA SE O VALOR INFORMADO EH UM TIPO FLOAT |
+------------------------------------------------------------------*/
function isFloat( valor ){
var expRegular = new RegExp("[^0-9.,]","g");
var retorno = true;
if( expRegular.test( valor ) ){
retorno = false;
}
return retorno;
}
/*------------------------------------------------------------------+
|VERIFICA SE O VALOR INFORMADO EH UMA DATA VALIDA |
+------------------------------------------------------------------*/
function isData( valor ){
var retorno = true;
function tipoData( data ){
this.value = data;
}
if( valor.length > 0 ){
campoData = new tipoData( valor );
retorno = verificaData( campoData );
}
return retorno;
}
/*------------------------------------------------------------------+
|PERMITE A ENTRADA DE CARACTERS NUMÉRICOS E DA VIGULA |
| |
+------------------------------------------------------------------*/
function tfloat( campo, evento ){
var expRegular = new RegExp("[0-9,\-]","g");
var retorno = true;
var teclaPressionada;
var caracter;
var strTemp;
if ( navigator.appName == "Netscape" ){
teclaPressionada = evento.which;
} else {
teclaPressionada = evento.keyCode;
}
caracter = String.fromCharCode( teclaPressionada );
if( !validaTecla( evento.keyCode ) ){
if( caracter.search(expRegular) ){//NÃO PERMITE A ENTRADA DE CARACTERES DIFERENTES DE NUMEROS E VIRGULA
retorno = false;
}else{
strTemp = campo.value + String.fromCharCode( teclaPressionada );
if( strTemp.search(',') != strTemp.lastIndexOf(',') ){//VERIFICA SE JAH EXISTE VIRGULA NO CAMPO SE HOUVER NAO PERMITE A ENTRADA DE OUTRA
retorno = false;
}
}
}
return retorno;
}
/*------------------------------------------------------------------+
|PERMITE A ENTRADA DE CARACTERS NUMÉRICOS E DA VIGULA |
| |
+------------------------------------------------------------------*/
function tfloatPonto( campo, evento ){
var expRegular = new RegExp("[0-9.]","g");
var retorno = true;
var teclaPressionada;
var caracter;
var strTemp;
if ( navigator.appName == "Netscape" ){
teclaPressionada = evento.which;
} else {
teclaPressionada = evento.keyCode;
}
caracter = String.fromCharCode( teclaPressionada );
if( !validaTecla( evento.keyCode ) ){
if( caracter.search(expRegular) ){//NÃO PERMITE A ENTRADA DE CARACTERES DIFERENTES DE NUMEROS VIRGULA
retorno = false;
}else{
strTemp = campo.value + String.fromCharCode( teclaPressionada );
if( campo.value.search( new RegExp('[.]','g') ) != -1 )
retorno = false;
if( caracter.search( new RegExp('[0-9]','g') ) != -1 )
retorno = true;
}
}
return retorno;
}
/*------------------------------------------------------------------+
|FORMATA UM NÚMERO PARA FLOAT, FORMATANDO EM MILHARES |
|E CASAS DECIMAIS |
| |
+------------------------------------------------------------------*/
function floatDecimal( campo, decimais, evento ){
var camposFloat = "";
var negativo = false;
if ( campo.value.length == 0 ) {
campo.value = "0";
}
if( campo.value.length >= 0 ){
if(campo.value.search('-') == 0){
negativo = true;
campo.value = campo.value.substring(1,campo.value.length);
}else{
negativo = false;
}
var virgPos = campo.value.search(',');
if( virgPos >= 0 ){//VERIFICA SE EXISTE VRIGULA NO CAMPO
var arcamposFloat = campo.value.split(',');//QUEBRA O CAMPO NA VIRGULA
if( arcamposFloat[1].length < decimais ){
while( arcamposFloat[1].length < decimais ){//PREENCHE COM ZEROS AS CASAS DECIMAIS QUE ESTIVEREM FALTANDO
arcamposFloat[1] += "0";
}
}else{
arcamposFloat[1] = arcamposFloat[1].substr( 0, decimais );
}
var milhar = inteiroParaMilhar( arcamposFloat[0] );
if( milhar.length == 0 ){
milhar = "0";
}
camposFloat = milhar+","+arcamposFloat[1];
} else {
var zeros = "";
while( zeros.length < decimais ){
zeros += "0";
}
camposFloat = inteiroParaMilhar( campo.value )+","+zeros;
}
if(negativo == true)
campo.value = '-'+camposFloat;
else
campo.value = camposFloat;
}
return true;
}
function validaValorMaximoPermitido( campo, decimais ){
if( campo.value.length > 0 ){
var flValorMaximo = geraValorMaximoPermitido( campo, decimais );
flValorMaximo = flValorMaximo.replace( ".", "" , "g");
flValorMaximo = flValorMaximo.replace( ",", "." , "g");
var flValorCampo = campo.value.replace( ".", "" , "g");
flValorCampo = flValorCampo.replace( ",", "." , "g");
if( parseFloat( flValorMaximo ) < parseFloat(flValorCampo) ){
return false;
}else{
return true;
}
}else{
return true;
}
}
function geraValorMaximoPermitido( campo, decimais ){
var inTamanhoMaximo = campo.size - ( decimais + 1 );
var inQtdPontos = inTamanhoMaximo % 3;
inTamanhoMaximo = inTamanhoMaximo - inQtdPontos
var inValorMaximo = "";
for( var i = 0; i < inTamanhoMaximo; i++ ){
inValorMaximo += "9";
}
var inValorMaximoDecimal = "";
for( var i = 0; i < decimais ; i++ ){
inValorMaximoDecimal += "9";
}
var flValorMaximo = inteiroParaMilhar(inValorMaximo)+","+inValorMaximoDecimal;
return flValorMaximo;
}
/*------------------------------------------------------------------+
|VERIFICA SE O VALOR INFORMADO EH UMA DATA VALIDA |
| |
+------------------------------------------------------------------*/
function verificaData(campoData)
{
var boErro = false;
if( campoData.value.length ){
if ( campoData.value.length < 6 ){
boErro = false;
}else{
var exercicio = new Date().getFullYear();
var tamanho = campoData.value.length;
if (tamanho < 10) {
if (tamanho == 9) {
if (trim(campoData.value).substr(6,3) == exercicio.toString().substr(0,3)) {
campoData.value = campoData.value.substr(0,6)+exercicio;
} else {
campoData.value = '';
}
} else {
if (tamanho == 6) {
campoData.value = campoData.value+exercicio;
} else if ((tamanho == 7 && trim(campoData.value).substr(6,1) == '2') || (tamanho == 8 && trim(campoData.value).substr(6,2) == '20')) {
campoData.value = campoData.value.substr(0,6)+exercicio;
} else if (tamanho == 8) {
campoData.value = campoData.value.substr(0,6) + '20' + campoData.value.substr(6,2);
} else {
campoData.value = '';
}
}
}
/*if ( campoData.value.length < 10 ) {
if( campoData.value.substr(6,2) > 80 ) {
campoData.value = campoData.value.substr(0,6) + '19' + campoData.value.substr(6,2);
} else {
campoData.value = campoData.value.substr(0,6) + '20' + campoData.value.substr(6,2);
}
}*/
if(confereDataValida(campoData) == false) {
return false;
}
if ( campoData.value.substr(0,2) < 1 || campoData.value.substr(0,2) > 31 ){
boErro = true;
}
if ( campoData.value.substr(3,2) < 1 || campoData.value.substr(3,2) > 12 ){
boErro = 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 ){
boErro = 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 ){
boErro = true;
}
if ( bissexto == 0 && campoData.value.substr(0,2) > 29 ){
boErro = true;
}
}
if( boErro ){
//campoData.focus();
boErro = false;
}else{
boErro = true;
}
}
}else{
boErro = true;
}
return boErro;
}
/*Validar se data digitada é valida
* passa a data para o formato yyyy-mm-dd para validar
* Alem de validar se a data tem os caracteres permitidos e se é valida
* entre 1000 e 2999!
*/
function confereDataValida(campoData)
{
arDataSeparada = campoData.value.split("/");
dataValidaFormatada = arDataSeparada[2]+'-'+arDataSeparada[1]+'-'+arDataSeparada[0];
// expressão regular para validar data onde serão testado parametros como ano bissexto e mes de fevereiro
return isValidDate(dataValidaFormatada, 'YMD')
}
/*------------------------------------------------------------------+
|VERIFICA SE O VALOR INFORMADO EH UM CNPJ VALIDO |
| |
+------------------------------------------------------------------*/
function isCNPJ(valor) {
valor = filtraAlfaNumerico( valor.value );
var primeiro = valor.substr(1,1);
var falso = true;
var size =valor.length;
var retorno = true;
var proximo;
if( size == 0 ){
retorno = false;
}
else if( size != 14 ){
retorno = false;
}else{
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) {
retorno = 0;
}else{
retorno = 11 - resto;
}
return retorno;
}
/*------------------------------------------------------------------+
|VERIFICA SE O VALOR INFORMADO EH UM CNPJ VALIDO |
| |
+------------------------------------------------------------------*/
function isCPF(valor) {
valor = filtraAlfaNumerico( valor.value );
var primeiro = valor.substr(1,1);
var falso = true;
var size = valor.length;
var retorno = true;
if (size==0){
retorno = true;
}
else if (size!=11){
retorno = false;
}else{
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) {
retorno = 0
}else{
retorno = 11 - resto
}
return retorno;
}
function isValidDate(dateStr, format) {
if (format == null) { format = "YMD"; }
format = format.toUpperCase();
if (format.length != 3) { format = "YMD"; }
if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) || (format.indexOf("Y") == -1) ) { format = "MDY"; }
if (format.substring(0, 1) == "Y") { // If the year is first
var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
} else if (format.substring(1, 2) == "Y") { // If the year is second
var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
} else { // The year must be third
var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
}
// If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
// Check to see if the 3 parts end up making a valid date
if (format.substring(0, 1) == "M") { var mm = parts[0]; } else if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
if (format.substring(0, 1) == "D") { var dd = parts[0]; } else if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
if (parseFloat(dd) != dt.getDate()) { return false; }
if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
return true;
}