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