function ForumList(Parent, Uri) {
    var fv;

    var loadSubmitter = function(line, data) {
        line.find('a.brusername').attr('href', '/user/'+data.id).text(data.name);
    };

    var loadTopic = function(forum, line, topic) {
        line.find('a.topictitle').attr('href', '/forum/'+forum+'/'+topic.id).text(topic.title);
    };

    var loadPost = function(forum, line, post) {
        if (!post.topic) {
            fetch('comment', post, function(data) { loadPost(forum, line, data); });
            return;
        }

        fetch('topic', post.topic.id, function(data) { loadTopic(forum, line, data); });

        fetch('user', post.user, function(data) { loadSubmitter(line, data); });

        //TODO: date
    };

    var loadForum = function(forum, posts) {
        var recentlist = $('.recent.'+forum, fv);

        var linetemp = recentlist.find('li').remove();

        for (var i = 0; i < posts.length; i++) {
            var line = linetemp.clone();
            line.appendTo(recentlist);

            loadPost(forum, line, posts[i]);
        }
    };

    var loadList = function(data) {
        for (forum in data) {
            loadForum(forum, data[forum]);
        }
    };

    var loadTemplate = function(data) {
        fv = $(data).appendTo(Parent);
        $.getJSON(Uri, [], loadList);
    };

    $.get('/'+stv+'/html/forum_list.html', [], loadTemplate);
};

$(function() { ForumList($('#view'), data_uri); });
