//<!--
//	  ASP TreeView
//  
//	  Copyright obout inc	  http://www.obout.com
var ob_tree_js_version = "2040",
    ob_page_location = window.location.pathname.toString().substr(window.location.pathname.toString().lastIndexOf("/") + 1),
    currentlySelected, ob_KeepLastExpanded = 0,
    ob_KeepLastCollapsed = 0,
    ob_tree_first_call = true,
    tree_node_exp_col = false,
    ob_last, ob_sids = null,
    ob_ivl = "",
    ob_lastControlSelected = "",
    ob_iar = 0,
    ob_op2, tree_selected_id, ob_prev_selected, tree_parent_id, tree_selected_path, ob_xmlhttp2, ob_alert2, ob_eids, ob_cids, ob_sidsDone, ob_csidsDone, ob_t2_OnDynamicLoad, ob_t2_OnDynamicLoad2, ob_t2_Data;
if (typeof ob_pbxs == "undefined") ob_pbxs = [];
ob_tree_callback = null;
if (typeof ob_tree_dl == "undefined") ob_tree_dl = [];

function ob_tree_InitPbx() {// don debugger; 
    var ob_pbx1 = null;
    if (window.XMLHttpRequest) {
        try {
            ob_pbx1 = new window.XMLHttpRequest();
        } catch (e) { }
    }
    else {
        try {
            ob_pbx1 = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
            try {
                ob_pbx1 = new ActiveXObject('msxml2.xmlhttp')
            } catch (e) { }
        }
    }
    if (ob_pbx1 != null) {
        ob_pbxs[ob_pbxs.length] = ob_pbx1;
    }
    return ob_pbx1;
};
window.onbeforeunload = function() {
    for (var i = 0; i < ob_pbxs.length; i++)
        try {
        ob_pbxs[i].abort();
    } catch (ex) { }
};

function ob_rsc(ob_xmlhttp2, ob_url2, ob_tb2, callback) {
    if (ob_xmlhttp2.readyState == 4) {
        ob_tb2.className = "none";
        if (ob_xmlhttp2.responseText) {
            if (ob_tb2.parentNode == null || ob_tb2.parentNode.parentNode == null || ob_tb2.parentNode.parentNode.parentNode == null || ob_tb2.parentNode.parentNode.parentNode.parentNode == null) {
                return;
            }
            var tempDiv = document.createElement("DIV");
            tempDiv.innerHTML = ob_xmlhttp2.responseText;
            ob_tb2.innerHTML =
            tempDiv.firstChild.innerHTML;
            ob_tb2.parentNode.parentNode.parentNode.parentNode.className = "ob_d2b";
            if (typeof ob_t18 != 'undefined') ob_t18(ob_tb2);
            if (tempDiv.childNodes[1].firstChild) {
                eval(ob_tHtmlDecode(tempDiv.childNodes[1].innerHTML.toString()));
            }
            if (tempDiv.childNodes[2].firstChild) {
                if (typeof (ob_tnodrag) == "function") {
                    ob_tnodrag(tempDiv.childNodes[2].innerHTML.toString());
                }
            }
            if (tempDiv.childNodes[3].firstChild) {
                if (typeof (sNoDrop) != "undefined") {
                    if (sNoDrop != "") {
                        sNoDrop += ",";
                    };
                    sNoDrop += tempDiv.childNodes[3].innerHTML.toString();
                }
            }
            if (tempDiv.childNodes[4].firstChild) {
                if (typeof (ob_noedit) != "undefined") {
                    if (ob_noedit != "") {
                        ob_noedit += ",";
                    };
                    ob_noedit += tempDiv.childNodes[4].innerHTML.toString();
                }
            }
            if (tempDiv.childNodes[5].firstChild) {
                if (typeof (sNoSelect) != "undefined") {
                    if (sNoSelect != "") {
                        sNoSelect += ",";
                    };
                    sNoSelect += tempDiv.childNodes[5].innerHTML.toString();
                }
            }
        }
        var ob_tempId = ob_tb2.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.childNodes[2].id;
        if (ob_tb2.innerHTML == "Loading ...") {
            var ob_tempImg = ob_tb2.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.firstChild.firstChild;
            ob_tempImg.src = ob_tempImg.src.toString().replace("minus_l.gif", "hr_l.gif").replace("minus.gif", "hr_l.gif");
            ob_tb2.parentNode.parentNode.parentNode.parentNode.className = "";
            oTempLoadingNode = ob_tb2.parentNode.parentNode.parentNode;
            oTempLoadingNode.parentNode.removeChild(oTempLoadingNode);
        }
        if (typeof ob_HighlightOnDnd != "undefined" && ob_HighlightOnDnd == true) {
            ob_t51();
        }
        ob_OnNodeExpand(ob_tempId, ob_url2 != null && ob_url2.length > 0);
        if (typeof (ob_t2_OnDynamicLoad) == "function") {
            ob_t2_OnDynamicLoad();
            ob_t2_OnDynamicLoad = null;
        }
        if (typeof (ob_t2_OnDynamicLoad2) == "function") {
            ob_t2_OnDynamicLoad2();
            ob_t2_OnDynamicLoad2 = null;
        }
        if (typeof callback != 'undefined') callback();
    }
}
function ob_tHtmlDecode(sString) {
    if (sString == null) {
        return "";
    }
    sString = sString.toString();
    return sString.replace(/(&lt;)/g, "<").replace(/(&gt;)/g, ">").replace(/&amp;/g, "&");
}

function ob_t24(node, url, callback) {
    var ob_xmlhttp2 = ob_tree_InitPbx();
    if (ob_xmlhttp2) {
        ob_xmlhttp2.open("GET", url, true);
        ob_xmlhttp2.setRequestHeader("Content-Type", "text/html")
        ob_xmlhttp2.onreadystatechange = function() {
            ob_rsc(ob_xmlhttp2, url, node, callback)
        };
        ob_xmlhttp2.send(null);
    }
}

function ob_t26(sids, selectLast, idx, callback) {
    if (typeof idx == 'undefined' || idx == null) {
        idx = ob_tree_dl.length;
        sids = typeof sids == "undefined" || sids == null ? ob_sids : sids;
        try {
            sids = typeof sids == "object" ? sids : sids.split(",");
        } catch (ex) { }
        var last = typeof selectLast == "undefined" || selectLast ? typeof sids == "object" && typeof sids.length == "number" ? sids.length > 0 ? sids[sids.length - 1] : ob_last : null : null;
        ob_tree_dl[idx] = [typeof sids == "object" && sids != null && typeof sids.length == "number" ? sids : [], last, 0, typeof callback == "function" ? callback : function() { } ];
    }
    if (ob_tree_dl[idx][2] >= ob_tree_dl[idx][0].length) {
        if (typeof ob_tree_dl[idx][1] == "string" && ob_tree_dl[idx][1].length > 0) {
            var ob_od = document.getElementById(ob_tree_dl[idx][1]);
            if (ob_od) {
                if (ob_tree_multiselect_enable) {
                    ob_unselectAllNodes();
                }
                var prevEditEnable = ob_tree_editnode_enable;
                ob_tree_editnode_enable = false;
                ob_t22(ob_od);
                ob_tree_editnode_enable = prevEditEnable;
            } else {
                if (!(ob_KeepLastExpanded > 0 || ob_KeepLastCollapsed > 0)) {
                    alert("Selected node does not exist.");
                }
            }
        }
        try {
            ob_tree_dl[idx][3]()
        } catch (e) { };
        return;
    } else {
        var ob_od = document.getElementById(ob_tree_dl[idx][0][ob_tree_dl[idx][2]]);
        ob_tree_dl[idx][2]++;
        if (ob_od) {
            if (ob_tree_multiselect_enable) {
                ob_unselectAllNodes();
                var prevEditEnable = ob_tree_editnode_enable;
                ob_tree_editnode_enable = false;
                ob_t22(ob_od, null, true);
                ob_tree_editnode_enable = prevEditEnable;
            }
            var e, lensrc, s;
            e = ob_od.parentNode.firstChild.firstChild;
            if ((typeof e.src != "undefined") && (e.tagName == "IMG")) {
                s = e.src.substr((e.src.length - 8), 8);
                if ((s == "usik.gif") || (s == "ik_l.gif") || (s == "ik_r.gif")) {
                    eval("ob_tree_callback=function(){ob_t26(null,null," + idx + ",null);}");
                    if (ob_KeepLastExpanded > 0 || ob_KeepLastCollapsed > 0) {
                        if (e.onclick.toString().indexOf("this, ''") != -1) {
                            ob_t21(e, '');
                        } else {
                            e.onclick();
                        }
                    } else e.onclick();
                    return;
                }
            }
        } else if (ob_tree_multiselect_enable && ob_od) {
            alert("Selected node does not exist.");
        }
    }
    ob_t26(null, null, idx, null);
}
function ob_ev(e) {
    return typeof ob_eventFlags != 'undefined' && ob_eventFlags[e];
}

