Subversion-Projekte lars-tiefland.zeldi.de_alt

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
2 lars 1
/*
2
 * Brazillian value number (Cadastrado de Pessoas Juridica).
3
 * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation.
4
 */
5
$.validator.addMethod( "cnpjBR", function( value, element ) {
6
	"use strict";
7
 
8
	if ( this.optional( element ) ) {
9
		return true;
10
	}
11
 
12
	// Removing no number
13
	value = value.replace( /[^\d]+/g, "" );
14
 
15
	// Checking value to have 14 digits only
16
	if ( value.length !== 14 ) {
17
		return false;
18
	}
19
 
20
	// Elimina values invalidos conhecidos
21
	if ( value === "00000000000000" ||
22
		value === "11111111111111" ||
23
		value === "22222222222222" ||
24
		value === "33333333333333" ||
25
		value === "44444444444444" ||
26
		value === "55555555555555" ||
27
		value === "66666666666666" ||
28
		value === "77777777777777" ||
29
		value === "88888888888888" ||
30
		value === "99999999999999" ) {
31
		return false;
32
	}
33
 
34
	// Valida DVs
35
	var tamanho = ( value.length - 2 );
36
	var numeros = value.substring( 0, tamanho );
37
	var digitos = value.substring( tamanho );
38
	var soma = 0;
39
	var pos = tamanho - 7;
40
 
41
	for ( var i = tamanho; i >= 1; i-- ) {
42
		soma += numeros.charAt( tamanho - i ) * pos--;
43
		if ( pos < 2 ) {
44
			pos = 9;
45
		}
46
	}
47
 
48
	var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
49
 
50
	if ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) {
51
		return false;
52
	}
53
 
54
	tamanho = tamanho + 1;
55
	numeros = value.substring( 0, tamanho );
56
	soma = 0;
57
	pos = tamanho - 7;
58
 
59
	for ( var il = tamanho; il >= 1; il-- ) {
60
		soma += numeros.charAt( tamanho - il ) * pos--;
61
		if ( pos < 2 ) {
62
			pos = 9;
63
		}
64
	}
65
 
66
	resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
67
 
68
	if ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) {
69
		return false;
70
	}
71
 
72
	return true;
73
 
74
}, "Please specify a CNPJ value number" );