]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/validate.js
1e879de0ba121ba6e2f91ab60ec3b66863c5ea0f
[working/Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / validate.js
1 sdump('D_TRACE',"Loading validate.js\n");
2
3 function textbox_checkdigit(ev) {
4         if ( check_checkdigit( ev.target.value ) ) {
5                 sdump('D_VALIDATE', 'success\n');
6                 return true;
7         } else {
8                 sdump('D_VALIDATE', 'failure\n');
9                 ev.preventDefault();
10                 ev.stopPropagation();
11                 return false;
12         }
13 }
14
15 function check_checkdigit(barcode) {
16
17         var stripped_barcode = barcode.slice(0,-1);
18         var checkdigit = barcode.slice(-1);
19
20         sdump('D_VALIDATE', '\n\n=-=***=-=\n\ncheck_checkdigit: barcode = ' + barcode + ' barcode stripped = ' + stripped_barcode + ' checkdigit = ' + checkdigit + '\n');
21
22         var sum = 0; var mul = 2;
23
24         var b_array = string_to_array( stripped_barcode ).reverse();
25         sdump('D_VALIDATE', '\tb_array = ' + b_array + '\n');
26
27         for (var i in b_array) {
28                 var digit = parseInt( b_array[i] );
29                 sdump('D_VALIDATE', '\t\tdigit = ' + digit + '\n');
30
31                 var product = digit * mul;
32                 if (mul == 2) { mul = 1; } else { mul = 2; }
33
34                 var p_array = string_to_array( product.toString() );
35                 sdump('D_VALIDATE', '\t\tp_array = ' + p_array + '\n');
36
37                 for (var j in p_array) { 
38                         var n = parseInt( p_array[j] );
39                         sdump('D_VALIDATE', '\t\t\tn = ' + n + '\n');
40                         sum += n;
41                 }
42         }
43
44         sdump('D_VALIDATE', '\tsum = ' + sum + '\n');
45
46         var s_array = string_to_array( sum.toString() );
47         var calculated_checkdigit = s_array.pop();
48         if (calculated_checkdigit > 0) calculated_checkdigit = 10 - calculated_checkdigit;
49         sdump('D_VALIDATE', '\tcalculated checkdigit = ' + calculated_checkdigit + '\n\n=-=***=-=\n\n');
50
51         return ( calculated_checkdigit == checkdigit );
52 }
53
54