/************************************************
 Google Map表示
 2007.07.17: 初版
*************************************************/

// 初期表示座標
var m_globalPos = new Array("35.70362","139.743570");

// 各マーカー座標
var m_localPos = new Array(
"35.70362,139.743570"
);

// マーカー数（各マーカー座標と同数を設定）
var m_makerNum = 1;

// 初期ズーム値（小さいほど広域: 0～17）
var minZoom = 15;
var maxZoom = 18;


// マップコントロール
var isMapControl = true;	// ズームイン/アウト
var isMapType = true;		// マップタイプ切替

// サムネイル地図
var isOverview = false;
var overWidth = 120;
var overHeight = 80;

// 情報ウィンドウの表示（フリーセルでは不要）
var isInfo = false;

// 情報ウィンドウを初期画面から表示
var isOpenInfo = false;


// Google Map使用可能環境
var isGoogle = true;

// Google Mapオブジェクト関係
var m_pMap = "";
var m_pCenter = "";

// 各マーカーポインタ
var m_pMarker = new Array(m_makerNum);

// ふきだし情報
var m_infoName = "map_info.html";
var m_pInfo = new Array(m_makerNum);

// 情報ウィンドウ内容
var contents = "";


/************************************************
 Google Map初期化処理: initMap()
*************************************************/
function initMap() {
	// Google Map使用可能環境か確認
	 if (!GBrowserIsCompatible()) {
		document.getElementById('map').innerHTML='ご利用の環境ではこのマップをご覧いただけません。';
		isGoogle = 0;	// Google Map使用不可
		return;
	}

	// 地図の生成 - GMap2
	m_pMap = new GMap2(document.getElementById("map"));
	// ダブルクリックでズーム
	m_pMap.enableDoubleClickZoom();
	// 上記ズーム時の連続ズーム
	m_pMap.enableContinuousZoom(); 

	// 座標情報（GPoint）の生成
	lon = m_globalPos[0];
	lat =  m_globalPos[1];
	m_pCenter = new GLatLng(lon, lat);

	// 座標情報を元に地図を表示 - GMap2
	m_pMap.setCenter(m_pCenter, minZoom);

	// マーカー表示
	for (i = 0; i < m_makerNum; i++) {
		lon = m_localPos[i].split(',')[0];
		lat = m_localPos[i].split(',')[1];
		pPoint = new GLatLng(lon, lat);
		m_pMarker[i] = new GMarker(pPoint);
		m_pMap.addOverlay(m_pMarker[i]);
	}
	// マップコントロール
	if (isMapControl) {
		m_pMap.addControl(new GLargeMapControl());
	}
	// マップタイプ切替
	if (isMapType) {
		m_pMap.addControl(new GMapTypeControl());
	}
	// サムネイル
	if (isOverview) {
		m_pMap.addControl(new GOverviewMapControl(new GSize(overWidth,overHeight)));
	}

	// 情報ウィンドウ関連処理（フリーセルでは不要）
	if (isInfo) {
		// 情報ウィンドウ内の情報取得イベント登録
		pRequest = GXmlHttp.create();
		pRequest.open("GET", m_infoName, true);

		// 情報ウィンドウ内の情報取得
		// onreadystatechangeが変更される毎に判別
		pRequest.onreadystatechange = function () {
			// readyState値は4で受信完了
			if (pRequest.readyState == 4) {
				res = pRequest.responseText;
				for (i = 0; i < m_makerNum; i++) {
					//m_pInfo[i] = res.split('\n')[i];
					m_pInfo[i] = res.split('</table>')[i];
				}
				// 初期表示時に情報ウィンドウを表示（同時に複数は表示できない）
				if (isOpenInfo) {
					m_pMarker[0].openInfoWindowHtml(m_pInfo[0]);
				}
			}
		};
		// コールバック
		pRequest.send(null);
		// マーカークリック時のイベント登録
		initEvent();
	}
}


/************************************************
 Google Mapイベント登録: initEvent()
*************************************************/
function initEvent() {
	// マーカークリックで情報ウィンドウを表示するイベントを登録
	GEvent.addListener(m_pMarker[0], "click", function() {
		//pMap.openInfoWindowHtml(pMap.getCenterLatLng(), contents);
		//pMarker.showMapBlowup();
		m_pMarker[0].openInfoWindowHtml(m_pInfo[0]);

	});
}


/************************************************
 Google Map移動処理: moveMap(地図番号)
*************************************************/
function moveMap(num) {
	if (!isGoogle) { return; }
	for (i = 0; i < m_makerNum; i++) {
		if (i == num) {
			lon = m_localPos[i].split(',')[0];
			lat = m_localPos[i].split(',')[1];
			pPoint = new GLatLng(lon, lat);
			m_pMarker[i].openInfoWindowHtml(m_pInfo[i]);
			break;
		}
	}
	m_pMap.panTo(pPoint);
}


/************************************************
 Google Map拡大処理: zoomMap(地図番号)
*************************************************/
function zoomMap(num) {
	if (!isGoogle) { return; }
	for (i = 0; i < m_makerNum; i++) {
		if (i == num) {
			lon = m_localPos[i].split(',')[0];
			lat = m_localPos[i].split(',')[1];
			pPoint = new GLatLng(lon, lat);
			// 情報ウィンドウ関連処理（フリーセルでは不要）
			if (isInfo) {
				m_pMarker[i].openInfoWindowHtml(m_pInfo[i]);
			}
			break;
		}
	}
	m_pMap.setCenter(pPoint, maxZoom);
}


/************************************************
 Google Mapを初期表示へ戻す: centerMap()
*************************************************/
function centerMap() {
	if (!isGoogle) { return; }
	// 情報ウィンドウ関連処理（フリーセルでは不要）
	// 情報ウィンドウを閉じる
	if (isInfo) {
		m_pMap.closeInfoWindow();
	}
	// Mapを初期表示に戻す
	m_pMap.setCenter(m_pCenter, minZoom);
}


/************************************************
 イベント関数を登録（本体）
*************************************************/
var addListener = function(elm, type, func) {
//	if (!elm) { return false; }
	if (elm.addEventListener) {	// W3C準拠ブラウザ（addEventListenerが存在）
		elm.addEventListener(type, func, false);
	}
	else if (elm.attachEvent) {	// Internet Explorer
		elm.attachEvent('on' + type, func);
	}
//	else { return false; }
//	return true;
};


/************************************************
 イベント関数を登録（コール側）
*************************************************/
// windowオブジェクトにloadイベントが発生したら初期化関数を実行
addListener(window, "load", initMap);