////////////////////////////////////////////////////////////
//
//ファイル名:   indexmap.js
//機能		:	索引図管理
//依存		:	-
//バージョン:　 2.0.0.1
//更新日時	:　 2006.08.01
//更新者	:	kawame
//
//////////////////////////////////////////////////////////////


var indexLayer		= null;

// 表示範囲の表現タイプ


/*var INDEXMAP_VIEW_IMAGE_NONE		= "none";
var INDEXMAP_VIEW_IMAGE_POINT		= "point";
var INDEXMAP_VIEW_IMAGE_RECT		= "rect";
*/

var INDEXMAP_WIDTHREAL=null;
var INDEXMAP_HEIGHTREAL=null;

//初期化処理


function initIndexMap()
{
	//案内図
//	indexLayer	= document.getElementById("index_map");
	indexLayer	= document.getElementById("index_event");
	indexLayer.width = INDEXMAP_WIDTH;
	indexLayer.height = INDEXMAP_HEIGHT;
	
	//イベント登録
	if (indexLayer)
	{
		indexLayer.onclick		= indexClick;
		indexLayer.ondblclick	= null;
		indexLayer.onmousedown	= null;
		indexLayer.onmouseup	= null;
		indexLayer.onmousemove	= null;
		
		indexLayer.style.cursor = "crosshair";
	}
	
	INDEXMAP_WIDTHREAL=INDEXMAP_MAXX-INDEXMAP_MINX;
	INDEXMAP_HEIGHTREAL=INDEXMAP_MAXY-INDEXMAP_MINY;
}


//実座標からインデックスマップ上の座標を計算


function getIndexCoords(p)
{
	var x=parseInt((p.x-INDEXMAP_MINX)/INDEXMAP_WIDTHREAL*INDEXMAP_WIDTH);
	var y=parseInt(INDEXMAP_HEIGHT-(p.y-INDEXMAP_MINY)/INDEXMAP_HEIGHTREAL*INDEXMAP_HEIGHT);
	
	var c=new InputPoint(x,y);
	
	return c;
}

//表示位置に矢印を置く

function setIndexTarget(center)
{
	var node = document.getElementById("index_target");
	if(node)
	{
		var c=getIndexCoords(center);
		node.style.left = c.x;
		node.style.top = c.y;
		
		if(c.x<0 || c.x>INDEXMAP_WIDTH || c.y<0 || c.y>INDEXMAP_HEIGHT)
		{
			node.style.display 	= "none";
		}
		else
		{
			node.style.display 	= "block";
		}
	}
}

//表示範囲の矩形を置く

function setIndexRect(bbox)
{
	var p1 = new Point(bbox.minX,bbox.maxY);
	var _p1 = getIndexCoords(p1);
	var p2 = new Point(bbox.maxX,bbox.minY);
	var _p2 = getIndexCoords(p2);

	var disp = "inline";
	var rect = document.getElementById("index_rect");
	
	rect.className = "index_rect";
	indexborder = "2px solid #FF0000";
	rect.style.border = indexborder;
//	rect.style.borderLeft = indexborder;
	if(_p1.x<0)
	{
		_p1.x = 0;
		rect.style.borderLeft = "0px";
	}
	else if(_p1.x>INDEXMAP_WIDTH)
	{
		disp = "none";
	}
//	rect.style.borderRight = indexborder;
	if(_p2.x<0)
	{
		disp = "none";
	}
	else if(_p2.x>INDEXMAP_WIDTH)
	{
		_p2.x = INDEXMAP_WIDTH;
		rect.style.borderRight = "0px";
	}

//	rect.style.borderTop = indexborder;
	if(_p1.y<0)
	{
		_p1.y=0;
		rect.style.borderTop = "0px";
	}
	else if(_p1.y>INDEXMAP_HEIGHT)
	{
		disp = "none";
	}
//	rect.style.borderBottom = indexborder;
	if(_p2.y<0)
	{
		disp = "none";
	}
	else if(_p2.y>INDEXMAP_HEIGHT)
	{
		_p2.y = INDEXMAP_HEIGHT;
		rect.style.borderBottom = "0px";
	}

	var w = Math.abs(_p1.x-_p2.x);//-(rect.style.borderWidth.replace("px",""))*2;
	var h = Math.abs(_p1.y-_p2.y);//-(rect.style.borderWidth.replace("px",""))*2;
	
	
	rect.style.width = w;//(w>0)?w:0;
	rect.style.height = h;//(h>0)?h:0;
	rect.style.left = _p1.x;
	rect.style.top = _p1.y;
	rect.style.display = disp;
}


//案内図クリックイベント

function indexClick(evt)
{
	evt = (evt) ? evt : ((window.event) ? event : null);

	var coords = getPositionedEventCoords(evt);
	
	var x = coords.x;
	var y = coords.y;

	var p = new InputPoint(x,y);
	
	var c_x=p.getXReal(INDEXMAP_MINX, INDEXMAP_MAXX, INDEXMAP_WIDTH);
	var c_y=p.getYReal(INDEXMAP_MINY, INDEXMAP_MAXY, INDEXMAP_HEIGHT);
		
	gis.viewManager.moveManager.moveCenter(c_x,c_y);
}

