8ab34479914e2a57cf5acea1721422d65fa07f5b
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / evergreen / util / exec.js
1 dump('entering util/exec.js\n');
2
3 if (typeof util == 'undefined') var util = {};
4 util.exec = {};
5
6 util.exec.EXPORT_OK     = [ 'chain_exec' ];
7 util.exec.EXPORT_TAGS   = { ':all' : util.exec.EXPORT_OK };
8
9 // This executes a series of functions, but tries to give other events/functions a chance to
10 // execute between each one.
11 util.exec.chain = function () {
12         var args = [];
13         for (var i = 0; i < arguments.length; i++) {
14                 var arg = arguments[i];
15                 switch(arg.constructor.name) {
16                         case 'Function' :
17                                 args.push( arg );
18                         break;
19                         case 'Array' :
20                                 for (var j = 0; j < arg.length; j++) {
21                                         if (typeof arg[j] == 'function') args.push( arg[j] );
22                                 }
23                         break;
24                         case 'Object' :
25                                 for (var j in arg) {
26                                         if (typeof arg[j] == 'function') args.push( arg[j] );
27                                 }
28                         break;
29                 }
30         }
31         if (args.length > 0) setTimeout(
32                 function() {
33                         args[0]();
34                         if (args.length > 1 ) util.exec.chain( args.slice(1) );
35                 }, 0
36         );
37 }
38
39 dump('exiting util/exec.js\n');