﻿function getDirectory(source) {
    return source.substring(0, source.lastIndexOf('/') + 1);
}

function removeStringFrom(to_remove, to_remove_from) {
    var idx = to_remove_from.indexOf(to_remove);
    var left = '', right = '';
    if (idx > 0) {
        left = to_remove_from.substring(0, idx);
    }
    right = to_remove_from.substring(idx+to_remove.length);
    return(left+right);
}

function toggle_plus_minus(img_elm, div_elm_id) {
    var img = $(img_elm);
    var img_src_dir = getDirectory(img.src);
    var hid_expanded = $('hid_expanded_nodes');
    var hid_collapsed = $('hid_collapsed_nodes');
    var hid_div_string = '|'+div_elm_id+'|';
    
    var div = $(div_elm_id);
    if (div.style.display == 'none') {
        // the element is collapsed.
        // display it if it has children (which is indicated by it having a "+" image)
        if (removeStringFrom(img_src_dir, img.src) == 'plus.gif') {
            div.style.display = 'block';
            img.src = img_src_dir + 'minus.gif';
            hid_expanded.value += hid_div_string;
            hid_collapsed.value = removeStringFrom(hid_div_string, hid_collapsed.value);
        }
    } else {
        // the element is not collapsed. collapse it.
        div.style.display = 'none';
        img.src = img_src_dir + 'plus.gif';
        hid_collapsed.value += hid_div_string;
        hid_expanded.value = removeStringFrom(hid_div_string, hid_expanded.value);
    }
}