function ob_t21(os, url) {// don debugger;
    var callback = ob_tree_callback != null ? ob_tree_callback : function() { };
    ob_tree_callback = null;

    // Switch plus-minus images when clicked.	
    currentlySelected = os.parentNode.parentNode.firstChild.nextSibling.nextSibling;
    var ob_node_id = currentlySelected.id;
    var ot = os.parentNode.parentNode.parentNode.parentNode.nextSibling;

    var lensrc = (os.src.length - 8);
    var s = os.src.substr(lensrc, 8);

    if ((s == "inus.gif") || (s == "us_l.gif") || (s == "us_r.gif")) {

        if (!ob_OnBeforeNodeCollapse(ob_node_id)) return;

        if (ob_KeepLastExpanded > 0 || ob_KeepLastCollapsed > 0) {
            ob_saveNodeState(ot, ob_node_id);
        }
        ob_changeIcon(currentlySelected);

        if (s == "inus.gif") {
            ot.style.display = "none";
            os.src = ob_style + "/plusik.gif";
        }
        else if ((s == "us_l.gif")) {
            ot.style.display = "none";
            os.src = ob_style + "/plusik_l.gif";
        }
        else {
            ot.style.display = "none";
            os.src = ob_style + "/plusik_r.gif";
        }

        if (typeof ob_HighlightOnDnd != "undefined" && ob_HighlightOnDnd == true) {
            ob_t51();
        }

        ob_OnNodeCollapse(ob_node_id);
    }

    if ((s == "usik.gif") || (s == "ik_l.gif") || (s == "ik_r.gif")) {
        if (!ob_OnBeforeNodeExpand(ob_node_id, url != null && url.length > 0)) return;

        if (ob_KeepLastExpanded > 0 || ob_KeepLastCollapsed > 0) {
            ob_saveNodeState(ot, ob_node_id);
        }
        ob_changeIcon(currentlySelected);

        if (typeof (ob_expand_single) != 'undefined' && ob_expand_single) ob_expandSingle(currentlySelected);
        if (typeof (url) == 'undefined' || url == "") {
            ot.style.display = "block";
            if (s == "usik.gif") {
                os.src = ob_style + "/minus.gif";
            }
            else if (s == "ik_l.gif") {
                os.src = ob_style + "/minus_l.gif";
            }
            else {
                os.src = ob_style + "/minus_r.gif";
            }
            if (typeof ob_HighlightOnDnd != "undefined" && ob_HighlightOnDnd == true) {
                ob_t51();
            }
            ob_OnNodeExpand(ob_node_id, url != null && url.length > 0);

            callback();
        }
        else {
            ot.style.display = "block";
            if (s == "usik.gif") {
                os.src = ob_style + "/minus.gif";
            }
            else if (s == "ik_l.gif") {
                os.src = ob_style + "/minus_l.gif";
            }
            if (typeof (url) != 'undefined' && url != "") {
                window.status = url;
                var s = os.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild.firstChild.firstChild.nextSibling.innerHTML;
                if (s != "Loading ...") {
                    if (typeof ob_HighlightOnDnd != "undefined" && ob_HighlightOnDnd == true) {
                        ob_t51();
                    }
                    ob_OnNodeExpand(ob_node_id, url != null && url.length > 0);
                    return;
                }
                //ob_url2 = url; 
                var ob_tb2 = os.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild.firstChild.firstChild.nextSibling;
                var fct = function() {
                    ob_t24(ob_tb2, url, callback)
                };
                window.setTimeout(fct, 100);
            }
            else callback();
        }
    }

    if (tree_selected_path != null && (typeof (ob_select_on_collapse) != "undefined" && ob_select_on_collapse == true)) {
        var s = os.src.substr((os.src.length - 8), 8);
        if ((s == "ik_l.gif") || (s == "usik.gif") || (s == "ik_r.gif")) {
            var e = os.parentNode.parentNode.firstChild.nextSibling.nextSibling;
            var a = tree_selected_path.split(",");
            for (var i = 0; i < a.length; i++) {
                if (a[i] == e.id && e.id != tree_selected_id) {
                    tree_node_exp_col = true;
                    ob_t22(e);
                    tree_node_exp_col = false;
                    return;
                }
            }
        }
    }
}

function ob_t22(ob_od, ev, multiselect) {
    // Highlight selected node		
    if (typeof (ob_od.className) == 'undefined' && ob_od.parentNode.className == 'ob_t2') ob_od = ob_od.parentNode;
    if (ob_od.id == "") return;

    // Check if the node is in the unselectable nodes list
    if (typeof (sNoSelect) != "undefined" && ("," + sNoSelect.replace(" ", "") + ",").indexOf("," + ob_od.id + ",") != -1) return;

    // EVENT. Before node is selected.
    if (!ob_OnBeforeNodeSelect(ob_od.id)) {
        return;
    }

    if (typeof (ob_expand_single) != 'undefined' && ob_expand_single && typeof (ob_tree_first_call) != 'undefined' && ob_tree_first_call) {
        parentNode = ob_getParentOfNode(ob_od);
        if (parentNode != null) ob_expandSingle(parentNode);
    }

    try {
        ob_nodeEnsureVisible(ob_od);
    }
    catch (e) { }

    prevSelected = document.getElementById(tree_selected_id);

    var iPrevSelected = 0;
    if (typeof (ob_tree_multiselect_enable) != 'undefined' && ob_tree_multiselect_enable == true) {
        if (multiselect == null || multiselect == false) {
            iPrevSelected = ob_multiselect(ob_od, ev);
        }
    }
    else {
        if (ob_prev_selected != null) ob_prev_selected.className = "ob_t2";
        ob_sn2 = ob_od.id;
    }

    if ((prevSelected != null) && typeof (ob_tree_editnode_enable) != 'undefined' && (ob_tree_editnode_enable == true)) ob_attemptEndEditing(ob_od);

    ob_prev_selected = ob_od;
    if (iPrevSelected) {
        ob_od.className = "ob_t2";
    } else {
        ob_od.className = "ob_t3";
    }


    if (typeof (ob_tree_editnode_enable) != 'undefined' && ob_tree_editnode_enable == true) {
        ob_attemptStartEditing(ob_od)
    };

    ob_op2 = ob_od;
    tree_selected_id = ob_od.id;
    if (!ev || !ev.ctrlKey) {
        var sTempSn2 = ob_sn2;
        sTempSn2 = "|" + ob_sn2 + "|";
        if (sTempSn2.indexOf(tree_selected_id + "|") == -1) {
            if (ob_sn2) {
                ob_sn2 += "|";
            }
            ob_sn2 += tree_selected_id;
        }
    }

    var sel_id;
    if (ob_od.parentNode.parentNode.parentNode.parentNode.parentNode.className == "ob_di2") {
        tree_selected_path = tree_selected_id;
        tree_parent_id = "root";
    }
    else {
        ob_od = ob_od.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
        tree_parent_id = ob_od.id;
        tree_selected_path = tree_parent_id + "," + tree_selected_id;
        ob_t20(ob_od);
    }

    // EVENT. After node is selected.	

    if ((ev && ev.ctrlKey && ob_op2.className == "ob_t3") || (!ev || !ev.ctrlKey)) {
        // artifice for firefox
        if (ob_lastControlSelected) {
            inited = 0;
            ob_lastControlSelected.blur();
            ob_lastControlSelected = "";
        }
        ob_OnNodeSelect(tree_selected_id);
    }

    // simulating the click on the links from the nodes
    // in case nodes have links and the click takes place outside the link			 		
    /*if(ob_op2.firstChild.nodeName == "A") {
    var oLink = ob_op2.firstChild;
    var iPosX, iPosY;
    if (window.event){var ev = window.event;iPosX = ev.x;iPosY = ev.y;} else { iPosX = ev.pageX; iPosY = ev.pageY;}
				
    iLinkX = calcOffsetX(oLink);
    iLinkY = calcOffsetY(oLink);						
    if((iLinkX + oLink.offsetWidth <= iPosX) || (iLinkX > iPosX) || (iLinkY > iPosY) || (iLinkY + oLink.offsetHeight <= iPosY)) {			
    window.open(oLink.href, oLink.target? oLink.target : '_self');
    }
    }*/
}

