webui-aria2/js/libs/dojox/validate/br.js.uncompressed.js

279 lines
5.7 KiB
JavaScript
Raw Normal View History

//>>built
define("dojox/validate/br", ["dojo/_base/lang", "./_base"], function(lang, validate){
var br = lang.getObject("br", true, validate);
br.isValidCnpj = function(/*String*/value){
// summary:
// Validates a CNPJ/CGC number
//
// value: String
// The CNPJ/CGC number in ##.###.###/####-##, ########/####-##,
// ############-## or ############## format
if(!lang.isString(value)){
if(!value){
return false;
}
value = value + "";
while(value.length < 14){
value = "0" + value;
}
}
var flags = {
format: [
"##.###.###/####-##",
"########/####-##",
"############-##",
"##############"
]
};
if(validate.isNumberFormat(value, flags)){
// Matched the initial test, so break this down into the
// parts to be validated.
value = value.replace("/", "").replace(/\./g, "").replace("-", "");
var cgc = [];
var dv = [];
var i, j, tmp;
// Check for obvious bad combos
// all 0s to all 9's.
for(i = 0; i < 10; i++){
tmp = "";
for(j = 0; j < value.length; j++){
tmp += "" + i;
}
if(value === tmp){
return false;
}
}
//Split out the DV from the main number.
for(i = 0; i < 12; i++){
cgc.push(parseInt(value.charAt(i), 10));
}
for(i = 12; i < 14; i++){
dv.push(parseInt(value.charAt(i), 10));
}
var base = [9,8,7,6,5,4,3,2,9,8,7,6].reverse();
var sum = 0;
for(i = 0; i < cgc.length; i++){
sum += cgc[i] * base[i];
}
var dv0 = sum % 11;
if(dv0 == dv[0]){
// Still seems valid, keep going.
sum = 0;
base = [9,8,7,6,5,4,3,2,9,8,7,6,5].reverse();
cgc.push(dv0);
for(i = 0; i < cgc.length; i++){
sum += cgc[i] * base[i];
}
var dv1 = sum % 11;
if(dv1 === dv[1]){
// Whew, looks valid.
return true;
}
}
}
return false;
};
br.computeCnpjDv = function(/*String*/value){
// summary: Generate the DV code (checksum part) for a Cnpj number
//
// value: The CGC number in ##.###.###/#### or ############ format
if(!lang.isString(value)){
if(!value){
return "";
}
value = value + "";
while(value.length < 12){
value = "0" + value;
}
}
var flags = {
format: [
"##.###.###/####",
"########/####",
"############"
]
};
if(validate.isNumberFormat(value, flags)){
// Matched the initial test, so break this down into the
// parts to compute the DV.
value = value.replace("/", "").replace(/\./g, "");
var cgc = [];
var i, j, tmp;
// Check for obvious bad combos
// all 0s to all 9's.
for(i = 0; i < 10; i++){
tmp = "";
for(j = 0; j < value.length; j++){
tmp += "" + i;
}
if(value === tmp){
return "";
}
}
for(i = 0; i < value.length; i++){
cgc.push(parseInt(value.charAt(i), 10));
}
var base = [9,8,7,6,5,4,3,2,9,8,7,6].reverse();
var sum = 0;
for(i = 0; i < cgc.length; i++){
sum += cgc[i] * base[i];
}
var dv0 = sum % 11;
sum = 0;
base = [9,8,7,6,5,4,3,2,9,8,7,6,5].reverse();
cgc.push(dv0);
for(i = 0; i < cgc.length; i++){
sum += cgc[i] * base[i];
}
var dv1 = sum % 11;
return ("" + dv0) + dv1;
}
return "";
};
br.isValidCpf = function(/*String*/value){
// summary:
// Validates a CPF number
//
// value: String
// The CPF number in #########-## or ###########,
// format
if(!lang.isString(value)){
if(!value){
return false;
}
value = value + "";
while(value.length < 11){
value = "0" + value;
}
}
var flags = {
format: [
"###.###.###-##",
"#########-##",
"###########"
]
};
if(validate.isNumberFormat(value, flags)){
// Matched the initial test, so break this down into the
// parts to be validated.
value = value.replace("-", "").replace(/\./g, "");
var cpf = [];
var dv = [];
var i, j, tmp;
// Check for obvious bad combos
// all 0s to all 9's.
for(i = 0; i < 10; i++){
tmp = "";
for(j = 0; j < value.length; j++){
tmp += "" + i;
}
if(value === tmp){
return false;
}
}
//Split out the DV from the main number.
for(i = 0; i < 9; i++){
cpf.push(parseInt(value.charAt(i), 10));
}
for(i = 9; i < 12; i++){
dv.push(parseInt(value.charAt(i), 10));
}
var base = [9,8,7,6,5,4,3,2,1].reverse();
var sum = 0;
for(i = 0; i < cpf.length; i++){
sum += cpf[i] * base[i];
}
var dv0 = sum % 11;
if(dv0 == dv[0]){
// Still seems valid, keep going.
sum = 0;
base = [9,8,7,6,5,4,3,2,1,0].reverse();
cpf.push(dv0);
for(i = 0; i < cpf.length; i++){
sum += cpf[i] * base[i];
}
var dv1 = sum % 11;
if(dv1 === dv[1]){
// Whew, looks valid.
return true;
}
}
}
return false;
};
br.computeCpfDv = function(/*String*/value){
// summary:
// Generate the DV code (checksum part) for a CPF number
//
// value: String
// The CPF number in ######### format
if(!lang.isString(value)){
if(!value){
return "";
}
value = value + "";
while(value.length < 9){
value = "0" + value;
}
}
var flags = {
format: [
"###.###.###",
"#########"
]
};
if(validate.isNumberFormat(value, flags)){
// Matched the initial test, so break this down into the
// parts to compute the DV.
value = value.replace(/\./g, "");
var cpf = [];
// Check for obvious bad combos
// all 0s to all 9's.
for(i = 0; i < 10; i++){
tmp = "";
for(j = 0; j < value.length; j++){
tmp += "" + i;
}
if(value === tmp){
return "";
}
}
for(i = 0; i < value.length; i++){
cpf.push(parseInt(value.charAt(i), 10));
}
var base = [9,8,7,6,5,4,3,2,1].reverse();
var sum = 0;
for(i = 0; i < cpf.length; i++){
sum += cpf[i] * base[i];
}
var dv0 = sum % 11;
sum = 0;
base = [9,8,7,6,5,4,3,2,1,0].reverse();
cpf.push(dv0);
for(i = 0; i < cpf.length; i++){
sum += cpf[i] * base[i];
}
var dv1 = sum % 11;
return ("" + dv0) + dv1;
}
return "";
};
return br;
});