]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/exec.js
another great renaming, and an un-naming
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / exec.js
1 dump('entering util/exec.js\n');
2
3 if (typeof util == 'undefined') var util = {};
4 util.exec = function() {
5         //JSAN.use('util.error'); this.error = new util.error();
6
7         return this;
8 };
9
10 util.exec.prototype = {
11         // This executes a series of functions, but tries to give other events/functions a chance to
12         // execute between each one.
13         'chain' : function () {
14                 var args = [];
15                 var obj = this;
16                 for (var i = 0; i < arguments.length; i++) {
17                         var arg = arguments[i];
18                         switch(arg.constructor.name) {
19                                 case 'Function' :
20                                         args.push( arg );
21                                 break;
22                                 case 'Array' :
23                                         for (var j = 0; j < arg.length; j++) {
24                                                 if (typeof arg[j] == 'function') args.push( arg[j] );
25                                         }
26                                 break;
27                                 case 'Object' :
28                                         for (var j in arg) {
29                                                 if (typeof arg[j] == 'function') args.push( arg[j] );
30                                         }
31                                 break;
32                         }
33                 }
34                 if (args.length > 0) setTimeout(
35                         function() {
36                                 try {
37                                         args[0]();
38                                         if (args.length > 1 ) obj.chain( args.slice(1) );
39                                 } catch(E) {
40                                         dump('util.exec.chain error: ' + js2JSON(E) + '\n');
41                                         var keep_going = false;
42                                         if (typeof obj.on_error == 'function') {
43                                                 keep_going = obj.on_error(E);
44                                         }
45                                         if (keep_going) {
46                                                 dump('chain not broken\n');
47                                                 try {
48                                                         if (args.length > 1 ) obj.chain( args.slice(1) );
49
50                                                 } catch(E) {
51                                                         dump('another error: ' + js2JSON(E) + '\n');
52                                                 }
53                                         } else {
54                                                 dump('chain broken\n');
55                                         }
56                                 }
57                         }, 0
58                 );
59         }
60 }
61
62 dump('exiting util/exec.js\n');