function ob_SelectedId(id) {
    ob_sids = new Array();
    var strSids = "";

    var oNode = document.getElementById(id);
    oNode = ob_getParentOfNode(oNode);
    while (oNode != null) {
        if (strSids != "") {
            strSids = oNode.id + "," + strSids;
        } else {
            strSids = oNode.id;
        }
        oNode = ob_getParentOfNode(oNode);
    }

    if (strSids != "") {
        strSids += "," + id;
        ob_sids = strSids.split(",");
    }
    ob_t26(ob_sids);
}

function ob_t20(e) {
    // Extend all parents up and populate tree_selected_path

    var os = e.parentNode.firstChild.firstChild;

    if (os != null) {
        if ((typeof os != "undefined") && (os.tagName == "IMG")) {
            var lensrc = (os.src.length - 8);
            var s = os.src.substr(lensrc, 8);
            if ((s == "usik.gif") || (s == "ik_l.gif") || (s == "ik_r.gif")) {
                os.onclick();
            }
            if (e.parentNode.parentNode.parentNode.parentNode.parentNode.className == "ob_di2") {
                return
            };
            e = e.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling
            tree_selected_path = e.id + "," + tree_selected_path;
            ob_t20(e);
        }
    }
}

function ob_t23(e) {     // To expand-collapse node by clicking on node text.
    // Find first image with plus-minus and call onclick()
     var os = e.parentNode.parentNode.firstChild.firstChild;
    if (os != null) {
        if ((typeof os != "undefined") && (os.tagName == "IMG")) {
            var lensrc = (os.src.length - 8);
            var s = os.src.substr(lensrc, 8);
            if ((s == "inus.gif") || (s == "usik.gif") || (s == "us_l.gif") || (s == "ik_l.gif") || (s == "us_r.gif") || (s == "ik_r.gif")) {
                os.onclick();
            }
        }
        else {
            ob_t23(e.parentNode);
        }
    }
}

function ob_t25(ob_od) {
    // When tree is first loaded - Highlight and Extend selected node.
    if (ob_od == null) {
        // alert("Selected node does not exists or its id is not unique.");
        return
    };
    var e, lensrc, s;
    e = ob_od.parentNode.firstChild.firstChild;
    if ((typeof e.src != "undefined") && (e.tagName == "IMG")) {
        s = e.src.substr((e.src.length - 8), 8);
        if ((s == "usik.gif") || (s == "ik_l.gif") || (s == "ik_r.gif")) {
            // Comment out or delete this line if you don't want to expand selected node.
            e.onclick();
        }
    }
    ob_t22(ob_od);
}

function ob_tall(exp, id) {
    // To expand all nodes ob_tall(1)
    // To collapse all nodes ob_tall(0)

    if (id == null) {
        var arrImages = document.images;
    } else {
        oNode = document.getElementById(id);
        oDiv = oNode.parentNode.parentNode.parentNode.parentNode;
        var arrImages = oDiv.getElementsByTagName("IMG");
    }

    var i, e, lensrc, s
    for (i = 0; i < arrImages.length; i++) {
        e = arrImages[i];
        lensrc = (e.src.length - 8);
        s = e.src.substr(lensrc, 8);
        if (exp == 1) {
            if ((s == "usik.gif") || (s == "ik_l.gif") || (s == "ik_r.gif")) {
                e.onclick();
            }
        }
        else if ((s == "inus.gif") || (s == "us_l.gif") || (s == "us_r.gif")) {
            e.onclick();
        }
    }
}

function ob_t2c(e) {
    // To check/uncheck checkboxes in children.
    if (ob_hasChildren(e.parentNode)) {
        var ob_t2in = e.parentNode.parentNode.parentNode.parentNode.nextSibling.getElementsByTagName("input");
        for (var i = 0; i < ob_t2in.length; i++) {
            if (e.checked == true) {
                ob_t2in[i].checked = true;
            }
            else {
                ob_t2in[i].checked = false;
            }
        }
    }
    if (e.checked == false) {
        ob_t2_unchk_parent(e.parentNode);
    } else {
        // To check parent when all the child checkboxes are checked
        ob_t2_chk_parent(e.parentNode);
    }
}


function ob_t2_list_checked() {
    // Make string with checked checkboxes IDs.

    var ob_t2in, ob_t2s, ob_t2checked = "";
    ob_t2in = document.getElementsByTagName("input");
    for (var i = 0; i < ob_t2in.length; i++) {
        ob_t2s = ob_t2in[i].id;
        if ((ob_t2s.substr(0, 4) == "chk_") && (ob_t2in[i].checked)) {
            ob_t2checked = ob_t2checked + ob_t2s + ",";
        }
    }
    return ob_t2checked;
}


function ob_t2_unchk_parent(e) {
    // if checkbox unchecked, uncheck all its parents up to root.
    e = ob_getParentOfNode(e);
    if (e != null) {
        if ((e.firstChild != null) && (e.firstChild.id) && (e.firstChild.id.substr(0, 4) == "chk_")) {
            e.firstChild.checked = false;
            ob_t2_unchk_parent(e);
        }
    }
}

function ob_t2_chk_parent(e) {
    // if all child checked, check all its parents up to root.
    e = ob_getParentOfNode(e);
    if (e != null) {
        if ((e.firstChild != null) && (e.firstChild.id) && (e.firstChild.id.substr(0, 4) == "chk_")) {

            var ob_t2in = e.parentNode.parentNode.parentNode.nextSibling.getElementsByTagName("input");
            var fAllChked = true;
            for (var i = 0; i < ob_t2in.length; i++) {
                if (ob_t2in[i].checked == false) {
                    fAllChked = false;
                    break;
                }
            }

            if (fAllChked) {
                e.firstChild.checked = true;
            }
            ob_t2_chk_parent(e);
        }
    }
}

