//
//
//

// ========================================================================
// Google MAP関連の関数
var GMap=null;
var GeoCoder=null;
var GMrk=null;
var GmfSW=false;
var GBnds=new Array(4);

// ---
var ym=new GIcon();
ym.image="http://labs.google.com/ridefinder/images/mm_20_yellow.png";
ym.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
ym.iconSize = new GSize(12, 20);
ym.shadowSize = new GSize(22, 20);
ym.iconAnchor = new GPoint(6, 20);
ym.infoWindowAnchor = new GPoint(5, 1);

// ---
// 現在の地図の緯度経度の最小値を，大域変数GBndsに設定する
// 設定値は 経度最小値，経度最大値，緯度最証値，緯度最大値の順
function filterByMapBounds() {
	GBnds[0]=0.0;
	GBnds[1]=0.0;
	GBnds[2]=0.0;
	GBnds[3]=0.0;

	var bd=GMap.getBounds();
	var sw=bd.getSouthWest();
	var ne=bd.getNorthEast();

	GBnds[0]=sw.lng(); // 経度最小値
	GBnds[1]=ne.lng(); // 経度最大値
	GBnds[2]=sw.lat(); // 緯度最小値
	GBnds[3]=ne.lat(); // 緯度最大値

	if ( !GmfSW ) { return; }

	// フィルタ処理実行
	// doFilter();	
}

// ---
// Google MAPの初期化
function ovvwGmap(target, ux, uy, uz, ishide) {
	var dx=152.0000;
	var dy=35.6813;
	var dz=6;

	var x=dx;
	var y=dy;
	var z=dz;

	if (ux) { x=ux-0; }
	if (uy) { y=uy-0; }
	if (uz) { z=uz-0; }

	// 地図の初期化
	if (GBrowserIsCompatible()) {
		GMap=new GMap2(document.getElementById(target));

		GMap.addControl(new GSmallMapControl());
		GMap.addControl(new GMapTypeControl());
		// ovc=new GOverviewMapControl();
		// GMap.addControl(ovc);
		// if (ishide) { ovc.hide(); }

		GMap.setCenter(new GLatLng(y, x), z);

		// GEvent.addListener(GMap, "dragend", function(){
			// filterByMapBounds();
		// });
		// GEvent.addListener(GMap, "zoomend", function(){
			// filterByMapBounds();
		// });
	}
}

// ---
// Google MAPの初期化
// function loadGmap(target, ux, uy, uz, ishide) {
//	var dx=139.7657;
//	var dy=35.6813;
//	var dz=6;
//
//	var x=dx;
//	var y=dy;
//	var z=dz;
//
//	if (ux) { x=ux-0; }
//	if (uy) { y=uy-0; }
//	if (uz) { z=uz-0; }
//
//	// 地図の初期化
//	if (GBrowserIsCompatible()) {
//		GMap=new GMap2(document.getElementById(target));
//
//		GMap.addControl(new GSmallMapControl());
//		GMap.addControl(new GMapTypeControl());
//		ovc=new GOverviewMapControl();
//		GMap.addControl(ovc);
//		if (ishide) { ovc.hide(); }
//
//		GMap.setCenter(new GLatLng(y, x), z);
//		GeoCoder=new GClientGeocoder();
//
//		// defaultの位置でなければ，markerを置く
//		if (x!=dx || y!=dy) { putMarker(x, y); }
//
//		// set event handler for mouse click
//		GEvent.addListener(GMap, "click", function(marker, point){
//			if (point) {
//				putMarker(point.x, point.y);
//			}
//		});
//	}
//}

// ----
function putMarker(x, y) {
	if (GMrk) {
		GMap.removeOverlay(GMrk);
		GMrk=null;
	}

	GMrk=new GMarker(new GPoint(x, y));
	GMap.addOverlay(GMrk);
	GMap.panTo(new GLatLng(y, x));

	var tf=document.getElementById('ido');
	if (tf) { tf.value=y; }
	tf=document.getElementById('kdo');
	if (tf) { tf.value=x; }
}

// ----
function clearAllMarkers() {
	GMap.clearOverlays();
}

