]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/money.js
Number instead of parseInt
[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');