var _ = require('underscore')._,
    request = require('request');

var commands = function(dbot) {
    var commands = {
        'usage': function(event) {
            var commandName = event.params[1];
            if(_.has(dbot.usage, commandName)) {
                event.reply(dbot.t('usage', {
                    'command': commandName,
                    'usage': dbot.usage[commandName]
                }));
            } else {
                event.reply(dbot.t('no_usage_info', { 
                    'command': commandName 
                }));
            }
        },

        '~commands': function(event) {
            var name = event.params[1];
            if(_.has(dbot.modules, name)) {
                var commands = _.keys(dbot.commands);
                commands = _.filter(commands, function(cName) {
                    return dbot.commands[cName].module == name; 
                });
                event.reply(dbot.t('module_commands', {
                    'module': name,
                    'commands': commands.join(', ')
                }));
            } else {
                event.reply(dbot.t('loaded_modules', {
                    'modules': _.keys(dbot.modules).join(', ')
                }));
            }
        },

        '~help': function(event) {
            var moduleName = event.params[1];
            if(!moduleName || !_.has(dbot.modules, moduleName)) {
                event.reply(dbot.t('usage', {
                    'command': this.config.commandPrefix + 'help',
                    'usage': this.config.commandPrefix + 'help [module]'
                }));
                event.reply(dbot.t('loaded_modules', {
                    'modules': _.keys(dbot.modules).join(', ')
                }));
            } else {
                var helpLink = dbot.config.repoRoot + 
                    'blob/master/modules/' + moduleName + '/README.md';
                if(dbot.config.modules[moduleName].help) {
                    helpLink = dbot.config.modules[moduleName].help;
                }

                // TODO: Check it exists
                event.reply(dbot.t('help_link', {
                    'module': moduleName,
                    'link': helpLink
                }));
           }
        }
    };
    commands['usage'].regex = [/usage ([^ ]+)/, 2];

    return commands;
};

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