﻿function _cpfUtil()
{
    this.verificaCpf = function(c)
    {
        if (!c)
            return false;
        var cpf = c.toString();
        var validDigit = '0123456789';
        var ignoreDigit = '.-/';
        var i = 0;
        var tot = 0;
        var numbers = "";
        var ch;
        for (i = 0; i < cpf.length; i++)
        {
            ch = cpf.charAt(i);
            if (validDigit.indexOf(ch,0) >= 0)
                numbers += ch;
            else if (ignoreDigit.indexOf(ch,0) == -1)
                return false;
        }
        if (numbers.length == 11)
        {
            tot = 0;
            for (i = 2; i < 11; i++)
                tot += i * parseInt(numbers.charAt(10-i));
            if (tot * 10 % 11 % 10 != parseInt(numbers.charAt(9)))
                return false;
            tot = 0;
            for (i = 2; i <= 11; i++)
                tot += i * parseInt(numbers.charAt(11-i));
            if (tot * 10 % 11 % 10 != parseInt(numbers.charAt(10)))
                return false;
            else
                return true;
        }
        else if (numbers.length == 14)
        {
            tot = 0;
            var peso = 2;
            for (i = 0; i <= 11; i++)
            {
                tot += peso * parseInt(numbers.charAt(11-i));
                peso++;
                if (peso == 10)
                    peso = 2;
            }
            if (tot * 10 % 11 % 10 != parseInt(numbers.charAt(12)))
                return false;
            tot = 0;
            peso = 2;
            for (i = 0; i <= 12; i++)
            {
                tot += peso * parseInt(numbers.charAt(12-i));
                peso++;
                if (peso == 10)
                    peso = 2;
            }
            if (tot * 10 % 11 % 10 != parseInt(numbers.charAt(13)))
                return false;
            else
                return true;
        }
        else
            return false;
    }
}

var cpfUtil = new _cpfUtil();