(function() {

    var mready = document.mready = {
        callback: []
    };

    // 2008-10-02
    mready.push = function mready_push(e) {
        if (!('callback' in e))
            alert("push missing callback");

        if (!('runlevel' in e))
            e.runlevel = 0;

        mready.callback.push(e);
    }

    // 2008-10-02
    mready.ready = function mready_ready() {
        var e;

        this.callback.sort(function(a,b) { return a.runlevel - b.runlevel });

        while (e = this.callback.shift()) {
            e.callback();
        }
    }

})();

$(document).ready(function() { document.mready.ready(); });