// loading js
jQuery("<script type=\"text\/javascript\" src=\"/dwr/interface/GsuSdRegionUtils.js\"><"+"\/scr"+"ipt>").prependTo("head");
jQuery("<script type=\"text\/javascript\" src=\"/components/gsuUtils/gsuSelect.js\"><"+"\/scr"+"ipt>").prependTo("head");
jQuery("<link rel=\"stylesheet\" href=\"/components/button/v1/sliding.css\" type=\"text\/css\" media=\"screen\" \/>").prependTo("head");
// create temp element
var jqmWindowRegion=""
  +"<div class=\"jqmWindow\" id=\"jqmWindowSelectRegion\" style=\"z-index:3001\">"
  +"<input type=\"hidden\" id=\"jqmWindowSelectRegionCurrent\" value=\"\"/>"
  + "<select name=\"regionParent\" id=\"regionParent\" size=\"15\" style=\"height:150px;width:160px;\">"
  + "</select>&nbsp;"
  + "<select name=\"regionChild\" id=\"regionFirstChild\" size=\"15\" style=\"height:150px;width:160px;\">"
  + "</select>&nbsp;"
  + "<select name=\"regionSecondly\"  id=\"regionSecondly\" size=\"15\" style=\"height:150px;width:160px;\">"
  + "</select>"
  + "<br/><br/><ul class=\"blue\"><li><a href=\"javascript:void(0);\" class=\"current refreshRegion\" style=\"display:none\"><span></span>刷新</a></li><li><a href=\"javascript:void(0);\" class=\"current closeRegion\"><span></span>选好了</a></li></ul>"
  + "</div>";
/*
 * 客户端代码使用方法： <br>
 * 1. 嵌入jQuery，嵌入dwr必备js，嵌入jModal: 注意顺序在dwr必备js之后，另外dwr必备js不允许嵌入多次 <br>
 * 2. 在被绑定域(如：id=myregion的输入框)HTML代码的后面，或者window.onload方法中执行: <br>
 * jQuery("#myregion").gsuRegionUtils({<br>
 *   readOnly:false,<br>
 *   border:"solid 2px red",<br>
 *   loadByChain:true<br>
 * }).regionChooser(); <br> 或者
 * 3、绑定一个列表，class均为regions：<br>
 *  jQuery(".ownregion").gsuRegionUtils({
 *    readOnly:true
 *  }).regionChains();
 */
/*
 * GsuRegionUtils 类定义
 */
