/**
 * Module Name: event
 * Description: Allow other modules to emit events and that
 */
var _ = require('underscore')._;

var event = function(dbot) {
    this.dbot = dbot;
    this.hooks = {};
    this.api = {
        'addHook': function(eventName, callback) {
            if(!_.has(this.hooks, eventName)) this.hooks[eventName] = [];
            this.hooks[eventName].push(callback);
        },

        'emit': function(eventName, args) {
            if(_.has(this.hooks, eventName)) {
                _.each(this.hooks[eventName], function(callback) {
                    callback.apply(callback.module, args); 
                });
            }
        }
    };
}

exports.fetch = function(dbot) {
    return new event(dbot);
};