/**
 * Ext.ux.TreeUnifier - Unify Trees
 * Version 1.0
 * James Dempster letssurf@gmail.com
 * http://code.jdempster.com/
 */

/*global Ext*/
Ext.ns('Ext.ux');

/**
 * @class Ext.ux.TreeUnifier
 * @constructor
 */
Ext.ux.TreeUnifier = function() {
    var unifiedTrees = [];
    return {
        init: function(tree) {
            unifiedTrees.push(tree);
            tree.getSelectionModel().on('selectionchange', function(selectionModel, clickedNode) {
                if (clickedNode instanceof Ext.tree.TreeNode) {
                    var clickedTree = clickedNode.getOwnerTree();
                    Ext.each(unifiedTrees, function(unifiedTree) {
                        if (unifiedTree !== clickedTree) {
                            var selectedNode = unifiedTree.getSelectionModel().getSelectedNode();
                            if (selectedNode instanceof Ext.tree.TreeNode) {
                                selectedNode.getOwnerTree().suspendEvents();
                                selectedNode.unselect();
                                selectedNode.getOwnerTree().resumeEvents();
                            }
                        }
                    });
                }
            });
        }
    };
};