/////////////////////////////////////////////////////////////////////////////////
//
//   GoogleMap設定ファイル　Ver1.11
//     2009/01/22：アイコン画像差し替え実装（一括変更のみ）
//     2009/01/01：タブ機能改変・吹き出しなしマーカー、複数MAP設置実装
//     2008/09/11：タブ機能実装・オプション機能追加・リファレンス改訂
//     2008/09/01：説明文をより分かりやすく修正
//     2008/08/23：初期設定値変更・説明文追加
//
/////////////////////////////////////////////////////////////////////////////////

	/*******************************基本機能設定部分******************************/


function gLoad() {
	
//-------------------------------------------------------------------------------
//                                 必須初期設定
//-------------------------------------------------------------------------------
	// 1）地図を表示する部分で指定したIDと同じ名前を指定
	var m_ID = 'map_shop';
	
	// 2）地図のサイズを指定（他所で指定している場合は空白）
	var m_Width = '500px';
	var m_Height = '500px';
	
	// 3）初期表示場所を指定
	var m_Loc = '35.7488758, 139.7844293';
	
	// 4）マーカーを指定（複数配置する場合は間に / を入れる）
	var m_Mar = '35.7488758, 139.7844293';
	
	// 5）読み込み時に吹き出しを表示するマーカーを、上のマーカー指定で座標を記入した順番に沿って設定（1番から数え、0はoff）
	var pre_Com = 0;

	// 6）地図の拡大率設定：0～19の範囲で数字が大きいほど拡大
	var m_Zoom = 17;

	// 7）吹き出しに表示する外部ファイルを、地図表示ページからの相対パスで指定
	var m_Com = "gmap.html";

//-------------------------------------------------------------------------------
//                               吹き出しタブ設定
//-------------------------------------------------------------------------------
	// 8）吹き出しにタブを使用（1でon、0でoff）
	//    空行（改行ではない隙間の行）までを1つの吹き出しに入れ、ブロック要素ごとにタブにする
	var m_Tab = 1;

	// 9）ブロック要素にtitle属性がない場合に付けるタブの名前
	var dmy_tab = '詳細';

//-------------------------------------------------------------------------------
//                                 アイコン画像設定
//-------------------------------------------------------------------------------
	// 10）アイコンの画像を変更する場合はiconを記述（空白でデフォルト）
	var ico = '';
	//var ico = 'img/arrow1.png';

	// 11）アイコンの画像サイズ（正方形の一辺の長さ:px）
	var ico_size = '32';

	// 12）アイコンの先端が画像内のどの部分から出てるか
	//    ┌──┬──┬──┐
	//    │  1 │  2 │  3 │
	//    ├──┼──┼──┤
	//    │  4 │  5 │  6 │
	//    ├──┼──┼──┤
	//    │  7 │  8 │  9 │アイコンの先端が位置する部分の数字を指定
	//    └──┴──┴──┘
	var ico_pos = 7;

//-------------------------------------------------------------------------------
//                                   オプション
//-------------------------------------------------------------------------------
	// 13）地図のコントロールパネルを表示（1で小、2で中、3で大、0でoff）
	var m_Con = 2;
	
	// 14）地図の種類（航空写真など）を切り替えるパネルを表示（1でon、0でoff）
	var m_Typ = 1;

	// 15）地図の縮尺を左下に表示（1でon、0でoff）
	var m_Sca = 0;

	// 16）地図の拡大縮小をマウスホイールで可能（1でon、0でoff）
	var m_Whl = 0;

	// 17）地図の拡大縮小をスムーズ化（1でon、0でoff）
	var m_Coz = 1;

	// 18）地図の右下に縮小地図を表示（1でon、0でoff）
	var m_Min = 0;

	// 19）縮小地図を表示する場合のサイズの指定（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;
	}
	var sta_Tag = "<div";
	var end_Tag = "</div>";
	//正規表現オブジェクト
	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 = m_Mar.split('/').length;
	var res_Mar = 0;
	var tmp_Mar = new Array();
	var tab_Ind = new Array();
	var tabs = new Array();
	var count_Tab = new Array();
	var req = new Array();
	var icon = new GIcon();
	var ico_x = 1;
	var ico_y = 1;
	switch(ico_pos){
		case 1:
			ico_x = ico_size;
			ico_y = ico_size;
			break;
		case 2:
			ico_x = 2;
			ico_y = ico_size;
			break;
		case 3:
			ico_y = ico_size;
			break;
		case 4:
			ico_x = ico_size;
			ico_y = 2;
			break;
		case 5:
			ico_x = 2;
			ico_y = 2;
			break;
		case 6:
			ico_y = 2;
			break;
		case 7:
			ico_x = ico_size;
			ico_y = 1;
			break;
		case 8:
			ico_x = 2;
			break;
		default:
			break;
	}
	icon.image = ico;
	icon.iconSize = new GSize(ico_size, ico_size);
	icon.iconAnchor = new GLatLng(ico_size/ico_y,ico_size/ico_x);
	icon.infoWindowAnchor = new GPoint(0,0);
	
	/** 地図表示部分 **/

	if (GBrowserIsCompatible()) {
		set_map.setCenter(new GLatLng(set_Loc[0],set_Loc[1]), m_Zoom);
		
		//外部ファイルの読み込み
		req[m_ID] = GXmlHttp.create();
		req[m_ID].open("GET", m_Com, true);
		req[m_ID].onreadystatechange = function () {
			if (req[m_ID].readyState == 4) {
				res = req[m_ID].responseText;
				if(m_Tab) {
					var set_Com = res.split(end_Tag+CRLF+CRLF);
				}else{
					var set_Com = res.split(end_Tag);
				}
				for( i=0; i < count_Mar; i++ ) {
					count_Tab[i] = set_Com[i].match(sta_Tag).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] );
						if(ico) {
							marker[i] = new GMarker(point[i],icon);
						}else{
							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="([^"])([^"]*)/i)) {
							tab_Ind[m] = RegExp.$1 + RegExp.$2;
						}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 (!set_Com[i].match(/<div><\/div>/i)) {
						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[m_ID].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);

