User:Gerbrant/gui/toolbox.js

loadModule("Gerbrant.gui.lilink", function(li)

{

module("Gerbrant.gui.toolbox", new function()

{

var self = this;

var docLoaded = false;

var waiting = [];

this.objects = [];

// no this

function reallyAddObject(obj)

{

li.addToolboxLink("javascript:void(Gerbrant.gui.toolbox.objects[" +

self.objects.length + "].show())", obj.caption);

self.objects.push(obj);

}

// no this

this.addObject = function(obj)

{

if(docLoaded) reallyAddObject(obj);

else waiting.push(obj);

}

hookEvent("load", function()

{

var i;

docLoaded = true;

for(i in waiting) reallyAddObject(waiting[i]);

delete waiting;

});

try

{

var i, l = Gerbrant.gui.toolbox.load, x, n;

for(i in l)

if((n = (x = l[i])[0]) == undefined)

loadModule(x, this.addObject);

else

(function(args)

{

loadModule(n, function(c)

{

var o = {};

c.apply(o, args);

self.addObject(o);

});

})(x.slice(1));

}

catch(e)

{

}

});

});