]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/money.js
LP#1084758 store staff client tpac (etc) zoom pref
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / money.js
1 dump('entering util/money.js\n');
2
3 if (typeof util == 'undefined') var util = {};
4 util.money = {};
5
6 util.money.EXPORT_OK    = [ 
7     'sanitize', 'dollars_float_to_cents_integer', 'cents_as_dollars'
8 ];
9 util.money.EXPORT_TAGS    = { ':all' : util.money.EXPORT_OK };
10
11 util.money.dollars_float_to_cents_integer = function( money ) {
12     try {
13         if (money == '' || money == null || money == undefined) money = 0;
14         // careful to avoid fractions of pennies
15         var negative; negative = money.toString().match(/-/) ? -1 : 1;
16         var money_s = money.toString().replace(/[^\.\d]/g, '');
17         var marray = money_s.split(".");
18         var dollars = marray[0];
19         var cents = marray[1];
20         try {
21             if (cents.length < 2) {
22                 cents = cents + '0';
23             }
24         } catch(E) {
25         }
26         try {
27             if (cents.length > 2) {
28                 dump("util.money: We don't round money\n");
29                 cents = cents.substr(0,2);
30             }
31         } catch(E) {
32         }
33         var total = 0;
34         try {
35             if (Number(cents)) total += Number(cents);
36         } catch(E) {
37         }
38         try {
39             if (Number(dollars)) total += (Number(dollars) * 100);
40         } catch(E) {
41         }
42         return total * negative;    
43     } catch(E) {
44         alert('util.money.dollars_float_to_cents_integer:\n' + E);
45     }
46 }
47
48 util.money.cents_as_dollars = function( cents ) {
49     try {
50         if (cents == '' || cents == null || cents == undefined) cents = 0;
51         var negative; negative = cents.toString().match(/-/) ? '-' : '';
52         cents = cents.toString().replace(/[^\.\d]/g, ''); 
53         if (cents.match(/\./)) cents = util.money.dollars_float_to_cents_integer( cents ).toString();
54         try {
55             switch( cents.length ) {
56                 case 0: cents = '000'; break;
57                 case 1: cents = '00' + cents; break;
58             }
59         } catch(E) {
60         }
61         return negative + cents.substr(0,cents.length-2) + '.' + cents.substr(cents.length - 2);
62     } catch(E) {
63         alert('util.money.cents_as_dollars:\n' + E);
64     }
65 }
66
67 util.money.sanitize = function( money ) {
68     return util.money.cents_as_dollars( util.money.dollars_float_to_cents_integer( money ) );
69 }
70
71
72 dump('exiting util/money.js\n');