﻿function expandAllLevelNodeRecursive(node) {
    node.expand();
    var allNodes = node.get_nodes();
    for (var i = 0; i < allNodes.get_count(); i++) {
        expandAllLevelNodeRecursive(allNodes.getNode(i));
    }
}

function collapseAllLevelNodeRecursive(node) {
    node.collapse();
    var allNodes = node.get_nodes();
    for (var i = 0; i < allNodes.get_count(); i++) {
        collapseAllLevelNodeRecursive(allNodes.getNode(i));
    }
}

function checkAllLevelNodeRecursive(node) {
    node.check();
    var allNodes = node.get_nodes();
    for (var i = 0; i < allNodes.get_count(); i++) {
        checkAllLevelNodeRecursive(allNodes.getNode(i));
    }
}

function uncheckAllLevelNodeRecursive(node) {
    node.uncheck();
    var allNodes = node.get_nodes();
    for (var i = 0; i < allNodes.get_count(); i++) {
        uncheckAllLevelNodeRecursive(allNodes.getNode(i));
    }
}


function onClientContextMenuItemClicking(sender, args) {
    var menuItem = args.get_menuItem();
    var treeNode = args.get_node();

    var allNodes = treeNode.get_nodes();
    var treeAllNodes = sender.get_allNodes();

    switch (menuItem.get_value()) {
        case "expandLevel":
            treeNode.expand();
            allNodes = treeNode.get_nodes();
            for (var i = 0; i < allNodes.get_count(); i++) {
                expandAllLevelNodeRecursive(allNodes.getNode(i));
            }

            break;

        case "collapseLevel":
            treeNode.collapse();
            allNodes = treeNode.get_nodes();
            for (var i = 0; i < allNodes.get_count(); i++) {
                collapseAllLevelNodeRecursive(allNodes.getNode(i));
            }

            break;
        case "expandAll":

            for (var i = 0; i < treeAllNodes.length; i++) {
                treeAllNodes[i].expand();
            }

            break;
        case "collapseAll":

            for (var i = 0; i < treeAllNodes.length; i++) {
                treeAllNodes[i].collapse();
            }
            break;
        case "checkLevel":
            treeNode.check();
            allNodes = treeNode.get_nodes();
            for (var i = 0; i < allNodes.get_count(); i++) {
                checkAllLevelNodeRecursive(allNodes.getNode(i));
            }

            break;
        case "unCheckLevel":
            treeNode.uncheck();
            allNodes = treeNode.get_nodes();
            for (var i = 0; i < allNodes.get_count(); i++) {
                uncheckAllLevelNodeRecursive(allNodes.getNode(i));
            }
            break;
        case "checkAll":

            for (var i = 0; i < treeAllNodes.length; i++) {
                treeAllNodes[i].check();
            }
            break;
        case "uncheckAll":

            for (var i = 0; i < treeAllNodes.length; i++) {
                treeAllNodes[i].uncheck();
            }
            break;

    }
}
