﻿/****************************************************/
/*													*/
/*	マップ制御										*/
/*													*/
/****************************************************/

/*--------------------------------------------------*/
/*	共通変数										*/
/*--------------------------------------------------*/
var companyDataListRegist;			//企業データ
var MAPObjectRegist; 				//マップオブジェクト
var registMarker;					//マーカーオブジェクト
var clientIDRegist; 				//クライアントID
var initializeFlg = 0; 				//初期表示フラグ

/*--------------------------------------------------*/
/*	初期表示										*/
/*--------------------------------------------------*/
function InitializeRegist()
{
	if (GBrowserIsCompatible())
	{
		if (initializeFlg == 0)
		{
			//企業データ取得
			companyDataListRegist = GetCompanyDataList();

			//初期位置情報
			var homePosition = new GLatLng(43.062098, 141.354378);

			//マップ作成
			MAPObjectRegist = new GMap2($("divMapRegist"));
			MAPObjectRegist.setCenter(homePosition, 10);

			//マップコントロール
			MAPObjectRegist.addControl(new GLargeMapControl());

			//市町村情報、座標情報が存在する場合
			if ($(clientIDRegist + "txtlatitude").value != "" && $(clientIDRegist + "txtlongitude").value != "" && $(clientIDRegist + "cboShichouson").value != 0)
			{
				//登録されている企業マーカーを表示
				ShowCompanyMapRegist($(clientIDRegist + "cboShichouson").value);

				//座標を取得
				var registPosition = new GLatLng($(clientIDRegist + "txtlatitude").value, $(clientIDRegist + "txtlongitude").value);

				//表示位置変更
				MAPObjectRegist.setCenter(registPosition, 18);

				var markerInfo = "ドラッグで位置の調整が可能です。";

				//アイコン作成
				var iconObject = new GIcon();
				iconObject.iconSize = new GSize(30, 30);
				iconObject.iconAnchor = new GPoint(15, 15);
				iconObject.infoWindowAnchor = new GPoint(15, -10);
				iconObject.image = "../images/m_icon/select.gif";

				//マーカー作成
				registMarker = new GMarker(registPosition, { icon: iconObject, autoPan: true, draggable: true, bouncy: false });
				MAPObjectRegist.addOverlay(registMarker);
				registMarker.openInfoWindow(markerInfo);

				//マーカーイベント
				GEvent.addListener(registMarker, 'dragstart', function() {
					registMarker.closeInfoWindow();
				});
				GEvent.addListener(registMarker, 'dragend', function() {
					registMarker.openInfoWindow(markerInfo);
					CalculateLatLng(registMarker);
				});
			}

			initializeFlg = 1;
		}
	}
}

/*--------------------------------------------------*/
/*	座標検索										*/
/*--------------------------------------------------*/
function SearchAddress()
{
	if (!MAPObjectRegist)
	{
		return;
	}

	//入力チェック
	if ($(clientIDRegist + "cboChiiki").value == 0)
	{
		alert("地域を選択してください。");
		return;
	}
	else if ($(clientIDRegist + "cboShichouson").value == 0)
	{
		alert("市町村を選択してください。");
		return;
	}
	else if ($(clientIDRegist + "txtAddress").value == "")
	{
		alert("住所を入力してください。");
		return;
	}

	//住所情報取得
	var address = $(clientIDRegist + "txtAddress").value;

	//入力した住所から座標を取得
	var geocoder = new GClientGeocoder();
	geocoder.getLatLng(address, function(registPosition) {
	if (!registPosition)
		{
			alert("座標を取得できませんでした。");
		}
		else
		{
			//表示したマーカーを削除

				MAPObjectRegist.clearOverlays();


			//登録されている企業マーカーを表示
			ShowCompanyMapRegist($(clientIDRegist + "cboShichouson").value);

			//表示位置変更
			MAPObjectRegist.setCenter(registPosition, 18);

			var markerInfo = "ドラッグで位置の調整が可能です。";

			//アイコン作成
			var iconObject = new GIcon();
			iconObject.iconSize = new GSize(30, 30);
			iconObject.iconAnchor = new GPoint(15, 15);
			iconObject.infoWindowAnchor = new GPoint(15, -10);
			iconObject.image = "../images/m_icon/select.gif";

			//マーカー作成
			registMarker = new GMarker(registPosition, { icon: iconObject, autoPan: true, draggable: true, bouncy: false });
			MAPObjectRegist.addOverlay(registMarker);
			registMarker.openInfoWindow(markerInfo);
			CalculateLatLng(registMarker);

			//マーカーイベント
			GEvent.addListener(registMarker, 'dragstart', function() {
				registMarker.closeInfoWindow();
			});
				GEvent.addListener(registMarker, 'dragend', function() {
				registMarker.openInfoWindow(markerInfo);
				CalculateLatLng(registMarker);
			});
		}
	});
}

/*--------------------------------------------------*/
/*	座標算出										*/
/*--------------------------------------------------*/
function CalculateLatLng(registMarker)
{
	var registPosition = registMarker.getLatLng();
	var lat = registPosition.lat();
	var lng = registPosition.lng();

	lat = String(lat.toFixed(7));
	lng = String(lng.toFixed(7));

	$(clientIDRegist + "txtlatitude").value = lat;
	$(clientIDRegist + "txtlongitude").value = lng;
}

/*--------------------------------------------------*/
/*	企業マップ表示									*/
/*--------------------------------------------------*/
function ShowCompanyMapRegist(communityID)
{
	//選択した市町村の企業情報を取得
	var companyMapData = companyDataListRegist[communityID];

	//企業マーカー表示
	for (id in companyMapData)
	{
		ShowCompanyMarkerRegist(companyMapData[id]);
	}
}

/*--------------------------------------------------*/
/*	企業マーカー表示								*/
/*--------------------------------------------------*/
function ShowCompanyMarkerRegist(markerElement)
{
	//アイコン作成
	var iconObject = new GIcon();
	iconObject.iconSize = new GSize(30, 30);
	iconObject.iconAnchor = new GPoint(15, 15);
	iconObject.infoWindowAnchor = new GPoint(15, -10);
	iconObject.image = "../images/m_icon/" + markerElement.businessID + ".gif";

	//マーカー作成
	var markerObject = new GMarker(new GLatLng(markerElement.lat, markerElement.lng), { icon: iconObject });

	//マーカー表示
	MAPObjectRegist.addOverlay(markerObject);
}

