﻿function AddDropItem(drop, areaItem, selectValue)
{
	RemoveDropItem(drop);
	var obj = $(drop);
	var hasSelect = false;
	var areaItems = areaItem.selectNodes("item");
	for(var i = 0; i < areaItems.length; i++)
	{
		var areaId = getDOMAtt(areaItems[i], "areaId");
		var areaName = getDOMAtt(areaItems[i], "areaName");
		obj.options[obj.options.length] = new Option(areaName, areaId);
		if(selectValue == areaId)
		{
			obj.options[obj.options.length-1].selected = true;
			hasSelect = true;
		}
	}
	obj.options.add(new Option("请选择!", "0"), 0);
	if(!hasSelect)
		obj.options[0].selected = true;
}
function RemoveDropItem(drop)
{
	var obj = $(drop);
	for(var i = obj.options.length - 1 ; i > -1; i--)
	{
		obj.options.remove(i);
	}
}
function findNode(rootNode, value)
{
	if(rootNode.id == value)
		return rootNode;
	if(rootNode.count > 0)
	{
		for(var key in rootNode.Items)
		{
			var node = rootNode.Items[key];
			if(node.id == value)
				return node;
			if(node.count > 0)
				return findNode(node, value);
		}
	}
}
var p960Areas = createXmlDocument(sitePath + "data/areas.xml");
function AreaList(_panelId, _receiveId)
{
	var selfObj			=	this;
	this.extend         =   true;
	this.panel			=	$(_panelId);
	this.receive		=	$(_receiveId);
	this.selectValue	=	this.receive.value;
	this.xmlDoc			=	p960Areas;
	this.getNodeById = function(id){
		return selfObj.xmlDoc.selectSingleNode("//item[@areaId='" + id + "']");
	};
	this.create			=	function(){
		var obj;
		if(selfObj.selectValue == 0)
			obj = selfObj.xmlDoc.documentElement;
		else
			obj = this.getNodeById(selfObj.selectValue);
		if(!obj)return;
		var parents = getNodePath(obj);
		if(parents.length == 1)
			parents[parents.length] = selfObj.xmlDoc.documentElement;
		for(var i = parents.length-1; i > 0  ; i--)
		{
			this.createChilds(parents[i], getDOMAtt(parents[i-1], "areaId"));
		}
	}
	this.createChilds	=	function(areaItem, selectValue){
		var depth = getNodeDepth(areaItem);
		var node = $(selfObj.panel.id + "_" + depth);
		if(selfObj.extend && !node)
		{
			node = document.createElement("select");
			addEvent(node, "change", selfObj.change, false);
			node.id = selfObj.panel.id + "_" + depth;
			selfObj.panel.appendChild(node);
		}
		if(node)
		{
			AddDropItem(node, areaItem, selectValue);
		}
	}
	this.change			=	function()
	{
		var oEvent = window.event ? window.event : event;
		if(oEvent.srcElement.value == 0)return;
		selfObj.receive.value = oEvent.srcElement.value;
		var node = selfObj.getNodeById(oEvent.srcElement.value);
		var depth = getNodeDepth(node);
		var m = depth;
		while($(selfObj.panel.id + "_" + m))
		{
		    $(selfObj.panel.id + "_" + m).removeNode(true);
		    m++;
		}
		if(node.selectNodes("item").length > 0)
		    selfObj.createChilds(node);
	}
}
