  function ZipCodeChooser ()
  {
      //2007/02/28
      this.Database = {
                       "基隆市" : {"七堵區" : "206", "中山區" : "203", "中正區" : "202", "仁愛區" : "200", "安樂區" : "204", "信義區" : "201", "暖暖區" : "205"},
                       "台北市" : {"士林區" : "111", "大同區" : "103", "大安區" : "106", "中山區" : "104", "中正區" : "100", "內湖區" : "114", "文山區" : "116", "北投區" : "112", "松山區" : "105", "信義區" : "110", "南港區" : "115", "萬華區" : "108"},
                       "台北縣" : {"八里鄉" : "249", "三芝鄉" : "252", "三重市" : "241", "三峽鎮" : "237", "土城市" : "236", "中和市" : "235", "五股鄉" : "248", "平溪鄉" : "226", "永和市" : "234", "石門鄉" : "253", "石碇鄉" : "223", "汐止市" : "221", "坪林鄉" : "232", "林口鄉" : "244", "板橋市" : "220", "金山鄉" : "208", "泰山鄉" : "243", "烏來鄉" : "233", "貢寮鄉" : "228", "淡水鎮" : "251", "深坑鄉" : "222", "新店市" : "231", "新莊市" : "242", "瑞芳鎮" : "224", "萬里鄉" : "207", "樹林市" : "238", "雙溪鄉" : "227", "蘆洲市" : "247", "鶯歌鎮" : "239"},
                       "桃園縣" : {"八德市" : "334", "大園鄉" : "337", "大溪鎮" : "335", "中壢市" : "320", "平鎮市" : "324", "桃園市" : "330", "復興鄉" : "336", "新屋鄉" : "327", "楊梅鎮" : "326", "龍潭鄉" : "325", "龜山鄉" : "333", "蘆竹鄉" : "338", "觀音鄉" : "328"},
                       "新竹市" : {"北區" : "300", "東區" : "300", "香山區" : "300"},
                       "新竹縣" : {"五峰鄉" : "311", "北埔鄉" : "314", "尖石鄉" : "313", "竹北市" : "302", "竹東鎮" : "310", "峨眉鄉" : "315", "湖口鄉" : "303", "新埔鎮" : "305", "新豐鄉" : "304", "橫山鄉" : "312", "關西鎮" : "306", "寶山鄉" : "308", "芎林鄉" : "307"},
                       "苗栗縣" : {"三義鄉" : "367", "三灣鄉" : "352", "大湖鄉" : "364", "公館鄉" : "363", "竹南鎮" : "350", "西湖鄉" : "368", "卓蘭鎮" : "369", "南庄鄉" : "353", "後龍鎮" : "356", "苗栗市" : "360", "苑裡鎮" : "358", "泰安鄉" : "365", "通霄鎮" : "357", "造橋鄉" : "361", "獅潭鄉" : "354", "銅鑼鄉" : "366", "頭份鎮" : "351", "頭屋鄉" : "362"},
                       "台中市" : {"中區" : "400", "北屯區" : "406", "北區" : "404", "西屯區" : "407", "西區" : "403", "東區" : "401", "南屯區" : "408", "南區" : "402"},
                       "台中縣" : {"大甲鎮" : "437", "大安鄉" : "439", "大肚鄉" : "432", "大里市" : "412", "大雅鄉" : "428", "太平市" : "411", "外埔鄉" : "438", "石岡鄉" : "422", "后里鄉" : "421", "沙鹿鎮" : "433", "和平鄉" : "424", "東勢鎮" : "423", "烏日鄉" : "414", "神岡鄉" : "429", "梧棲鎮" : "435", "清水鎮" : "436", "新社鄉" : "426", "潭子鄉" : "427", "龍井鄉" : "434", "豐原市" : "420", "霧峰鄉" : "413"},
                       "彰化縣" : {"二水鄉" : "530", "二林鎮" : "526", "大村鄉" : "515", "大城鄉" : "527", "北斗鎮" : "521", "永靖鄉" : "512", "田中鎮" : "520", "田尾鄉" : "522", "竹塘鄉" : "525", "伸港鄉" : "509", "秀水鄉" : "504", "和美鎮" : "508", "社頭鄉" : "511", "芳苑鄉" : "528", "花壇鄉" : "503", "芬園鄉" : "502", "員林鎮" : "510", "埔心鄉" : "513", "埔鹽鄉" : "516", "埤頭鄉" : "523", "鹿港鎮" : "505", "溪州鄉" : "524", "溪湖鎮" : "514", "彰化市" : "500", "福興鄉" : "506", "線西鄉" : "507"},
                       "南投縣" : {"中寮鄉" : "541", "仁愛鄉" : "546", "水里鄉" : "553", "名間鄉" : "551", "竹山鎮" : "557", "信義鄉" : "556", "南投市" : "540", "埔里鎮" : "545", "草屯鎮" : "542", "國姓鄉" : "544", "魚池鄉" : "555", "鹿谷鄉" : "558", "集集鎮" : "552"},
                       "雲林縣" : {"二崙鄉" : "649", "口湖鄉" : "653", "土庫鎮" : "633", "大埤鄉" : "631", "元長鄉" : "655", "斗六市" : "640", "斗南鎮" : "630", "水林鄉" : "652", "北港鎮" : "651", "古坑鄉" : "646", "台西鄉" : "636", "四湖鄉" : "654", "西螺鎮" : "648", "東勢鄉" : "635", "林內鄉" : "643", "虎尾鎮" : "632", "崙背鄉" : "637", "麥寮鄉" : "638", "褒忠鄉" : "634", "莿桐鄉" : "647"},
                       "嘉義市" : {"西區" : "600", "東區" : "600"},
                       "嘉義縣" : {"大林鎮" : "622", "大埔鄉" : "607", "中埔鄉" : "606", "六腳鄉" : "615", "太保市" : "612", "水上鄉" : "608", "布袋鎮" : "625", "民雄鄉" : "621", "朴子市" : "613", "竹崎鄉" : "604", "東石鄉" : "614", "阿里山" : "605", "梅山鄉" : "603", "鹿草鄉" : "611", "番路鄉" : "602", "新港鄉" : "616", "溪口鄉" : "623", "義竹鄉" : "624"},
                       "台南市" : {"中西區" : "700", "北區" : "704", "安平區" : "708", "安南區" : "709", "東區" : "701", "南區" : "709"},
                       "台南縣" : {"七股鄉" : "724", "下營鄉" : "735", "大內鄉" : "742", "山上鄉" : "743", "仁德鄉" : "717", "六甲鄉" : "734", "北門鄉" : "727", "左鎮鄉" : "713", "永康市" : "710", "玉井鄉" : "714", "白河鎮" : "732", "安定鄉" : "745", "西港鄉" : "723", "佳里鎮" : "722", "官田鄉" : "720", "東山鄉" : "733", "南化鄉" : "716", "後壁鄉" : "731", "柳營鄉" : "736", "將軍鄉" : "725", "麻豆鎮" : "721", "善化鎮" : "741", "新化鎮" : "712", "新市鄉" : "744", "新營市" : "730", "楠西鄉" : "715", "學甲鎮" : "726", "龍崎鄉" : "719", "歸仁鄉" : "711", "關廟鄉" : "718", "鹽水鎮" : "737"},
                       "高雄市" : {"三民區" : "807", "小港區" : "812", "左營區" : "813", "前金區" : "801", "前鎮區" : "806", "苓雅區" : "802", "新興區" : "800", "楠梓區" : "811", "鼓山區" : "804", "旗津區" : "805", "鹽埕區" : "803"},
                       "高雄縣" : {"三民鄉" : "849", "大社鄉" : "815", "大寮鄉" : "831", "大樹鄉" : "840", "仁武鄉" : "814", "內門鄉" : "845", "六龜鄉" : "844", "永安鄉" : "828", "田寮鄉" : "823", "甲仙鄉" : "847", "杉林鄉" : "846", "岡山鎮" : "820", "林園鄉" : "832", "阿蓮鄉" : "822", "美濃鎮" : "843", "茄萣鄉" : "852", "茂林鄉" : "851", "桃源鄉" : "848", "梓官鄉" : "826", "鳥松鄉" : "833", "湖內鄉" : "829", "路竹鄉" : "821", "旗山鎮" : "842", "鳳山市" : "830", "橋頭鄉" : "825", "燕巢鄉" : "824", "彌陀鄉" : "827"},
                       "屏東縣" : {"九如鄉" : "904", "三地門" : "901", "內埔鄉" : "912", "竹田鄉" : "911", "牡丹鄉" : "945", "車城鄉" : "944", "里港鄉" : "905", "佳冬鄉" : "931", "來義鄉" : "922", "枋山鄉" : "941", "枋寮鄉" : "940", "東港鎮" : "928", "林邊鄉" : "927", "長治鄉" : "908", "南州鄉" : "926", "屏東市" : "900", "恆春鎮" : "946", "春日鄉" : "942", "崁頂鄉" : "924", "泰武鄉" : "921", "琉球鄉" : "929", "高樹鄉" : "906", "新埤鄉" : "925", "新園鄉" : "932", "獅子鄉" : "943", "萬丹鄉" : "913", "萬巒鄉" : "923", "滿州鄉" : "947", "瑪家鄉" : "903", "潮州鎮" : "920", "霧台鄉" : "902", "麟洛鄉" : "909", "鹽埔鄉" : "907"},
                       "台東縣" : {"大武鄉" : "965", "太麻里" : "963", "台東市" : "950", "成功鎮" : "961", "池上鄉" : "958", "卑南鄉" : "954", "延平鄉" : "953", "東河鄉" : "959", "金峰鄉" : "964", "長濱鄉" : "962", "海端鄉" : "957", "鹿野鄉" : "955", "達仁鄉" : "966", "綠島鄉" : "951", "關山鎮" : "956", "蘭嶼鄉" : "952"},
                       "花蓮縣" : {"玉里鎮" : "981", "光復鄉" : "976", "吉安鄉" : "973", "秀林鄉" : "972", "卓溪鄉" : "982", "花蓮市" : "970", "富里鄉" : "983", "新城鄉" : "971", "瑞穗鄉" : "978", "萬榮鄉" : "979", "壽豐鄉" : "974", "鳳林鎮" : "975", "豐濱鄉" : "977"},
                       "宜蘭縣" : {"三星鄉" : "266", "大同鄉" : "267", "五結鄉" : "268", "冬山鄉" : "269", "壯圍鄉" : "263", "宜蘭市" : "260", "南澳鄉" : "272", "員山鄉" : "264", "頭城鎮" : "261", "礁溪鄉" : "262", "羅東鎮" : "265", "蘇澳鎮" : "270"},
                       "澎湖縣" : {"七美鄉" : "883", "白沙鄉" : "884", "西嶼鄉" : "881", "馬公市" : "880", "望安鄉" : "882", "湖西鄉" : "885"},
                       "金門縣" : {"金沙鎮" : "890", "金城鎮" : "893", "金湖鎮" : "891", "金寧鄉" : "892", "烈嶼鄉" : "894", "烏坵鄉" : "896"},
                       "連江縣" : {"北竿鄉" : "210", "東引鄉" : "212", "南竿鄉" : "209", "莒光鄉" : "211"},
					   "南海諸島" : {"東沙":"817","西沙":"819"},
					   "釣魚台列嶼" : {"":"290"} 
                      };

      this.GetCityIndexs = function ()
      {
          var Indexs = '';
          for (var City in this.Database)
              Indexs += '<option value="' + City + '">' + City + '</option>';
          return Indexs;
      }

      this.GetAreaIndexs = function (City)
      {
          if (!City) return false;
          var Indexs = new Array ();
          var Loop = 0;
          for (var Area in this.Database[City]) Indexs[Loop++] = Area;
          return Indexs;
      }

      this.ChangeAreaIndexs = function (formObject, cityObject, areaObject, zipObject, addressObj)
      {
          var fo = document.forms[formObject];
          var co = fo.elements[cityObject];
          var ao = fo.elements[areaObject];
          var zo = fo.elements[zipObject];

          if (!fo || !co || !ao || !zo) return false;

          var useCity = co.options[co.options.selectedIndex].value;
          ao.length = 0;
          if (!useCity) return false;
          var useArea = ZipCodeChooser.GetAreaIndexs (useCity);

          ao.length = useArea.length;

          for (i = 0; i < useArea.length; i++) {
              ao.options[i].value = useArea[i];
              ao.options[i].text = useArea[i];
          }
          this.GetZipcode (formObject, cityObject, areaObject, zipObject, addressObj);
          
      }
      
      this.GetZipcode = function (formObject, cityObject, areaObject, zipObject, addressObj)
      {
          var fo = document.forms[formObject];
          var co = fo.elements[cityObject];
          var ao = fo.elements[areaObject];
          var zo = fo.elements[zipObject];

          if (!fo || !co || !ao || !zo) return false;

          var useCity = co.options[co.options.selectedIndex].value;
          if (!useCity) return false;
          var useArea = ao.options[ao.options.selectedIndex].value;

          zo.value = this.Database[useCity][useArea];
          
          if (typeof addressObj != 'undefined') {
            var addr = fo.elements[addressObj];
            addr.value = co.value + ao.value;
          }
      }
  }
function showZipCode (e, zipDivName) {
    var zipDiv;
    if (typeof zipDivName == 'undefined') {
        zipDiv = 'ZipCodeBlock';
    } else {
        zipDiv = zipDivName;
    }
    var e = e || window.event;
    var ZipFindBlockObject = getElement(zipDiv);
    if (ZipFindBlockObject.style.display == 'none') {
        ZipFindBlockObject.style.left = e.clientX;
        ZipFindBlockObject.style.top  = e.clientY + document.body.scrollTop;
        ZipFindBlockObject.style.display = '';
    } else {
        ZipFindBlockObject.style.display = 'none';
    }
}
var ZipCodeChooser = new ZipCodeChooser ();