text: /*
   Ajax 三级省市联动
   http://code.ciaoca.cn/
   日期：2012-7-18
   
   settings 参数说明
   -----
   url:省市数据josn文件路径
   prov:默认省份
   city:默认城市
   dist:默认地区（县）
   nodata:无数据状态
   required:必选项
   ------------------------------ */
  (function($) {
      $.fn.citySelect = function(settings) {
          if (this.length < 1) {
              return;
          }
          ;
  
          // 默认值
          settings = $.extend({
              url: "/public/admin/js/custom/city.min.js",
              prov: null,
              city: null,
              dist: null,
              nodata: null,
              required: true
          }, settings);
  
          var box_obj = this;
          var prov_obj = box_obj.find(".prov");
          var city_obj = box_obj.find(".city");
          var dist_obj = box_obj.find(".dist");
          var prov_val = settings.prov;
          var city_val = settings.city;
          var dist_val = settings.dist;
          var select_prehtml = (settings.required) ? "" : "<option value=''>请选择</option>";
          var city_json;
  
          // 赋值市级函数
          var cityStart = function() {
              var prov_id = prov_obj.get(0).selectedIndex;
              if (!settings.required) {
                  prov_id--;
              }
              ;
              city_obj.empty().attr("disabled", true);
              dist_obj.empty().attr("disabled", true);
  
              if (prov_id < 0 || typeof (city_json.citylist[prov_id].c) == "undefined") {
                  if (settings.nodata == "none") {
                      city_obj.css("display", "none");
                      dist_obj.css("display", "none");
                  } else if (settings.nodata == "hidden") {
                      city_obj.css("visibility", "hidden");
                      dist_obj.css("visibility", "hidden");
                  }
                  ;
                  return;
              }
              ;
  
              // 遍历赋值市级下拉列表
              temp_html = select_prehtml;
              $.each(city_json.citylist[prov_id].c, function(i, city) {
                  temp_html += "<option value='" + city.n + "'>" + city.n + "</option>";
              });
              city_obj.html(temp_html).attr("disabled", false).css({"display": "", "visibility": ""});
              distStart();
          };
  
          // 赋值地区（县）函数
          var distStart = function() {
              var prov_id = prov_obj.get(0).selectedIndex;
              var city_id = city_obj.get(0).selectedIndex;
              if (!settings.required) {
                  prov_id--;
                  city_id--;
              }
              ;
              dist_obj.empty().attr("disabled", true);
  
              if (prov_id < 0 || city_id < 0 || typeof (city_json.citylist[prov_id].c[city_id].a) == "undefined") {
                  if (settings.nodata == "none") {
                      dist_obj.css("display", "none");
                  } else if (settings.nodata == "hidden") {
                      dist_obj.css("visibility", "hidden");
                  }
                  ;
                  return;
              }
              ;
  
              // 遍历赋值市级下拉列表
              temp_html = select_prehtml;
              $.each(city_json.citylist[prov_id].c[city_id].a, function(i, dist) {
                  temp_html += "<option value='" + dist.s + "'>" + dist.s + "</option>";
              });
              dist_obj.html(temp_html).attr("disabled", false).css({"display": "", "visibility": ""});
          };
  
          var init = function() {
              // 遍历赋值省份下拉列表
              temp_html = select_prehtml;
              $.each(city_json.citylist, function(i, prov) {
                  temp_html += "<option value='" + prov.p + "'>" + prov.p + "</option>";
              });
              prov_obj.html(temp_html);
  
              // 若有传入省份与市级的值，则选中。（setTimeout为兼容IE6而设置）
              setTimeout(function() {
                  if (settings.prov != null) {
                      prov_obj.val(settings.prov);
                      cityStart();
                      setTimeout(function() {
                          if (settings.city != null) {
                              city_obj.val(settings.city);
                              distStart();
                              setTimeout(function() {
                                  if (settings.dist != null) {
                                      dist_obj.val(settings.dist);
                                  }
                                  ;
                              }, 1);
                          }
                          ;
                      }, 1);
                  }
                  ;
              }, 1);
  
              // 选择省份时发生事件
              prov_obj.bind("change", function() {
                  cityStart();
              });
  
              // 选择市级时发生事件
              city_obj.bind("change", function() {
                  distStart();
              });
          };
  
          // 设置省市json数据
          if (typeof (settings.url) == "string") {
              $.getJSON(settings.url, function(json) {
                  city_json = json;
                  init();
              });
          } else {
              city_json = settings.url;
              init();
          }
          ;
      };
  })(jQuery);