﻿var Browser = new Object();
Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);
Browser.isOpera = (navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
//数据
//var arrCity = new Array();arrCity[0]="全国,0";arrCity[1]="北京,201";arrCity[2]="上海,2401";arrCity[3]="广州,501";arrCity[4]="武汉,1201";arrCity[5]="成都,2501";arrCity[6]="重庆,3101";arrCity[7]="天津,2601";arrCity[8]="杭州,3001";arrCity[9]="郑州,1001";arrCity[10]="合肥,101";arrCity[11]="长沙,1301";arrCity[12]="济南,2101";arrCity[13]="青岛,2102";arrCity[14]="南京,1501";arrCity[15]="深圳,502";arrCity[16]="西安,2301";arrCity[17]="太原,2201";arrCity[18]="石家庄,901";arrCity[19]="长春,1401";arrCity[20]="哈尔滨,1101";arrCity[21]="沈阳,1701";arrCity[22]="福州,301";arrCity[23]="东莞,504";arrCity[24]="佛山,518";arrCity[25]="秦皇岛,905";arrCity[26]="昆明,2901";arrCity[27]="大连,1708";arrCity[28]="--------,-1";arrCity[29]="安徽,1";arrCity[30]="辽宁,17";arrCity[31]="浙江,30";arrCity[32]="江苏,15";arrCity[33]="河北,9";arrCity[34]="福建,3";arrCity[35]="山西,22";arrCity[36]="云南,29";arrCity[37]="吉林,14";arrCity[38]="内蒙古,18";arrCity[39]="黑龙江,11";arrCity[40]="广西,6";arrCity[41]="陕西,23";arrCity[42]="江西,16";arrCity[43]="新疆,28";arrCity[44]="贵州,7";arrCity[45]="甘肃,4";arrCity[46]="海南,8";arrCity[47]="宁夏,19";arrCity[48]="西藏,27";arrCity[49]="青海,20";arrCity[50]="河南,10";arrCity[51]="四川,25";arrCity[52]="山东,21";arrCity[53]="广东,5";arrCity[54]="湖北,12";arrCity[55]="湖南,13"; 

 var arrCity = ["全国,0","北京,201","上海,2401","广州,501","武汉,1201","成都,2501","重庆,3101","天津,2601","杭州,3001","郑州,1001","合肥,101","长沙,1301","济南,2101","青岛,2102","南京,1501","深圳,502","西安,2301","太原,2201","石家庄,901","长春,1401","哈尔滨,1101","沈阳,1701","福州,301","东莞,504","佛山,518","秦皇岛,905","昆明,2901","大连,1708","苏州,1502","南昌,1601","杭州,3001","郑州,1001","宁波,3002","淄博,2109","洛阳,1002","金华,3006","温州,3003","徐州,1518","无锡,1503","银川,1901","兰州,401","大庆,1102","烟台,2103","吉林,1402","唐山,902","保定,910","无锡,1503","--------,-1","浙江,30","河南,10","安徽,1","辽宁,17","浙江,30","江苏,15","河北,9","福建,3","山西,22","云南,29","吉林,14","内蒙古,18","黑龙江,11","广西,6","陕西,23","江西,16","新疆,28","贵州,7","甘肃,4","海南,8","宁夏,19","西藏,27","青海,20","河南,10","四川,25","山东,21","广东,5","湖北,12","湖南,13"];



//汽车查询类

function SearchBox(){ 
    this.SelCity = null;
    this.RadioRegionIn = null;
    this.RadioRegionOut = null;
    this.SelRegion = null;
    this.SelBrand = null;
    this.SelCar =null;     
     
    //初始化城市列表
    this.initCity = function(){
	    for(var j=0;j<arrCity.length;j++){
		    this.SelCity.options.add( InputControler.splitToOption(arrCity[j]));
	    }    
	    InputControler.lockAndClear( this.SelBrand);	    
	    InputControler.unlock( this.SelCity);
    };
    
    //根据地区取车型列表
    this.getBrandList = function(inout){
        //var requestUrl = "http://www.test.com/brandquery.aspx?region=" + inout;  
        var requestUrl = "/searchbox/brandquery.aspx?region=" + inout;  
        
        InputControler.lockAndClear( this.SelBrand);
         
        var ajax = new SimpleAjax(); 
        if( ajax.initXMLHTTPRequest() !=null){           
            ajax.sendRequest(requestUrl,"1","GET",this.getBrandListResult,this,0);   
        }
    }; 
 
  //配合getBrandList，用ajax方法取车型列表
    this.getBrandListResult = function(responseTEXT,src){
        var optvalue,opttext;
        src.SelBrand.options.length=0;
        src.SelBrand.options.add(new Option("请选择","-1"));
        
        var lists= eval(responseTEXT);
        for(var i=0;i<lists.length;i++){  
            src.SelBrand.options.add(new Option(lists[i][0],lists[i][1]));           
        } 
        
        InputControler.unlock( src.SelBrand);
        
    } ; 
    //根据车型取汽车列表
    this.getCarList = function (brand){
        //var requestUrl = "http://www.test.com/carquery.aspx?brandid=" + brand;  
        var requestUrl = "/searchbox/carquery.aspx?brandid=" + brand;  
        
        var ajax = new SimpleAjax(); 
        if( ajax.initXMLHTTPRequest() !=null){           
            //ajax.sendRequest(requestUrl,"1","GET",CarSearcher.getCarListResult,1);    
            ajax.sendRequest(requestUrl,"1","GET",this.getCarListResult, this, 0);  
        }
    };
    //配合getCarList，用ajax方法取汽车列表
    this.getCarListResult = function(responseTEXT,src){
        var optvalue,opttext;
        src.SelCar.options.length=0;
        var lists= eval(responseTEXT);
        for(var i=0;i<lists.length;i++){  
            src.SelCar.options.add(new Option( lists[i][1] , lists[i][0] ));           
        }
        
        InputControler.unlock( src.SelCar);
    };
     //初始化和加载搜索框。适用于地区是两个RadioButton的情况。
    this.load = function(selCity,radioRegionIn,radioRegionOut,selBrand,selCar){
         
        
        //初始化控件
        this.SelCity = selCity;
        this.RadioRegionIn= radioRegionIn;
        this.RadioRegionOut = radioRegionOut;
        this.SelBrand = selBrand;
        this.SelCar = selCar;    
        
        //绑定控件事件
        var pointerSelf = this;
        this.RadioRegionIn.onclick = function(evt){
            if(typeof evt=="undefined") evt=window.event;
            var  src = Browser.isIE ? evt.srcElement : evt.target ;    
            var inoutchar = (src.value=="in") ? "10" :"20"; 
            
            InputControler.lockAndClear( pointerSelf.SelBrand);
		    if(pointerSelf.SelCar) InputControler.lockAndClear( pointerSelf.SelCar);
		
            pointerSelf.getBrandList(inoutchar);    
        } ;
        this.RadioRegionOut.onclick = this.RadioRegionIn.onclick
        
        if(this.SelCar){    //如果有车型选择,给品牌下拉框挂接事件
            this.SelBrand.onchange = function(evt){            
                if(typeof evt=="undefined") evt=window.event;
                var  src = Browser.isIE ? evt.srcElement : evt.target ;            
                var brandid = src.options[src.selectedIndex].value;
                pointerSelf.getCarList(brandid);   
            }; 
        }
		 
		//锁定控件等待加载
	 
		InputControler.lockAndClear( this.SelBrand);
		if(this.SelCar) InputControler.lockAndClear( this.SelCar);
		
		//初始化城市和车型数据
		this.initCity();
		this.getBrandList("10");      		 
    };
    //初始化和加载搜索框。适用于地区是一个下拉框的情况。
    this.load2 = function(selCity,selRegion,selBrand,selCar){  
        //初始化控件
        this.SelCity = selCity;
        this.SelRegion = selRegion;
        this.SelBrand = selBrand;
        this.SelCar = selCar;    
        
        //绑定控件事件
        var pointerSelf = this;
        this.SelRegion.onchange = function(evt){
            if(typeof evt=="undefined") evt=window.event;
            var  src = Browser.isIE ? evt.srcElement : evt.target ;    
            var inoutchar = src.options[src.selectedIndex].value;
            
            InputControler.lockAndClear( pointerSelf.SelBrand);
		    if(pointerSelf.SelCar) InputControler.lockAndClear( pointerSelf.SelCar);
		
            pointerSelf.getBrandList(inoutchar);    
        } ;
         
        if(this.SelCar){    //如果有车型选择,给品牌下拉框挂接事件
            this.SelBrand.onchange = function(evt){            
                if(typeof evt=="undefined") evt=window.event;
                var  src = Browser.isIE ? evt.srcElement : evt.target ;            
                var brandid = src.options[src.selectedIndex].value;
                pointerSelf.getCarList(brandid);   
            }; 
        }
		 
		//锁定控件等待加载
	 
		InputControler.lockAndClear( this.SelBrand);
		if(this.SelCar) InputControler.lockAndClear( this.SelCar);
		
		//初始化城市和车型数据
		this.initCity();
		this.getBrandList("10");      		 
    };
}
 //ajax 类
function SimpleAjax(){ 
    //ajax 取XMLHTTPRequest
    this.initXMLHTTPRequest=function (){ //获取 XMLHTTP 对象
        var xRequest = null;      
        try {
            //ie=true;
            xRequest = new ActiveXObject("Msxml2.XMLHTTP");
            return xRequest;
        } 
        catch (othermicrosoft) {
            try {
                xRequest = new ActiveXObject("Microsoft.XMLHTTP");
                return xRequest;
            } 
            catch (failed) {
                //ie = false;
                try{
                    xRequest = new XMLHttpRequest();
                    return xRequest;
                }
                catch(error){
                    alert(error);
                    return null;
                }
            }
        } 
     };
     //ajax 发送请求
     this.sendRequest=function(url,isAsync,HttpMethod,handler,src,resulttype){  //发送 异步xml requesst   
        if(!HttpMethod){
            HttpMethod = "GET";
        } 
        
        var req = this.initXMLHTTPRequest(); 
        if(req){           
            req.onreadystatechange = function(){ 
                var READY_STATE_UNINITIALIZED=0;
                var READY_STATE_LOADING=1;
                var READY_STATE_LOADED=2;
                var READY_STATE_INTERACTIVE=3;
                var READY_STATE_COMPLETE=4;
                var RESULT_AS_TEXT=0;
                var RESULT_AS_XML=1;
                var RESULT_AS_STREAM=2;
                var RESULT_AS_ARRAY=4; 
                 
                var ready = req.readyState;
                var result = null;
             
                if(ready==READY_STATE_COMPLETE){            
                    if(req.status==200){    
                        if(resulttype== RESULT_AS_TEXT){
                        result= req.responseText;
                        }
                        else if(resulttype== RESULT_AS_XML){                
                            result= req.responseXML;
                        }
                        else if(resulttype== RESULT_AS_STREAM){
                            result= req.responseStream;
                        }
                        else if(resulttype== RESULT_AS_ARRAY){
                            result= req.responseBody;
                            
                        }    
                        handler(result,src);              
                    }
                    else{
                    //result.value = req.status;
                    }
                }
                else{
                //data = "loading…["+ready+"]";
                }
        
            }
            
            try{
                req.open(HttpMethod,url,isAsync);
            }
            catch(error){
                alert(error);
            }         
            req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            req.send(null);  
        }
    }    
}
//通用函数 
var InputControler = {
    lockAndClear :function( target ){
        target.options.length=0;
        target.options.add(new Option("请选择","-1"));
        target.disabled='disabled';
    },
    unlock: function ( target){
        target.disabled ="";        
    },
    splitToOption: function(str){
	    var tmpOption = new Option();
	    var tmpAry = str.split(",");
	    tmpOption.text = tmpAry[0];
	    tmpOption.value = tmpAry[1];
	    return tmpOption;    
    } 
}
function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}