function ob_hasChildren(ob_od) {
    try {
        var oTempParent = ob_od.parentNode.parentNode.parentNode;
        return (oTempParent.nextSibling != null && oTempParent.nextSibling.nodeName.toLowerCase() == "table");
    }
    catch (e) {
        return false;
    }
}

function ob_isExpanded(ob_od) {
    try {
        imgSrc = ob_od.parentNode.firstChild.firstChild.src;
        lenSrc = imgSrc.length - 8;
        imgSrcLast = imgSrc.substr(lenSrc, 8);
        return (imgSrcLast == 'inus.gif' || imgSrcLast == 'us_l.gif' || imgSrcLast == 'us_r.gif');
    }
    catch (e) {
        return false;
    }
}

function ob_nodeIsChildOf(node, parent) {
    try {
        return ob_getParentOfNode(node) == parent;
    }
    catch (e) { }

    return false;
}

function ob_nodeIsSubNodeOf(node, parent) {
    try {
        if (parent != null) {
            do {
                node = ob_getParentOfNode(node);
                if (node == parent) return true;
            }
            while (node != null)
        }
    }
    catch (e) { }

    return false;
}

function ob_hasSiblings(ob_od) {
    try {
        return (ob_getChildCount(ob_getParentOfNode(ob_od)) > 1);
    }
    catch (e) {
        return false;
    }
}

function ob_getParentOfNode(ob_od) {
    try {
        var oParent = ob_od.parentNode.parentNode.parentNode.parentNode.parentNode;
        if (oParent.className == "ob_di2") {
            return null
        }
        else {
            if (ob_hasChildren(ob_od.parentNode)) return oParent.parentNode.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
            else return oParent.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
        }
    }
    catch (e) { }

    return null;
}

function ob_getChildCount(ob_od) {
    try {
        if (ob_hasChildren(ob_od)) {
            return ob_od.parentNode.parentNode.parentNode.parentNode.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.childNodes.length;
        } else {
            return 0;
        }
    }
    catch (e) { }

    return -1;
}

function ob_getChildAt(ob_od, index, expand) {
    try {
        if (ob_od != null && ob_hasChildren(ob_od) && index >= 0) {
            if (!ob_isExpanded(ob_od) && expand) try {
                ob_od.parentNode.firstChild.firstChild.onclick();
            } catch (e) { }
            return ob_od.parentNode.parentNode.parentNode.parentNode.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.childNodes[index].firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
        }
    }
    catch (e) { }

    return null;
}

function ob_getIndexOfChild(ob_od) {
    try {
        nodeParent = ob_getParentOfNode(ob_od);
        childCount = ob_getChildCount(nodeParent);

        for (i = 0; i < childCount; i++)
            if (ob_getChildAt(nodeParent, i, false) == ob_od) return i;
    }
    catch (e) { }

    return -1;
}

function ob_getLastChildOfNode(ob_od, expand) {
    try {
        var lastChild;
        if (ob_hasChildren(ob_od)) {
            if (!ob_isExpanded(ob_od) && expand) {
                try {
                    ob_od.parentNode.firstChild.firstChild.onclick();
                } catch (e) { }
            }

            lastChild = ob_od.parentNode.parentNode.parentNode.parentNode.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.lastChild.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
        }

        return lastChild;
    }
    catch (e) { }

    return null;
}

function ob_getFirstChildOfNode(ob_od, expand) {
    try {
        firstChild = null;
        if (ob_hasChildren(ob_od)) {
            if (!ob_isExpanded(ob_od) && expand) {
                try {
                    ob_od.parentNode.firstChild.firstChild.onclick();
                } catch (e) { }
            }

            if (ob_isExpanded(ob_od)) {
                var oTemp = ob_od.parentNode.parentNode.parentNode.parentNode.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.firstChild.firstChild.firstChild.firstChild.firstChild;
                if (oTemp.nextSibling) {
                    firstChild = oTemp.nextSibling.nextSibling;
                }
                else {
                    firstChild = oTemp.firstChild.childNodes[2];
                }
            }
        }

        return firstChild;
    }
    catch (e) { }

    return null;
}

function ob_getNextSiblingOfNode(ob_od) {
    try {
        nxtSibling = ob_od.parentNode.parentNode.parentNode.parentNode.nextSibling;
        if (nxtSibling != null) {
            nxtSibling = nxtSibling.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
        }

        return nxtSibling;
    }
    catch (e) { }

    return null;
}

function ob_getPrevSiblingOfNode(ob_od) {
    try {
        prvSibling = ob_od.parentNode.parentNode.parentNode.parentNode.previousSibling;
        if (prvSibling != null) {
            prvSibling = prvSibling.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
        }

        return prvSibling;
    }
    catch (e) { }

    return null;
}

function ob_getFurthestChildOfNode(ob_od, expand) {
    fChild = ob_od;

    while (true) {
        if (ob_hasChildren(fChild) && (ob_isExpanded(fChild) || expand)) {
            if (!ob_isExpanded(ob_od) && expand) {
                try {
                    ob_od.parentNode.firstChild.firstChild.onclick();
                } catch (e) { }
            }

            if (ob_isExpanded(fChild)) {
                tmpChild = ob_getLastChildOfNode(fChild);
                if (tmpChild == null) break;
                else fChild = tmpChild;
            }
        }
        else break;
    }

    return fChild;
}

function ob_elementBelongsToTree(ob_od, ob_tree_id) {
    try {
        if (ob_od.tagName.toLowerCase() == "body") return false;
        if (ob_od.className.toLowerCase() == "ob_tree") return true;

        while (ob_od.parentNode.tagName.toLowerCase() != "body") {
            if (ob_od.parentNode.className.toLowerCase() == "ob_tree") if (!ob_tree_id) return true;
            else return ob_od.parentNode.id;
            ob_od = ob_od.parentNode;
        }

        return false;
    }
    catch (e) { }

    return false;
}

function ob_getFirstNodeOfTree() {
    try {
        tree_div = document.getElementById(ob_tree_id);
        if (tree_div != null) {
            rootNode = tree_div.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[2];

            if (rootNode == null || rootNode.innerHTML == "") {
                rootNode = ob_getFirstChildOfNode(rootNode);
            }
            if (rootNode != null) return rootNode;
        }
    }
    catch (e) { }
}

function ob_getNodeUp(ob_od, expand) {
    prevSibling = ob_getPrevSiblingOfNode(ob_od);
    if (prevSibling != null) {
        prevSibling = ob_getFurthestChildOfNode(prevSibling, expand);
        return prevSibling;
    }
    else {
        nodeParent = ob_getParentOfNode(ob_od);
        if (nodeParent != null) {
            return nodeParent;
        }
    }

    return null;
}

function ob_getNodeDown(ob_od, expand) {
    if (ob_hasChildren(ob_od) && (ob_isExpanded(ob_od) || expand)) {
        nxtSibling = ob_getFirstChildOfNode(ob_od, expand);
        return nxtSibling;
    }
    else {
        nxtSibling = ob_getNextSiblingOfNode(ob_od);
        if (nxtSibling != null) return nxtSibling;

        nodeParent = ob_od;
        do {
            nodeParent = ob_getParentOfNode(nodeParent);
            if (nodeParent != null) {
                nxtSibling = ob_getNextSiblingOfNode(nodeParent);
                if (nxtSibling != null) return nxtSibling;
            }
        } while (nodeParent != null && nodeParent.className.toLowerCase() != "ob_tree")
    }

    return null;
}

