﻿//★
var gm_fujiName = '観光旅館ふじ';
var gm_fujiCoordsY = 34.767643;
var gm_fujiCoordsX = 136.122384;
var gm_fujiIconSrc = 'img/icn_st.png';
var gm_fujiIconWidth = 32;
var gm_fujiIconHeight = 30;
var gm_fujiIconAnchorX = 16;
var gm_fujiIconAnchorY = 28;
var gm_fujiShadowSrc = 'img/shd_st.png';
var gm_fujiShadowWidth = 47;
var gm_fujiShadowHeight = 34;
var gm_fujiWindowAnchorX = 16;
var gm_fujiWindowAnchorY = 15;
var gm_fujiMarker;

//初期設定
var gm_defaltCoordsY = gm_fujiCoordsY;
var gm_defaltCoordsX = gm_fujiCoordsX;
var gm_defaultZoom = 12;

//サイズとか
var gm_windowSizeX = 200;

//データ
var gm_pointCatIDs = new Array('pointsKanko','pointsSports','pointsBusiness','pointsOnsen');
var gm_pointMarkers = new Array();
var gm_pointCats = new Array();
var gm_bodyMarkers = new Array();
var gm_showedMarkers = new Array();

//まずは★を表示
function gm_showFuji(){
	//マーカー生成
	gm_fujiMarker = gm_createMarker(
		gm_fujiCoordsY,
		gm_fujiCoordsX,
		gm_fujiIconSrc,
		gm_fujiIconWidth,
		gm_fujiIconHeight,
		gm_fujiIconAnchorX,
		gm_fujiIconAnchorY,
		gm_fujiShadowSrc,
		gm_fujiShadowWidth,
		gm_fujiShadowHeight,
		gm_fujiWindowAnchorX,
		gm_fujiWindowAnchorY,
		gm_createInfoHtml(gm_fujiName)
		);

	//マーカー表示
	gm_map.addOverlay(gm_fujiMarker);

	//ふじ情報ウィンドウ表示
	gm_fujiMarker.openInfoWindowHtml(gm_createInfoHtml(gm_fujiName));

	//データ分析
	gm_analyzeData();

	//観光を表示
	gm_showMarkers('pointsKanko');
}

function gm_analyzeData(){
	var gm_pointNames = new Array();
	var gm_pointCoordsY = new Array();
	var gm_pointCoordsX = new Array();
	var gm_pointIconSrc = new Array();
	var gm_pointExplains = new Array();
	var gm_pointLinks = new Array();

	var i;
	for(i=0;i<gm_pointCatIDs.length;i++){
		var list = gm_pointCatIDs[i].substring(0,'points'.length) + 'List' + gm_pointCatIDs[i].substring('points'.length,gm_pointCatIDs[i].length);
		var objs = document.getElementById(list).childNodes;
		var j;
		for(j=0;j<objs.length;j++){
			var obj = objs[j];
			if(obj.tagName){
				if(obj.tagName.match(/dt/i)){
					//gm_pointNamesを基準に数合わせ
					if(gm_pointExplains.length != gm_pointNames.length){gm_pointExplains[gm_pointNames.length-1] = '';}
					if(gm_pointLinks.length != gm_pointNames.length){gm_pointLinks[gm_pointNames.length-1] = '';}

					var text = objs[j].innerHTML.substring(objs[j].innerHTML.indexOf('>',0)+1,objs[j].innerHTML.length);
					gm_pointNames[gm_pointNames.length] = text;//スポット名
					gm_pointCats[gm_pointCats.length] = gm_pointCatIDs[i];//カテゴリ名

					var os = objs[j].childNodes;
					var k;
					for(k=0;k<os.length;k++){
						if(os[k].tagName && os[k].tagName.match(/img/i)){
							gm_pointIconSrc[gm_pointIconSrc.length] = os[k].src;//本文マーカーSRC（GIF）
							gm_bodyMarkers[gm_bodyMarkers.length] = os[k];//本文マーカー登録
						}
					}
				}
				else if(obj.tagName.match(/dd/i)){
					if(obj.className == 'coords'){
						var coords = obj.innerHTML.split(',');
						gm_pointCoordsY[gm_pointCoordsY.length] = eval(coords[0]);//緯度
						gm_pointCoordsX[gm_pointCoordsX.length] = eval(coords[1]);//経度
					}
					else if(obj.className == 'explain'){
						gm_pointExplains[gm_pointExplains.length] = obj.innerHTML;//説明文
					}
					else if(obj.className == 'link'){
						gm_pointLinks[gm_pointLinks.length] = obj.innerHTML;//リンク
					}
				}
			}
		}
	}
	//もう一度gm_pointNamesを基準に数合わせ
	if(gm_pointExplains.length != gm_pointNames.length){gm_pointExplains[gm_pointNames.length-1] = '';}
	if(gm_pointLinks.length != gm_pointNames.length){gm_pointLinks[gm_pointNames.length-1] = '';}

	//マーカー生成（オーバーレイは後で）
	for(i=0;i<gm_pointNames.length;i++){
		var iSrc;
		var iWidth = 26;
		var iHeight = 26;
		var aX = 13;
		var aY = 26;
		var sSrc;
		var sWidth = 42;
		var sHeight = 30;
		var wX = 13;
		var wY = 13;
		var html = gm_createInfoHtml(gm_pointNames[i],gm_pointExplains[i],gm_pointLinks[i]);

		if(gm_pointIconSrc[i].match(/icn_(ci|sq|tr|di)_(.+)\.gif$/)){
			iSrc = 'img/icn_'+RegExp.$2+'.png';//インデックス
			sSrc = 'img/shd_'+RegExp.$1+'.png';//影
		}

		var marker = gm_createMarker(
			gm_pointCoordsY[i],
			gm_pointCoordsX[i],
			iSrc,
			iWidth,
			iHeight,
			aX,
			aY,
			sSrc,
			sWidth,
			sHeight,
			wX,
			wY,
			html
			);

		//マーカー登録
		gm_pointMarkers[gm_pointMarkers.length] = marker;

		//情報ウィンドウ表示のイベントを設定（本文マーカー用）
		gm_setMarkerEvent(gm_bodyMarkers[i],marker,html);
	}
}

