function build_interactions(item, state) {
    var content = $('div#content');

    if (item.type === 'run') {
        var run_table = t2hui.runtable.build_table();
        content.append(run_table.render());
        run_table.render_item(item.data, item.data.run_id);
        return;
    }

    else if (item.type === 'count') {
        content.append('<hr />');

        content.append('<h2>Found ' + item.data + ' jobs that overlapped with this event</h2>');
        content.append("<p>Click any file in this list to jump down to it's event data. Only events within " + context_count + " seconds of this failure will be shown.</p>");

        var form = $('<form><input id="context_count" value="' + context_count + '" /><input type="submit" id="context_count_go" value="reload" /></input></form>');
        content.append(form);
        form.submit(function() {
            var val = $('input#context_count').val();
            if (!val) { return true };
            context_count = val;

            content.empty();

            state = {};
            var uri = base_uri + 'interactions/data/' + event_id + '/' + val;
            t2hui.fetch(uri, {}, function(item) { build_interactions(item, state) });
            return true;
        });

        var list = $('<ol></ol>');
        content.append(list);
        state.list = list;
    }

    else if (item.type === 'job') {
        state.event_table = null;
        content.append('<hr id="section_' + item.data.job_key + '" />');

        var job_table = t2hui.jobtable.build_table(null);

        if (state.list) {
            state.list.append('<li><a href="#section_' + item.data.job_key + '">' + item.data.file + '</a></li>');
        }

        content.append(job_table.render());
        job_table.render_item(item.data, item.data.job_key);
        return;
    }

    if (item.type === 'event') {
        if (!state.event_table) {
            var event_controls = t2hui.eventtable.build_controls(null, null);
            var event_table   = t2hui.eventtable.build_table(null, null, event_controls);

            content.append(event_controls.dom);
            content.append(event_table.render());

            state.event_controls = event_controls;
            state.event_table    = event_table;
        }

        state.event_table.render_item(item.data, item.data.event_id);
    }
}

$(function() {
    var content = $('div#content').empty();
    var state = {};
    t2hui.fetch(data_uri, {}, function(item) { build_interactions(item, state) });
});