function getElementsByClass(className, node, tag) {
    var classElements = new Array();

    if (node == null) node = document;
    if (tag == null) tag = '*';

    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    //       var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
    var pattern = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)');

    for (i = 0,j = 0; i < elsLen; i++) {
        if (pattern.test(els[i].className)) {
            classElements[j] = els[i];
            j++;
        }
    }

    return classElements;
}

function styleTables(className) {
    var tables = getElementsByClass(className, document, 'table')
    for (var t = 0; t < tables.length; t++) {
        var rows = tables[t].getElementsByTagName('tr');
        for (var r = 0; r < rows.length; r++) {
            if ((r % 2) == 0) {
                rows[r].className = className + '-Odd';
            } else {
                rows[r].className = className + '-Even';
            }
        }
    }
}

function fetchContent(method, id, url) {
    var xhr;
    var element = document.getElementById(id);
    try {
        try {
            xhr = new XMLHttpRequest();
        } catch(e) {
            xhr = new ActiveXObject(Microsoft.XMLHTTP);
        }
    } catch(e) {
        element.innerHTML = "Unable to send request";
    }

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            try {
                if (xhr.status == 200) {
                    element.innerHTML = xhr.responseText;
                } else {
                    element.innerHTML = "Error communicating with the server (" + xhr.status + ")<br/>"+xhr.responseText;
                }
            } catch (e) {
                element.innerHTML = "Error receiving response from the server";
            }
        }
    };

    xhr.open(method, url, true);
    xhr.send(null);
}

function toggleTreeNode(branch,opened,closed) {
    var branchStyle = document.getElementById(branch).style;
    branchStyle.display = branchStyle.display == "block" ? "none" : "block";
    var subFolder = document.getElementById(branch+'-subfolder');
    subFolder.src = subFolder.src.indexOf(closed) > -1 ? opened : closed;
}
function popup(url, width, height) {
    var id = new Date().getTime();
    var x = (screen.width - width) / 2;
    var y = (screen.height - height) / 2;
    return open(url, id, "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=" + width + ",height=" + height + ",left = " + x + ",top = " + y);
}