/**
 * Código copiado/colado da internet.
 * http://www.tidbits.com.br/colecao-de-metodos-para-o-plugin-validate-do-jquery 
 */
jQuery.validator.addMethod("cpf", function(value, element) {  
	// copia o valor para uma variável
	var documento = value;
	// remove tudo menos os números
	documento = documento.replace(/\D/g,'');
	// enquanto o número for menor do que o padrão
	while (documento.length < 11) {
		// adiciona zero à esquerda
		documento = "0"+ documento;
	}
	// expressão usada para verificar se é um número/valor válido
	var expressao_regular = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
	// guarda o número em cada posição do documento
	var vetor = [];
	// somatória que valida as contas
	var validacao = new Number;
	// contador regressivo de dígitos
	var contador = 11;
	// para cada dígito do documento
	for (posicao=0; posicao<11; posicao++){
		// guarda o valor da posição atual
		vetor[posicao] = documento.charAt(posicao);
		// se não for um dos dígitos verificadores
		if (posicao < 9) {
			// soma a função desta posição à validação
			// ATENÇÃO, A POSIÇÃO DO DECREMENTO É IMPORTANTE
			validacao += (vetor[posicao] * --contador);
		}
	}
	// atribui o resto da divisão
	var resto = validacao % 11;
	// se o resto da divisão for 0 ou 1
	if (resto < 2) {
		// atribui o valor 0 ao primeiro dígito verificador
		vetor[9] = 0;
	}
	// caso contrário
	else {
		// subitrai o resto de 11 e atribui ao primeiro dígito verificador
		vetor[9] = 11-resto;
	}
	// zera o valor da validação para calcular o próximo dígito verificador
	validacao = 0;  
	// reseta o valor do contador para os próximos cálculos
	contador = 11; 
	// se não for o segundo dígito verificador
	for (posicao=0; posicao<10; posicao++) {
		// soma a função desta posição à validação
		// ATENÇÃO, A POSIÇÃO DO DECREMENTO É IMPORTANTE
		validacao += (vetor[posicao] * contador--);
	}
	// atribui o resto da divisão
	resto = validacao % 11;
	// se o resto da divisão for 0 ou 1
	if (resto < 2) { 
		// atribui o valor 0 ao segundo dígito verificador
		vetor[10] = 0; 
	} 
	// caso contrário
	else { 
		// subitrai o resto de 11 e atribui ao segundo dígito verificador
		vetor[10] = 11-resto; 
	}
	// se o primeiro dígito verificador for diferente da validação encontrada
	if ((documento.charAt(9) != vetor[9]) 
			// ou se o segundo dígito verificador for diferente da validação encontrada
			|| (documento.charAt(10) != vetor[10]) 
			// ou se o número do CPF não for um número válido pela expressão
			|| documento.match(expressao_regular)) {
		// falha a validação
		return false;
	}
	// conclui a validação com sucesso
	return true;
// Mensagem padrão que informa o erro ocorrido   
}, "O CPF informado é inválido."); 

