function CountryProvinceCityCounty(xml, country, province, city, county, txtProvince, txtCity, optionProvince, optionCity, address)
{
  this.Country_Control = country;         //定义国家下拉选择控件
  this.Province_Control = province;       //定义省下拉选择控件
  this.City_Control = city;               //定义市下拉选择控件
  this.County_Control = county;           //定义县下拉选择控件
  this.TxtProvince_Control = txtProvince; //定义省文本框
  this.TxtCity_Control = txtCity;         //定义市文本框
  this.OptionProvince = optionProvince;		//定义省文本框前提示文字
  this.OptionCity = optionCity;						//定义市文本框前提示文字
  
  this.Address_Control = address;
  this.InitSelectControl = InitSelectControl;
  
  this.FillCountry = FillCountry;     //填充国家下拉选择控件
  this.FillProvince = FillProvince; //填充省下拉选择控件
  this.FillCity = FillCity;         //填充市下拉选择控件
  this.FillCounty = FillCounty;     //填充县下拉选择控件
  this.FillAddress = FillAddress;
  
  this.HasError = false;
  this.ErrorMessage = "";
  
  var Xml = new ActiveXObject("Microsoft.XMLDOM");
  Xml.async = false;
  Xml.load(xml);
  
  if (Xml.parseError.errorCode != 0)
  {
    this.HasError = true;
    this.ErrorMessage = Xml.parseError.reason;
  }
  else
  {
    this.XmlRoot = Xml.documentElement;
  }
}

//初始化控件
 function InitSelectControl(controlID, initValue)
{
        for (var i = 0; i < controlID.options.length; i++)
        {
          if (controlID.options[i].value == initValue)
          {
            controlID.options[i].selected = true;
            break;
          }
        }
 }

//填充地址栏
function FillAddress()
{
	var address = "";
	var countryName = this.Country_Control.options[this.Country_Control.selectedIndex].text;
	var provinceName = this.Province_Control.options[this.Province_Control.selectedIndex].text;
	var cityName = this.City_Control.options[this.City_Control.selectedIndex].text;
	var countyName = this.County_Control.options[this.County_Control.selectedIndex].text;
	
	var country = this.Country_Control.options[this.Country_Control.selectedIndex].value;
	var province = this.Province_Control.options[this.Province_Control.selectedIndex].value;
	var city = this.City_Control.options[this.City_Control.selectedIndex].value;
	var county = this.County_Control.options[this.County_Control.selectedIndex].value;
	
	//address += countryName;
	if(province!="")
	{
		switch(provinceName)
		{
			case "北京":
			case "上海":
			case "天津":
			case "重庆":
				address += provinceName + "市";
				break;
			default:
				address += provinceName + "省";
		}
	}
	if(city!="")
	{
		address += cityName + "市";
	}

	if(county!="" && countyName.indexOf(cityName) == -1)
	{
		address += countyName;
	}
	this.Address_Control.value = address;
}

//填充国家下拉列表框控件
function FillCountry()
{
  if (this.HasError == true)
  {
    alert(this.ErrorMessage);
  }
  else
  {
	//清除列表框里的结果
	this.Country_Control.options.length = 0;
	  
	var allCountry = this.XmlRoot.selectNodes("country");
	  
	if (allCountry == null || allCountry.length < 1)
	{
	}
	else
    {
		for (var i=0; i<allCountry.length; i++)
		{
			var selOption = document.createElement('OPTION');
			selOption.text = allCountry[i].getAttribute("name");
			selOption.value = allCountry[i].getAttribute("ID");
			this.Country_Control.options.add(selOption);
		}
		  
		_AddSelectOption(this.Country_Control, "香港", "香港", 1);
		_AddSelectOption(this.Country_Control, "澳门", "澳门", 2);
		_AddSelectOption(this.Country_Control, "台湾", "台湾", 3);
		  
		this.FillProvince();
		this.FillCity();
		this.FillCounty();
	}
	this.FillAddress();
  }
}

//向指定下拉列表框控件添加项目
function _AddSelectOption(sel, sText, sValue, iPosition)
{
  var selOption = document.createElement("OPTION");
  selOption.text = sText;
  selOption.value = sValue;
  sel.options.add(selOption, iPosition);
}

