var tree_items = new Array();
var tree_order = new Array();

function init_tree()
{
    var o_item = null;
    var o_table = null;
    var o_btn = null;
    var o_branch = null;
    var idx = 0;
    var fl_first = true;
    var i_row = 0;
    var i_len = 0;

    var a_item_list = document.getElementsByTagName('tr');
    for ( var i = 0; i < a_item_list.length; i++  )
    {
        o_item = a_item_list.item(i);
        if ( o_item.className == "treenode" )
        {
            i_row = parseInt(o_item.rowIndex) + 1;
            while ( !i_row ) {
                i_row = parseInt(o_item.rowIndex) + 1;
            }

            o_btn = o_item.cells[1]
            i_len = o_item.parentNode.rows.length;
            if ( fl_first )
            {
                o_item.cells[0].className = "treenodelinkstart";
                fl_first = false;

            } else if ( i_len == i_row || (i_len == i_row + 1
              && o_item.parentNode.rows[i_row].className == "treebranch") )
            {
                o_item.cells[0].className = "treenodelinkend";
            }
        }
        else if ( o_item.className == "treebranch" )
        {
            if ( i_len == i_row + 1 )
            {
                o_item.cells[0].className = "treebranchend"
            }

            if ( !o_btn ) {
              alert("Can't find button for " + o_item.id);
            }

            tree_items[o_item.id] = [o_item, o_btn];
            o_btn = null;
            tree_order[idx] = o_item.id;

            idx++;
        }
    }
}

function open_close(body_id)
{
    if ( tree_items[body_id] )
    {
        if ( tree_items[body_id][0].style.display == 'none' ) {
            tree_items[body_id][1].className = 'treebtnopen';
            tree_items[body_id][0].style.display = '';
        } else {
            tree_items[body_id][1].className = 'treebtnclose';
            tree_items[body_id][0].style.display = 'none';
        }
    }
}

function collapse_all()
{
    for ( i=0; i < tree_order.length; i++ )
    {
        tree_items[tree_order[i]][0].style.display = 'none';
        tree_items[tree_order[i]][1].className = 'treebtnclose';
    }
}

function expand_all()
{
    for ( i=0; i < tree_order.length; i++ )
    {
        tree_items[tree_order[i]][0].style.display = '';
        tree_items[tree_order[i]][1].className = 'treebtnopen';
    }
}

function open_brunch(brunch_id)
{
    var prnt = document.getElementById(brunch_id);

    while ( prnt )
    {
        if ( brunch_id && tree_items[brunch_id] )
        {
            tree_items[brunch_id][1].className = 'treebtnopen';
            tree_items[brunch_id][0].style.display = '';
        }

        prnt = prnt.parentNode;
        if ( !prnt ) break;
        brunch_id = prnt.id;
    }
}

function delete_brunch(brunch_id)
{
    var item = document.getElementById(brunch_id);
    if ( !item ) return;
    if ( item.className == 'treebranch' ) {
        item.parentNode.deleteRow(parseInt(item.rowIndex) - 1);
        item.parentNode.deleteRow(item.rowIndex);
    } else {
        item.parentNode.deleteRow(item.rowIndex);
    }
}
