var itemList = [];

function expanderParse() {
    var div,
        divs = document.getElementsByTagName('div'),
        el,
        item,
        i;
    for (i = 0; i < divs.length; i++) {
        div = divs[i];
        if (div.className == 'expander') {
            item = {};

            el = getDescendentByClass(div, 'summary');
            item.summary = el.innerHTML.trim();
            el.className = 'hidden';

            el = getDescendentByClass(div, 'detailInline');
            if (el === null) {
                el = getDescendentByClass(div, 'detail');
                item.detail = '<br />' + el.innerHTML.trim();
            } else {
                item.detail = el.innerHTML.trim();
            }
            el.className = 'hidden';

            el = getDescendentByClass(div, 'display');
            item.display = el;

            if (el.innerHTML.trim().length > 0 || item.detail.length === 0) {
                item.collapsed = false;
            } else {
                item.collapsed = true;
            }
            itemList.push(item);
        }
    }
}

function itemUpdate(index) {
    var item = itemList[index],
        html = '';
    html += '<div onclick="itemToggle(' + index + ')">';
    if (item.collapsed) {
        html += '<img src="/templates/we_hobby/images/collapsed.gif" alt="[-]" />';
        html += '<span class="expanderLink">' + item.summary + '</span>';
    } else {
        html += '<img src="/templates/we_hobby/images/expanded.gif" alt="[+]" />';
        html += '<span class="expanderLink">' + item.summary + '</span>';
        html += ': ' + item.detail;
    }
    html += '</div>';
    item.display.innerHTML = html;
}

function expanderRefresh() {
    var i;
    for (i = 0; i < itemList.length; i++) {
        itemUpdate(i);
    }
}

function itemToggle(index) {
    var item = itemList[index];
    item.collapsed = !item.collapsed;
    itemUpdate(index);
}

function expanderInitialize() {
    expanderParse();
    expanderRefresh();
}

window.addEvent('domready', function() {
    expanderInitialize();
});

