// DefaultTreePanel
WebGenie.bm.DefaultTreePanel = Ext.extend(Ext.tree.TreePanel,
{
	animate : true,
	autoScroll : true,
	border : false,
	containerScroll : true,
	rootVisible : false,
	dropConfig :
	{
		appendOnly : true
	},

	treeLoaderDataUrl : '',

	initComponent : function()
	{
		var thisObject = this;
		var clusterTreePanel =
		{
			loader : new Ext.tree.TreeLoader(
					{
						dataUrl : this.treeLoaderDataUrl,
						listeners:
						{
							beforeload: function(source, node, callback)
							{
								thisObject.fireEvent('treeBeforeload', thisObject, node, callback);
							},
							load: function(source, node, response)
							{
								thisObject.fireEvent('treeLoad', thisObject, node, response);
							},
							loadexception: function(source, node, response)
							{
								thisObject.fireEvent('treeLoadexception', source, node, response);
							}
						}
					}),
			root : new Ext.tree.AsyncTreeNode(
					{
						text : 'rootNode-' + this.id,
						draggable : false,
						id : 'rootNode-' + this.id
					})
		}
		Ext.apply(this, clusterTreePanel);
		WebGenie.bm.DefaultTreePanel.superclass.initComponent.apply(this, arguments);

//		this.on('startDrag', function(tree, node)
//		{
//			node.oldPosition = node.parentNode.indexOf(node);
//			node.oldNextSibling = node.nextSibling;
//		});
//		this.on('beforemovenode', function(tree, node, oldParent, newParent, index)
//		{
//			LOG.debug("oldParent.id = " + oldParent.id);
//			LOG.debug("newParent.id = " + newParent.id);
//			if (oldParent == newParent)
//			{
//				Ext.MessageBox.alert('錯誤', '不支援改變同一層節點順序的動作');
//				return false;
//			}
//			else
//			{
//				var params = {
//					node: node.id,
//					position: index,
//					delta: (index - node.oldPosition),
//					parentNode: (newParent.id == tree.root.id) ? '' : newParent.id
//				};
//				
//				//var whateverYourUrlIs = "q-";
//				//var url = whateverYourUrlIs + (oldParent == newParent ? 'reorder' : 'reparent');
//				//LOG.debug("url = " + url);
//				Ext.Ajax.request({
//					url: ACTION_clusterTree_moveNode,
//					params: params,
//					success: function (response)
//					{
//						var res = Ext.decode(response.responseText);
//					
//						if(res.success == true)
//						{
//							WebGenie.utility.message.messageBox("搬移節點", "搬移節點成功");
//						}
//						else
//						{
//							Ext.Msg.show({
//								closable: false,
//								title: '搬移節點異常',
//								icon: Ext.Msg.ERROR,
//								msg: res.message,
//								buttons: Ext.Msg.OK
//							});
//							
//							return false;
//						}
//					},
//				
//					failure: function (res) {
//						Ext.Msg.show({
//							closable: false,
//							title: '異常',
//							icon: Ext.Msg.ERROR,
//							msg: '連線異常',
//							buttons: Ext.Msg.OK
//						});
//						
//						return false;
//					}
//				});
//				return true;
//			}
//		});

		this.addEvents(
			'treeBeforeload',
			'treeLoad',
			'treeLoadexception'
		);
	},

	childCheck : function(rootNode, bChecked){
		rootNode.eachChild(
			function(node)
			{
				node.getUI().toggleCheck(bChecked);
				this.childCheck(node, bChecked);
			},
			this
		);
	}
});
Ext.reg('bmDefaultTreePanel', WebGenie.bm.DefaultTreePanel);