// GoogleMap 表示範囲自動計算

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

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

var side_bar_html = "";
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();
	}
}

function myclick(i) {
	List[i].openInfoWindowHtml('<div class="gicon" style="width:240px;height:90px;overflow:hidden;">'+htmls[i]+'<\/div>');
}

var GMap = {};
GMap = {
	InitMap : function(MapID, ListID, MapData, Mode, CenterData){
		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);

		// 中心座標設定時
		if (CenterData && CenterData[0] && CenterData[1] && CenterData[2]) {
			center = new GLatLng(CenterData[0], CenterData[1]);
			zoom = CenterData[2];
		}
		map.setCenter(center, zoom);

		for (i=0; i<MapData.length; i++) {
			var data = MapData[i];
			var l_title = "";
			var l_image = "";
			var l_comment = "";

			// リンク表示or名称表示
			if (data[5]) {
				l_title = '<a href="' + data[5] + '">' + data[3] + '</a>';
			} else {
				l_title = data[3];
			}
			// MyMode=2（サムネイル画像・コメント表示あり）の場合
			if (MyMode == '2' && MyImgPath) {
				// コメント
				if (data[6]) {
					l_comment = data[6];
				}
				// サムネイル画像or代替画像
				if (data[7]) {
					l_image = '<img src="' + MyImgPath + data[7] + '" 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]] );
			side_bar_html += '<dt>・<a href="javascript:myclick(' + data[0] + ')">' + data[3] + '<\/a></dt>';
			if (data[4]) side_bar_html += '<dd>→ ' + data[4] + '</dd>';

		}

		// 中心座標の指定がない場合は自動計算
		if (!CenterData) {
			self.initZoom();
		}

		if (side_bar_html) {
			document.getElementById(ListID).innerHTML = '<dl>' + side_bar_html + '</dl>';
		}

	},
	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 ) );
		}
	}
};




