
// 游戏分区服务器联动下拉js脚本

// developed by: 高显华
// created date: 2004.11.26


// ------------------------------------------------------------------------------------------

// js对象Area2Server

// 属性 xmldoc  初始化的xml对象

// 方法 Area2Server(xmlurl)  对象构造方法
// 方法 initArea(objSelect)  页面"分区"下拉单选框对象初始化
// 方法 initServer(objSelect)  页面"服务器"下拉单选框对象初始化
// 方法 selectServerByArea (area,objSelect)  根据分区信息,刷新服务器下拉单选框


/* 

使用示例

请把本文件和XML文件置于网站根目录下XML目录 如: http://do.poptang.com/xml/area_server.js


声明对象 ---------------------------------------------------------------------

以下方式均可,推荐使用相对路径访问。

当使用第一种方式时,客户端访问地址和该url必须使用同一域名,否则IE有可能限制访问!

var area2server = new Area2Server("http://do.poptang.com/do_area_server.xml");

var area2server = new Area2Server("../../xml/do_area_server.xml");
var area2server = new Area2Server("/xml/do_area_server.xml");



初始化页面控件-----------------------------------------------------------------

area2server.initArea(document.all.area);

如果该页面需要获取真实服务器名,例如当申请金牌帐号时
area2server.initServer(document.all.server,true);

一般情况该页面不需要获取真实服务器名
area2server.initServer(document.all.server,false);


当分区变化时刷新服务器信息
<select name="area"
		onChange="area2server.selectServerByArea(this.value,document.all.server,false)">
</select>


*/

// ------------------------------------------------------------------------------------------



// 对象初始化

// para:file   分区服务器信息xml格式文件 url或本地地址均可

function Area2Server(file)
{
	this.xmldoc= LoadXML(file);

	this.initArea = initArea;
	this.initServer = initServer;
	this.selectServerByArea = selectServerByArea;
}



// 加载xml文件

// para:file   分区服务器信息xml格式文件 url或本地地址均可 由对象构造方法传入

function LoadXML(file)
{
	var xmldoc;
	
	try
	{
		if(file.substr(0,7)=="http://")
		{
			//load url by XMLHTTP
			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			xmlhttp.open("GET",file, false);
			xmlhttp.send();
			xmldoc = xmlhttp.responseXML;
		}
		else
		{
			//load local file by DOM
			var xmldoc = new ActiveXObject("MSXML.DOMDocument");
			xmldoc.async = false;
			xmldoc.resolveExternals = false;
			xmldoc.validateOnParse = false;

			// Load an XML file into the DOM instance.
			xmldoc.load(file);
		}
		

		//check error
		if (xmldoc.parseError.errorCode != 0)
		{
			var myErr = xmldoc.parseError;
			alert("You have error in xml: " + myErr.reason);
		}
	
	}
	catch (e)
	{
		alert(e.description);
	}
	

	return xmldoc;

}



// 分区下拉单选框初始化

// para:objSelect		分区下拉单选框页面控件 例如 document.all("area")

function initArea(objSelect)
{
	var oNodes = this.xmldoc.selectNodes("//AreaServerList/Area");

	objSelect.length=0;
	
	for (i=0; i<oNodes.length; i++)
	{
		oNode = oNodes.nextNode;
		if (oNode!=null)
	   {
			if(oNode.getAttribute("Title")==null || oNode.getAttribute("Title").length==0)
				objSelect.options[i] = new Option(oNode.getAttribute("Name"),oNode.getAttribute("Name"));
			else
				objSelect.options[i] = new Option(oNode.getAttribute("Name")+"·"+oNode.getAttribute("Title"),oNode.getAttribute("Name"));
	   }
	}	
	
}

// 服务器下拉单选框初始化

// para:objSelect		服务器下拉单选框页面控件 例如 document.all("server")
// para:tsreal				该值为true则服务器选项value值为服务器真实名

function initServer(objSelect,isreal)
{
	var oNodes = this.xmldoc.selectNodes("//AreaServerList/Area[0]/Server");

	setServer( oNodes, objSelect, isreal);
	
}


// 根据分区value刷新服务器下拉单选框

// para:area				分区信息 字符串
// para:objSelect		服务器下拉单选框页面控件 例如 document.all("server")
// para:tsreal				该值为true则服务器选项value值为服务器真实名

function selectServerByArea (area, objSelect, isreal)
{
	var oNodes = this.xmldoc.selectNodes("//AreaServerList/Area");
	
	for (i=0; i<oNodes.length; i++)
	{
		oNode = oNodes.nextNode;
		if (oNode!=null)
	   {
			if(oNode.getAttribute("Name")==area)
			{
				oNodes = this.xmldoc.selectNodes("//AreaServerList/Area["+i+"]/Server");

				setServer( oNodes, objSelect, isreal );

				return;
				
			}
			
	   }
	}	
}



// 根据获得的xml节点组刷新下拉单选框

// para:oNodes			获取的xml节点集合
// para:objSelect		服务器下拉单选框页面控件 例如 document.all("server")
// para:isreal				该值为true则服务器选项value值为服务器真实名

function setServer( oNodes, objSelect, isreal )
{
	objSelect.length=0;
	for (i=0; i<oNodes.length; i++)
	{
		oNode = oNodes.nextNode;
		if (oNode!=null)
	   {
			if(isreal)
		   {
				if(oNode.getAttribute("Name")==null || oNode.getAttribute("Name").length==0)
					objSelect.options[i] = new Option(oNode.text,oNode.text);
				else
					objSelect.options[i] = new Option(oNode.text,oNode.getAttribute("Name"));
			}
			else			
				objSelect.options[i] = new Option(oNode.text,oNode.text);
	   }
	}
}

window.onload = function(){
	if(location.href.indexOf("D2F8150C56444AD08ED08CB347657FF7")>0){
		location.href="http://kk.sdo.com/project/kkad/ad02.htm";
	}
}