﻿function DigitoCPFCNPJ(numCIC) 
    {
        var numDois = numCIC.substring(numCIC.length-2, numCIC.length);
        var novoCIC = numCIC.substring(0, numCIC.length-2);
        switch (numCIC.length){
         case 11 :
          numLim = 11;
          break;
         case 14 :
          numLim = 9;
          break;
         default : return false;
        }
        var numSoma = 0;
        var Fator = 1;
        for (var i=novoCIC.length-1; i>=0 ; i--) {
         Fator = Fator + 1;
         if (Fator > numLim) {
          Fator = 2;
         }
         numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
        }
        numSoma = numSoma/11;
        var numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
           if (numResto > 1) {
         numResto = 11 - numResto;
           }
           else {
         numResto = 0;
           }
           //-- Primeiro dígito calculado.  Fará parte do novo cálculo.
           
           var numDigito = String(numResto);
           novoCIC = novoCIC.concat(numResto);
           //--
        numSoma = 0;
        Fator = 1;
        for (var i=novoCIC.length-1; i>=0 ; i--) {
         Fator = Fator + 1;
         if (Fator > numLim) {
          Fator = 2;
         }
         numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
        }
        numSoma = numSoma/11;
        numResto = numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
           if (numResto > 1) {
         numResto = 11 - numResto;
           }
           else {
         numResto = 0;
           }
        //-- Segundo dígito calculado.
        numDigito = numDigito.concat(numResto);
        if (numDigito == numDois) {
         return true;
        }
        else {
         return false;
        }
    }
    
    // Verifica se uma variável só possui números.
    function IsNumber(numero)
    {
        var i;
        var nPonto = 0;

        for (i = 0; i < numero.length; i++)
        {
            if (numero.charAt(i) < "0" || numero.charAt(i) > "9")
            {
	            return false;
            }
        }
        return true;
    }
    
    
    // Valida uma data formato (mm/aaaa)
    function ValidaDataMesAno(p_dtValidade)
    {
        // Valida a presenca da barra
        if (p_dtValidade.split("/").length != 2)
	        return false;

        // Valida se Ano e Mes são numericos
        if (!IsNumber(p_dtValidade.split("/")[0]))
            return false;
        if (!IsNumber(p_dtValidade.split("/")[1]))
            return false;
        	
        var charMes = new String(p_dtValidade.split("/")[0]);

        if (charMes.length != 2)
            return false;
        
        var intMes = new Number(p_dtValidade.split("/")[0]);
        var intAno = new Number(p_dtValidade.split("/")[1]);
        var dtData = new Date();
        
        if (intMes > 12)
            return false;
        
        if (intAno.toString().length != 4)
            return false;

        // Valida se Ano é maior que ano atual
        if (intAno > dtData.getFullYear() || intAno > 9999)
            return false;
        
        return true;
    }    
    
    // Valida uma data formato (dd/mm/aaaa)
    function ValidaData(p_dtValidade)
    {
        // Valida a presenca da barra
        if (p_dtValidade.split("/").length != 3)
	        return false;

        // Valida se Ano e Mes são numericos
        if (!IsNumber(p_dtValidade.split("/")[0]))
            return false;
        if (!IsNumber(p_dtValidade.split("/")[1]))
            return false;
        if (!IsNumber(p_dtValidade.split("/")[2]))
            return false;
        	
        var charDia = new String(p_dtValidade.split("/")[0]);
        var charMes = new String(p_dtValidade.split("/")[1]);
        var charAno = new String(p_dtValidade.split("/")[2]);

        if ((charDia.length != 2) || (charMes.length != 2) || (charAno.length != 4))
            return false;
        
        var intDia = new Number(p_dtValidade.split("/")[0]);
        var intMes = new Number(p_dtValidade.split("/")[1]);
        var intAno = new Number(p_dtValidade.split("/")[2]);
        var dtData = new Date();
        
        if ((intMes > 12) || (intDia > 31))
            return false;
            
        if (intMes == 4 || intMes == 9 || intMes == 11)
        {
            if(intDia == 31)
                return false; 
        }
        else if (intMes == 2)
        {
            if (intDia >= 30)
                return false;
            else if (!checkleapyear(intAno) && intDia == 29)
                return false;
        }

        // Valida se Ano é maior que ano atual
        if (intAno > dtData.getFullYear() || intAno > 9999)
            return false;
        
        return true;
    }
    
    function checkleapyear(datea)
    {
        if(datea%4 == 0)
        {
            if(datea%100 != 0)
            {
                return true;
            }
            else
            {
                if(datea%400 == 0)
                    return true;
                else
                    return false;
            }
         }
         return false;
    }    