var excerpts = {};
var contents = {};

function toggleTBContent(id, event) {
    var image = $('toggle-image-' + id);
    var content = $("excerpt-" + id);
    if (image.src.match(/open\.gif$/)) {
        image.src = '/images/common/close.gif';
        excerpts[id] = content.innerHTML;
        if (id in contents) {
            content.className = 'section';
            content.innerHTML = contents[id];
        } else {
            insertLoadingImage(id, image.parentNode.nextSibling);
            jsonp('/' + id + '?mode=json', 'setTBContent');
        }
    } else {
        image.src = '/images/common/open.gif';
        content.innerHTML = excerpts[id];
        delete excerpts[id];
        removeLoadingImage(id);
        content.className = '';
    }
}

function jsonp(url, callback) {
    var script = document.createElement('script');
    url += (url.match(/\?/) ? '&' : '?') + 'callback=' + callback;
    script.src = url;
    document.body.appendChild(script);
}

function setTBContent(data) {
    var id = data.id;
    if (!id) return;

    removeLoadingImage(id);
    if (!excerpts[id]) return;
    var content = $("excerpt-" + id);
    content.className = 'section';
    content.innerHTML = contents[id] = data.body || '';
}

function insertLoadingImage(id, nextSibling) {
    var image = $('loading-' + id);
    if (image) return;
    image = document.createElement('img');
    image.width = image.height = 13;
    image.src = '/images/common/loading.gif';
    image.id = 'loading-' + id;
    image.className = 'icon';
    nextSibling.parentNode.insertBefore(image, nextSibling);
}

function removeLoadingImage(id) {
    var image = $('loading-' + id);
    if (!image) return;
    image.parentNode.removeChild(image);
}


