]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/OPEN_ILS_STAFF_CLIENT/util/date.js
387ad076b9a7baf10594db8d09cc467f388b24c7
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / OPEN_ILS_STAFF_CLIENT / util / date.js
1 dump('entering util/date.js\n');
2
3 if (typeof util == 'undefined') var util = {};
4 util.date = {};
5
6 util.date.EXPORT_OK     = [ 
7         'timer_init', 'timer_elapsed', 'db_date2Date', 'formatted_date', 'interval_to_seconds'
8 ];
9 util.date.EXPORT_TAGS   = { ':all' : util.date.EXPORT_OK };
10
11 util.date.timer_init = function (id) {
12         if (typeof util.date.timer_init.prototype.timer == 'undefined') {
13                 util.date.timer_init.prototype.timer = {};
14         }
15         util.date.timer_init.prototype.timer[id] = (new Date).getTime();
16 }
17
18 util.date.timer_elapsed = function (id) {
19         if (! util.date.timer_init.prototype.timer[id]) { util.date.timer_init(id); }
20         var ms = (new Date).getTime() - util.date.timer_init.prototype.timer[id];
21         return( ms + 'ms (' + ms/1000 + 's)' );
22 }
23
24 util.date.db_date2Date = function (date) {
25         var y  = date.substr(0,4);
26         var mo = date.substr(5,2);
27         var d  = date.substr(8,2);
28         var h  = date.substr(11,2);
29         var mi = date.substr(14,2);
30         var s  = date.substr(17,2);
31         return new Date(y,mo,d,h,mi,s);
32 }
33
34 util.date.formatted_date = function (date,format) {
35         // pass in a Date object or epoch seconds or a postgres style date string (2005-07-19 10:38:25.211964-04)
36         if (typeof(date) == 'string') {
37                 if (date.match(/:/) || date.match(/-/)) {
38                         date = util.date.db_date2Date(date);
39                 } else {
40                         date = new Date( parseInt( date + '000' ) );
41                 }
42         } else if (typeof(date) == 'undefined') {
43                 date = new Date( parseInt( date + '000' ) );
44         }
45         var mm = date.getMonth() + 1; mm = mm.toString(); if (mm.length == 1) mm = '0' +mm;
46         var dd = date.getDate().toString(); if (dd.length == 1) dd = '0' +dd;
47         var yyyy = date.getFullYear().toString();
48         var yy = yyyy.substr(2);
49         var H = date.getHours(); H = H.toString(); if (H.length == 1) H = '0' + H;
50         var I = date.getHours(); if (I > 12) I -= 12; I = I.toString();
51         var M = date.getMinutes(); M = M.toString(); if (M.length == 1) M = '0' + M;
52         var s = format;
53         if (s == '') { s = '%F %H:%M'; }
54         s = s.replace( /%m/g, mm );
55         s = s.replace( /%d/g, dd );
56         s = s.replace( /%Y/g, yyyy );
57         s = s.replace( /%D/g, mm + '/' + dd + '/' + yy );
58         s = s.replace( /%F/g, yyyy + '-' + mm + '-' + dd );
59         s = s.replace( /%H/g, H );
60         s = s.replace( /%I/g, I );
61         s = s.replace( /%M/g, M );
62         return s;
63 }
64
65 util.date.interval_to_seconds = function ( $interval ) {
66
67         $interval = $interval.replace( /and/, ',' );
68         $interval = $interval.replace( /,/, ' ' );
69
70         var $amount = 0;
71         var results = $interval.match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/g);  
72         for (var i in results) {
73                 var result = results[i].match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/ );
74                 if (result[2] == 's') $amount += result[1] ;
75                 if (result[2] == 'm') $amount += 60 * result[1] ;
76                 if (result[2] == 'h') $amount += 60 * 60 * result[1] ;
77                 if (result[2] == 'd') $amount += 60 * 60 * 24 * result[1] ;
78                 if (result[2] == 'w') $amount += 60 * 60 * 24 * 7 * result[1] ;
79                 if (result[2] == 'M') $amount += ((60 * 60 * 24 * 365)/12) * result[1] ;
80                 if (result[2] == 'y') $amount += 60 * 60 * 24 * 365 * result[1] ;
81         }
82         return $amount;
83 }
84
85 dump('exiting util/date.js\n');