function ob_getExpanded(ob_od, onlyChildren) {
    exp = '';
    var ob_iRoot = false;
    if (!ob_od) {
        ob_od = ob_getFirstNodeOfTree();
        ob_iRoot = true;
    }
    node = ob_od;

    if (node) {
        if (!ob_iRoot) node = ob_getNodeDown(node);
    }
    else if (document.getElementById(ob_tree_id)) {
        node = document.getElementById(ob_tree_id).childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[2];
    }

    while (node != null && ((onlyChildren && ((ob_iRoot == true) || ob_nodeIsChildOf(node, ob_od))) || (!onlyChildren && ((ob_iRoot == true) || ob_nodeIsSubNodeOf(node, ob_od))))) {
        if (ob_hasChildren(node) && ob_isExpanded(node)) exp += ((exp.length > 0) ? ',' : '') + node.id;
        node = onlyChildren ? ob_getNextSiblingOfNode(node) : ob_getNodeDown(node);
    }

    return exp;
}

function ob_getCollapsed(ob_od, onlyChildren) {
    exp = '';
    var ob_iRoot = false;
    if (!ob_od) {
        ob_od = ob_getFirstNodeOfTree();
        ob_iRoot = true;
    }
    node = ob_od;

    if (node) {
        if (!ob_iRoot) node = ob_getNodeDown(node);
    }
    else if (document.getElementById(ob_tree_id)) {
        node = document.getElementById(ob_tree_id).childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[2];
    }

    while (node != null && ((onlyChildren && ((ob_iRoot == true) || ob_nodeIsChildOf(node, ob_od))) || (!onlyChildren && ((ob_iRoot == true) || ob_nodeIsSubNodeOf(node, ob_od))))) {
        if (ob_hasChildren(node) && !ob_isExpanded(node)) exp += ((exp.length > 0) ? ',' : '') + node.id;
        node = onlyChildren ? ob_getNextSiblingOfNode(node) : ob_getNodeDown(node);
    }

    return exp;
}

function ob_expandSingle(ob_od) {
    if (typeof (ob_tree_first_call) != 'undefined' && ob_tree_first_call) {
        ob_tree_first_call = false;
        parentNode = ob_getParentOfNode(ob_od);
        do {
            if (parentNode != null) ob_expandSingle(parentNode);
            else break;
            parentNode = ob_getParentOfNode(parentNode);
        } while (true);
    }

    parentNode = ob_getParentOfNode(ob_od);
    /*if (parentNode != null)
    {*/
    exp = ob_getExpanded(parentNode, true);
    if (exp.length > 0) {
        var boxArray = exp.split(",");
        for (i = 0; i < boxArray.length; i++) {
            if (boxArray[i] != ob_od.id) {
                node = document.getElementById(boxArray[i]);
                if (node != null) {
                    tmpOs = node.parentNode.firstChild.firstChild;
                    if (tmpOs != null) tmpOs.onclick();
                }
            }
        }
    }
    //}
}

function ob_t2_Add(parentId, childId, textOrHTML, expanded, image, subTreeURL) {
    if (!ob_OnBeforeAddNode(parentId, childId, textOrHTML, expanded, image, subTreeURL)) return;

    var pNode = document.getElementById(parentId);

    if (!pNode) {
        alert("Parent does not exist.");
        return;
    }
    if (pNode) {
        if (pNode.className.toLowerCase() != 'ob_t2' && pNode.className.toLowerCase() != 'ob_t3') {
            alert("Parent node is not a valid tree node.");
            return;
        }
    }

    dParent = pNode.parentNode.parentNode.parentNode.parentNode;

    if (document.getElementById(childId) != null) {
        alert("An element with the specified childId already exists.");
        return;
    }
    if (!ob_hasChildren(pNode)) {
        var e = dParent.firstChild.firstChild.firstChild.firstChild.firstChild;
        e.src = ob_style + "/minus" + (ob_getLastChildOfNode(ob_getParentOfNode(pNode)) == pNode ? "_l.gif" : ".gif");
        e.onclick = function() {
            ob_t21(this, '')
        };

        e = dParent.appendChild(document.createElement("TABLE"));
        e.className = "ob_t2g";

        if (document.all) {
            e.cellSpacing = "0";
        }
        else {
            e.setAttribute("cellspacing", "0");
        }

        e.appendChild(document.createElement("tbody"));
        var e2 = e.firstChild.appendChild(document.createElement("TR"));
        e = e2.appendChild(document.createElement("TD"));
        if (dParent.parentNode.lastChild != dParent) e.style.backgroundImage = "url(" + ob_style + "/vertical.gif)";
        e.innerHTML = "<div class=ob_d5></div>";
        e = e2.appendChild(document.createElement("TD"));
        e.className = "ob_t5";
        dParent.className = 'ob_d2b';
    }
    else {
        prevS = ob_getLastChildOfNode(pNode, true);
        if (prevS == null) {
            if (pNode.parentNode.firstChild.firstChild.src.indexOf("plusik_l.gif")) {
                ob_t2_OnDynamicLoad = function() {
                    ob_t2_Add(parentId, childId, textOrHTML, expanded, image, subTreeURL);
                }
            }
            return;
        }
        var oPrevSImg = prevS.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.firstChild.firstChild;

        if (!ob_hasChildren(prevS)) oPrevSImg.src = ob_style + "/hr.gif";
        else {
            if (!ob_isExpanded(prevS)) {
                oPrevSImg.src = ob_style + "/plusik.gif";
            }
            else oPrevSImg.src = ob_style + "/minus.gif";
            prevS.parentNode.parentNode.parentNode.parentNode.firstChild.nextSibling.firstChild.firstChild.firstChild.style.backgroundImage = "url(" + ob_style + "/vertical.gif)";
        }

        if (dParent.parentNode.lastChild != dParent) prevS.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.firstChild.style.backgroundImage = "url(" + ob_style + "/vertical.gif)";

        oPrevSImg.parentNode.className = "ob_t6v";
    }

    div = document.createElement('div');
    div.className = 'ob_d2c';

    sInnerHtml = '<table cellspacing="0" class="ob_t2g"><tr><td class="ob_t6"><img ' + ((subTreeURL != null) ? 'src="' + ob_style + '/plusik_l.gif" onclick="ob_t21(this, \'' + subTreeURL + '\')"' : 'src="' + ob_style + '/hr_l.gif"') + '></td>';
    sInnerHtml += '<td class="ob_t4"' + (ob_t2_showicons == false ? ' style="display:none;"' : '') + '>' + (ob_t2_showicons == true ? '<div class="ob_d4">' : '') + ((image != null && typeof (ob_icons) != 'undefined' && ob_t2_showicons == true) ? '<img src="' + ob_icons + '/' + image + '">' : '') + (ob_t2_showicons == true ? '</div>' : '') + '</td>';
    sInnerHtml += '<td id=' + childId + ' onclick="ob_t22(this, event)" class="ob_t2">' + textOrHTML + '</td></tr></table>';

    div.innerHTML = sInnerHtml;
    node = div.firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling;
    node.className = 'ob_t2';
    //node.nowrap = "true";
    if (subTreeURL != null) div.innerHTML += '<table cellspacing="0" style="display: none;"><tbody><tr><td><div class=ob_d5></div></td><td class="ob_t7">Loading ...</td></tr></tbody>';

    try {
        if (dParent.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.innerHTML == "Loading ...") {
            dParent.removeChild(dParent.childNodes[1]);
        }
    }
    catch (ex) { }
    dParent.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.appendChild(div);

    if (typeof (ob_tree_dnd_enable) != "undefined" && ob_tree_dnd_enable == true) {
        if (typeof (ob_t18) != 'undefined') {
            ob_t18(dParent);
        }
    }

    tree_node_exp_col = true;
    // de-select all the selected nodes before adding
    if (ob_tree_multiselect_enable) {
        ob_unselectAllNodes();
    }
    //if (tree_selected_id != parentId && document.getElementById(parentId)) {
    if (document.getElementById(parentId)) {
        try {
            ob_t22(document.getElementById(parentId));
        }
        catch (ex) { }
    }

    tree_node_exp_col = false;

    if (typeof ob_HighlightOnDnd != "undefined" && ob_HighlightOnDnd == true) {
        ob_t51();
    }

    //document.getElementById("txtDebug").value = pNode.parentNode.parentNode.parentNode.parentNode.innerHTML;

    ob_OnAddNode(parentId, childId, textOrHTML, expanded, image, subTreeURL);
    return node;
}

