

//周刚,省，市，区的级联选择

var Extend = function(destination, source) {
	for (var property in source) {
		destination[property] = source[property];
	}
}

var AreaSelect = function(options){
	// 默认参数
	this.options= {
		province:{area_id:0,area_name:''},
		city:{area_id:0,area_name:''},
		country: {area_id:0,area_name:''},
		focus_type : 'province',
		change : function(id,name){}
	}
	// 传入参数赋值
	Extend(this.options, options || {});
	// 初始化参数
	this.province = this.options.province || {area_id:0,area_name:''};
	this.city = this.options.city || {area_id:0,area_name:''};
	this.country = this.options.country || {area_id:0,area_name:''};
	this.type = this.options.type || '';
	this.change = this.options.change ||  function(id,name){} ;		
};

AreaSelect.prototype.bindChange = function(province_id,city_id,country_id){
	  var as = this;
	  $("#"+province_id).unbind("change"); 	
	  $("#"+province_id).bind("change",function(){
	  				as.onChange($("#"+province_id).val(),$("#"+province_id+" option:selected").html(),'province');
	  				$("#"+country_id).html('<option value=0>请选择区/县</option>');
	  				$("#"+country_id).attr('disabled',true);	
	  				as.country.area_name = '';
	  				as.country.area_id = '0';	
	  				if($("#"+province_id).val()==0){
	  					$("#"+city_id).html('<option value=0>请选择市/区</option>');
	  					$("#"+city_id).attr('disabled',true);
	  					$("#"+country_id).html('<option value=0>请选择区/县</option>');
		  				$("#"+country_id).attr('disabled',true);
	  					as.city.area_name = '';
	  					as.city.area_id = '0';	
	  					return false;
	  				}  					  
	  				as.getareas($("#"+province_id).val(),$("#"+city_id).val(),$("#"+country_id).val(),'province',function(arealist){
			  			var option = "<option value=0>请选择市/区</option>";
			  			for(var i in arealist){
			  				if(as.city.area_id == arealist[i].id){
			  					selected = "selected";
			  					as.city.area_name = arealist[i].name;
			  				}else{
			  					selected = "";
			  					as.city.area_name = arealist[i].name;
			  				}
			  				option += "<option value='"+arealist[i].id+"' "+selected+" >"+arealist[i].name+"</option>";
			  			}
			  			$("#"+city_id).html(option);	
			  			$("#"+city_id).attr('disabled',false);
	  				});
	  			});
	  $("#"+city_id).unbind("change"); 	
	  $("#"+city_id).bind("change",function(){
			  				as.onChange($("#"+city_id).val(),$("#"+city_id+" option:selected").html(),'city');
			  				if($("#"+city_id).val()==0){
			  					$("#"+country_id).html('<option value=0>请选择区/县</option>');
			  					$("#"+country_id).attr('disabled',true);	
			  					as.country.area_name = '';
			  					as.country.area_id = '0';	
			  					return false;
			  				}  	
			  				as.getareas($("#"+province_id).val(),$("#"+city_id).val(),$("#"+country_id).val(),'city',function(arealist){
			  					var option = "<option value=0>请选择区/县</option>";
					  			for(var i in arealist){
					  				if(as.country.area_id == arealist[i].id){
					  					selected = "selected";
					  					as.country.area_name = arealist[i].name;
					  				}else{
					  					selected = "";
					  					as.country.area_name = arealist[i].name;
					  				}
					  				option += "<option value='"+arealist[i].id+"' "+selected+" >"+arealist[i].name+"</option>";
					  			}
					  			$("#"+country_id).html(option);		
					  			$("#"+country_id).attr('disabled',false);	  								  				  
			  				});			  				
			  			});	
	$("#"+country_id).unbind("change"); 			  		 
	$("#"+country_id).bind("change",function(){
		as.onChange($("#"+country_id).val(),$("#"+country_id+" option:selected").html(),'country');	
	});		  			
	  			
		
}
AreaSelect.prototype.display = function(province_id,city_id,country_id){
		var as = this;
		if(document.all){			
			$("#"+province_id).css('width',$("#"+province_id).attr("width") == undefined ? '100px' : $("#"+province_id).attr("width"));
			$("#"+city_id).css('width',$("#"+city_id).attr("width") == undefined ? '100px' : $("#"+city_id).attr("width"));
			$("#"+country_id).css('width',$("#"+country_id).attr("width") == undefined ? '100px' : $("#"+country_id).attr("width"));
		}
		$("#"+province_id).html("<option value='0' selected >请选择省</option>");
		$("#"+city_id).html("<option value='0' selected >请选择市</option>");
		$("#"+country_id).html("<option value='0' selected >请选择区/县</option>");
		as.getareas(0,as.city.area_id,as.country.area_id,'province',function(arealist){		
	  			as.bindChange(province_id,city_id,country_id);	  			
   				var option = "<option value='0' selected >请选择省</option>";		  					 
	  			for(var i in arealist){	  				
	  				if(as.province.area_id == arealist[i].id){	  	
	  				 	selected = "selected";
	  					as.province.area_name = arealist[i].name;	  					
	  				}else{	  
	  					selected = "";					
	  					as.province.area_name = arealist[i].name;
	  				}
	  				option += "<option value='"+arealist[i].id+"' "+selected+" >"+arealist[i].name+"</option>";
	  			}	
	  			$("#"+province_id).html(option);	
	  			if(as.province.area_id>0){
	  				$("#"+city_id).attr('disabled',false);
	  				as.getareas(as.province.area_id,as.city.area_id,as.country.area_id,'province',function(arealist){	
	  					var option = "<option value=0>请选择城市</option>";
			  			for(var i in arealist){
			  				if(as.city.area_id == arealist[i].id){
			  					selected = "selected";
			  					as.city.area_name = arealist[i].name;
			  				}else{
			  					selected = "";
			  					as.city.area_name = arealist[i].name;
			  				}
			  				option += "<option value='"+arealist[i].id+"' "+selected+" >"+arealist[i].name+"</option>";
			  			}
			  			$("#"+city_id).html(option);	
			  			if(as.city.area_id>0){
			  				as.getareas(as.province.area_id,as.city.area_id,as.country.area_id,'city',function(arealist){	
			  					var option = "<option value=0>请选择区/县</option>";
					  			for(var i in arealist){
					  				if(as.country.area_id == arealist[i].id){
					  					selected = "selected";
					  					as.country.area_name = arealist[i].name;
					  				}else{
					  					selected = "";
					  					as.country.area_name = arealist[i].name;
					  				}
					  				option += "<option value='"+arealist[i].id+"' "+selected+" >"+arealist[i].name+"</option>";
					  			}
					  			$("#"+country_id).html(option);	
					  			$("#"+country_id).attr('disabled',false);
			  				});
			  			}else{
			  				$("#"+country_id).html("<option value='0' selected >请选择区/县</option>");
			  				$("#"+country_id).attr('disabled',true);
			  			}
	  				}); 
	  			}else{
	  				$("#"+city_id).html("<option value='0' selected  >请选择市/区</option>");
	  				$("#"+city_id).attr('disabled',true);
	  				$("#"+country_id).html("<option value='0' selected >请选择区/县</option>");
	  				$("#"+country_id).attr('disabled',true);
	  			}
	  		});
	  	
}
AreaSelect.prototype.getareas= function(provid,cityid,countryid,t,callback){
    $.getJSON('/interface/ajax.php?_do=getSubArea&provid='+provid+'&cityid='+cityid+'&countryid='+countryid+'&type=json&t='+t+'&rand='+Math.random(),function(city){
        callback(city);        
    })
}
AreaSelect.prototype.getAreaIds = function(){
	var areaids = [];
	if(this.province.area_id>0) areaids.push(this.province.area_id);
	if(this.city.area_id>0) areaids.push(this.city.area_id);
	if(this.country.area_id>0) areaids.push(this.country.area_id);
	return areaids;
}
AreaSelect.prototype.getAreaNames = function(){
	var area_name = [];
	if(this.province.area_name.length>0) areaids.push(this.province.area_name);
	if(this.city.area_name.length>0) areaids.push(this.city.area_name);
	if(this.country.area_name.length>0) areaids.push(this.country.area_name);
	return area_name;
}
AreaSelect.prototype.getAreaIdStr = function(t){
	var ids = this.getAreaIds();
	var str = '';
	if(ids.length>0){
		if(t>0 ){
			str = "("+ids.join('),(')+")";
		}else{
			str = ids.join(',');
		}
	}
	return str;
}
AreaSelect.prototype.getAreaNameStr = function(t){
	var ids = this.getAreaNames();
	var str = '';
	if(ids.length>0){
		if(t>0 ){
			str = "("+ids.join('),(')+")";
		}else{
			str = ids.join(',');
		}
	}
	return str;
}
AreaSelect.prototype.onChange = function(area_id,area_name,type){
	 var area_id = area_id == undefined ? 0 : area_id;
	 var area_name = area_name == undefined ? '': area_name;
	 this.focus_type = this.type = type;
	 switch(this.focus_type){
		 case 'province':
			 if(this.province.area_id != area_id){
				  this.province.area_id = area_id;
				  this.province.area_name = area_name;
				  this.city.area_id = 0;
				  this.city.area_name = '';
				  this.country.area_id = 0;
				  this.country.area_name = '';
				  this.change(area_id,area_name);
			 }
			 break;
		 case 'city':
			 if(this.city.area_id != area_id){
				  this.city.area_id = area_id;
				  this.city.area_name = area_name;
				  this.country.area_id = 0;
				  this.country.area_name = '';
				  this.change(area_id,area_name);
			 }
			 break;
		case 'country':
			 if(this.country.area_id != area_id){
				  this.country.area_id = area_id;
				  this.country.area_name = area_name;
				  this.change(area_id,area_name);
			 }
			 break;
	 }

};


