function startAccordion()
{
    var dl = document.getElementsByTagName('DL');
    for (var i = 0; i < dl.length; i ++) {
        if (CssClasses(dl[i]).exists('accordion')) {
            setAccordion(dl[i]);
        }
    }
}

function setAccordion(dl)
{
    var dt = Nodes(dl).children_tags('DT');
    var dd = Nodes(dl).children_tags('DD');

    for (var i = 0; i < dt.length; i ++) {
        dt[i].tab_content = dd[i];
        dt[i].tabset = dl;
        if (CssClasses(dt[i]).exists('active')) {
            dl.current_tab = dt[i];
        } else {
            dt[i].onclick = function () {
                openAccordion(this);
            }
        }
    }
}

function openAccordion(tab, after_load)
{
    var tab_bodies = Nodes(tab.tab_content).getElementsByClassName('text');
    if (tab_bodies.length > 0) {
        var tab_body = tab_bodies[0];
        if (tab_body.innerHTML.length == 0) {
            var data = Nodes(tab).getElementsByClassName('data');
            if ((data != null) && (data.length > 0)) {
                var value = data[0].innerHTML.replace('&amp;', '&');
                if (value.length > 0) {
                    if (!after_load)
                        var handler =
                            function () {
                                openAccordion(tab, true);
                            } // end event
                        ProcessCommonRequest(value, tab_body, handler);
                    return false;
                } // end if
            } // end if
        } // end if
    } // end if
    
    tab.onclick = null;
    CssClasses(tab).replace('inactive', 'active');
    CssClasses(tab.tab_content).replace('inactive', 'active');
    if (tab.tabset.current_tab) {
        closeAccordion(tab.tabset.current_tab);
    }
    tab.tabset.current_tab = tab;
}

function closeAccordion(tab)
{
    tab.onclick = function () {
        openAccordion(this);
    }
    CssClasses(tab).replace('active', 'inactive');
    CssClasses(tab.tab_content).replace('active', 'inactive');
}

function gotoAccordion(element)
{
    openAccordion(Nodes(Nodes(element).ancestor_tag('dd')).previous_tag('dt'));
}
