]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/util.js
some refactor and localization
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / util.js
1 sdump('D_TRACE','Loading util.js\n');
2
3 var timer = {};
4 var counter = {};
5
6 function getString( key ) {
7         var bundles = document.getElementById('string_bundles');
8         for (var i = i; i < bundles.childNodes.length; i++) {
9                 var bundle = bundles[i];
10                 try {
11
12                         var string = bundle.getString( key );
13                         if (string)
14                                 return string;
15
16                 } catch(E) {
17                 }
18         }
19 }
20
21 function getFormattedString( key, strArray ) {
22         var bundles = document.getElementById('string_bundles');
23         for (var i = i; i < bundles.childNodes.length; i++) {
24                 var bundle = bundles[i];
25                 try {
26
27                         var string = bundle.getFormattedString( key, strArray );
28                         if (string)
29                                 return string;
30
31                 } catch(E) {
32                 }
33         }
34 }
35
36 function string_to_array(s) {
37         var my_array = [];
38         for (var i = 0; i < s.length; i++ ) {
39                 my_array.push( s.charAt(i) );
40         }
41         return my_array;
42 }
43
44 function yesno(value) {
45         switch(value) {
46                 case true: case 'true': case '1': case 'on':
47                         return 'Yes';
48                 default: 
49                         return 'No';
50         }
51 }
52
53 function formatted_date(date,format) {
54         // pass in a Date object or epoch seconds
55         if (typeof(date) == 'string') {
56                 date = new Date( parseInt( date + '000' ) );
57         }
58         var mm = date.getMonth() + 1;
59         mm = mm.toString();
60         if (mm.length == 1) mm = '0' +mm;
61         var dd = date.getDate().toString();
62         if (dd.length == 1) dd = '0' +dd;
63         var yyyy = date.getFullYear().toString();
64         var s = format.replace( /%m/g, mm );
65         s = s.replace( /%d/g, dd );
66         s = s.replace( /%Y/g, yyyy );
67         return s;
68 }
69
70 function interval_to_seconds ( $interval ) {
71
72         $interval = $interval.replace( /and/, ',' );
73         $interval = $interval.replace( /,/, ' ' );
74
75         var $amount = 0;
76         var results = $interval.match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/g);  
77         for (var i in results) {
78                 var result = results[i].match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/ );
79                 if (result[2] == 's') $amount += result[1] ;
80                 if (result[2] == 'm') $amount += 60 * result[1] ;
81                 if (result[2] == 'h') $amount += 60 * 60 * result[1] ;
82                 if (result[2] == 'd') $amount += 60 * 60 * 24 * result[1] ;
83                 if (result[2] == 'w') $amount += 60 * 60 * 24 * 7 * result[1] ;
84                 if (result[2] == 'M') $amount += ((60 * 60 * 24 * 365)/12) * result[1] ;
85                 if (result[2] == 'y') $amount += 60 * 60 * 24 * 365 * result[1] ;
86         }
87         return $amount;
88 }
89
90 /*
91 function debug() {
92         var s = '';
93         for (var i = 0; i < arguments.length; i++) {
94                 s = s + arguments[i];
95         }
96         //sdump('D_UTIL','debug:' + s + '\n');
97 }
98 */
99
100 function counter_init(id) {
101         counter[id] = 0;
102 }
103
104 function counter_incr(id) {
105         if (! counter[id]) { counter_init(id); }
106         return ++counter[id];
107 }
108
109 function counter_peek(id) {
110         if (! counter[id]) { return 0; }
111         return counter[id];
112 }
113
114 function timer_init(id) {
115         timer[id] = (new Date).getTime();
116 }
117
118 function timer_elapsed(id) {
119         if (! timer[id]) { timer_init(id); }
120         var ms = (new Date).getTime() - timer[id];
121         return( ms + 'ms (' + ms/1000 + 's)' );
122 }
123
124 function dump_ns_node( node ) {
125         return (
126         'id=<' + 
127         node[fieldmap["Fieldmapper::biblio::record_node"].fields.id.position] 
128         + '>  intra-id=<' + 
129         node[fieldmap["Fieldmapper::biblio::record_node"].fields.intra_doc_id.position]
130         + '>  name=<' + 
131         node[fieldmap["Fieldmapper::biblio::record_node"].fields.name.position]
132         + '>  node_type=<' + 
133         node[fieldmap["Fieldmapper::biblio::record_node"].fields.type.position]
134         + '>  parent_node=<' + 
135         node[fieldmap["Fieldmapper::biblio::record_node"].fields.parent_node.position]
136         + '>  '
137         );
138 }
139
140 function nodeset2tree(ns) {
141         for (var i in ns) {
142                 if (ns[i].parent_node) {
143                         ns_addChild( 
144                                 ns, 
145                                 ns[i].parent_node, 
146                                 ns[i].intra_doc_id 
147                         );
148                 }
149         }
150         return ns;
151 }
152
153 function ns_addChild(ns,p,c) {
154         if (! ns[p].children ) { ns[p].children = []; }
155         ns[p].children.push(ns[c]);
156 }
157
158 function print_tabs(t) {
159         var r = '';
160         for (var j = 0; j < t; j++ ) { r = r + "\t"; }
161         return r;
162 }
163
164 function pretty_print(s) {
165         var r = ''; var t = 0;
166         for (var i in s) {
167                 if (s[i] == '{') {
168                         r = r + "\n" + print_tabs(t) + s[i]; t++;
169                         r = r + "\n" + print_tabs(t);
170                 } else if (s[i] == '[') {
171                         r = r + "\n" + print_tabs(t) + s[i]; t++;
172                         r = r + "\n" + print_tabs(t);
173                 } else if (s[i] == '}') {
174                         t--; r = r + "\n" + print_tabs(t) + s[i]; 
175                         r = r + "\n" + print_tabs(t);
176                 } else if (s[i] == ']') { 
177                         t--; r = r + "\n" + print_tabs(t) + s[i];
178                         r = r + "\n" + print_tabs(t);
179                 } else if (s[i] == ',') {
180                         r = r + s[i]; 
181                         r = r + "\n" + print_tabs(t);
182                 } else {
183                         r = r + s[i];
184                 }
185         }
186         return r;
187 }
188
189 function super_dump(o,t) {
190         var s = "\n";
191         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
192         s = s + "=-=-=\n";
193         s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
194         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
195         s = s + "typeof = " + typeof(o) + "\n";
196         try {
197                 var string = new XMLSerializer().serializeToString(o);
198                 return( string + "\n" );
199         } catch( E ) {
200                 var i;
201                 var c = 0;
202                 for (i in o) {
203                         switch(typeof(i)) {
204                                 case 'object':
205                                         s = s + super_dump(i,t+1);
206                                         break;
207                                 default :
208                                         var value = o[i];
209                                         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
210                                         s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
211                                         if (typeof(value) == 'object') {
212                                                 value = super_dump(value,t+1);
213                                         }
214                                         s = s + "\ttoString:" + i.toString() + "\tvalue:" + value + "\n";
215                                         break;
216                         }
217                 }
218                 return( s + "\n" );
219         }
220 }
221
222 function super_dump_norecurse(o,t) {
223         var s = "\n";
224         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
225         s = s + "=-=-=\n";
226         s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
227         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
228         s = s + "typeof = " + typeof(o) + "\n";
229         try {
230                 var string = new XMLSerializer().serializeToString(o);
231                 return( string + "\n" );
232         } catch( E ) {
233                 var i;
234                 var c = 0;
235                 for (i in o) {
236                         switch(typeof(i)) {
237                                 default :
238                                         var value = o[i];
239                                         for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
240                                         s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
241                                         s = s + "\ttoString:" + i.toString() + "\n";
242                                         break;
243                         }
244                 }
245                 return( s + "\n" );
246         }
247 }
248
249