//填充省下拉列表框控件
function FillProvince()
{
  if (this.HasError == true || this.Country_Control.options.length < 1)
  {
    alert(this.ErrorMessage);
  }
  else
  {
	//清除列表框里的结果
	this.Province_Control.options.length = 1;
	this.City_Control.options.length = 1;
	this.County_Control.options.length = 1;
	  
	var country = this.Country_Control.options[this.Country_Control.selectedIndex].text;
	var countryTemp = country;
	
	
	  
	switch (country)
	{
		case "香港":
		case "澳门":
		case "台湾":
		country = "中国";
		this.Province_Control.style.display = "none";
		this.TxtProvince_Control.style.display = "none";
		this.OptionProvince.style.display = "none";
		this.City_Control.style.display = "none";
		this.TxtCity_Control.style.display = "";
		this.OptionCity.style.display = "";
		this.County_Control.style.display = "none";
		break;
		default:
		this.Province_Control.style.display = "";
		this.TxtProvince_Control.style.display = "none";
		this.OptionProvince.style.display = "none";
		this.City_Control.style.display = "";
		this.TxtCity_Control.style.display = "none";
		this.OptionCity.style.display = "none";
		this.County_Control.style.display = "";
		break;
	}

	var country = this.Country_Control.options[this.Country_Control.selectedIndex].value;
	var param = "country[@ID=\"" + country + "\"]/province";
	var allProvince = this.XmlRoot.selectNodes(param);
	
	if ( (allProvince == null) || (allProvince.length < 1) )
	{
  		switch (country)
		{
			case "香港":
			case "澳门":
			case "台湾":
			country = "中国";
			this.Province_Control.style.display = "none";
			this.TxtProvince_Control.style.display = "none";
			this.OptionProvince.style.display = "none";
			this.City_Control.style.display = "none";
			this.TxtCity_Control.style.display = "";
			this.OptionCity.style.display = "";
			this.County_Control.style.display = "none";
		      
			break;
			default:
			this.Province_Control.style.display = "none";
			this.TxtProvince_Control.style.display = "";
			this.OptionProvince.style.display = "";
			this.City_Control.style.display = "none";
			this.TxtCity_Control.style.display = "";
			this.OptionCity.style.display = "";
			this.County_Control.style.display = "none";
		    
			break;
		}  	
	    this.FillAddress();
		return;
	}

	for (var i=0; i<allProvince.length; i++)
	{
		var selOption = document.createElement("OPTION");
		selOption.value = allProvince[i].getAttribute("ID");
		selOption.text = allProvince[i].getAttribute("name");
		this.Province_Control.options.add(selOption);
	}
	  
	if ((countryTemp == "香港") || (countryTemp == "澳门") || (countryTemp == "台湾"))
	{
			for (var i = 0; i<this.Province_Control.options.length; i++)
			{
			if (this.Province_Control.options[i].value == countryTemp)
			{
				this.Province_Control.selectedIndex = i;
			}
			}
	}
	this.FillCity();
	this.FillCounty();
  }
  this.FillAddress();
}

