var geoAccess = new GeoAccess();
var common = new Common();
var dragLayer = new DragLayer();
var currentDocument = new CurrentDocument();

// index画面制御クラス.
function CurrentDocument()
{
	this.ActiveMouseX = 0;						// x座標(pixcel).
	this.ActiveMouseY = 0;						// y座標(pixcel).
	
	var topMargin = 104;							// キーマップTopMargin.
	var leftMargin = 285;							// キーマップLeftMargin.

	// キーマップの左上.
	var mapConstSx = -78000;
	var mapConstSy = 129000;
	
	// 背景の一枚当たりのサイズ.
	var blockSize = 400; //　ブロックサイズ.
	
	//スケールサイズ 画像一枚当たりの一辺の長さ(ｍ).
	var mapM = 44000;

	//1ピクセル当たりの移動距離を求める.
	var pixM = mapM / blockSize;
	
	var mapSelect = "MapSelect";
	var information = "Information";
	var keyWord = "KeyWord";
	var firstTime = "FirstTime";
	var requirements = "Requirements";
	var agreement = "Agreement";
	var report	= "Report";
	
	var living = "Living";
	var disaster = "Disaster";
	var sightseeing = "Sightseeing";
	var education = "Education";
	var health = "Health";
	var administration = "Administration";
	var activeTab = "";

	// 初期化.
	this.Initialize = function()
	{
		//イベント関連.
		geoAccess.Initialize();
		window.document.onmousemove = currentDocument.ScreenMouseMove;
		// ブラウザチェック.
		currentDocument.CheckBrowser();
	}
	
	// マウスムーブイベント.
	this.ScreenMouseMove = function(e)
	{
		currentDocument.GetActiveMousePos(e);
		dragLayer.Drag();
	}
	
	// 現在のマウス座標を取得する.
	this.GetActiveMousePos = function(e)
	{
		if(navigator.userAgent.search("Opera(\ |\/)6") != -1 )   //o6用.
		{
			this.ActiveMouseX = e.clientX;
			this.ActiveMouseY = e.clientY;
		}
		else if(document.all)               //e4,e5,e6用.
		{
			this.ActiveMouseX = event.x;
			this.ActiveMouseY  = event.y;
		}
		else if(document.layers || document.getElementById)    //n4,n6,n7,m1,o7,s1用.
		{
			this.ActiveMouseX = e.pageX;
			this.ActiveMouseY = e.pageY;
		}
	}
	
	// 検索テキストキーダウンイベント.
	this.SearchTextKeyDown = function(e)
	{
		var keyCode = common.GetKeyCode(e);
		
		if (keyCode == 13)
		{
			geoAccess.Search(document.getElementById('KeyWordText').value);
			return false;
		}
	}

	// 地図画面を表示する.
	// x					x座標(m).
	// y					y座標(m).
	// scale			スケール.
	this.ShowMapForm = function(x, y , scale)
	{
		return  window.open("MapForm.aspx?x=" + x + "&y=" + y + "&scale=" + scale , "_self");
	}
	
	// キーマップでクリックされた場所を中心として地図を表示する.
	this.ShowMapFormToMouse = function()
	{
		var	mouseX = currentDocument.ActiveMouseX;
		var	mouseY = currentDocument.ActiveMouseY;
		var centerX = 0;
		var centerY = 0;
		
		var version = common.CheckBrowser();
			
		if (version == common.IE6)
		{
			centerX = (mouseX + parseInt(document.body.scrollLeft)) - leftMargin;
			centerY = (mouseY + parseInt(document.body.scrollTop)) - (topMargin + parseInt(document.getElementById("Form1").style.top));
		}
		else
		{
			centerX = mouseX - leftMargin;
			centerY = mouseY - (topMargin + parseInt(document.getElementById("Form1").style.top));
		}
		
		centerX = mapConstSx + pixM * centerX;
		centerY = mapConstSy - pixM * centerY;
		
		currentDocument.ShowMapForm(centerX, centerY , geoAccess.InitialSetting.Scale);
		
	}
	
	// フレームを表示する.
	// frameName				フレーム名
	this.ShowFrame = function(frameName)
	{
		if (frameName == firstTime)
		{
			window.open("ReadMe.htm", "_blank");
			return true;
		}
		
		document.getElementById(mapSelect + "Frame").style.visibility = "hidden";
		document.getElementById(information + "Frame").style.visibility = "hidden";
		document.getElementById(keyWord + "Frame").style.visibility = "hidden";
		document.getElementById(requirements + "Frame").style.visibility = "hidden";
		document.getElementById(agreement + "Frame").style.visibility = "hidden";
		document.getElementById(report + 'Frame').style.visibility = "hidden";
		
		document.getElementById(mapSelect + "Button").src = "IndexForm/img/" + mapSelect + ".jpg";
		document.getElementById(information + "Button").src = "IndexForm/img/" + information + ".jpg";
		document.getElementById(keyWord + "Button").src = "IndexForm/img/" + keyWord + ".jpg";
		document.getElementById(requirements + "Button").src = "IndexForm/img/" + requirements + ".jpg";
		document.getElementById(agreement + "Button").src = "IndexForm/img/" + agreement + ".jpg";
		document.getElementById(report + "Button").src = "IndexForm/img/" + report + ".jpg";
		
		document.getElementById(frameName + "Frame").style.visibility = "visible";
		document.getElementById(frameName + "Button").src = "IndexForm/img/" + frameName + "_On.jpg";
		
		// カテゴリーの設定を行う.
		if (frameName == keyWord || frameName == mapSelect)
		{
			geoAccess.SetLayerCategory("0", "Mapple");
		}
		else if(frameName == information)
		{
			if (activeTab == "")
			{
				currentDocument.ShowContents(living);
			}
			else
			{
				switch(activeTab)
				{
					case living:
						geoAccess.SetLayerCategory("1", "Mapple");
						break;
					case disaster:
						geoAccess.SetLayerCategory("2", "Mapple");
						break;
					case sightseeing:
						geoAccess.SetLayerCategory("3", "Mapple");
						break;
					case education:
						geoAccess.SetLayerCategory("4", "Mapple");
						break;
					case health:
						geoAccess.SetLayerCategory("5", "Mapple");
						break;
					case administration:
						geoAccess.SetLayerCategory("6", "DM");
						break;
				}
			}
		} 
		return true;
	}
	
	// 選択されたコンテンツを表示する.
	// tabName					タブ名.
	this.ShowContents = function(tabName)
	{
		if (activeTab != tabName)
		{
			activeTab = tabName;	
		
			document.getElementById(living + "Button").src = "IndexForm/img/" + living + "_off.jpg";
			document.getElementById(disaster + "Button").src = "IndexForm/img/" + disaster + "_off.jpg";
			document.getElementById(sightseeing + "Button").src = "IndexForm/img/" + sightseeing + "_off.jpg";
			document.getElementById(education + "Button").src = "IndexForm/img/" + education + "_off.jpg";
			document.getElementById(health + "Button").src = "IndexForm/img/" + health + "_off.jpg";
			document.getElementById(administration + "Button").src = "IndexForm/img/" + administration + "_off.jpg";
			
			document.getElementById("InformationIcon").src = "IndexForm/img/" + activeTab + "_icon.gif";
			document.getElementById(activeTab + "Button").src = "IndexForm/img/" + activeTab + "_on.jpg";
		}
		
		// カテゴリーの設定を行う.
		switch(activeTab)
		{
			case living:
				geoAccess.SetLayerCategoryContents("1", "Mapple");
				break;
			case disaster:
				geoAccess.SetLayerCategoryContents("2", "Mapple");
				break;
			case sightseeing:
				geoAccess.SetLayerCategoryContents("3", "Mapple");
				break;
			case education:
				geoAccess.SetLayerCategoryContents("4", "Mapple");
				break;
			case health:
				geoAccess.SetLayerCategoryContents("5", "Mapple");
				break;
			case administration:
				geoAccess.SetLayerCategoryContents("6", "DM");
				break;
		}
		return true;
	}
	
	// ブラウザチェック.
	this.CheckBrowser = function()
	{
		var version = common.CheckBrowser();
			
		if (version != common.IE6 && version != common.FOX2)
		{
			document.getElementById('Browser').style.visibility = "visible";
			document.getElementById('Form1').style.top = 72;
		}
	}
}

