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