﻿/*

    Use in SelectionTree.ascx control

*/

function toggleTreeView(ddTreeView, input, ev, hide) {
    if (ddTreeView != null) {
        if ((hide == null && ddTreeView.style.display == "none") || hide == false) {
            ddTreeView.style.display = "";
            //document.onmousedown = document_onmousedown;
        }
        else {
            ddTreeView.style.display = "none";
        }

        if (input != null) {
            var rect = ninerays_getElementRect(input);

            ddTreeView.style.top = (rect.bottom - 1) + "px";
            ddTreeView.style.left = rect.left + "px";
        }

        ev = ev ? ev : window.event;
        if (ev) ev.cancelBubble = true;
    }
}

var ignoreEvents = false;
function nodeEventHandler(treeview, node, eventType) {
    if (ignoreEvents) return;
    ignoreEvents = true;
    if (eventType == "checked") {
        setChildrenCheckBox(node, true);
        if (allSiblingChecked(node)) {
            setParentCheckBox(node, true);
        }
    } else if (eventType == "unchecked") {
        setChildrenCheckBox(node, false);
        setParentCheckBox(node, false);
    }
    countAllSelectedNodes(treeview);
    ignoreEvents = false;
}

function setChildrenCheckBox(parentNode, value) {
    var childNodes = parentNode.getChildNodes();
    for (var i = 0; i < childNodes.length; i++) {
        var node = childNodes[i];
        node.setChecked(value);
        setChildrenCheckBox(node, value);
    }
}

function setParentCheckBox(node, value) {
    var parentNode = node.getParent();
    if (parentNode == null) return;
    parentNode.setChecked(value);
    if (!value || allSiblingChecked(parentNode))
        setParentCheckBox(parentNode, value);
}

function allSiblingChecked(node) {
    var nodes = node.getSiblingNodes();
    for (var i = 0; i < nodes.length; i++) {
        if (!nodes[i].getChecked())
            return false;
    }
    return true;
}

function countAllSelectedNodes(treeview) {
    var howmany = 0;
    var nodes = treeview.getNodes();
    for (var i = 0; i < nodes.length; i++) {
        howmany = howmany + nodes[i].findAll(function(node) { return node.getChecked() == true; }).length;
    }

    var treeViewInput;
    //alert(treeview.id);
    treeViewInput = document.getElementById(treeview.getID() + "_input");

    treeViewInput.value = howmany + ' selected';
}
