﻿	
	/**
     * 创建一个可以拉框查询地图的控件    
     */
    function KSearchRectControl()
    { 
        this.loaded = false;        

        //创建框选层
        this.zoomInObj = KBase.createDiv(1, null, 900);
        this.zoomInObj.ID = "KSearchRectControlDiv";
        KBase.setSize(this.zoomInObj, [1, 1]);
        KBase.setUnSelectable(this.zoomInObj);

        //设置透明性
        KBase.setOpacity(this.zoomInObj, 0.5);

        KBase.getStyle(this.zoomInObj)["backgroundColor"] = "#99FFff";
        KBase.getStyle(this.zoomInObj)["border"] = "#003366 solid 1px";
        KBase.getStyle(this.zoomInObj)["fontSize"] = "0px";
        KBase.getStyle(this.zoomInObj)["visibility"] = "hidden";
    }

    /**
     * 拉框查询对象初始化
     */
    var KSearchRectControl_initialize = function(mapObject)
    {
        var controlObject = this;
        if (controlObject.Map && mapObject == controlObject.Map)
        {
            return;
        }
        controlObject.Map = mapObject;
        controlObject.loaded = true;
    }

	/**
	 * 启动拉框工具
	 */
    var KSearchRectControl_startup= function()
    {
        var controlObject = this;        
        if (!controlObject.loaded) return;
        
		if (controlObject.Map.currTool!=null)		
        {
			controlObject.Map.currTool.depose();				 
		}
				
		controlObject.Map.currTool=this;	
		controlObject.Map.clearMouseScroll();	//清除鼠标滚动
		
		KBase.setCursorStyle(controlObject.Map.mapsDiv, "hand");
        
        controlObject.mapMouseDownListener = KEvent.addListener(controlObject.Map, "mousedown", controlObject, this.onMapMouseDown);              
    }
    
    /**
	 * 地图鼠标按下事件
	 */
    var KSearchRectControl_onMapMouseDown = function(position)
    {    
        var controlObject = this;
        controlObject.startPosition = position;
        KBase.getStyle(controlObject.zoomInObj)["visibility"] = "visible";
        controlObject.mapMouseDragListener = KEvent.addListener(controlObject.Map, "mousedrag", controlObject, this.onMapMouseDrag);
        controlObject.mapMouseUpListener = KEvent.addListener(controlObject.Map, "mouseup", controlObject, this.onMapMouseUp);
    }
    
    /**
	 * 地图鼠标拖动事件
	 */
    var KSearchRectControl_onMapMouseDrag = function(position)
    {
        var controlObject = this;
        controlObject.endPosition = position;
        KBase.setPosition(controlObject.zoomInObj, [Math.min(controlObject.startPosition[0], controlObject.endPosition[0]), Math.min(controlObject.startPosition[1], controlObject.endPosition[1])]);
        KBase.setSize(controlObject.zoomInObj, [Math.abs(controlObject.startPosition[0] - controlObject.endPosition[0]),
                          Math.abs(controlObject.startPosition[1] - controlObject.endPosition[1])]);
    }
    
    /**
	 * 地图鼠标释放事件
	 */
    var KSearchRectControl_onMapMouseUp = function(position)
    {
        var controlObject = this;
        controlObject.endPosition = position;   
           
        KBase.getStyle(controlObject.zoomInObj)["visibility"] = "hidden";
		KBase.setSize(controlObject.zoomInObj, [1,1]);
        
        /*
        //经动业务弹出对话框 START ADDED BY QQM 20070319
        if(KConfig.G_bOpen)
        {
			;//window.showModalDialog(KConfig.G_OpenPage, window,KConfig.G_Para);
		}
		else
		{
			KBase.getStyle(controlObject.zoomInObj)["visibility"] = "hidden";
			KBase.setSize(controlObject.zoomInObj, [1,1]);
		}
		//经动业务弹出对话框 END
         */
         
         
        if(controlObject.mapMouseDragListener)
		{
				KEvent.removeListener(controlObject.mapMouseDragListener);
				controlObject.mapMouseDragListener = null;
		}
        
        if(controlObject.mapMouseUpListene)
        {
			KEvent.removeListener(controlObject.mapMouseUpListener);
			controlObject.mapMouseUpListener = null;   
        }
             
        
        //转化客户端坐标到直角坐标 
        var position=controlObject.Map.clientToMap(controlObject.startPosition[0] + "," + controlObject.startPosition[1] + ";" + controlObject.endPosition[0] + "," + controlObject.endPosition[1]);
        KEvent.trigger(controlObject.Map, "searchrect", [position[0].x,position[0].y,position[1].x,position[1].y,1]);
    }   
    
   
	/**
     * 清除边框
     */
	var KSearchRectControl_clearRect=function()
    {
		var controlObject = this;
		KBase.getStyle(controlObject.zoomInObj)["visibility"] = "hidden";
		KBase.setSize(controlObject.zoomInObj, [1,1]);
    }  
    
    /**
     * 设置响应函数
     */
    var KSearchRectControl_setResponseFunction  = function(functionName)
    {
		var controlObject = this;
		if (controlObject.searchRectListener)	KEvent.removeListener(controlObject.searchRectListener);
		controlObject.searchRectListener=KEvent.addListener(map, "searchrect",functionName);
    }
   
    
    /**
	 * 获取控件对象
	 */
    var KSearchRectControl_getObject = function()
    {
        return this.zoomInObj;
    }
    
    /**
	 * 设置拉框层透明度比例(0-1之间)，值越大越不透明
	 */
    var KSearchRectControl_setOpacity = function(opacity)
    {
		KBase.setOpacity(this.zoomInObj, opacity);
    }
    
    /**
	 * 设置拉框层背景色
	 */
    var KSearchRectControl_setBgColor = function(color)
    {
		KBase.getStyle(this.zoomInObj)["backgroundColor"] = color;
    }
    
    /**
	 * 设置拉框层边框样式
	 */
    var KSearchRectControl_setBorderStyle = function(style)
    {
		KBase.getStyle(this.zoomInObj)["border"] = style;
    }
    
    
    
    /**
	 * 控件释放
	 */
    var KSearchRectControl_depose = function()
    {
        var controlObject = this;        
        if (controlObject.mapMouseDownListener)
        {
            KEvent.removeListener(controlObject.mapMouseDownListener);
            controlObject.mapMouseDownListener = null;
        }
        if (controlObject.mapMouseDragListener)
        {
            KEvent.removeListener(controlObject.mapMouseDragListener);
            controlObject.mapMouseDragListener = null;
        }
        if (controlObject.mapMouseUpListener)
        {
            KEvent.removeListener(controlObject.mapMouseUpListener);
            controlObject.mapMouseUpListener = null;
        }
        
        if (controlObject.searchRectListener)
        {
            KEvent.removeListener(controlObject.searchRectListener);
            controlObject.searchRectListener = null;
        }   
        
        
        if(controlObject.Map.isLogout)controlObject.zoomInObj = null;
    }

	
    KConfig.defineClass("KSearchRectControl", KSearchRectControl);
    KConfig.defineFunction(KSearchRectControl, "initialize", KSearchRectControl_initialize);
    KConfig.defineFunction(KSearchRectControl, "startup", KSearchRectControl_startup);
    KConfig.defineFunction(KSearchRectControl, "onMapMouseDown", KSearchRectControl_onMapMouseDown);
    KConfig.defineFunction(KSearchRectControl, "onMapMouseDrag", KSearchRectControl_onMapMouseDrag);
    KConfig.defineFunction(KSearchRectControl, "onMapMouseUp", KSearchRectControl_onMapMouseUp); 
      
    //经动业务专用 START
    KConfig.defineFunction(KSearchRectControl, "clearRect", KSearchRectControl_clearRect);
    //经动业务专用 END
    
    KConfig.defineFunction(KSearchRectControl, "getObject", KSearchRectControl_getObject);
	KConfig.defineFunction(KSearchRectControl, "depose", KSearchRectControl_depose);
	KConfig.defineFunction(KSearchRectControl, "setOpacity", KSearchRectControl_setOpacity);
	KConfig.defineFunction(KSearchRectControl, "setBgColor", KSearchRectControl_setBgColor);
	KConfig.defineFunction(KSearchRectControl, "setBorderStyle", KSearchRectControl_setBorderStyle);
	KConfig.defineFunction(KSearchRectControl, "setResponseFunction", KSearchRectControl_setResponseFunction);