﻿
	/**
     * 创建一个查询类
     */ 
    function KSearch()
    {
        this.loaded=false;
        this.searchResult="";       
    }
    
    /**
     * 对象初始化
     */
    var KSearch_initialize = function(mapObject)
    {
        var controlObject = this;
        if (controlObject.Map && mapObject == controlObject.Map)
        {
            return;
        }
        controlObject.Map = mapObject;
        controlObject.loaded = true;
    }
    
    /**
	 * 获取控件对象
	 */
    var KSearch_getObject = function()
    {
        return null;
    }    
    
    /**
	 * 释放对象
	 */
    var KSearch_depose = function()
    {
        var controlObject = this;        
        controlObject.searchResult="";
        controlObject.loaded = false;
        if (controlObject.mapChangeListener!=null)
        {
			KEvent.removeListener(controlObject.mapChangeListener);
            controlObject.mapChangeListener = null;
        }
    }
    
    /**
	 * 属性查询(多图层)
	 */
    var KSearch_queryMultiLayer=function(layerNames,queryCode,currPage,pageSize)
    {
		var controlObject = this;		
		
		if (!controlObject.Map.loaded) return;		
		controlObject.Map.showProgress(true);		
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize;
		if (arguments.length>4)
		{
			for (var i=4;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchMultiLayer",parameter);		
		controlObject.functionName="KSearch_queryMultiLayer";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
    }
    
    
    /**
	 * 属性查询(单图层)
	 */
    var KSearch_querySingleLayer=function(layerNames,queryCode,currPage,pageSize)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize;
		if (arguments.length>4)
		{
			for (var i=4;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchSingleLayer",parameter);		
		controlObject.functionName="KSearch_querySingleLayer";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
    }
    
     /**
	 * 属性查询(单图层),只返回结果，不定位
	 */
    var KSearch_querySingleLayerNoPitch=function(layerNames,queryCode,currPage,pageSize)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize;
		if (arguments.length>4)
		{
			for (var i=4;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchSingleLayer",parameter);		
		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message!=null)
		{	
			//以下为地图定位代码
			//controlObject.Map.level=message.level;
			//var time=new Date();
			//controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			//KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
		}
		return message.data;
		
		
    }
    /**
	 * 属性查询(单图层)，同时指定放大到某个级别
	 *zxshen add 2007-11-28
	 */
    var KSearch_querySingleLayerAndZoomToLevel=function(layerNames,queryCode,currPage,pageSize,level,width,height)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize+ ";" + level+";"+width+";"+height;
		if (arguments.length>7)
		{
			for (var i=7;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchSingleLayerAndZoomToLevel",parameter);		
		controlObject.functionName="KSearch_querySingleLayer";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
    }
    
    
    
    /**
	 * 地图缓冲区查询(通过坐标)
	 */
    var KSearch_queryByBuffer=function(layerNames,queryCode,currPage,pageSize,xMap,yMap,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + xMap + ";" + yMap + ";" + radius;
		if (arguments.length>7)
		{
			for (var i=7;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByBuffer",parameter);		
		controlObject.functionName="KSearch_queryByBuffer";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
    }
    /**
	 *地图缓冲区查询(通过坐标),只返回结果集，不在地图定位
	 */
    var KSearch_queryByBufferNoPitch=function(layerNames,queryCode,currPage,pageSize,xMap,yMap,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + xMap + ";" + yMap + ";" + radius;
		if (arguments.length>7)
		{
			for (var i=7;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByBuffer",parameter);		
		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message!=null)
		{	
			//以下为地图定位代码
			//controlObject.Map.level=message.level;
			//var time=new Date();
			//controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			//KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
		}
		return message.data;
    }
    
      /**
	 * 地图缓冲区查询(通过坐标)
	 */
    var KSearch_queryByPointBuffer=function(layerNames,xMap,yMap,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + xMap + ";" + yMap + ";" + radius;
		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByPointBuffer",parameter);				
		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message!=null)
		{	
			controlObject.Map.level=message.level;
			var time=new Date();
			controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
		}
		return message.data;
    }
     /**
	 * 地图画圆查询(通过坐标和半径)
	 */
    var KSearch_queryByOval=function(layerNames,xMap,yMap,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + xMap + ";" + yMap + ";" + radius;
		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByOval",parameter);				
		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message!=null)
		{	
			controlObject.Map.level=message.level;
			var time=new Date();
			controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
		}
		return message.data;
    }
    
    /**
	 * 地图缓冲区查询(通过FID)
	 */
    var KSearch_queryByFidBuffer=function(layerNames,queryCode,currPage,pageSize,bufferLayer,bufferFids,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + bufferLayer + ";" + bufferFids + ";" + radius;
		if (arguments.length>7)
		{
			for (var i=7;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByFidBuffer",parameter);		
		controlObject.functionName="KSearch_queryByFidBuffer";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
    }
    
    /**
	 * 地图缓冲区查询(通过名称)
	 */
    var KSearch_queryByNameBuffer=function(layerNames,queryCode,currPage,pageSize,bufferLayer,bufferNames,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + bufferLayer + ";" + bufferNames + ";" + radius;
		if (arguments.length>7)
		{
			for (var i=7;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByNameBuffer",parameter);		
		controlObject.functionName="KSearch_queryByNameBuffer";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
    }    

     /**
	 * 范围查询
	 */
    var KSearch_queryByOvalSql=function(layerNames,queryCode,currPage,pageSize,xMap,yMap,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + xMap + ";" + yMap + ";" + radius;
		if (arguments.length>7)
		{
			for (var i=7;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByOvalSql",parameter);			
		controlObject.functionName="KSearch_queryByOvalSql";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);			
    }   
    
    /**
	 * 范围查询
	 */
    var KSearch_queryByRect=function(layerNames,queryCode,currPage,pageSize,left,top,right,bottom,returnType)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + left + ";" + top + ";" + right + ";" + bottom;
		if (arguments.length>9)
		{
			for (var i=9;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByRect",parameter);
		if(returnType==null)returnType=2;
		if(returnType==1)
		{
			var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
			var message=KBase.getMessage(responseText);	
			if(message!=null)
			{	
				controlObject.Map.level=message.level;
				var time=new Date();
				//controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
				//KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
			}
			//controlObject.Map.clearOverLays();
			return message.data;	
		}
		else if(returnType==2)
		{	
			controlObject.functionName="KSearch_queryByRect";
			KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);			
		}			
		
    }        
    
     /**
	 * 多边形查询
	 */
    var KSearch_queryByPolygon=function(layerNames,queryCode,currPage,pageSize,coordinate,returnType)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var strX = "";
		var strY = "";
		for(var i=0;i<coordinate.length;i++)
		{
			if(i==0)
			{
				strX=coordinate[i].x.toString();
				strY=coordinate[i].y.toString();
			}
			else
			{
				strX += "," + coordinate[i].x.toString();
				strY += "," + coordinate[i].y.toString();
			}
		}
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + strX + ";" + strY;
		if (arguments.length>6)
		{
			for (var i=6;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByPolygon",parameter);	
		if(returnType==null)returnType=2;
		if(returnType==1)
		{
			var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
			var message=KBase.getMessage(responseText);	
			if(message!=null)
			{	
				controlObject.Map.level=message.level;
				var time=new Date();
				//controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
				//KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
			}
			//controlObject.Map.clearOverLays();
			return message.data;	
		}
		else if(returnType==2)
		{	
			controlObject.functionName="KSearch_queryByPolygon";
			KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);
		}
					
    }
        
    /**
	 * 面范围查询
	 */
    var KSearch_queryAreaByRect=function(layerNames,queryCode,currPage,pageSize,left,top,right,bottom)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + left + ";" + top + ";" + right + ";" + bottom;
		if (arguments.length>8)
		{
			for (var i=8;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchAreaByRect",parameter);			
		controlObject.functionName="KSearch_queryAreaByRect";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
				
    }  
        
     /**
	 * 点击面查询
	 */
    var KSearch_queryAreaByPoint=function(layerNames,left,top,right,bottom)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + left + ";" + top + ";" + right + ";" + bottom;
		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchAreaByPoint",parameter);			
		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message!=null)
		{	
			controlObject.Map.level=message.level;
			var time=new Date();
			controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
		}
		return message.data;	
    }
    
     /**
	 * 面上点查询[查询点在指定区域的特征点信息,如在思名区查找二及特征点]
	 * 1代表直接返回结果,2代表定位地图显示
	 */
    var KSearch_queryPointByArea=function(areaLayerNames,pointLayerNames,aryCondition,returnType,arySelectCondition,queryCode,pageSize,currPage)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=areaLayerNames + ";" + pointLayerNames + ";" + aryCondition + ";" +  arySelectCondition + ";" + queryCode + ";" + currPage + ";" + pageSize;
		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchPointByArea",parameter);			
		if(returnType==null)returnType=2;
		if(returnType==1)
		{
			var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
			var message=KBase.getMessage(responseText);	
			if(message!=null)
			{	
				controlObject.Map.level=message.level;
				var time=new Date();
				controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
				KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
			}
			return message.data;	
		}
		else if(returnType==2)
		{
			controlObject.functionName="KSearch_queryPointByArea";
			KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
		}
    }
    
    /**
	 * 点查询
	 */
    var KSearch_queryByPoint=function(layerNames,queryCode,left,top,right,bottom)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		
		var parameter=layerNames + ";" + queryCode + ";" + left + ";" + top + ";" + right + ";" + bottom;
		if (arguments.length>8)
		{
			for (var i=8;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByPoint",parameter);		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var result=KBase.getMessage(responseText);				
		if (result!=null&&!result.isError)
		{
			var recordCount=parseInt(result.text[0]);
			if (recordCount>0)	
			{
				return result.data;
			}
			else
			{
				return null;
			}			
		}
		else
		{
			KEvent.trigger(controlObject.Map, "error", ["点选择KSearch_queryByPoint-->",responseText]);				
			return null;
		}		
    }
    
    /**
	 * 地图定位(通过FID)
	 * 级别[level]
	 * 地图长/宽[scale]
	 */
    var KSearch_zoomToFeatureByFid=function(layerNames,queryCode,fids,level,width,height,returnType)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		
		var parameter=layerNames + ";" + queryCode + ";" + fids+ ";" + level+";"+width+";"+height;
		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"ZoomToFeatureByFid",parameter);		
		if(returnType==null)returnType=2;
		if(returnType==1)
		{
			var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
			var message=KBase.getMessage(responseText);	
			if(message!=null)
			{	
				controlObject.Map.level=message.level;
				var time=new Date();
				controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
				KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
			}
			return message.data;	
		}
		else if(returnType==2)
		{
			controlObject.functionName="KSearch_zoomToFeatureByFid";
			KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
		}
    }
    
     
    
    /**
	 * 地图定位(通过名称)
	 * 级别[level]
	 * 查询对应的XML[search]
	 * 地图长/宽[scale]
	 */
    var KSearch_zoomToFeatureByName=function(layerNames,queryCode,names,level,width,height,returnType)
    {
		var controlObject = this;	
		
		if (!controlObject.Map.loaded) return;
		
		var parameter=layerNames + ";" + queryCode + ";" + names + ";" + level + ";" + width+";"+height;		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"ZoomToFeatureByName",parameter);		
	
		if(returnType==null)returnType=2;
		if(returnType==1)
		{
			var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
			var message=KBase.getMessage(responseText);	
			if(message!=null)
			{	
				controlObject.Map.level=message.level;
				var time=new Date();
				controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
				KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
			}
			return message.data;	
		}
		else if(returnType==2)
		{
			controlObject.functionName="KSearch_zoomToFeatureByName";
			KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
		}
		
    }
    
    
    /**
     * 设置响应函数
     */
    var KSearch_setResponseFunction  = function(functionName)
    {
		var controlObject = this;		
		if (controlObject.searchfinishedListener)	KEvent.removeListener(controlObject.searchfinishedListener);
		controlObject.searchfinishedListener=KEvent.addListener(controlObject, "searchfinished",functionName);									
    }
    
    
    /**
	 * 查询结束处理
	 */
    var KSearch_queryEnd=function()
    {		
		var controlObject=this.sendObject;
		var responseText=this.request.responseText;
		var functionName=controlObject.functionName;
		
		controlObject.searchResult=KBase.getMessage(responseText);		
		var result=controlObject.searchResult;
			
		if (result!=null&&!result.isError)
		{
			//设置缩放等级
			controlObject.Map.level=result.level;
			controlObject.Map.setMapBorderValue(result.mapLeft,result.mapTop,result.mapRight,result.mapBottom);
			
			var time=new Date();
			controlObject.Map.mapImg.src=controlObject.Map.mapPath + "?" + time.valueOf();
			
			//新建地图加载完成事件
			if (controlObject.mapChangeListener==null)
				controlObject.mapChangeListener = KEvent.addListener(controlObject.Map, "mapload", controlObject, controlObject.accountPosition);
			
			//触发事件
			KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);			
			KEvent.trigger(controlObject.Map, "log", ["查询成功" + functionName + "-->",responseText]);				
		}
		else
		{
			KEvent.trigger(controlObject.Map, "error", ["查询异常" + functionName + "-->",responseText]);
			if (controlObject.mapChangeListener!=null)
			{
				KEvent.removeListener(controlObject.mapChangeListener);
				controlObject.mapChangeListener = null;
			}			
		}
		controlObject.Map.showProgress(false);			
    }
    
    /**
     * 计算查询要素的位置
     */
    var KSearch_accountPosition=function()
    {
		var controlObject = this;
		
		if (controlObject.searchResult=="") return;		
		
		
		var recordCount=parseInt(controlObject.searchResult.text[0]);		
		var pageCount=parseInt(controlObject.searchResult.text[1]);
		
				
		var featrues=controlObject.searchResult.data;
		if (featrues==null||featrues.length==0)
		{	
			if(recordCount.toString()=="NaN" && "NaN"==pageCount.toString())//银行网点
				KEvent.trigger(controlObject, "searchfinished",[featrues]);	
			else
				KEvent.trigger(controlObject, "searchfinished",[featrues,recordCount,pageCount]);	
			return ;
		}
		
		var parameter="";
		for (var i=0;i<featrues.length;i++)	
		{
			if (i==0) parameter+=featrues[i].xMap + "," + featrues[i].yMap;
			else	parameter+= ";" + featrues[i].xMap + "," + featrues[i].yMap;
		}		
		
		var position=controlObject.Map.mapToClient(parameter);		
		for (var i=0;i<featrues.length;i++)	
		{
			featrues[i].x=position[i].x;
			featrues[i].y=position[i].y;
		}
		
		if(recordCount.toString()=="NaN" && "NaN"==pageCount.toString())//银行网点
			KEvent.trigger(controlObject, "searchfinished",[featrues]);	
		else		
			KEvent.trigger(controlObject, "searchfinished",[featrues,recordCount,pageCount]);
			
		//新增保存拉框选择的边框
		if(controlObject.searchResult.text.length==12)//6
		{
			var xLeft = controlObject.searchResult.text[2];
			var yTop = controlObject.searchResult.text[3];
			var xRight  = controlObject.searchResult.text[4];
			var yBottom = controlObject.searchResult.text[5];
			var position=xLeft + "," + yTop + ";" + xRight + "," + yBottom;
			var clientposition=controlObject.Map.mapToClient(position);
			KBase.getStyle(map.searchRectControl.zoomInObj)["visibility"] = "visible";
			KBase.setPosition(map.searchRectControl.zoomInObj, [Math.min(clientposition[0].x, clientposition[1].x), Math.min(clientposition[0].y, clientposition[1].y)]);
			KBase.setSize(map.searchRectControl.zoomInObj, [Math.abs(clientposition[0].x - clientposition[1].x),
                          Math.abs(clientposition[0].y - clientposition[1].y)]);
		}
    }   
    
    
     /**
	 * 根据银行ID[条件]得到坐标
	 */
    var KSearch_getBankCoord=function(layerNames,condition)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		var parameter=layerNames + ";" + condition;
		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"GetBankCoord",parameter);			
		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message==null)
		{		
			return "获取失败";
		}
		return message.data;
				
    }  
    
    /**
	 * 通过FID得到Fid对应的地图直角坐标
	 */
    var KSearch_getmapCroodByFid=function(layerNames,queryCode,fids)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		
		var parameter=layerNames + ";" + queryCode + ";" + fids;
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"ZoomToFeatureByFid",parameter);		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);		
		controlObject.searchResult=KBase.getMessage(responseText);		
		var result=controlObject.searchResult;
		var message="";
		for(var i=0;i<result.data.length;i++)
		{
			var xMap=result.data[i].xMap;
			var yMap=result.data[i].yMap;
			message+=";"+xMap+","+yMap;
		}
		message=message.replace(/;/,"");
		return message;
		
    }
     /**********新增银行网点查询功能 START***********************/
    //根据传输的XML，在地图上定位
    var KSearch_zoomToFeatureByBankXml=function(parameter)
    {
		var controlObject = this;	
		
		if (!controlObject.Map.loaded) return;
					
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"ZoomToFeatureByBankXml",parameter);			
		controlObject.functionName="KSearch_zoomToFeatureByBankXml";
		KRequest.send(controlObject,controlObject.Map.mapCmd,sendMessage,KSearch_queryEnd);	
    }
    /**********新增银行网点查询功能 END***********************/
    
     /**
	 * 银行业务
	 */
    var KSearch_queryMultiLayerProperty=function(layerNames,queryCode,currPage,pageSize)
    {
		var controlObject = this;		
		
		if (!controlObject.Map.loaded) return;		
		controlObject.Map.showProgress(true);		
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize;
		if (arguments.length>4)
		{
			for (var i=4;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchMultiLayerProperty",parameter);		
		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message!=null)
		{	
			controlObject.Map.level=message.level;
			var time=new Date();
			controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
		}
		return message.data;
    }
    /**
	 * 银行业务[根据ID进行周边查询]
	 */
    var KSearch_queryBankByFidBuffer=function(layerNames,queryCode,currPage,pageSize,bufferLayer,bufferFids,radius)
    {
		var controlObject = this;
		
		if (!controlObject.Map.loaded) return;
		controlObject.Map.showProgress(true);	
		
		var parameter=layerNames + ";" + queryCode + ";" + currPage + ";" + pageSize + ";" + bufferLayer + ";" + bufferFids + ";" + radius;
		if (arguments.length>7)
		{
			for (var i=7;i<arguments.length;i++)	 parameter+=";" + arguments[i];
		}
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"SearchByFidBuffer",parameter);		
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);	
		if(message!=null)
		{	
			controlObject.Map.level=message.level;
			var time=new Date();
			controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
		}
		return message.data;
    }
    
    /**
    *清除选择集
    */
    var KSearch_ClearSelection=function ()
	{		
		var controlObject = this;     
		var parameter="";
		if (arguments.length==0)
		{
			parameter="";
			return;
		}
		var layerName=arguments[0];	//图层名称
						
		parameter=layerName;
		
		var sendMessage=KBase.createSendXml(controlObject.Map.userId,"ClearSelection",parameter);			
		var responseText=KRequest.sendInPhase(KConfig.MapCmd,sendMessage);	
		var message=KBase.getMessage(responseText);		
		
		if(message!=null)
		{	
			controlObject.Map.level=message.level;
			var time=new Date();
			controlObject.Map.mapImg.src=this.Map.mapPath + "?" + time.valueOf();			
			KEvent.trigger(controlObject.Map, "mapload", [controlObject.Map.mapImg.src]);
			KEvent.trigger(controlObject.Map, "log", ["清除选择集成功[KSearch_ClearSelection]-->",responseText]);
		}
		else
		{
			if (controlObject.mapChangeListener!=null)
			{
				KEvent.removeListener(controlObject.mapChangeListener);
				controlObject.mapChangeListener = null;
			}
			KEvent.trigger(controlObject.Map, "log", ["清除选择集失败[KSearch_ClearSelection]-->",responseText]);
		}
		return message.text;
	}  
    
   
    KConfig.defineFunction(KSearch, "initialize", KSearch_initialize);  
    KConfig.defineFunction(KSearch, "getObject", KSearch_getObject);
	KConfig.defineFunction(KSearch, "depose", KSearch_depose);
	
	KConfig.defineFunction(KSearch, "queryMultiLayer", KSearch_queryMultiLayer);
    KConfig.defineFunction(KSearch, "querySingleLayer", KSearch_querySingleLayer);
    KConfig.defineFunction(KSearch, "querySingleLayerNoPitch", KSearch_querySingleLayerNoPitch);
    KConfig.defineFunction(KSearch, "querySingleLayerAndZoomToLevel", KSearch_querySingleLayerAndZoomToLevel);
    
    KConfig.defineFunction(KSearch, "queryByBuffer", KSearch_queryByBuffer);
    KConfig.defineFunction(KSearch, "queryByBufferNoPitch", KSearch_queryByBufferNoPitch);
    KConfig.defineFunction(KSearch, "queryByFidBuffer", KSearch_queryByFidBuffer);
    KConfig.defineFunction(KSearch, "queryByNameBuffer", KSearch_queryByNameBuffer);
    KConfig.defineFunction(KSearch, "queryByPointBuffer", KSearch_queryByPointBuffer);
    
    KConfig.defineFunction(KSearch, "queryByOval", KSearch_queryByOval);
    KConfig.defineFunction(KSearch, "queryByOvalSql", KSearch_queryByOvalSql);
    KConfig.defineFunction(KSearch, "queryByPolygon", KSearch_queryByPolygon);
    
    KConfig.defineFunction(KSearch, "queryByRect", KSearch_queryByRect);
    KConfig.defineFunction(KSearch, "queryByPoint", KSearch_queryByPoint); 
    KConfig.defineFunction(KSearch, "queryAreaByRect", KSearch_queryAreaByRect); 
    KConfig.defineFunction(KSearch, "queryAreaByPoint", KSearch_queryAreaByPoint); 
    KConfig.defineFunction(KSearch, "accountPosition", KSearch_accountPosition);  

    KConfig.defineFunction(KSearch, "zoomToFeatureByFid", KSearch_zoomToFeatureByFid);  
    KConfig.defineFunction(KSearch, "zoomToFeatureByName", KSearch_zoomToFeatureByName); 
     
    KConfig.defineFunction(KSearch, "queryPointByArea", KSearch_queryPointByArea);  
    
    KConfig.defineFunction(KSearch, "getmapCroodByFid", KSearch_getmapCroodByFid);      
    KConfig.defineFunction(KSearch, "zoomToFeatureByBankXml", KSearch_zoomToFeatureByBankXml);  
    KConfig.defineFunction(KSearch, "queryMultiLayerProperty", KSearch_queryMultiLayerProperty);
    KConfig.defineFunction(KSearch, "queryBankByFidBuffer", KSearch_queryBankByFidBuffer);
    KConfig.defineFunction(KSearch, "ClearSelection", KSearch_ClearSelection);  
    
    KConfig.defineFunction(KSearch, "getBankCoord", KSearch_getBankCoord);  
    
    
    KConfig.defineFunction(KSearch, "setResponseFunction", KSearch_setResponseFunction); 
    KConfig.defineClass("KSearch", KSearch);
    