//填充市下拉列表框控件
function FillCity()
{
  if (this.HasError == true)
  {
    alert(this.ErrorMessage);
  }
  else
  {
	//清除列表框里的结果
	 this.City_Control.options.length = 1;
	 this.County_Control.options.length = 1;
	  
	if (this.Province_Control.options.length < 2 || this.Country_Control.options.length < 1)
	{
	}
	else
	{
	  var province = this.Province_Control.options[this.Province_Control.selectedIndex].text;
	  if (province == "香港" || province == "澳门" || province == "台湾")
	  {
	  }
	  else
	  {
	    var country = this.Country_Control.options[this.Country_Control.selectedIndex].value;
		var countryName = this.Country_Control.options[this.Country_Control.selectedIndex].text;
		var province = this.Province_Control.options[this.Province_Control.selectedIndex].value;
		var param = "country[@ID=\"" + country + "\"]/province[@ID=\"" + province + "\"]/city";
		var allCity = this.XmlRoot.selectNodes(param);
		if(countryName == "中国" && allCity.length<1)
		{
			this.Province_Control.style.display = "";
  			this.OptionProvince.style.display = "none";
  			this.TxtProvince_Control.style.display = "none";  	
			this.City_Control.style.display = "";    
			this.TxtCity_Control.style.display = "none";
			this.OptionCity.style.display = "none";    
			this.County_Control.style.display = "";
		}
		else
		{
			if ( (allCity == null) || (allCity.length < 2) )
			{
				if(countryName == "中国")
				{
					this.Province_Control.style.display = "";
					this.OptionProvince.style.display = "none";
					this.TxtProvince_Control.style.display = "none";  	
					this.City_Control.style.display = "none";    
					this.TxtCity_Control.style.display = "none";
					this.OptionCity.style.display = "none";    
					this.County_Control.style.display = "none";
				}
				else
				{
					this.Province_Control.style.display = "";
					this.OptionProvince.style.display = "";
					this.TxtProvince_Control.style.display = "none";  	
					this.City_Control.style.display = "none";    
					this.TxtCity_Control.style.display = "";
					this.OptionCity.style.display = "";    
					this.County_Control.style.display = "none";
				}
			}
			else
			{
				this.Province_Control.style.display = "";
				this.OptionProvince.style.display = "none";
				this.TxtProvince_Control.style.display = "none";  	
				this.City_Control.style.display = "";    
				this.TxtCity_Control.style.display = "none";
				this.OptionCity.style.display = "none";
				this.County_Control.style.display = "";
				for (var i=0; i<allCity.length; i++)
				{
					var selOption = document.createElement("OPTION");
					selOption.value = allCity[i].getAttribute("ID");
					selOption.text = allCity[i].getAttribute("name");
					this.City_Control.options.add(selOption);
				}
			  
				this.FillCounty();
			}
		}
	  }	  
	}
	this.FillAddress();
  }
}

//填充县下拉列表框控件
function FillCounty()
{
  if (this.HasError == true)
  {
    alert(this.ErrorMessage);
  }
  else
  {
    //清除列表框
	this.County_Control.options.length = 1;
	  
	if ( this.Country_Control.options.length < 1 || this.Province_Control.options.length < 2 || this.City_Control.options.length < 2)
	{
	}
	else
	{
	  var country = this.Country_Control.options[this.Country_Control.selectedIndex].value;
	  var countryName = this.Country_Control.options[this.Country_Control.selectedIndex].text;
	  var province = this.Province_Control.options[this.Province_Control.selectedIndex].value;
	  var city = this.City_Control.options[this.City_Control.selectedIndex].value;
	  
	  var param = "country[@ID=\"" + country + "\"]/province[@ID=\"" + province + "\"]/city[@ID=\"" + city + "\"]/county";
	  var allCounty = this.XmlRoot.selectNodes(param);
	  if(countryName == "中国" && allCounty.length<1)
	  {
			this.Province_Control.style.display = "";
  			this.OptionProvince.style.display = "none";
  			this.TxtProvince_Control.style.display = "none";  	
			this.City_Control.style.display = "";    
			this.TxtCity_Control.style.display = "none";
			this.OptionCity.style.display = "none";    
			this.County_Control.style.display = "";
	   }
	   else
	   {
			if (allCounty == null || allCounty.length < 2)
			{
				if(countryName == "中国")
				{
					this.Province_Control.style.display = "";
					this.OptionProvince.style.display = "none";
					this.TxtProvince_Control.style.display = "none";  	
					this.City_Control.style.display = "";    
					this.TxtCity_Control.style.display = "none";
					this.OptionCity.style.display = "none";    
					this.County_Control.style.display = "none";
				}
				else
				{
					this.Province_Control.style.display = "";
					this.OptionProvince.style.display = "";
					this.TxtProvince_Control.style.display = "none";  	
					this.City_Control.style.display = "none";    
					this.TxtCity_Control.style.display = "";
					this.OptionCity.style.display = "";    
					this.County_Control.style.display = "none";
				}
				this.FillAddress();
				return;
		  }
		   else
			{
			this.Province_Control.style.display = "";
			this.OptionProvince.style.display = "none";
			this.TxtProvince_Control.style.display = "none";  	
			this.City_Control.style.display = "";    
			this.TxtCity_Control.style.display = "none";
			this.OptionCity.style.display = "none";
			this.County_Control.style.display = "";
			for (var i=0; i<allCounty.length; i++)
			{
			  var selOption = document.createElement("OPTION");
			  selOption.value = allCounty[i].getAttribute("ID");
			  selOption.text = allCounty[i].text;
			  this.County_Control.options.add(selOption);
			}
		  }
	  }
	}
	this.FillAddress();
  }  
}