function toggle_nodes (object) {
    if (object.alt == '-') {
        hide_nodes(object);
    } else {
        show_nodes(object);
    }
}

function hide_nodes(object) {
    var row = Nodes(object).ancestor_tag('TR');
    CssClasses(row).remove('opened');
    var child = Nodes(row).next_tag('TR');
    while (child && CssClasses(child).exists('node')) {
        collapse(child);
        child = Nodes(child).next_tag('TR');
    }
    object.src = object.src.replace(new RegExp('[-\\+]'), '+');
    object.alt = '+';
    object.onclick = function () {show_nodes(object)};
}

function show_nodes(object) {
    var row = Nodes(object).ancestor_tag('TR');
    CssClasses(row).add('opened');
    var child = Nodes(row).next_tag('TR');
    while (child && CssClasses(child).exists('node')) {
        display(child, is_browser_ie() ? 'block' : 'table-row');
        child = Nodes(child).next_tag('TR');
    }
    object.src = object.src.replace(new RegExp('[-\\+]'), '-');
    object.alt = '-';
    object.onclick = function () {hide_nodes(object)};
}

function toggle_form(object) {
    var form = ID('new-topic').getElementsByTagName('FIELDSET')[0];
    if (object.alt == '-') {
        collapse(form);
        object.alt = '+';
        object.src = object.src.replace(new RegExp('[-\\+]'), '+');
    } else {
        display(form);
        object.alt = '-';
        object.src = object.src.replace(new RegExp('[-\\+]'), '-');
    }
}

function open_tree(object, donotupdate) {
    var tree = Nodes(object).next_tag('UL');
    var comment = Nodes(object).next_tag('DIV');
    if (tree) {
        CssClasses(tree).add('opened');
    }
    if (comment)  {
        CssClasses(comment).add('opened');
    }
    object.alt = '-';
    object.src = object.src.replace(new RegExp('[-\\+]'), '-');
    if (!donotupdate) update_all_state();
}

function close_tree(object, donotupdate) {
    var tree = Nodes(object).next_tag('UL');
    var comment = Nodes(object).next_tag('DIV');
    if (tree) {
        CssClasses(tree).remove('opened');
    }
    if (comment)  {
        CssClasses(comment).remove('opened');
    }
    object.alt = '+';
    object.src = object.src.replace(new RegExp('[-\\+]'), '+');
    if (!donotupdate) update_all_state();
}

function toggle_tree(object) {
    if (object.alt == '-') {
        close_tree(object);
    } else {
        open_tree(object);
    }
}

function update_all_state() {
    var object = ID('all_comments');
    var imgs = ID('comments').getElementsByTagName('IMG');
    var all_opened = true;
    for (var i = 0; i < imgs.length; i ++)
        if (imgs[i].alt == '+')
            all_opened = false;
    object.alt = (all_opened) ? '-' : '+';
    object.src = object.src.replace(new RegExp('[-\\+]'), object.alt);
}

function toggle_all_tree() {
    var imgs = ID('comments').getElementsByTagName('IMG');
    var all_opened = true;
    for (var i = 0; i < imgs.length; i ++) {
        if (imgs[i].alt == '+') {
            open_tree(imgs[i], true);
            all_opened = false;
        }
    }
    if (all_opened) {
        for (var i = 0; i < imgs.length; i ++)
            close_tree(imgs[i], true);
    }
    update_all_state();
}

var _messageID = 0;
function reply_this(object, messageID) {
    var form = ID('new-topic');
    object.parentNode.insertBefore(form, object.nextSibling);
    form.className = 'add-topic';
    if (messageID) _messageID = messageID;
}

var _ajaxDiv;
function edit_this(object, messageID, ajaxDiv) {
    var form = ID('new-topic');
    object.parentNode.insertBefore(form, object.nextSibling);
    form.className = 'save-topic';
    if (messageID) _messageID = messageID;
    _ajaxDiv = ajaxDiv;
}


