	var allowNum = 3;
	var chooseCityLiId = "_chooseCity_li_"; 
	var checkedCityId = "_checkedCity_box_";
	var  p_index="_province_";
	var  c_index="_city_";
	var  p_over = "POPDiv_over";
	var  p_out = "";
	var  c_over = "c_over";
	var  c_out = "";
	var  prov_ul="prov_layer"; //省份ul id
	var  city_ul="city_layer"; //城市ul id
	var  prov_div="";
	var  city_div="city_div";  //城市div id
	var  big_city_class="POPDiv_areaTitle2";  
	var  checkbox_id="_checkbox_c_"; //复选框id 前缀
	var  _popuDiv="_bg_popuDiv";  //遮罩div id
	var  _new_address="new_address";
	var  _address_defaultText="选择/修改";
	var  lableId = "";
	var  valuesId="";
	
	var _address_h1="_address_h1"; //标题
	var _address_confirm_id="_address_confirm_id"; //确定按钮
	var _address_selected_id="_address_selected_id"; //已经选择的地区
	var _address_allprov_id="_address_allprov_id"; // 所有省份
	
	var _address_h1_text=""; //标题
	var _address_confirm_text="确定"; //确定按钮
	var _address_selected_text="已选择城市"; //已经选择的地区
	var _address_allprov_text="所有省份"; // 所有省份
	var _address_language=2;
	var _address_alert_text="";
	var _address_title="";
	
	var resultHotCityData = {}; // 热门城市数据全局变量，用来动态判断加载列表的直辖市
	
	function AddressDialog(obj,title,valueIds){

		this.showDialog = initProvince;
		this.setDefaultText=function(text){
			_address_defaultText=text;
		};
		this.setEnglish=setEnglish;
		lableId=obj;
		_address_title=title;
		allowNum=valueIds.length;
		valuesId=valueIds;

		/****************中文版 默认值B*********************/
			_address_h1_text = "最多选择"+allowNum+"项:";
			_address_confirm_text="确定";
			_address_selected_text="已选择城市";
			_address_allprov_text="所有省份";
			_address_defaultText="选择/修改";
			_address_language=2;
			_address_alert_text="您已经选择了"+allowNum+"个地区,不能再选择!";
		/****************中文版 默认值E*********************/
		
		function setEnglish(){
			var last = "options";
			if(allowNum<=1){
				last = "option";
			}
			_address_h1_text = "please selected location (No more than "+allowNum+" "+last+")";
			_address_confirm_text="confirm";
			_address_selected_text="Selected City";
			_address_defaultText="Select/Modify";
			_address_allprov_text="All Provinces";
			_address_language=4;
			_address_alert_text="No more than "+allowNum+" "+last;
		}
		
		function showPopuDiv(){
			
			
			var d = document.getElementById(_popuDiv);
			d.style.width="100%";
			d.style.display="block";
			d.style.height=window.screen.clientHeight>$(document).height()?"100%":$(document).height()+"px";
			
			var box = document.getElementById(_new_address);
			var scrollTop = 0;
		if(document.body.scrollTop>0) {
			scrollTop = document.body.scrollTop; //chrome
		}else {
			scrollTop = document.documentElement.scrollTop;
		}
		
			box.style.top='100px'; //(scrollTop +100)+ "px";
			box.style.left=(document.documentElement.scrollLeft+50)+"%";
		}

		function init(){
			showPopuDiv();
			
			id(_address_h1).innerHTML=_address_h1_text;
			id(_address_confirm_id).innerHTML=_address_confirm_text;
			id(_address_selected_id).innerHTML=_address_selected_text;
			id(_address_allprov_id).innerHTML=_address_allprov_text;
			
		    document.getElementById("POPDiv_selectedArea").innerHTML="";
			var node = "";
			for(var i=0;i<allowNum;i++){
			  var cid = document.getElementById(valuesId[i]).value;
			  if(cid!="" && cid!="0" && cid!=0){
			  	var li_id = chooseCityLiId+cid;
				var ch_id = checkedCityId+cid;
				var txt = getTextById(cid);
				node = node + "<li id='"+li_id+"'>"+
				txt+"<label class='"+txt+"' value='"+cid+"' id='"+ch_id+"'></label> <i onclick='delCheckedCityById(this)' class='close_icon'>×</i></li>";
			  }
			}
			document.getElementById("POPDiv_selectedArea").innerHTML=node;
		}
		
		function getTextById(id){
			var txt = "";
			for(var i=0;i<addressCount;i++){
				if(address[i][0]==id){
					txt = address[i][_address_language]; //language
					break;
				}
			}
			return txt;
		}
				
		//初始化省份
		function initProvince(){
			init();
			
			$.ajax({
				type: "GET",
				url: "/cityController/getCityList",
				dataType:"json",
				async: false,
				success: function(data) {
					
					var index = 0;
					$.each(data, function(i,value) {
						if (value.isHot == 1) {
							resultHotCityData[index] = value;
							index++;
						}
					});
				}, error: function(msg){
			   		console.error(msg);
			    }
			  });
			
			var p_obj = id(prov_ul);  //显示所有省份的div
			    p_obj.innerHTML=""; //清空省份div，重新填充
			for(var i=0;i<addressCount;i++){
				var addrs = address[i];
				if(i == 0){
					
					var li =  document.createElement("li");
					li.id=p_index+'0010';
					li.innerHTML = '热门城市';  //language
					/*li.onmouseover = function(){
						//this.className=p_over;
						closeCityDiv();
					};
					li.onmouseout = function(){
						//this.className=p_out;
					};*/
					if(isIE()){  //IE
						li.onclick = function(){
							initCity(this,event || window.event);
						};
					}
					else{ //FF
						li.addEventListener("click",function(event){initCity(this,event);},false);
					}
					p_obj.appendChild(li);
				}
				
				// 过滤已经在热门城市中显示了的直辖市
				var isCity = false;
				var arrayCityId = addrs[0];
				$.each(resultHotCityData, function(i, value) {
					
					var cityId = value.cityId;
					var supId = value.supId;
					if (arrayCityId == cityId && supId == "") {
						isCity = true;
					}
				});
				
				
				if(addrs[1]=="" && isCity == false){
					
					var li =  document.createElement("li");
					li.id=p_index+addrs[0];
					li.innerHTML = addrs[_address_language];  //language
					/*li.onmouseover = function(){
						//this.className=p_over;
						closeCityDiv();
					}
					li.onmouseout = function(){
						//this.className=p_out;
					}*/
					if(isIE()){  //IE
						li.onclick = function(){
							initCity(this,event || window.event);
						};
					}
					else{ //FF
						li.addEventListener("click",function(event){initCity(this,event);},false);
					}
					p_obj.appendChild(li);
				}
			}
			show_box();
			// 弹出页面加载热门城市
			$('#_province_0010').click();
		}
		
		/**
		 * 初始化热门城市
		 */
		function initHotCity(){
			var hot = '';
		  $.each(resultHotCityData, function(i,value) {
				var cityId = value.cityId;
				
				var cityName = value.cityName;
				var li_id = c_index+cityId;
				
				var inputId = checkedCityId + cityId; //_checkedCity_box_
				
				var checked = "";
				 $.each(valuesId, function(i,value) {
				 	
				 	var selectArea = "";
				 	var li = $('#POPDiv_selectedArea li')[i];
				 	if (li) {
				 		var liId = li.id;
				 		selectArea = liId.substring(liId.length-4, liId.length);
				 	}
				 	if(selectArea == cityId){
						checked="checked";
					}
				 });
				
				
				hot += '<li id='+li_id+'><input id='+checkbox_id+cityId+' type="checkbox" '+checked+' onclick="hotClick(this)" value='+cityName+'><label for='+checkbox_id+cityId+'>'+cityName+'</label></input></li>';
			});
			
			$('#city_layer').append(hot);
			
			var e = mouseCoords(window.event || arguments.callee.caller.arguments[0]);
			var c_div = id(city_div);
			c_div.style.position="absolute";
			c_div.style.left =e.left;
			c_div.style.top = e.top;
			c_div.style.display = "block";
		};
		
		//初始化城市
		function initCity(p,event){
			
			var c_obj = id(city_ul);
				c_obj.innerHTML="";
			var p_id = p.id.substring(p_index.length);
			$('#prov_layer li').attr('style', '');
			$('#'+p.id).attr('style', 'color: #EE7C35!important; background: #fff;');
			
			var liId = $(p).attr('id');
			if(liId == '_province_0010'){
				initHotCity();
				return false;
			}
			for(var i=0;i<addressCount;i++){	
				var city_method="initSelectCity_c";
				var checked = "";
				var addr = address[i];
				var c_id = addr[0].substring(addr[0].length-4,addr[0].length-2)+"00";
				var b_id = addr[0].substring(addr[0].length-4);

				if(c_id==p_id){
					var li = document.createElement("li");
						li.id=c_index+addr[0];
						if(b_id==c_id){
							li.className=big_city_class;
							city_method="initSelectCity_p";
						}
						var cd_city = checkedCityId+addr[0];
						if(document.getElementById(cd_city)){
						  checked="checked='checked'";
						}
						li.innerHTML="<input type='checkbox' "+checked+" id='"+(checkbox_id+addr[0])+
						"' onclick='"+city_method+"(this)' value='"+addr[_address_language]+"' /><label for="+(checkbox_id+addr[0])+">"+addr[_address_language]+"</label>"; //language
						c_obj.appendChild(li);
				}
			}

			var e = mouseCoords(event);
			var c_div = id(city_div);
			c_div.style.position="absolute";
			c_div.style.left =e.left;
			c_div.style.top = e.top;
			c_div.style.display = "block";
		}

		

		//获取鼠标点击的坐标 IE or FF
		function mouseCoords(ev){  
			if(ev.pageX || ev.pageY){
				return {
					/*left:ev.pageX+"px", 
					top:ev.pageY+"px"*/
					left:"50%", 
					top:"144px"
				};
			}
			return {
				/*top: event.clientY + document.documentElement.scrollTop + 'px',
			    left: event.clientX + document.documentElement.scrollLeft + 'px'*/
			    left:"50%", 
				top:"144px"
			};
		}
		
		function isIE(){  //验证是否IE
			return document.all;
		}
		function id(id){
			return document.getElementById(id);
		}
		function setAllowNum(num){
			allowNum = num;
		}
		function closeCityDiv(){
			id(city_div).style.display="none";
		}
	}
	
	/**
	 * 热门城市选择事件
	 * @param {Object} t
	 */
	function hotClick(t){
		
		var id = $(t).attr('id');
		var inputValue = id.substr(id.length-4, id.length);
		var inputId = checkedCityId + inputValue; //_checkedCity_box_
		if(t.checked){
			if(checkChooseCount()){
				t.checked=false;
				alert(_address_alert_text);
				return;
			} else {
				var liId = chooseCityLiId + inputValue; //_chooseCity_li_
				var value = $(t).val();
				//var html = '<li id='+liId+'><input type="checkbox" class='+value+' onclick="delCheckedCityById(this.id)" checked="checked" value='+inputValue+' id='+inputId+'>'+value+'</input></li>';
				var html = '<li id='+liId+'>'+value+'<label type="checkbox" class='+value+' id='+inputId+'></label><i onclick="delCheckedCityById(this)" class="close_icon">×</i></li>';
				$('#POPDiv_selectedArea').append(html);
			}
		} else {
			delCheckedCityById(inputId); //清除
		}
	}
	
	//填充选择中城市c
	function initSelectCity_c(box){
		clearBigBox(box);
		addCheckedCity(box);
	}
	//填充选择中城市c
	function initSelectCity_p(box){
		clearCheckBox(box);
		addCheckedCity(box);
	}
	
	function addCheckedCity(box){
		if(box.checked){
			if(checkChooseCount()){
				box.checked=false;
				alert(_address_alert_text);
				//document.getElementById("city_div").style.display="none";
				return;
			}
			else{
				var chooseCity = document.createElement("li"); 
				var c_id = box.id.substring(checkbox_id.length);
				chooseCity.id=chooseCityLiId+c_id;
				var _checkedCityId=checkedCityId+c_id;
				 
				var cheboxLable = box.value;
				/*var chebox = "<input type='checkbox' class='"+cheboxLable+"' onclick='delCheckedCityById(this.id)'" +
				" checked='checked' value='"+c_id+"' id='"+_checkedCityId+"' >"+cheboxLable;*/
				var chebox = cheboxLable+"<label class='"+cheboxLable+"' value='"+c_id+"' id='"+_checkedCityId+"' ></label><i onclick='delCheckedCityById(this)' class='close_icon'>×</i>";
				
				chooseCity.innerHTML=chebox;
				document.getElementById("POPDiv_selectedArea").appendChild(chooseCity);
			}
		}
		else{
			var ch_id=checkedCityId+box.id.substring(checkbox_id.length);
			delCheckedCityById(ch_id); //清除
		}
	}
	
	function clearCheckBox(obj){
		 var flag = obj.checked;
		 if(flag){
		 	var elements = document.getElementById(city_ul).getElementsByTagName("input");
			for(var i=1;i<elements.length;i++){
				var o = elements[i];
				if(o.type=="checkbox"){
					if(o.checked){
						o.checked=false;
						var child_id = checkedCityId+o.id.substring(checkbox_id.length);
						delCheckedCityById(child_id);
					}
				}
			}
		 }
	}
	
	function delCheckedCityById(id){
		
		 /*var che_id = checkbox_id+id.substring(checkedCityId.length)
		 var _element= document.getElementById(id);
		 if(_element){
			 var _parentElement = _element.parentNode;
			 if(_parentElement){
					_parentElement.parentNode.removeChild(_parentElement);
			 }
		 }
		 var cd_box = document.getElementById(che_id);
		 if(cd_box){
		 	cd_box.checked=false;
		 }*/
		//
		
		
		var _id = $(id).parent().find('li').prevObject[0];
		if(_id){
			var id = _id.id;
			var subValue = id.substr(id.length-4, id.length);
			var checkId = checkbox_id + subValue;
			$('#'+checkId).attr('checked', false);
			$('#'+id).remove();
		} else {
			var labelId = chooseCityLiId + id.substr(id.length-4, id.length);
			$('#'+labelId).remove();
		}
		
		
	}
	
	function clearBigBox(obj){
		var r_id = obj.id.substring(obj.id.length-4,obj.id.length-2)+"00";
		var b_id =checkbox_id+r_id;
		var ch_id=checkedCityId+r_id;
		
		var bigCity = document.getElementById(b_id);
		if(bigCity){
			if(bigCity.checked){
				bigCity.checked=false;
				delCheckedCityById(ch_id);
			}
		}
	}
	
	//检测多少个
	function checkChooseCount(){
		var elements = document.getElementById("POPDiv_selectedArea").getElementsByTagName("li");
		var flag = false;
		if(elements.length>allowNum-1){
			flag = true;
		}
		return flag;
	}
	
	function close_box(){
		document.getElementById(_popuDiv).style.display="none";
		document.getElementById(_new_address).style.display="none";
		document.getElementById(city_div).style.display="none";
		getResult();
	}
	
	function show_box(){
		document.getElementById("new_address").style.display="block";
	}
	
	function clearHiddValue(){
		for(var i=0;i<allowNum;i++){
			document.getElementById(valuesId[i]).value="";
		}
	}
	
	function getResult(){
		var nodes = document.getElementById("POPDiv_selectedArea").getElementsByTagName("li");
		var code = "";
		var text = "";
		var length = nodes.length;
		clearHiddValue();
		if(length>0){
			var txt = "";
			for(var i=0;i<length;i++){
				//var c = nodes[i].childNodes[0];
				var c = $(nodes[i]).find('label');
				var v =document.getElementById(valuesId[i]);
				v.vlaue="";
				var labelId = c[0].id;
				
				v.value= labelId.substring(labelId.length-4, labelId.length);
				if(i==0){
					txt = $(c).attr('class');
				}
				else{
					txt = txt+"+"+ $(c).attr('class');
				}
			}
			document.getElementById(lableId).value=txt;
			if(null != document.getElementById(_address_title)){
				document.getElementById(_address_title).title=txt;
			}
			
			
		}
		else{
			document.getElementById(lableId).value=_address_defaultText;
			document.getElementById(_address_title).title=_address_defaultText;
	 }
   }
 
	
	function close(){
		document.getElementById(_popuDiv).style.display="none";
		document.getElementById(_new_address).style.display="none";
		document.getElementById(city_div).style.display="none";
	}