function gm_showMarkers(cat){
	var i;

	//他のマーカーを消す
	for(i=0;i<gm_showedMarkers.length;i++){
		gm_map.removeOverlay(gm_showedMarkers[i]);
	}

	//初期化
	gm_showedMarkers = new Array();

	//リストの表示を切り替え
	for(i=0;i<gm_pointCatIDs.length;i++){
		var obj = document.getElementById(gm_pointCatIDs[i]);
		if(cat == gm_pointCatIDs[i]){
			obj.style.display = 'block';
		}
		else{
			obj.style.display = 'none';
		}
	}

	//表示
	for(i=0;i<gm_pointCats.length;i++){
		if(gm_pointCats[i] == cat){
			gm_map.addOverlay(gm_pointMarkers[i]);
			gm_showedMarkers[gm_showedMarkers.length] = gm_pointMarkers[i];
		}
	}

	var minLat = gm_fujiCoordsY;
	var maxLat = gm_fujiCoordsY;
	var minLng = gm_fujiCoordsX;
	var maxLng = gm_fujiCoordsX;
	for(i=0;i<gm_showedMarkers.length;i++){
		var latlng = gm_showedMarkers[i].getLatLng();
		var lat = latlng.lat();
		var lng = latlng.lng();
		minLat = lat<minLat ? lat : minLat;
		maxLat = lat>maxLat ? lat : maxLat;
		minLng = lng<minLng ? lng : minLng;
		maxLng = lng>maxLng ? lng : maxLng;
	}

	gm_map.setZoom(gm_map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(minLat,minLng),new GLatLng(maxLat,maxLng))));
	gm_map.panTo((minLat!=maxLat && minLng!=maxLng) ? new GLatLng((maxLat+minLat)/2,(maxLng+minLng)/2) : new GLatLng(minLat,minLng));
}

function gm_createMarker(pY,pX,iSrc,iWidth,iHeight,aX,aY,sSrc,sWidth,sHeight,wX,wY,html){
	//経緯度
	var point = new GLatLng(pY,pX);

	//マーカー
	var markerIcon = new GIcon();
	markerIcon.image = iSrc;
	markerIcon.iconSize = new GSize(iWidth,iHeight);
	markerIcon.iconAnchor = new GPoint(aX,aY);
	markerIcon.shadow = sSrc;
	markerIcon.shadowSize = new GSize(sWidth,sHeight);
	markerIcon.infoWindowAnchor = new GPoint(wX,wY);
	markerIcon.infoShadowAnchor = new GPoint(wX,wY);

	var opt = {icon:markerIcon};
	var marker = new GMarker(point,opt);

	//情報ウィンドウ表示のイベントを設定
	GEvent.addListener(marker,'click',function(){
		var iWindow = gm_map.getInfoWindow();
		if(!iWindow.isHidden() && iWindow.getPoint() == marker.getPoint()){
			iWindow.hide();
			}
		else{
			marker.openInfoWindowHtml(html);
			}
		});

	return marker;
}

function gm_setMarkerEvent(obj,marker,html){
	setEvent(obj,'click',function(){
		var i;
		for(i=0;i<gm_showedMarkers.length;i++){
			if(gm_showedMarkers[i] == marker){
				var iWindow = gm_map.getInfoWindow();
				if(!iWindow.isHidden() && iWindow.getPoint() == marker.getPoint()){
					iWindow.hide();
					}
				else{
					marker.openInfoWindowHtml(html);
					}

				break;
			}
		}
		},false);
}

function gm_createInfoHtml(pName,pExplain,pLink){
	var html = '<div style="width:'+gm_windowSizeX+'px;"><div><strong>'+pName+'</strong></div>';
	html += pExplain ? '<div style="font-size:75%;">'+pExplain+'</div>' : '';
	html += pLink ? '<div style="font-size:75%;">'+pLink+'</div>' : '';
	html += '</div>';

	return html;
}
