
//	GoogleMapオブジェクト
var GMap;

//	オリジナルアイコン
var gSelectIcon
var gInsertIcon
var gUpdateIcon
var gDeleteIcon

//	マーカーオブジェクトを配列で管理。IDが添字になっている。
var gMarkers = new Array();

//	↓あんま意味無い？
var gXmlhttp;

//	作業中のマーカーのタグ
var current_work_marker_tag;

//	緯度・経度・縮尺は、index.htmlから渡ってくる
function main(lat,lng,zoom) { // main
	
	gXmlhttp = GXmlHttp.create();
	
	//	GoogleMapブラウザ対応チェック
	if(!GBrowserIsCompatible()) return;
	
	//	GMapはGlobal変数
	GMap = new GMap2(document.getElementById("map"));
	
	//	Control
	GMap.addControl(new GSmallMapControl());
	GMap.addControl(new GScaleControl());
	GMap.addControl(new GMapTypeControl());
	GMap.addControl(new GOverviewMapControl());
	GMap.enableDoubleClickZoom();
	GMap.enableContinuousZoom();
	
	//	緯度・経度・縮尺は、index.htmlから渡る
	GMap.setCenter(new GLatLng(lat,lng), zoom);
	
	//	オリジナルアイコン
	/*
	gSelectIcon = new GIcon();
	gSelectIcon.image = 'images/select_arrow.png';
	gSelectIcon.iconSize = new GSize(32,32);
	gSelectIcon.iconAnchor = new GLatLng(32,4);
	gSelectIcon.transparent = 'images/select_arrow_transparent.png';
	gSelectIcon.infoWindowAnchor = new GLatLng(32,4);
	*/
	gSelectIcon = test_icon();
	
	//	GoogleMap標準実装のログ
//	GLog.write('ログ情報');

	return true;
}

function create_info_html(marker_tag){
	var id		 = marker_tag.getAttribute('id');
	var lat 	 = parseFloat(marker_tag.getAttribute('lat'));
	var lng 	 = parseFloat(marker_tag.getAttribute('lng'));
	var pref	 = marker_tag.getAttribute('pref');
	var city	 = marker_tag.getAttribute('city');
	var route	 = marker_tag.getAttribute('route');
	var station	 = marker_tag.getAttribute('station');	
	var title	 = marker_tag.getAttribute('title');
	var memo	 = marker_tag.firstChild.nodeValue;

	var html = '<div class="ballon" style="width:400px;"><h1 class="ballon">'+title+'</h1>'+'<p class="ballon_memo">'+memo+'</p><p class="ballon_id">ID:'+id+'</p>';
	
	return html;
}

function create_marker( marker_tag ){
	var drag = false;
	var icon = 'select';
	var form = false;
	return CreateMarker( marker_tag, drag, icon, form );
}

function create_marker_draggable( marker_tag, form ){
	var drag = true;
	var icon = false;
//	var form = false;
	return CreateMarker( marker_tag, drag, icon, form );
}

function create_marker_insert( marker_tag, form ){
	var drag = true;
	var icon = 'insert';
	return CreateMarker( marker_tag, drag, icon, form );
}

function create_marker_select( marker_tag, form ){
	var drag = true;
	var icon = 'select';
	return CreateMarker( marker_tag, drag, icon, form );
}

function create_marker_update( marker_tag, form ){
	var drag = true;
	var icon = 'update';
	return CreateMarker( marker_tag, drag, icon, form );
}

function create_marker_delete( marker_tag, form ){
	var drag = false;
	var icon = 'delete';
	return CreateMarker( marker_tag, drag, icon, form );
}

function CreateMarker( marker_tag, draggable, icon, f ){
			
	var id	 = marker_tag.getAttribute('id');
	var lat  = parseFloat(marker_tag.getAttribute('lat'));
	var lng  = parseFloat(marker_tag.getAttribute('lng'));
	
	var html = create_info_html(marker_tag);
	var point = new GPoint(lng, lat);
	
	//	既存のマーカーを削除
	if(gMarkers[id]){
		GMap.removeOverlay(gMarkers[id]);
		delete gMarkers[id];
	}
	
	//	マーカーの新規作成
	if(draggable){
		//	ドラッグ可能マーカー作成
		gMarkers[id] = new GMarker( point, { draggable:true, bouncy:true, bouncyGravity:2 });
		//	クリックイベント
		GEvent.addListener( gMarkers[id], 'click', function(){
			//	情報Window
			gMarkers[id].openInfoWindowHtml(html);
		} );
		//	移動マーカーのドラッグ終了
		GEvent.addListener(gMarkers[id], 'dragend', function(){
			var point = gMarkers[id].getPoint();
			f.lat.value = point.lat();
			f.lng.value = point.lng();
		});
	}else{
		//	固定マーカー
		if(icon == 'select'){
			gMarkers[id] = new GMarker(point,gSelectIcon);
		}else{
			gMarkers[id] = new GMarker(point);
		}
		//	吹き出し
		GEvent.addListener( gMarkers[id], 'click', function(){
			gMarkers[id].openInfoWindowHtml(html);
		} );
	}
	//	マーカー表示
	GMap.addOverlay(gMarkers[id]);
	
	//	フォームが渡ってきた場合は、代入する
	if(f){
		var id		 = marker_tag.getAttribute('id');
		var lat 	 = parseFloat(marker_tag.getAttribute('lat'));
		var lng 	 = parseFloat(marker_tag.getAttribute('lng'));
		var pref	 = marker_tag.getAttribute('pref');
		var city	 = marker_tag.getAttribute('city');
		var route	 = marker_tag.getAttribute('route');
		var station	 = marker_tag.getAttribute('station');
		var title	 = marker_tag.getAttribute('title');
		var memo	 = marker_tag.firstChild.nodeValue;
		
		f.id_hidden.value = id;
		f.id.value		 = id;
		f.pref.value	 = pref;
		f.city.value	 = city;
		f.route.value	 = route;
		f.station.value	 = station;
		f.title.value	 = title;
		f.memo.value	 = memo.replace(/<br \/>/,"\n");
		f.lat.value		 = lat;
		f.lng.value		 = lng;
	}
	
	return id;
}

//http://www.powerhut.co.uk/googlemaps/custom_markers.php
function test_icon(){
	var myIcon = new GIcon();
	myIcon.image = "/markers/numbered_marker.php?image=pushpins/webhues/036.png&text=A";
	myIcon.shadow = '/markers/shadow.png';
	myIcon.iconSize = new GSize(20,34);
	myIcon.shadowSize = new GSize(34,37);
	myIcon.iconAnchor = new GPoint(12,32);
	myIcon.infoWindowAnchor = new GPoint(25,0);
	myIcon.printImage = 'markers/printImage.gif';
	myIcon.mozPrintImage = 'markers/mozPrintImage.gif';
	myIcon.printShadow = 'markers/printShadow.gif';
	myIcon.transparent = 'markers/transparent.png';
	myIcon.imageMap = [21,0,21,1,21,2,21,3,21,4,21,5,25,6,30,7,30,8,30,9,28,10,26,11,26,12,24,13,24,14,23,15,23,16,23,17,21,18,21,19,20,20,19,21,19,22,19,23,18,24,18,25,18,26,18,27,18,28,18,29,18,30,18,31,12,31,12,30,12,29,12,28,11,27,11,26,11,25,11,24,10,23,9,22,9,21,9,20,7,19,7,18,7,17,6,16,6,15,5,14,4,13,3,12,2,11,1,10,0,9,0,8,0,7,4,6,7,5,7,4,7,3,7,2,7,1,7,0];

	return myIcon;
}