// ----
// リスト表示の上にある地図に，会議開催地のmarkingを置くための関数
// function putSmallMarker(obj) {
//	var x=obj["kdo"];
//	var y=obj["ido"];
//	if (x.length<1 || y.length<1) { 
//		// alert('location data not found for '+obj["title"]);
//		return; 
//	}
//
//	var ll=new GLatLng(y, x);
//
//	GMrk=new GMarker(ll, { icon:ym, title:obj["title"] });
//	if (!GMrk) { 
//		alert('Error: failed to make a marker'); return; 
//	}
//	obj.marker=GMrk;
//	GMrk=null;
//	GEvent.addListener(obj.marker, "click", function(){
//		obj.marker.openInfoWindowHtml(genInfoHTML(obj));
//	});
//	GMap.addOverlay(obj.marker);
//}

// ----
// リスト表示の上にある地図に，会議開催地のmarkingを置くための関数
function putSmallMarker2(ido,kdo,loc,html) {
	if (kdo.length<1 || ido.length<1) { 
		// alert('location data not found for '+obj["title"]);
		return; 
	}

	var ll=new GLatLng(ido, kdo);

	GMrk=new GMarker(ll, { icon:ym, title:loc });
	if (!GMrk) { 
		alert('Error: failed to make a marker'); return; 
	}

	var marker=GMrk;
	GMrk=null;
	GEvent.addListener(marker, "click", function(){
		marker.openInfoWindowHtml(html);
	});
	GEvent.addListener(marker, "infowindowopen", function(){
		var pnt=marker.getLatLng();
		var idAry=findCfIDsByLatLong(pnt.lat(), pnt.lng());
		console.log('info window open: '+idAry.length);
		if ( idAry ) {
			addCfIndexes(idAry);
			toggleVisibilityOfMainLists();
		}
	});
	GEvent.addListener(marker, "infowindowclose", function(){
		// console.log('info window close');
		clearCfIndexAry();
		toggleVisibilityOfMainLists();
	});
	GMap.addOverlay(marker);

	return marker; // return generated marker object
}

// ---
// function makeItCenter(rowid) {
//	return false;
//
//	var rw=dsEvts.getRowByID(rowid);
//	if (!rw) {
//		alert('failed to get a data entry.'); return;
//	}
//
//	if (rw.marker) {
//		rw.marker.openInfoWindow(genInfoHTML(rw));
//	}
//}

// ----
// 吹き出し用のHTMLを生成する関数
// function genInfoHTML(obj) {
//	var cont='';
//
//	cont+='<div align="center">';
//	cont+='<a href="'+obj["url"]+'" target="_blank">'+obj["title"]+'</a>';
//	cont+='<br />';
//	cont+='<input type="button" value="Show detail" onclick="goToDetail('+obj["id"]+');" />';
//	cont+='</div>';
//
//	return cont;
//}

// ----
// マーカーを削除し，緯度/経度の値をクリアする
function undefLatLng() {
	if (GMrk) {
		GMap.removeOverlay(GMrk);
		GMrk=null;
	}

	var tf=document.getElementById('ido');
	if (tf) { tf.value='' }
	tf=document.getElementById('kdo');
	if (tf) { tf.value=''; }
}

// ----
// geocoderの結果を地図に表示する
function showAddress() {
	var addr;

	var tg=document.getElementById('jyusho');
	if (tg && tg.value) { addr=tg.value; }
	if (!addr || addr.length < 1) { return; }

	GeoCoder.getLatLng(
		addr,
		function(point) {
			if (!point) {
				alert(addr+' not found!');
			} else {
				GMap.setCenter(point, 13);
				putMarker(point.x, point.y);
			}
		}
	);

}

// ---
// 表示のみのGoogle MAP初期化
function showPos(target, ux, uy, uz) {
	// 地図の初期化
	if (GBrowserIsCompatible()) {
		GMap=new GMap2(document.getElementById(target));
		GMap.addControl(new GSmallMapControl());

		GMap.setCenter(new GLatLng(uy, ux), uz);

		GMrk=new GMarker(new GPoint(ux, uy));
		GMap.addOverlay(GMrk);

		GEvent.addListener(GMap, "dragend", function(){
			setTimeout(function(){ GMap.panTo(new GLatLng(uy, ux)); }, 3000);
		});
	}
}

//
// ends here
//
