// GoogleMap 表示範囲自動計算

var map;
var center = new GLatLng(32.752644, 129.870829);
var cupoint = center;
var baseIcon;
var mousePoint;

var MyMode		= '';
var MyImgPath	= '';
var MyMarker	= '';

var htmls = [];
var i = 0;

var List = {};
function List_length(){
	var len=0;
	for( var index in List ){
		len++;
	}
	return len;
}

var Letter;
Letter = {
	index : -1,
	get : function(){
		var i = ( Letter.index >= 0 ) ? Letter.index : 0;
		return String.fromCharCode("A".charCodeAt(0)+i);
	},
	getNext : function(){
		Letter.index++;
		return Letter.get();
	}
}

var GMap = {};
GMap = {
	InitMap : function(MapID, MapData, Mode){
		var self = GMap;
		map = new GMap2(document.getElementById(MapID));
		if (Mode != "minimal") {
			var miniMap=new GOverviewMapControl(new GSize(120,80));
			map.addControl( new GLargeMapControl() );
			map.addControl( new GScaleControl() );
			map.addControl( new GMapTypeControl() );
			map.addControl(miniMap);
		} else {
			map.addControl( new GSmallMapControl() );
		}
		new GKeyboardHandler(map);
		map.setCenter(center, 14);

		for (i=0; i<MapData.length; i++) {
			var data = MapData[i];
			var l_title = "";
			var l_image = "";
			var l_comment = "";
			// リンク表示or名称表示
			if (data[4]) {
				l_title = '<a href="' + data[4] + '">' + data[3] + '</a>';
			} else {
				l_title = data[3];
			}
			// MyMode=2（サムネイル画像・コメント表示あり）の場合
			if (MyMode == '2' && MyImgPath) {
				// コメント
				if (data[5]) {
					l_comment = data[5];
				}
				// サムネイル画像or代替画像
				if (data[6]) {
					l_image = '<img src="' + MyImgPath + data[6] + '" alt="' + data[3] + '" title="' + data[3] + '" class="thumbnail" />';
				}
			}

			// 画像+タイトル+コメント
			htmls[data[0]] = l_image + '<p>' + l_title + l_comment + '</p>';

			List[data[0]] = self.createMarker( data[0], new GLatLng( data[1], data[2] ), htmls[data[0]] );
		}

		self.initZoom();
	},
	createMarker : function( num, point, html ) {
		var letter = Letter.getNext();
		// マーカー設定
		if (MyMarker) {
			baseIcon = new GIcon();
			baseIcon.iconSize = new GSize(MyMarker[1], MyMarker[2]);
			baseIcon.iconAnchor = new GPoint(10, MyMarker[2]);
			baseIcon.infoWindowAnchor = new GPoint(9, 2);

			var ic = new GIcon(baseIcon);
			ic.image = MyMarker[0];
			var marker = new GMarker(point, { icon: ic});
		} else {
			var marker = new GMarker(point);
		}

		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml('<div class="gicon" style="width:240px;height:90px;overflow:hidden;">'+html+'</div>')
		});

		map.addOverlay( marker );
		return marker;
	},
	initZoom : function(){
		var gb;
		var cnt = 0;
		var first = 1;
		for( var index in List ){
			var marker = List[index];
			cnt++;
			if( first ){
				gb = new GLatLngBounds( marker.getPoint(), marker.getPoint() );
				first = 0;
			}else{
				var point = marker.getPoint();
				gb.extend( point );
			}
		}
		if (cnt) {
			map.setCenter( gb.getCenter(), map.getBoundsZoomLevel( gb ) );
		}
	}
};