function ob_t2_Remove(childId) {
    ob_od = document.getElementById(childId);
    if (!ob_od) {
        alert("There is no node with the specified id.");
        return;
    }

    if (!ob_OnBeforeRemoveNode(childId)) return;

    try {
        nodeParent = ob_getParentOfNode(ob_od);
        var lc = ob_getLastChildOfNode(nodeParent) == ob_od;

        if (ob_hasSiblings(ob_od)) {
            if (lc) {
                prevS = ob_getPrevSiblingOfNode(ob_od);
                var oPrevSImg = prevS.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.firstChild.firstChild;
                if (prevS != null) {
                    if (!ob_hasChildren(prevS)) oPrevSImg.src = ob_style + "/hr_l.gif";
                    else {
                        if (!ob_isExpanded(prevS)) {
                            oPrevSImg.src = ob_style + "/plusik_l.gif";
                        }
                        else oPrevSImg.src = ob_style + "/minus_l.gif";

                        oPrevSImg.style.backgroundImage = "none";
                        prevS.parentNode.parentNode.parentNode.parentNode.childNodes[1].firstChild.firstChild.firstChild.style.backgroundImage = "none";
                    }
                    oPrevSImg.parentNode.style.backgroundImage = 'none';
                }
            }

            ob_od.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(ob_od.parentNode.parentNode.parentNode.parentNode);
        }
        else {
            if (nodeParent != null) {
                if (lc) nodeParent.parentNode.parentNode.parentNode.parentNode.className = 'ob_t2c';
                e = nodeParent.parentNode.parentNode.parentNode.parentNode;

                if (ob_getLastChildOfNode(ob_getParentOfNode(nodeParent)) == nodeParent) {
                    e.firstChild.firstChild.firstChild.firstChild.style.backgroundImage = 'none';
                    e.firstChild.firstChild.firstChild.firstChild.firstChild.src = ob_style + "/hr_l.gif";
                }
                else {
                    e.firstChild.firstChild.firstChild.firstChild.style.backgroundImage = "url(' + ob_style + '/vertical.gif)";
                    e.firstChild.firstChild.firstChild.firstChild.firstChild.src = ob_style + "/hr.gif";
                }

                e.removeChild(e.firstChild.nextSibling);
                try {
                    ob_od.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(ob_od.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
                } catch (e) { }
            }
            else {
                ob_od.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(ob_od.parentNode.parentNode.parentNode.parentNode);
            }
        }

        if (typeof ob_HighlightOnDnd != "undefined" && ob_HighlightOnDnd == true) {
            ob_t51();
        }

        ob_OnRemoveNode(childId);
        if (nodeParent != null) {
            nodeParent.onclick();
        }

    }
    catch (e) { }
}

function ob_arrIdxOf(arr, obj) {
    for (var i = 0; i < arr.length; i++) {
        if (obj == arr[i]) return i
    };
    return -1;
}

function ob_g_eids() {
    try {
        var en = "";
        if (document.cookie != null) {
            var ck = document.cookie.split(";");
            for (var i = 0; i < ck.length; i++) {
                var tmpArr = ck[i].split("=");
                if (tmpArr[0].indexOf(ob_page_location + '_ob_eids') != -1) {
                    en = tmpArr[1];
                    break;
                }
            }
        }
        return (en.length > 0) ? en.split(",") : new Array();
    }
    catch (e) {
        return new Array();
    }
}

function ob_g_cids() {
    try {
        var en = "";
        if (document.cookie != null) {
            var ck = document.cookie.split(";");
            for (var i = 0; i < ck.length; i++) {
                var tmpArr = ck[i].split("=");
                if (tmpArr[0].indexOf(ob_page_location + '_ob_cids') != -1) {
                    en = tmpArr[1];
                    break;
                }
            }
        }
        return (en.length > 0) ? en.split(",") : new Array();
    }
    catch (e) {
        return new Array();
    }
}

function ob_InitNewKeepState() {
    if (ob_KeepLastExpanded <= 0 && ob_KeepLastCollapsed <= 0) return;
    if (ob_KeepLastExpanded) {
        if (!ob_sids) {
            //modified to have dynamic node expand

            function recurCheck(id_list) {
                var ob_sids = id_list || ob_g_eids();
                ob_sids.push(ob_last);
                ob_t26(ob_sids);

                // an array of nodes have to be expanded in next call of recurCheck function
                var tmp_sids = [];

                if (ob_sids.length) {
                    //remove un-wanted node id
                    if (typeof (ob_sids[ob_sids.length - 1]) == "undefined") ob_sids.pop();

                    for (var i = 0; i < ob_sids.length && i < ob_KeepLastExpanded; i++) {
                        if (ob_sids[i] == '' || typeof (ob_sids[i]) == "undefined") {
                            continue;
                        }
                        ob_od = document.getElementById(ob_sids[i]);

                        if (ob_od == null) {
                            //obtain node id which has been yet generated by dynamic loading
                            tmp_sids.push(ob_sids[i]);
                            continue;
                        }

                        var e, s;
                        e = ob_od.parentNode.firstChild.firstChild;

                        if (e && e.getAttribute("onclick")) {
                            var sFunctionName = e.getAttribute("onclick").toString();
                            var sSubtreeUrl = sFunctionName.substring(sFunctionName.lastIndexOf(",") + 1, sFunctionName.lastIndexOf(")"));

                            if (sSubtreeUrl.length <= 3) continue;
                            if ((typeof e.src != "undefined") && (e.tagName == "IMG")) {
                                s = e.src.substr((e.src.length - 8), 8);
                                // if the current node is open, then we have to click it twice 
                                if ((s == "inus.gif") || (s == "us_l.gif") || (s == "us_r.gif")) {
                                    e.onclick();
                                    e.onclick();
                                }
                                else //else, click the node once
                                {
                                    e.onclick();
                                }
                                //end if
                            } //end if
                        } //end if
                    } //end for

                    if (tmp_sids.length > 0) {
                        var t = function() {
                            recurCheck(tmp_sids)
                        };
                        window.setTimeout(t, 300);
                    }
                    else {
                        return;
                    }
                } //end if
            } //end function

            //call function recurCheck()		    
            recurCheck();
        }
    }
    if (ob_KeepLastCollapsed) {
        var ob_cids = ob_g_cids();
        if (ob_cids && ob_cids.length) {
            for (var i = 0; i < ob_cids.length && i < ob_KeepLastCollapsed; i++) {
                ob_od = document.getElementById(ob_cids[i]);
                if (ob_od == null) {
                    return
                }
                var e, lensrc, s;
                e = ob_od.parentNode.firstChild.firstChild;
                if ((typeof e.src != "undefined") && (e.tagName == "IMG")) {
                    s = e.src.substr((e.src.length - 8), 8);
                    if ((s == "inus.gif") || (s == "us_l.gif") || (s == "us_r.gif")) {
                        e.onclick();
                    }
                }
            }
        }
    }
}

function ob_saveNodeState(objBlockNode, NodeId, sType) {
    // Set expiration days here
    var expiredays = 3;
    var ExpireDate = new Date();
    ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));

    var ob_arrExpIds = ob_g_eids();
    var ob_arrColIds = ob_g_cids();

    var ob_iExpPos = ob_arrIdxOf(ob_arrExpIds, NodeId);
    var ob_iColPos = ob_arrIdxOf(ob_arrColIds, NodeId);

    var ob_BlockNodeDisplay = objBlockNode.style.display;
    if (ob_BlockNodeDisplay == "") {
        ob_BlockNodeDisplay = "block";
    }

    if ((ob_BlockNodeDisplay == "block") && (ob_iExpPos != -1)) {
        ob_arrExpIds.splice(ob_iExpPos, 1);
    }
    else if ((ob_BlockNodeDisplay != "block") && (ob_iExpPos == -1)) {
        ob_arrExpIds.push(NodeId);
        if (ob_arrExpIds.length > ob_KeepLastExpanded) ob_arrExpIds.splice(0, 1);
    }

    if ((ob_BlockNodeDisplay != "block") && (ob_iColPos != -1)) {
        ob_arrColIds.splice(ob_iColPos, 1);
    }
    else if ((ob_BlockNodeDisplay == "block") && (ob_iColPos == -1)) {
        ob_arrColIds.push(NodeId);
        if (ob_arrColIds.length > ob_KeepLastCollapsed) ob_arrColIds.splice(0, 1);
    }

    if (ob_KeepLastExpanded > 0) {
        var ob_sExpIds = ob_arrExpIds.join(',');
        ob_setCookie(ob_sExpIds, ExpireDate, "", "", "", ob_page_location + "_ob_eids");
    }
    if (ob_KeepLastCollapsed > 0) {
        var ob_sColIds = ob_arrColIds.join(',');
        ob_setCookie(ob_sColIds, ExpireDate, "", "", "", ob_page_location + "_ob_cids");
    }
}

