
    var aext = new Object();
    aext.Ajax = function(url,option){
        this.options = {};
        this.url = url;
        this.req;
        this.setOptions(option);
        this.load();
    }
    
    aext.Ajax.prototype = {
        setOptions: function(option){
            this.options = {      //默认参数设置
                async:       true,      //是否异步
                onComplete : null,      //数据返回成功后调用的函数
                method :     "post",
                param  :     ""     //参数
            }
            for(var property in option){
                this.options[property] = option[property];
            }
        },
        load: function(){
            var loader = this;
    	    this.req=new ActiveXObject("Microsoft.XMLHTTP");
    	    this.req.onreadystatechange=function(){
 				loader.onStateChange.call(loader);
 			};
 			this.req.open(this.options.method,this.url,this.options.async);
 			this.req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 			this.req.send(this.options.param);
    	},
    	onStateChange: function(){
 		    var req=this.req;
 		    var ready=req.readyState;
 		    if(ready == 4)
 		    {
               this.options.onComplete(this);
            }
        }
    }
//--------------------------------------------------------------------------------------------   
    aext.Selector = function(el,option){
        this.selectObj = document.getElementById(el);
        this.ajax = null;
        this.options = {};
        this.setOptions(option)
    }
    
    aext.Selector.prototype = {
        setOptions: function(option){	//设置参数
            this.options = {      //默认参数设置
                topOption: "",
                topValue:  "",
                async:     false
            }
            for(var property in option){
                this.options[property] = option[property];
            }
        },
        /*从服务器获取数据并生成选项*/
        loadData: function(url){
            var url = url;
            var selector = this;
            this.clearOptions();
            this.ajax = new aext.Ajax(
                                 url,
                                 {
                                     async: selector.options.async,
                                     onComplete: selector.onGetData,
                                     selector: selector
                                 }
            );
        },
        //得到数据后更新select列表
        onGetData: function(ajax){
            var data = eval(ajax.req.responseText);    //返回的必须是json格式的数据，内容是[{text:"选项显示的",value:"选项的value值"},...]
			var selectObj = ajax.options.selector.selectObj;
			var topOp = ajax.options.selector.options.topOption;
			/*如果topOption没有设置值，则不添加第一个选项*/
			if(topOp.length>0)
			{
				var op = new Option(topOp,ajax.options.selector.options.topValue);
				selectObj.options.add(op);
			}
			for(var i=0; i<data.length; i++)
			{
				var op = new Option(data[i].text,data[i].value);
				selectObj.options.add(op);
			}
        },
        /*清空所有选项*/
        clearOptions: function(){
            this.selectObj.options.length = 0;
        },
        /*将json数据生成option选项*/
        loadOptions: function(jsonData){
            var data = jsonData;
            this.clearOptions();
            if(this.options.topOption.length>0)
			{
				var op = new Option(this.options.topOption,this.options.topValue);
				this.selectObj.options.add(op);
			}
			for(var i=0; i<data.length; i++)
			{
				var op = new Option(data[i].text,data[i].value);
				this.selectObj.options.add(op);
			}
        },
        /*使值为value的选项选中*/
        setSelect: function(value){
            for(var i=0; i<this.selectObj.options.length; i++)
            {
                var op = this.selectObj.options[i];
                if(op.value == value)
                {
                    op.selected = true;
                    break;
                }    
            }
        }
    }