
// ----------------------------------------------------------------------------------------
// Verifica se uma variável tipo numérica ou string estão vazias.
  function isEmpty (x)
  {
    if ( isNaN(x) ) {
      return ( x.replace(/[" "]/g, '') == '' );
    } else {
      return ( x == 0 );
    }
  }

// ----------------------------------------------------------------------------------------
  function isCpf(cpf) 
  {
    var dac = "", inicio = 2, fim = 10, soma, digito, i, j  
	cpf = cpf.replace(/[^0-9]/g, '');  
	
    if (cpf=='11111111111' || cpf=='22222222222' || cpf=='33333333333' || cpf=='44444444444' || cpf=='55555555555' || 
        cpf=='66666666666' || cpf=='77777777777' || cpf=='88888888888' || cpf=='99999999999' || cpf=='00000000000'){
      return false;
    }
  
    for (j=1; j<=2; j++) {  
      soma = 0  
      for (i=inicio; i<=fim; i++) {  
        soma += parseInt(cpf.substring(i-j-1,i-j))*(fim+1+j-i)  
      }  
      if (j == 2) { soma += 2*digito }  
      digito = (10*soma) % 11  
      if (digito == 10) { digito = 0 }  
      dac += digito  
      inicio = 3  
      fim = 11  
    }  
    return (dac == cpf.substring(cpf.length-2,cpf.length))  
  }

// ----------------------------------------------------------------------------------------
  function isCnpj(cnpj) 
  {
    var df, resto, dac = ""  
  	cnpj = cnpj.replace(/[^0-9]/g, '');
	
    if ((cnpj.indexOf("-") != -1) || (cnpj.indexOf(".") != -1) || (cnpj.indexOf("/") != -1)) { 
      return false
    }  
    df = 5*cnpj.charAt(0)+
         4*cnpj.charAt(1)+
         3*cnpj.charAt(2)+
         2*cnpj.charAt(3)+
         9*cnpj.charAt(4)+
         8*cnpj.charAt(5)+
         7*cnpj.charAt(6)+
         6*cnpj.charAt(7)+
         5*cnpj.charAt(8)+
         4*cnpj.charAt(9)+
         3*cnpj.charAt(10)+
         2*cnpj.charAt(11)  
    resto = df % 11  
    dac += ( (resto <= 1) ? 0 : (11-resto) )  
    df = 6*cnpj.charAt(0)+
         5*cnpj.charAt(1)+
         4*cnpj.charAt(2)+
         3*cnpj.charAt(3)+
         2*cnpj.charAt(4)+
         9*cnpj.charAt(5)+
         8*cnpj.charAt(6)+
         7*cnpj.charAt(7)+
         6*cnpj.charAt(8)+
         5*cnpj.charAt(9)+
         4*cnpj.charAt(10)+
         3*cnpj.charAt(11)+
         2*parseInt(dac)  
    resto = df % 11  
    dac += ( (resto <= 1) ? 0 : (11-resto) )  
    return (dac == cnpj.substring(cnpj.length-2,cnpj.length))  
  }

// ----------------------------------------------------------------------------------------
  function isCpfCnpj (cpf_cnpj)
  {
    var ret;
    cpf_cnpj = cpf_cnpj.replace(/[^0-9]/g, '');
    
    switch (cpf_cnpj.length) {
      case 11 :
        ret = isCpf(cpf_cnpj);
        break;
      case 14 :
        ret = isCnpj(cpf_cnpj);
        break;
      default :
        ret = false;
        break;
    }
    return ret;
  }

// ----------------------------------------------------------------------------------------
  function isEmail (email)
  {
    var jSintaxe, jArroba, jPontos;
    var ExpReg = new RegExp('[^a-zA-Z0-9\.@_]', 'g');
  
    // Checa a sintaxe.
    jSintaxe = !ExpReg.test(email);
  
    // Checa se há pontos inválidos.
    jPontos = (email.indexOf('.') > 0) && !(email.indexOf('..') > 0);

    // Checa se existe somente uma arroba.
    jArroba = (email.indexOf('@') > 0) && (email.indexOf('@') == email.lastIndexOf('@'));
    
    return ( jSintaxe && jPontos && jArroba)
  }

// ----------------------------------------------------------------------------------------
  function isDate (data) 
  {
    if ( (data == null) || (data.length < 10) || data.substring(2,3) != '/' || data.substring(5,6) != '/' ) {
      return false;
    }
  
    var jsDataValida = true;
    var jsDia = data.substring(0,2)-0;
    var jsMes = data.substring(3,5)-1;
    var jsAno = data.substring(6,10)-0;
    var oData = new Date(jsAno, jsMes, jsDia);    
    
    if (jsDia != oData.getDate()) { jsDataValida = false }
    if (jsMes != oData.getMonth()) { jsDataValida = false }
    if (jsAno != oData.getFullYear()) { jsDataValida = false }
  
    return jsDataValida;
  }