function ob_setCookie(name, expires, path, domain, secure, sCookieName) {
    if (!sCookieName) {
        sCookieName = "ob_eids";
    }
    var curCookie = sCookieName + "=" + name + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
    document.cookie = curCookie;
}

function ob_nodeEnsureVisible(ob_od) {
    var tree = document.getElementById(ob_tree_id);
    var width = tree.style.pixelWidth || parseInt(tree.style.width.replace('px', ''));
    var height = tree.style.pixelHeight || parseInt(tree.style.height.replace('px', ''));
    var topPos = (ob_getTop(ob_od) - ob_getTop(tree) - tree.scrollTop);
    var bottomPos = topPos + ob_od.offsetHeight;
    var leftPos = (ob_getLeft(ob_od) - ob_getLeft(tree) - tree.scrollLeft);
    var rightPos = leftPos + ob_od.offsetWidth;
    var dif = bottomPos - height + 1;
    if (topPos < 0) tree.scrollTop += topPos;
    else if (dif > 0) tree.scrollTop += dif;

    dif = rightPos - width + 1;
    if (leftPos < 0) tree.scrollLeft += leftPos;
    else if (dif > 0) tree.scrollLeft += dif;

    var bodyEl = document.compatMode == 'BackCompat' ? document.body : (document.documentElement || document.body);

    var dif1 = (topPos + ob_getTop(tree)) - bodyEl.scrollTop;
    var dif2 = (ob_getTop(tree) + bottomPos) - (document.body.clientHeight + bodyEl.scrollTop) + 1;
    if (dif1 < 0) bodyEl.scrollTop += dif1;
    else if (dif2 > 0) bodyEl.scrollTop += dif2;
}

function ob_getLeft(obj) {
    var pos = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            pos += obj.offsetLeft;
            obj = obj.offsetParent;
        }
    } else if (obj.x) pos += obj.x;
    return pos;
}

function ob_getTop(obj) {
    var pos = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            pos += obj.offsetTop;
            obj = obj.offsetParent;
        }
    } else if (obj.y) pos += obj.y;
    return pos;
}

function ob_getChildrenList(ob_od) {
    try {
        var n = ob_getChildCount(ob_od);
        var list = new Array(),
            childNodes = n > 0 ? ob_od.parentNode.parentNode.parentNode.parentNode.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.childNodes : new Array();
        for (var i = 0; i < n; i++)
            list.push(childNodes[i].firstChild.firstChild.firstChild.firstChild.nextSibling.nextSibling);
        return list;
    }
    catch (e) { }
}

function ob_getTopLevelList(tree_id) {
    try {
        var firstNode = ob_getFirstNodeOfTree();
        var tree_div = document.getElementById(tree_id || ob_tree_id);
        var list = new Array();
        var nextNode = firstNode || tree_div.firstChild.firstChild.firstChild.firstChild.firstChild.lastChild.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild.firstChild.firstChild.lastChild;
        while (nextNode) {
            list.push(nextNode);
            nextNode = nextNode.parentNode.parentNode.parentNode.parentNode.nextSibling;
            if (nextNode) nextNode = nextNode.firstChild.firstChild.firstChild.lastChild;
        }
        return list;
    }
    catch (e) { }
}


var ob_sLastDeletedId = '';

function ob_t2_Move(destination_id, source_id) {

    var oDestinationNode = document.getElementById(destination_id);
    var oSourceNode = document.getElementById(source_id);
    if (oDestinationNode != null) {
        var oDestinationDiv = oDestinationNode.parentNode.parentNode.parentNode;
    }
    if (oSourceNode != null) {
        var oSourceDiv = oSourceNode.parentNode.parentNode.parentNode.parentNode;
    }

    if (oSourceDiv != null && oDestinationDiv != null) {
        o_S(null, false, null, oDestinationDiv, oSourceDiv);
    }
}


// function that moves the selected node up/down
// argument sDirection has to be one of the following: up/down

function ob_t2_UpDown(sDirection, sNodeId) {

    // if the passed argument doesn't match one of the up/down directions,
    // the function may not be executed any further
    if (sDirection != 'up' && sDirection != 'down') {
        return;
    }

    //if there isn't any selected node, the user will receive an warning

    if (sNodeId == null) {
        sNodeId = tree_selected_id;
    }
    if (typeof (sNodeId) == 'undefined') {
        alert('Please select a node to move!');
        return;
    }

    // gets the main div that contains the selected node
    var oSelDiv = document.getElementById(sNodeId).parentNode.parentNode.parentNode.parentNode;

    // gets the parent element of the main div in which the selected node is contained
    var oParentDiv = oSelDiv.parentNode;

    if (sDirection == 'up') {
        // the selected node is being moved before its previous sibling
        var oTargetDiv = oSelDiv.previousSibling;
        if (oTargetDiv != null) {
            oParentDiv.insertBefore(oSelDiv, oTargetDiv);

            ob_OnMoveNodeUp(sNodeId, oTargetDiv.firstChild.firstChild.firstChild.childNodes[2].id);
        }
    } else {
        // the next sibling of the selected node is being moved before the selected node
        var oTargetDiv = oSelDiv.nextSibling;
        if (oTargetDiv != null) {
            oParentDiv.insertBefore(oTargetDiv, oSelDiv);

            ob_OnMoveNodeDown(sNodeId, oTargetDiv.firstChild.firstChild.firstChild.childNodes[2].id);
        }
    }
}

function ob_changeIcon(oNode) {
    if (oNode != null) {
        if (oNode.previousSibling && oNode.previousSibling.firstChild && oNode.previousSibling.firstChild.firstChild) {
            var oImg = oNode.previousSibling.firstChild.firstChild;
        }
        else {
            return;
        }
        var sOldImg = oImg.src.substr(oImg.src.lastIndexOf("/") + 1);
        var sNewImg = "";

        switch (sOldImg) {
            case "Folder.gif":
                if (ob_isExpanded(oNode)) {
                    sNewImg = "Folder.gif";
                } else {
                    sNewImg = "Folder_o.gif";
                }
                break;
            case "Folder_o.gif":
                if (ob_isExpanded(oNode)) {
                    sNewImg = "Folder.gif";
                } else {
                    sNewImg = "Folder_o.gif";
                }
                break;
        }

        if (sNewImg) {
            oImg.src = ob_icons + "/" + sNewImg;
        }
    }
}

