////////////////////////////////////////////////////////////
//
//ファイル名:   zoomrect.js
//機能		:	矩形拡大管理
//依存		:	main.js
//バージョン:　 2.0.0.1
//更新日時	:　 2006.08.01
//更新者	:	kawame
//
//////////////////////////////////////////////////////////////


//拡大用矩形
var dummyRectZR = null;
//マウスダウン座標

var psZR		= null;
//マウスアップ座標

var peZR		= null;

//矩形拡大初期化

function initZR()
{
	mouse_do_flg=false;
	
	if (eventLayer)
	{	
		eventLayer.onclick		= null;
		eventLayer.ondblclick	= null;
		eventLayer.onmousedown	= startZR;
		eventLayer.onmouseup	= null;
		eventLayer.onmousemove  = null;
		eventLayer.onmouseover  = null;
		eventLayer.onmouseout	= null;
		
	}
}

//矩形拡大開始(マウスダウン)
function startZR(evt)
{
	evt = (evt) ? evt : ((window.event) ? event : null);
	
	var coords = getPositionedEventCoords(evt);
	
	psZR	= new InputPoint(coords.x, coords.y);
	peZR	= new InputPoint(coords.x, coords.y);	
	
	//eventLayer.onclick		= setClick_count;	
	eventLayer.ondblclick	= setDblClickFlg;	
	eventLayer.onmouseup	= endZR;
	eventLayer.onmousemove  = moveZR;
	eventLayer.onmouseout	= outZR;
	
	click_flg = true;
	mouse_do_flg=true;
	
	if(!document.all)
	{
		return false;
	}
}

//矩形準備
function setDummyRectZR()
{
	dummyRectZR = document.createElement("img");
	dummyRectZR.className = "zoom_rect";
	dummyRectZR.src = IMAGE_BLANK;
	dummyRectZR.style.width = 0;
	dummyRectZR.style.height = 0;
	dummyRectZR.style.display = "block";
	document.getElementById('dummyLayerContainer').appendChild(dummyRectZR);
	
	eventLayer.style.cursor	= "crosshair";
}

//矩形指定(マウスムーブ)
function moveZR(evt)
{	
	if(mouse_do_flg)
	{
		eventLayer.onclick			=	null;
		click_flg = false;
		
		evt = (evt) ? evt : ((window.event) ? event : null);
		
		var coords = getPositionedEventCoords(evt);
		
		if(!dummyRectZR){
			setDummyRectZR();
			
			dummyRectZR.style.left =coords.x;
			dummyRectZR.style.top =coords.y;
		}
		
		
		if(psZR && dummyRectZR)
		{
			dummyRectZR.style.left	=Math.min(psZR.getX(), peZR.getX());
			dummyRectZR.style.top		= Math.min(psZR.getY(), peZR.getY());
			//↓右辺の「-5」は矩形のスタイルのボーダーと同じ値にする。borderwidth=10ならば「-10」となる

			dummyRectZR.style.width	= Math.max(Math.abs(peZR.getX() - psZR.getX())-5 , 0);
			dummyRectZR.style.height	= Math.max(Math.abs(peZR.getY() - psZR.getY())-5 , 0);
			
			peZR.setX(coords.x); 
			peZR.setY(coords.y);
		}
	}
		return false;
}

//矩形拡大終了(マウスアップ)
function endZR(evt)
{
	evt = (evt) ? evt : ((window.event) ? event : null);
	
	var coords = getPositionedEventCoords(evt);
	
	var l = Math.sqrt(Math.pow(psZR.getX()-coords.x,2)+Math.pow(psZR.getY()-coords.y,2));
	
	if(l<7)
	{			
		click_flg = true;
		point_click = coords;
		setClick_count(evt);
		if(!dblClickInterval)
		{
			dblClickInterval = window.setInterval("checkDblClickEvent();",0);
		}	
		//eventLayer.onclick =  setAttrSearchPoint;
	}

	if(!click_flg && mouse_do_flg)
	{
		mouse_do_flg=false;
		
		//指定した矩形の座標

		var min_x = Math.min(psZR.getXReal(map_minX, map_maxX, map_width),peZR.getXReal(map_minX, map_maxX, map_width));
		var min_y = Math.min(psZR.getYReal(map_minY, map_maxY, map_height),peZR.getYReal(map_minY, map_maxY, map_height));
		var max_x = Math.max(psZR.getXReal(map_minX, map_maxX, map_width),peZR.getXReal(map_minX, map_maxX, map_width));
		var max_y = Math.max(psZR.getYReal(map_minY, map_maxY, map_height),peZR.getYReal(map_minY, map_maxY, map_height));
		
		var bbox = new BoundingBox(min_x,min_y,max_x,max_y);
		
		var view = gis.viewManager.getCurrentView();
		
		var v = getViewBbox(bbox);
		view.type = v.type;
		view.scale = v.scale;
		view.boundingBox = v.boundingBox;
		view.center = v.center;
				
		gis.viewManager.setCurrentView(view);
		gis.viewManager.refresh();
		
		click_flg = true;
		
		if(CONTINUE_MODE)
		{
			var cf = false;
			for (var i = 0;i<CONTINUE_MODE.length;i++)
			{
				if(cur_mode == CONTINUE_MODE[i])
				{
					cf = true;
					break;
				}
			}
			if(!cf)
			{
				modeChange(DEF_MODE);
			}
		}	
	}
	clearDummyRectZR();	
	if(!document.all)
	{
		return false;
	}
}

function outZR(evt)
{
	if(mouse_do_flg)
	{
		endZR(evt);
	
	}
	if(!document.all)
	{
		return false;
	}
}	

//矩形削除
function clearDummyRectZR()
{
	//ダミーの矩形を削除
	if(dummyRectZR)
	{
		dummyRectZR.parentNode.removeChild(dummyRectZR);
		dummyRectZR = null;
	}
	eventLayer.onmouseclick	= null;
	eventLayer.onmouseup	= null;
	eventLayer.onmousemove  = null;
	eventLayer.onmouseout	= null;
	
	eventLayer.style.cursor	= "auto";
}																												//
																												//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////	