(function($) {
$.fn.gsuRegionUtils =function(o){
  var p={
    overlay: 50,
    width:100,
    border:"solid 1px gray",
    readOnly : F,
    loadByChain : F,
    modal : F,
    toTop : true,
    overflow : "visible",
    change : F
  };
  return this.each(function(){
    if(this._reg) {
      return HashRegion[this._reg].c=$.extend({},HashRegion[this._reg].c,o);
    }
    sReg++;
    this._reg=sReg;
    $(this).after("<div class=\"gsu_util_region_box gsu_util_region_box"+sReg+"\" style='width:98%'>"
             +"<input type=\"button\" title=\"清空数据\" id=\"gsu_util_region_clear"+sReg+"\" class=\"gsu_util_region_clear\" value=\"×\">"
             +"<input type=\"button\" title=\"选择数据\" id=\"gsu_util_region_chooser"+sReg+"\" class=\"gsu_util_region_chooser\" value=\"…\">"
             +"<div id='gsu_util_region"+sReg+"' class='gsu_util_region gsu_util_region"+sReg+"'/>"
             +"</div>");
    HashRegion[sReg]={
      c:$.extend(p,$.gsuRegionUtils.params,o),
      w:$(this).addClass('regionID'+sReg).css('display','none'),
      sReg:sReg
    };
    $("div.gsu_util_region_box"+sReg).css({width:HashRegion[sReg].c.width,height:"20px","text-indent":"2px","line-height":"20px",border:HashRegion[sReg].c.border,"font-size":"12px",color:"black"});
    if(ie6)$("div.gsu_util_region"+sReg).css({width:HashRegion[sReg].c.width-52,"white-space":"nowrap"});
    else $("div.gsu_util_region"+sReg).css({"white-space":"nowrap","text-overflow":"ellipsis"});
    if(HashRegion[sReg].c.overflow) $("div.gsu_util_region"+sReg).css({"overflow":HashRegion[sReg].c.overflow});
    $("input#gsu_util_region_clear"+sReg).css({float:"right","margin-top":"3px","margin-right":"3px",width:"20px",height:"13px",border:"dotted 1px green",background:"#FFF",color:"red","font-weight":"bold"});
    $("input#gsu_util_region_chooser"+sReg).css({float:"right","margin-top":"3px","margin-right":"3px",width:"20px",height:"13px",border:"dotted 1px green",background:"#FFF","font-weight":"bold"});
    if($("#jqmWindowSelectRegion").html()==null){ // 第一次创建预备弹出的窗体
      $(jqmWindowRegion).insertBefore("body");
      $("#jqmWindowSelectRegion").jqm({
        closeClass : 'closeRegion',
        toTop : HashRegion[sReg].c.toTop,
        modal : HashRegion[sReg].c.modal,
	    onShow : function(hash){
	      hash.w.show(); 
	    }
      });
      GsuSdRegionUtils.getRegionList(function(data){
          DWRUtil.removeAllOptions("regionParent");
          DWRUtil.addOptions("regionParent", data, 'regionid', 'regionname');
      });
    }
    var _sReg=sReg;
    $("input#gsu_util_region_clear"+_sReg).unbind("click");
    $("input#gsu_util_region_clear"+_sReg).click(function(){
      if($("div.gsu_util_region"+_sReg).text()=="") {alert("没有数据，不需要清空");return;}
      $("div.gsu_util_region"+_sReg).text("");
      HashRegion[_sReg].w.val("");
      $("#regionParent").setSelectedValue("0");
      $("#jqmWindowSelectRegionCurrent").val("");
      DWRUtil.removeAllOptions("regionFirstChild");
      DWRUtil.removeAllOptions("regionSecondly");
      $(".gsu_util_region_box"+_sReg).focus();
    });

    if(HashRegion[this._reg].c.readOnly){
      $("#gsu_util_region_chooser"+sReg).remove();
      $("#gsu_util_region_clear"+sReg).remove();
    }
    else{
      var _sReg=sReg;
      $("#gsu_util_region_chooser"+sReg).click(function(){
        $("#gsu_util_region_chooser"+_sReg).blur();
        $(".gsu_util_region" + _sReg).click();
      });
    }
    if(!HashRegion[this._reg].c.readOnly)
    $("#gsu_util_region" + sReg).click(function(){
    	$(".refreshRegion").unbind("click");
  	  $(".refreshRegion").click(function(){
		  GsuSdRegionUtils.refreshCache(function(data){
			  $(".closeRegion").click();
		  });
	  });
      var reg=$(this).attr("id").substring("gsu_util_region".length);
      var val=$(this).parent().prev().val();
      if($("#jqmWindowSelectRegionCurrent").val()!=val){
        // 如果打开的是原来打开过的窗口，直接打开即可，否则还需要刷新数据。
        DWRUtil.removeAllOptions("regionSecondly");
        DWRUtil.removeAllOptions("regionFirstChild");
        if(HashRegion[reg].c.loadByChain){
          // 根据当前地区链，找到链条中所有地区标识，然后按照顺序，把第二级，第三级的地区全部加载出来，并指定选中地区。
          if(HashRegion[reg].w.val()!="")
          GsuSdRegionUtils.getRegionChainsByChain(HashRegion[reg].w.val(), function(data) {
            var data0=data[0],data1=data[1],data2=data[2];
            $.gsuRegionUtils .loadsecondandthirdregion(data0,data1,data2);
          });
        }
        else{
          // 根据当前地区标识，找到链条中所有地区标识，然后按照顺序，把第二级，第三级的地区全部加载出来，并指定选中地区。
          if(HashRegion[reg].w.val()!="")
          GsuSdRegionUtils.getRegionChains(parseInt(HashRegion[reg].w.val()), function(data) {
            var data0=data[0],data1=data[1],data2=data[2];
            $.gsuRegionUtils .loadsecondandthirdregion(data0,data1,data2);
          });
        }
        $("#jqmWindowSelectRegionCurrent").val(val);
        // 创建选择事件
        $("#regionParent").unbind("click");
        $("#regionFirstChild").unbind("click");
        $("#regionSecondly").unbind("click");
        $("#regionParent").click(function(){
          DWRUtil.removeAllOptions("regionSecondly");
          DWRUtil.removeAllOptions("regionFirstChild");
          $.gsuRegionUtils .loadsecondandthirdregion($(this).val(),null,null);
          if(HashRegion[reg].c.loadByChain){
            if(HashRegion[reg].w.attr("value")==null) HashRegion[reg].w.text($(this).children("option:selected").text());
            else HashRegion[reg].w.val($(this).children("option:selected").text());
          }else{
            if(HashRegion[reg].w.attr("value")==null) HashRegion[reg].w.text($(this).val());
            else HashRegion[reg].w.val($(this).val());
          }
          $.gsuRegionUtils .loadchainstring(reg);
        });
        $("#regionFirstChild").click(function(){
          if($(this).val()!=null){
            DWRUtil.removeAllOptions("regionSecondly");
            $.gsuRegionUtils .loadthirdregion($(this).val(),null);
            if(HashRegion[reg].c.loadByChain){
              if(HashRegion[reg].w.attr("value")==null) HashRegion[reg].w.text($("#regionParent option:selected").text() + " >> " +$(this).children("option:selected").text());
              else HashRegion[reg].w.val($("#regionParent option:selected").text() + " >> " +$(this).children("option:selected").text());
            }else{
              if(HashRegion[reg].w.attr("value")==null) HashRegion[reg].w.text($(this).val());
              else HashRegion[reg].w.val($(this).val());
            }
            $.gsuRegionUtils .loadchainstring(reg);
          }else{
            alert("没有数据可供选择");
          }
        });
        $("#regionSecondly").click(function(){
          if($(this).val()!=null){
            if(HashRegion[reg].c.loadByChain){
              if(HashRegion[reg].w.attr("value")==null) HashRegion[reg].w.text($("#regionParent option:selected").text() + " >> " + $("#regionFirstChild option:selected").text() + " >> " + $(this).children("option:selected").text());
              else HashRegion[reg].w.val($("#regionParent option:selected").text() + " >> " + $("#regionFirstChild option:selected").text() + " >> " + $(this).children("option:selected").text());
            }else{
              if(HashRegion[reg].w.attr("value")==null) HashRegion[reg].w.text($(this).val());
              else HashRegion[reg].w.val($(this).val());
            }
            $.gsuRegionUtils .loadchainstring(reg);
          }else{
            alert("没有数据可供选择");
          }
        });
      }
      $("#jqmWindowSelectRegion").jqmShow();
    });
    return $(this);
  });
};
$.fn.regionChains=function(){ // 加载table 的列表，自动将所有同一个class的隐藏域的id转化成行业链文字说明
  var regionIdArray = new Array();
  var cls;
  this.each(function(){
    cls=(cls==undefined)?HashRegion[this._reg].w.attr("class").split(" ")[0]:cls;
  });
  $("."+cls).each(function(index){
    if($(this).val())
    regionIdArray[index]=$(this).val();
    else
    regionIdArray[index]=$(this).text();
  });
  GsuSdRegionUtils.getRegionChainStrings(regionIdArray, function(data) {
    $("."+cls).each(function(index){
      $(this).next(".gsu_util_region_box").css("border","0");
      $(this).next(".gsu_util_region_box").children(".gsu_util_region").text(data[index]);
    });
  });
};
$.fn.regionChooser=function(){
  return this.each(function(){
    $.gsuRegionUtils.open(this._reg);
  });
};
$.gsuRegionUtils ={
  hash:{},
  open:function(ss){
    var o=HashRegion[ss].w;
    $.gsuRegionUtils .loadchainstring(ss);
  },
  autowidth:function(ss,text){
    if(ie6){
      var a1=$(".gsu_util_region"+ss).width();
      var a2=$(".gsu_util_region_box"+ss).width();
      if(a1+62>a2){
        $(".gsu_util_region_box"+ss).width(a1+62);
        $(".gsu_util_region_box"+ss).css("width",(a1+62)+"px");
      }
    }else{
      var x=text.length*14-20;
      var y=$(".gsu_util_region_box"+ss).width();
      $(".gsu_util_region_box"+ss).css("width",(x>y?x:y)+"px");
    }
  },
  loadchainstring:function(ss){
    //$(".gsu_util_region"+ss).css('width',HashRegion[ss].c.width);
    var val=HashRegion[ss].w.val();
    if(!val) val=HashRegion[ss].w.text();
    if(HashRegion[ss].c.loadByChain){
      $(".gsu_util_region"+ss).text(val);
      $(".gsu_util_region"+ss).attr("title",val);
      $.gsuRegionUtils.autowidth(ss,$.trim(val));
      $.gsuRegionUtils.changeEvent(ss);
    }
    else if(val!=null && val!="" && !isNaN(val)){
      GsuSdRegionUtils.getRegionChainString(parseInt(val),function(data){
        $(".gsu_util_region"+ss).text($.trim(data));
        $(".gsu_util_region"+ss).attr("title",$.trim(data));
        $.gsuRegionUtils.autowidth(ss,$.trim(data));
        $.gsuRegionUtils.changeEvent(ss);
      });
    }
    else{
      $("#jqmWindowSelectRegionCurrent").val("");
      if(HashRegion[ss].w.attr("value")==null) HashRegion[ss].w.text("-1");
      else HashRegion[ss].w.val(-1); //默认选中第一个行业
      GsuSdRegionUtils.getRegionChainString(-1,function(data){
        $(".gsu_util_region"+ss).text($.trim(data));
        $(".gsu_util_region"+ss).attr("title",$.trim(data));
        $.gsuRegionUtils.autowidth(ss,$.trim(data));
        $.gsuRegionUtils.changeEvent(ss);
      });
    }
  },
  changeEvent:function(ss){
    var val=$(".gsu_util_region"+ss).text();
    if(HashRegion[ss].c.change)HashRegion[ss].c.change(val);
  },
  loadsecondandthirdregion:function(data0,data1,data2){
    if (data0 != undefined && data0 != null && data0>0) {
      GsuSdRegionUtils.getRegions(data0,function(data){
        DWRUtil.addOptions("regionFirstChild", data, 'regionid', 'regionname');
        $("#regionFirstChild option[value='" + data1 + "']").attr('selected', "true");
        //$("#regionFirstChild option[@value='" + data1 + "']").attr('selected', "true");
      });
      $("#regionParent option[value='" + data0 + "']").attr('selected', "true");
      //$("#regionParent option[@value='" + data0 + "']").attr('selected', "true");
      $.gsuRegionUtils.loadthirdregion(data1,data2);
    }
  },
  loadthirdregion:function(data1,data2){
    if (data1 != undefined && data1 != null && data1>0) {
      GsuSdRegionUtils.getRegions(data1,function(data){
        DWRUtil.addOptions("regionSecondly", data, 'regionid', 'regionname');
        $("#regionSecondly option[value='" + data2 + "']").attr('selected', "true");
        //$("#regionSecondly option[@value='" + data2 + "']").attr('selected', "true");
      });
    }
  },
  params:{}
};
var sReg=0,HashRegion=$.gsuRegionUtils .hash,ie6=$.browser.msie&&($.browser.version == "6.0"),F=false
})(jQuery);
