var pages = function(dbot) {
    var _ = require('underscore')._;
    var connections = dbot.instance.connections;

    return {
        '/profile/:connection/:user': function(req, res) {
            var connection = req.params.connection;
            var user = dbot.cleanNick(req.params.user);

            var primary = dbot.api.users.resolveUser(connection, user, true);
            //var profile = dbot.api.profile.getProfile(primary);
            var profile = dbot.db.profiles[connection][primary.toLowerCase()].profile;
            var stats = dbot.api.stats.getUserChansStats(connection, primary.toLowerCase(), [
                    "lines", "words", "lincent", "wpl", "in_mentions"]
            );

            res.render('profile', {
                'name': dbot.config.name,
                'connection': connection,
                'primary': primary,
                'profile': profile,
                'stats': stats.channels,
            });
        },

        '/profile/:connection': function(req, res) {
            var connection = req.params.connection;
            var profiles = dbot.db.profiles[connection];

            // TODO: Clean up
            _.each(profiles, function(profile) {
                if(_.has(dbot.db.quoteArrs, profile.profile.primary) && !profile.profile.avatar) {
                    var category = dbot.db.quoteArrs[profile.profile.primary];
                    var avatar = _.find(category, function(quote) {
                        return quote.match(/(\.jpg|\.png|\.jpeg)$/i);
                    });
                    if(avatar) profile.profile.avatar = avatar;
                }
            });

            var nicks = [];
            for (var p in profiles) {
              if (profiles.hasOwnProperty(p) && profiles[p].profile.avatar) {
                nicks.push(p);
              }
            }
            nicks.sort(function(a, b) {
              var x = profiles[a].profile.primary.toLowerCase();
              var y = profiles[b].profile.primary.toLowerCase();
              if(x > y) return 1;
              if(x < y) return -1;
              return 0;
            });

            res.render('profile_grid', {
                'name': dbot.config.name,
                'connection': connection,
                'nicks': nicks,
                'profiles': profiles,
            });
        }
    }
};

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