function ob_t2_Reload(sNodeId) {
    if (typeof sNodeId == 'undefined') {
        return;
    }

    var oSelectedNode = document.getElementById(sNodeId);
    var oImg = oSelectedNode.parentNode.firstChild.firstChild;

    if (oImg && oImg.getAttribute("onclick")) {
        var sFunctionName = oImg.getAttribute("onclick").toString();
        var sSubtreeUrl = sFunctionName.substring(sFunctionName.lastIndexOf(",") + 1, sFunctionName.lastIndexOf(")"));
    }
    else {
        var sSubtreeUrl = "''";
    }
    if (sSubtreeUrl.length > 3) {
        try {
            var oDiv = oImg.parentNode.parentNode.parentNode.parentNode.nextSibling.firstChild.firstChild.firstChild.nextSibling;
            if (oDiv.innerHTML != "Loading ...") {
                oDiv.className = "ob_t7";
                oDiv.innerHTML = "Loading ...";
            }

            oImg.onclick();
            if (!ob_isExpanded(oSelectedNode)) {
                oImg.onclick();
            }
        }
        catch (e) { }
    }
}

function ob_t2_GetAllTextNode(oNode, withParent) {
    var ret = "";
    var sSpacer = '\r\n';

    if (oNode != null) {
        if (withParent == true) {
            if (oNode.firstChild.firstChild) {
                ret += oNode.firstChild.firstChild.nodeValue + sSpacer;
            } else {
                ret += oNode.firstChild.nodeValue + sSpacer;
            }
        } else {
            withParent = true;
        }

        var childNode = ob_getFirstChildOfNode(oNode);

        if (childNode != null) {
            ret += ob_t2_GetAllTextNode(childNode, withParent);
        }
        var nextNode = ob_getNextSiblingOfNode(oNode);

        if (nextNode != null) {
            ret += ob_t2_GetAllTextNode(nextNode, withParent);
        }
    }
    return ret;
}

function ob_t2_CopyToControl(oDragableDiv, copy) {
    // copy = 0 : Copy only the moving node to textarea
    // copy = 1 : Copy moving node with child nodes to textarea
    // copy = 2 : Copy only the child nodes to textarea

    if (oDragableDiv == null) {
        return;
    }

    iMainTop = calcOffsetY(oDragableDiv);
    iMainLeft = calcOffsetX(oDragableDiv);

    if (iMainTop == 0) {
        iMainTop = parseFloat(oDragableDiv.style.top);
    }
    if (iMainLeft == 0) {
        iMainLeft = parseFloat(oDragableDiv.style.left);
    }
    if (show_with_children == true) {
        sTextContainer = oDragableDiv.firstChild.firstChild.firstChild.childNodes[2];
    }
    else {
        sTextContainer = oDragableDiv.firstChild.firstChild.childNodes[2];
    }

    if (sTextContainer.firstChild.firstChild) {
        sMainText = sTextContainer.firstChild.firstChild.nodeValue;
    } else {
        sMainText = sTextContainer.firstChild.nodeValue;
    }

    arrTextBoxes = document.getElementsByTagName('input');
    arrTextAreas = document.getElementsByTagName('textarea');

    if (arrTextBoxes.length) {
        for (var i = 0; i < arrTextBoxes.length; i++) {
            if (arrTextBoxes[i].type == 'text') {

                iElTop = calcOffsetY(arrTextBoxes[i]);
                iElLeft = calcOffsetX(arrTextBoxes[i]);
                iElBottom = iElTop + arrTextBoxes[i].offsetHeight;
                iElRight = iElLeft + arrTextBoxes[i].offsetWidth;

                if ((iMainTop > iElTop && iMainTop < iElBottom) && (iMainLeft > iElLeft && iMainLeft < iElRight)) {
                    arrTextBoxes[i].value = sMainText;
                    return;
                }
            }
        }
    }

    if (arrTextAreas.length) {
        for (var i = 0; i < arrTextAreas.length; i++) {
            iElTop = calcOffsetY(arrTextAreas[i]);
            iElLeft = calcOffsetX(arrTextAreas[i]);
            iElBottom = iElTop + arrTextAreas[i].offsetHeight;
            iElRight = iElLeft + arrTextAreas[i].offsetWidth;

            if ((iMainTop > iElTop && iMainTop < iElBottom) && (iMainLeft > iElLeft && iMainLeft < iElRight)) {
                var sSpacer = '';
                if (arrTextAreas[i].value != '') {
                    sSpacer = '\r\n';
                }
                try {
                    if (copy == null || copy == 0) {
                        // Copy only the moving node to textarea
                        arrTextAreas[i].value += sSpacer + sMainText;
                    } else {
                        arrTextAreas[i].value += sSpacer + ob_t2_GetAllTextNode(sTextContainer, copy != null && copy == 1);
                    }
                } catch (ex) { }
                return;
            }
        }
    }
}

function calcOffsetX(el) {
    offset = el.offsetLeft;
    while (el.offsetParent) {
        el = el.offsetParent;
        offset += el.offsetLeft;
    }
    return offset;
}

function calcOffsetY(el) {
    offset = el.offsetTop;
    while (el.offsetParent) {
        el = el.offsetParent;
        offset += el.offsetTop;
    }
    return offset;
}

function ob_t2_MoveDraggableNode(oDragDiv) {
    // gets the parent element of the main div in which the dragged node is contained    
    var oParentDiv = oDragDiv.parentNode;
    var oTargetDiv = oParentDiv.firstChild;

    var srcId = oDragDiv.firstChild.firstChild.firstChild.childNodes[2].id;
    var dstId = oDragDiv.parentNode.parentNode.parentNode.parentNode.parentNode.firstChild.firstChild.firstChild.childNodes[2].id;

    ob_OnBeforeNodeDrop(srcId, dstId, false);

    if (oTargetDiv != null) {
        oParentDiv.insertBefore(oDragDiv, oTargetDiv);
    }
    if (typeof ob_HighlightOnDnd != "undefined" && ob_HighlightOnDnd == true) {
        ob_t51();
    }
    ob_OnNodeDrop(srcId, dstId, false);
}

function ob_t2_UnselectNode(sNodeId) {
    if (sNodeId == null) {
        if (ob_prev_selected != null) {
            ob_prev_selected.className = "ob_t2";
            ob_prev_selected = null;
        }
    }
    else {
        var oNode = document.getElementById(sNodeId);
        if (oNode != null) {
            oNode.className = "ob_t2";
            ob_prev_selected = null;
        }
    }
}

function ob_t27(oImg) {
    if (oImg == null) {
        return;
    }
    ob_t22(oImg.parentNode.parentNode.nextSibling);
}

function ob_generateNewId(id, html) {
    //alert(id + " " + html);
    var root = id;
    var counter = 0;
    if (id.indexOf("_copy") > 0) {
        root = id.substring(0, id.indexOf("_copy"));
        if (id.substring(id.indexOf("_copy") + 5) * 1 == id.substring(id.indexOf("_copy") + 5)) counter = id.substring(id.indexOf("_copy") + 5) * 1;
    }

    do {
        counter++;
        var newId = root + '_copy' + counter;
    }
    while (document.getElementById(newId) != null)

    return newId;
}

function ob_t2_getNodeLevel(id) {
    var oNode = document.getElementById(id);
    var iLevel = 0;
    while (oNode != null) {
        iLevel++;
        oNode = ob_getParentOfNode(oNode);
    }
    return iLevel;
}

//-->