/*----------------------------------------------------------------------------------------------------

                       GoogleMap設定ファイルα　Ver0.3　最終更新日:2008/09/01

*最近5件の更新履歴*

	2008/09/11：タブ機能実装・オプション機能追加・リファレンス改訂
	2008/09/01：説明文をより分かりやすく修正
	2008/08/23：初期設定値変更・説明文追加

----------------------------------------------------------------------------------------------------*/

	/*******************************基本機能設定部分******************************/

function gLoad() {
	
	//地図を表示する部分で指定したIDと同じ名前を指定
	var m_ID = 'map';
	
	//地図のサイズを指定（他所で指定している場合は空白）
	var m_Width = '360px';
	var m_Height = '260px';
	
	//初期表示場所を指定
	var m_Loc = '35.671537,139.79827';
	
	//マーカーを指定（複数配置する場合は間に / を入れる）
	var m_Mar = '35.671537,139.79827';
	
	//読み込み時に吹き出しを表示するマーカーを、上のマーカー指定で座標を記入した順番に沿って設定（1番から数え、0はoff）
	var pre_Com = 0;

	//地図の拡大率設定：0～19の範囲で数字が大きいほど拡大
	var m_Zoom = 17;

	//吹き出しに表示する外部ファイルを、地図表示ページからの相対パスで指定
	var m_Com = "gmap.html";

	//吹き出しに実際に表示させたい部分を囲むブロック要素を指定（1:<table> 2:<div> 3:<p>）
	var m_Blk = 1;

	//吹き出しにタブを使用（1でon、0でoff）
	/* 空行（改行ではない隙間の行）までを1つの吹き出しに入れ、ブロック要素ごとにタブにする */
	/* タブの名前はブロック要素自体につけたtitle属性が自動的に適用される */
	var m_Tab = 1;

	//ブロック要素にtitle属性がない場合に付けるタブの名前
	var dmy_tab = "詳細";

	//地図のコントロールパネルを表示（1で小、2で中、3で大、0でoff）
	var m_Con = 2;
	
	//地図の種類（航空写真など）を切り替えるパネルを表示（1でon、0でoff）
	var m_Typ = 1;

	//地図の縮尺を左下に表示（1でon、0でoff）
	var m_Sca = 0;

	//地図の拡大縮小をマウスホイールで可能（1でon、0でoff）
	var m_Whl = 0;

	//地図の拡大縮小をスムーズ化（1でon、0でoff）
	var m_Coz = 1;

	//地図の右下に縮小地図を表示（1でon、0でoff）
	var m_Min = 0;

	//縮小地図を表示する場合のサイズの指定（m_MinX：横幅・m_MinY：縦幅、単位は自動的にpxがつきます）
	var m_MinX = 100;
	var m_MinY = 100;





	/*******************************以下設定部分のため改変不可******************************/
	
	//地図の表示方法を変更
	var m_style = document.getElementById(m_ID).style;
	
	if(m_Width){
		m_style.width = m_Width;
		m_style.overflow = "hidden";
	}
	if(m_Height){
		m_style.height = m_Height;
	}
	
	if (m_Blk == 1) {
		var sta_Tag = "<table";
		var end_Tag = "</table>";
	}else if(m_Blk == 2){
		var sta_Tag = "<div";
		var end_Tag = "</div>";
	}else if(m_Blk == 3){
		var sta_Tag = "<p";
		var end_Tag = "</p>";
	}
	
	//正規表現オブジェクト
	var CRLF = "\r\n";
	var find_CRLF = new RegExp(CRLF,"g");
	
	//座標を確定
	var set_map = new GMap2(document.getElementById(m_ID));
	var set_Loc = m_Loc.split(',');
	var point = new Array();
	var marker = new Array();
	var arr_Mar = m_Mar.split('/');
	var count_Mar = arr_Mar.length;
	var res_Mar = 0;
	var tmp_Mar = new Array();
	var tab_Ind = new Array();
	var tabs = new Array();
	var count_Tab = new Array();


	/** 地図表示部分 **/

	if (GBrowserIsCompatible()) {
		set_map.setCenter(new GLatLng(set_Loc[0],set_Loc[1]), m_Zoom);
		
		//外部ファイルの読み込み
		req = GXmlHttp.create();
		req.open("GET", m_Com, true);
		req.onreadystatechange = function () {
			if (req.readyState == 4) {
				res = req.responseText;
				for( i=0; i < count_Mar; i++ ) {
					if(m_Tab) {
						var set_Com = res.split(end_Tag+CRLF+CRLF);
					}else{
						var set_Com = res.split(end_Tag);
					}
					count_Tab[i] = set_Com[i].match( sta_Tag,"g" ).length;
					res_Mar += count_Tab[i];
					if(res_Mar > count_Mar) {
						res_Mar = count_Mar;
					}
					
					//マーカーを表示
					if(i < res_Mar) {
						var arr = arr_Mar[i].split( ',' );
						point[i] = new GLatLng( arr[0], arr[1] );
						marker[i] = new GMarker(point[i]);
						set_map.addOverlay(marker[i]);
					}
					
					//マーカーの初期設定
					set_Com[i] = set_Com[i].replace(find_CRLF,"");
					if (!set_Com[i].match( end_Tag+"$" )) {
						set_Com[i] = set_Com[i]+end_Tag;
					}
					var tab_Com = set_Com[i].split(end_Tag);
					for(m=0; tab_Com[m];m++){
						if (tab_Com[m].match(/title="(.*)"/g)) {
							tab_Ind[m] = RegExp.$1;
						}else{
							tab_Ind[m] = dmy_tab;
						}
					}
					
					//マーカークリック時の動作
					tabs[i] = [new GInfoWindowTab(tab_Ind[0],tab_Com[0])];
					for ( j=1; tab_Com[j]; j++ ){
							tabs[i] = tabs[i].concat(new GInfoWindowTab(tab_Ind[j],tab_Com[j]));
					}
					if(m_Tab) {
						clickTab ( marker[i], point[i], tabs[i], set_map)
					}else{
						clickMap ( marker[i], set_Com[i] )
					}
					//マーカーの初期表示
					if(pre_Com > 0){
						if(m_Tab) {
							set_map.openInfoWindowTabsHtml(point[pre_Com - 1],tabs[pre_Com - 1]);
						}else{
							marker[pre_Com - 1].openInfoWindowHtml(set_Com[pre_Com - 1]);
						}
					}
				}
			}
		};
		req.send(null);
		
		//オプション設定
		if(m_Con == 1){
			set_map.addControl(new GSmallZoomControl());
		}else if(m_Con == 2){
			set_map.addControl(new GSmallMapControl());
		}else if(m_Con == 3){
			set_map.addControl(new GLargeMapControl());
		}
		if (m_Typ) { set_map.addControl(new GMapTypeControl()); }
		if (m_Sca) { set_map.addControl(new GScaleControl()); }
		if (m_Whl) { set_map.enableScrollWheelZoom(); }
		if (m_Coz) { set_map.enableContinuousZoom(); }
		if (m_Min) {
			var miniMap = new GOverviewMapControl(new GSize(m_MinX,m_MinY));
			set_map.addControl(miniMap);
		}
	}
}

//各マーカークリック時の動作設定
function clickMap ( m, c ) {
	GEvent.addListener(m, "click", function() {
		m.openInfoWindowHtml(c);
	});
}

//各マーカークリック時の動作設定(Tab時)
function clickTab ( m, k , t, n) {
	GEvent.addListener(m, "click", function() {
		n.openInfoWindowTabsHtml(k,t);
	});
}

//「onload」イベントを疑似的に再現
var addListener = function(elm, type, func) {
	if (elm.addEventListener) {
		elm.addEventListener(type, func, false);
	}
	else if (elm.attachEvent) {
		elm.attachEvent('on' + type, func);
	}
};
addListener(window, "load", gLoad);
