1 dump('entering util/barcode.js\n');
3 if (typeof util == 'undefined') var util = {};
6 util.barcode.EXPORT_OK = [
9 util.barcode.EXPORT_TAGS = { ':all' : util.barcode.EXPORT_OK };
11 util.barcode.check = function(bc) {
12 if (bc != Number(bc)) return false;
14 // "16.00" == Number("16.00"), but the . is bad.
15 // Throw out any barcode that isn't just digits
16 if (bc.search(/\D/) != -1) return false;
17 var last_digit = bc.substr(bc.length-1);
18 var stripped_barcode = bc.substr(0,bc.length-1);
19 return util.barcode.checkdigit(stripped_barcode).toString() == last_digit;
22 util.barcode.checkdigit = function(bc) {
23 var reverse_barcode = bc.toString().split('').reverse();
24 var check_sum = 0; var multiplier = 2;
25 for (var i = 0; i < reverse_barcode.length; i++) {
26 var digit = reverse_barcode[i];
27 var product = digit * multiplier; product = product.toString();
29 for (var j = 0; j < product.length; j++) {
30 temp_sum += Number( product[j] );
32 check_sum += Number( temp_sum );
33 multiplier = ( multiplier == 2 ? 1 : 2 );
35 check_sum = check_sum.toString();
36 var next_multiple_of_10 = (check_sum.match(/(\d*)\d$/)[1] * 10) + 10;
37 var check_digit = next_multiple_of_10 - Number(check_sum); if (check_digit == 10) check_digit = 0;
41 dump('exiting util/barcode.js\n');