
var region = new Object();

region.isAdmin = false;

region.loadRegions = function(parent, type, target)
{
 //alert('type=' + type + '&target=' + target + "&parent=" + parent); 
	new Ajax.Request(region.getFileName(), {
                   method: 'get',
                   parameters: 'type=' + type + '&target=' + target + "&parent=" + parent,
                   onSuccess: region.response});
}

/* *
 * 載入指定的國家下所有的省份
 *
 * @country integer     國家的編號
 * @selName string      列表框的名稱
 */
region.loadProvinces = function(country, selName)
{
  var objName = (typeof selName == "undefined") ? "selProvinces" : selName;

  region.loadRegions(country, 1, objName);
}

/* *
 * 載入指定的省份下所有的城市
 *
 * @province    integer 省份的編號
 * @selName     string  列表框的名稱
 */
region.loadCities = function(province, selName)
{
  var objName = (typeof selName == "undefined") ? "selCities" : selName;

  region.loadRegions(province, 2, objName);
}

/* *
 * 載入指定的城市下的區 / 縣
 *
 * @city    integer     城市的編號
 * @selName string      列表框的名稱
 */
region.loadDistricts = function(city, selName)
{
  var objName = (typeof selName == "undefined") ? "selDistricts" : selName;

  region.loadRegions(city, 3, objName);
}

/* *
 * 處理下拉列表改變的函數
 *
 * @obj     object  下拉列表
 * @type    integer 類型
 * @selName string  目標列表框的名稱
 */
region.changed = function(obj, type, selName)
{
  region.zipcode(obj);
	var parent = obj.options[obj.selectedIndex].value;

  region.loadRegions(parent, type, selName);
}

region.zipcode = function(obj)
{
	var zipcode = obj.options[obj.selectedIndex].getAttribute('zipcode');
	
	if ($('zipcode'))
	{
			if (zipcode != null && zipcode != '')
			{
				$('zipcode').value = zipcode;
			}
	}	
}

region.response = function(result)
{
  var result = result.responseText.evalJSON(true);

  var sel = document.getElementById(result.target);

  sel.length = 1;
  sel.selectedIndex = 0;
  sel.style.display = (result.regions.length == 0 && ! region.isAdmin && result.type + 0 == 3) ? "none" : '';

  if (document.all)
  {
		sel.fireEvent("onchange");
  }
  else
  {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent('change', true, true);
    sel.dispatchEvent(evt);
  }

  if (result.regions)
  {
    for (i = 0; i < result.regions.length; i ++ )
    {
      var opt = document.createElement("OPTION");
      opt.value = result.regions[i].region_id;
      opt.text  = result.regions[i].region_name;
			opt.zipcode  = result.regions[i].region_zipcode;

      sel.options.add(opt);
    }
  }
}

region.getFileName = function()
{
  if (region.isAdmin)
  {
    return "../region.php";
  }
  else
  {
    return "region.php";
  }
}