// ----------------------------------------------------------------------------------------
// Verifica se o parâmetro passado é um número inteiro.
  function isInteger (num)
  {
    if ( isNaN(num) ) return false;
  
    var inte = num.replace(/[^0-9]/g, '');
  
    return (num == inte);
  }

// ----------------------------------------------------------------------------------------
// Verifica se o parâmetro passado é um CEP.
  function isCep (cep)
  {
    if ( isInteger(cep) && cep.length == 8 ) {
      return true;
    } else {
      return false;
    }
  }

// ----------------------------------------------------------------------------------------
// Verifica se o telefone é válido.
  function isFone (tel)
  {
    if (tel.length < 6) return false;
  
    var telRes = tel.replace(/[^0-9 \(\)-]/g, '');
    
    return (telRes == tel);
  }

// ----------------------------------------------------------------------------------------
  function CharsCount (obj, maxi)
  {
    if (obj.value.length > maxi) {
      alert('Seu texto ultrapassou o limite de ' + maxi + ' caracteres.');
      obj.value = obj.value.substring(0, maxi);
      obj.focus();
      return ;
    }
  }

// ----------------------------------------------------------------------------------------
// Formata um número, ajustando o número de casas decimais indicado.
  function FrmNumero (num, dec, larg)
  {
    var i, pos, bl01, bl02, strInc, strZero, zeros, NumRet;

    pos = Math.max(num.lastIndexOf('.'), num.lastIndexOf(',')) 

    if ( pos >= 0 ) {
      bl01 = num.substring(0, pos);
      bl02 = num.substring(pos+1);
    } else {
      bl01 = num;
      bl02 = '';
    }

    bl01 = bl01.replace(/[^0-9]/g,'');
    bl02 = bl02.replace(/[^0-9]/g,'');

    if (bl01 == '') bl01 = '0';
    bl01 = parseFloat( bl01.replace(/[^0-9]/g,'') ) + '';

    if ( bl02.length >= dec ) {
      strInc  = '';
      strZero = '';
      for (i=0; i<dec; i++) {
        strInc  += '9';
        strZero += '0';
      }
      if ( (bl02.substring(0, dec) == strInc) && (bl02.length > dec) && (bl02.charAt(dec) > 4) ) {
        bl01++;
        bl02 = strZero;
      } else {
        if (dec > 0) bl02 = Math.round( bl02.substring(0, dec) + '.' + bl02.substring(dec) ) + '';
        if (bl02.length != dec) {
          zeros = '';
          for (i=0; i<(dec - bl02.length); i++) zeros += '0';
          bl02 = zeros + bl02;
        }
      }
    } else {
      zeros = '';
      for (i=0; i<(dec - bl02.length); i++) zeros += '0';
      bl02 = bl02 + zeros;
    }

    if ( (dec == 0) && (pos >= 0) ) {
      NumRet = Math.round( bl01 + '.' + bl02 ) + '';
    } else {
      if (bl02.length > 0) {
        NumRet = bl01 + '.' + bl02;
      } else {
        NumRet = bl01;
      }
    }

    if (larg != '' && larg > 0) {
      NumRet = NumRet.substring(0,larg);
      if (NumRet.charAt(NumRet.length-1) == '.') {
        NumRet = NumRet.substring(0,larg-1);
      }
    }
    
    return ( NumRet );
  }

// ----------------------------------------------------------------------------------------
// Justifica o texto a direita.
  function PadR (txt, len)
  {
    var i, strResult
    var strEspaco = ''
    
    for (i=0; i<len; i++) strEspaco += ' ';
    strResult = (strEspaco + txt);

    return strResult.substring(strResult.length-len, strResult.length);
  }

// ----------------------------------------------------------------------------------------
// Justifica o texto a esquerda.
  function PadL (txt, len)
  {
    var i, strResult
    var strEspaco = ''

    for (i=0; i<len; i++) strEspaco += ' ';
    strResult = (txt + strEspaco);

    return strResult.substring(0, len);
  }
  
// ----------------------------------------------------------------------------------------
// Converte uma data para o formato aaaammdd.
  function DToS (data)
  {
    if ( !isDate(data) ) {
      return '';
    }

    var jsDia = data.substring(0,2);
    var jsMes = data.substring(3,5);
    var jsAno = data.substring(6,10);

    return jsAno +''+ jsMes +''+ jsDia;
  }


  
  
// ----------------------------------------------------------------------------------------
  
