﻿function RadTreeView_UpdateAllChildren(nodes, checked)
{
    for (var i=0; i < nodes.get_count(); i++)
    {
        var node = nodes.getNode(i);
        node.set_checked(checked);
        RadTreeView_UpdateAllChildren(node.get_nodes(), checked);        
    }
}

function RadTreeView_AfterClick(treeView, args)
{
    var node = args.get_node();
    node.toggle();
}

function RadTreeView_AfterCheck(treeView, args)
{
    var node = args.get_node();
    
    if (!node.get_checked() && node.get_parent() != treeView)
    {
        node.get_parent().set_checked(false);
    }

    var siblingNodes = node.get_parent().get_nodes();

    var allChecked = true;
    for (var i = 0; i < siblingNodes.get_count(); i++)
    {
        var siblingNode = siblingNodes.getNode(i);
        if (!siblingNode.get_checked())
        {
            allChecked = false;
            break;
        }
    }
    
    if (allChecked && node.get_parent() != treeView)
    {
        node.get_parent().set_checked(true);
    }
    
    RadTreeView_UpdateAllChildren(node.get_nodes(), node.get_checked());
}
