﻿function Loader() {
    this.modules = {};
}

Loader.prototype = {
    modules: null,

    loaded: function (name, m) {
        var module = this.modules[name];
        if (!module) {
            this.modules[name] = { ready: true, list: [], module: m };
        }
        else {
            module.ready = true;
            for (var i = 0; i < module.list.length; i++) {
                if (module.list[i]());
            }
            delete module.list;
        }
    },

    using: function (name, fn) {
        var module = this.modules[name];
        if (!module) {
            module = this.modules[name] = { ready: false, list: [] };
        }

        if (!module.ready) {
            module.list.push(fn);
        }
        else{
            fn.call(module.module);
        }
    }
};

var TY = new Loader();

