var map = null;
var streetObj = null;
var geocoder = null;
var icon = null;
var Obj1 = null;

var stClient = null;
var stPanorama = null;


//ストリートビュー表示用
function SVMAP_VIEW(lon,lat,Pyaw,Ppitch,Pvzoom,tag_id) {
	var lon;
	var lat;
	var Pyaw;
	var Ppitch;
	var Pvzoom;
	
	//ストリートビューyaw pitch zoomはint化する。
	if(Pyaw){Pyaw=parseFloat(Pyaw);}
	if(Ppitch){Ppitch=parseFloat(Ppitch);}
	if(Pvzoom){Pvzoom=parseFloat(Pvzoom);}
	var view = new GLatLng(lat,lon);
	streetObj = new GStreetviewPanorama(document.getElementById(tag_id));
	if(view == null){
		alert("近くにストリートビュー対応地域がありません");
	}else{
		//値があったら指定
		var spov=null;
		spov = {yaw:Pyaw,pitch:Ppitch,zoom:Pvzoom};
		streetObj.setLocationAndPOV(view,spov);
	}
	//GEvent.addListener(streetObj, "error", onError);
}

//ストリートビューでのエラー
function onError(errorCode) {
	if (errorCode == 600) {
	//	alert('ストリートビュー未登録です。青い道沿いにポイントして下さい。');
		return;
	}
	else if (errorCode == 603) {
		alert('ブラウザがFlash未対応です。');
		return;
    }
}

//検索時ストリートビューでのエラー
function SRConError(errorCode) {
	if (errorCode == 600) {
		alert('ストリートビュー未登録です。青い道沿いにポイントして下さい。');
		//ストリートビューを消したい・・・
		
		return;
	}
	else if (errorCode == 603) {
		alert('ブラウザがFlash未対応です。');
		return;
    }
}

//googlemapセットズーム
function SETZOOMS(no){
	switch(no){
		case "1":map.setZoom(1);break;
		case "2":map.setZoom(2);break;
		case "3":map.setZoom(3);break;
		case "4":map.setZoom(4);break;
		case "5":map.setZoom(5);break;
		case "6":map.setZoom(6);break;
		case "7":map.setZoom(7);break;
		case "8":map.setZoom(8);break;
		case "9":map.setZoom(9);break;
		case "10":map.setZoom(10);break;
		case "11":map.setZoom(11);break;
		case "12":map.setZoom(12);break;
		case "13":map.setZoom(13);break;
		case "14":map.setZoom(14);break;
		case "15":map.setZoom(15);break;
		case "16":map.setZoom(16);break;
		case "17":map.setZoom(17);break;
		case "18":map.setZoom(18);break;
		case "19":map.setZoom(19);break;
		case "20":map.setZoom(20);break;
		default:map.setZoom(10);break;
	}
}


//googlemap表示用
//lon,latは座標。zoomは拡大倍率1～20　map_idは表示するためのid場所
function VIEW_MAP(lon,lat,zoom,tag_id){
	map = new GMap2(document.getElementById(tag_id));
	map.setCenter(new GLatLng(lat,lon),14);
	GLargeMapControl();
	
	if(zoom!=0 && zoom==""){
		SETZOOMS(zoom);
	}
	
	
	var marker = new GMarker(map.getCenter(), icon);
	//showLatLon= function (){
		//var pointc = map.getCenter()
		//document.getElementById('lat').value=pointc.x;
		//document.getElementById('lon').value=pointc.y;
		//document.getElementById('zoom').value=map.getZoom();
	//};
	
	map.addControl(new GLargeMapControl());	
	map.enableScrollWheelZoom();  
	map.enableContinuousZoom();
	GEvent.addDomListener(document.getElementById(tag_id),
	"DOMMouseScroll", CancelEvent); // Firefox
	GEvent.addDomListener(document.getElementById(tag_id),
	"mousewheel",     CancelEvent); // IE
	
	function CancelEvent(event)
	{
		e = event;
		if (typeof e.preventDefault  == 'function') 
		e.preventDefault();
		if (typeof e.stopPropagation == 'function')
		e.stopPropagation();
		if (window.event)
		{
			window.event.cancelBubble = true; // for IE
			window.event.returnValue = false; // for IE
		}
	}
	
	//ポイント打ち込み
	if(lon && lat){
		Objs= new GPoint(lon,lat);
	//	MAP_POINT(Objs);
		map.clearOverlays();
		Obj1= new GPoint(lon,lat);
		mark1=new GMarker(Obj1);
		map.addOverlay(mark1);
	}
	
}

//住職から地図を表示する
function VIEW_ADD_MAP(address,tag_id){
	
	vmap = new GMap2(document.getElementById(tag_id));
	
	geocoder = new GClientGeocoder();
	if (geocoder) {
		geocoder.getLatLng(
		address,
		function (vpoint) {
			if (!vpoint) {
				return false;
			} else {
				vmap.setCenter(vpoint, 14);
				vmap.clearOverlays();
				marks=new GMarker(vpoint);
				vmap.addOverlay(mark1);
			}
		}
		);
	}
	
	//map.setCenter(new GLatLng(lat,lon),14);
	GLargeMapControl();
	
	
	
	vmap.addControl(new GLargeMapControl());	
	vmap.enableScrollWheelZoom();  
	vmap.enableContinuousZoom();
	GEvent.addDomListener(document.getElementById(tag_id),
	"DOMMouseScroll", CancelEvent); // Firefox
	GEvent.addDomListener(document.getElementById(tag_id),
	"mousewheel",     CancelEvent); // IE
	
	function CancelEvent(event)
	{
		e = event;
		if (typeof e.preventDefault  == 'function') 
		e.preventDefault();
		if (typeof e.stopPropagation == 'function')
		e.stopPropagation();
		if (window.event)
		{
			window.event.cancelBubble = true; // for IE
			window.event.returnValue = false; // for IE
		}
	}
}

function MAP_POINT(points){
	if(points.x,points.y){
		map.clearOverlays();
		map.addOverlay(streetview);
		Obj1= new GPoint(points.x,points.y);
		mark1=new GMarker(points);
		map.addOverlay(mark1);
		//map.clearOverlays();
	//	alert(points.y);
	}
}


//googlemap作成用
//lon,latは座標。zoomは拡大倍率1～20　map_idは表示するためのid場所
function SET_MAP(lon,lat,zoom,map_id,svmap_id){
	//lon,latがない場合は基本座標に
	if(lon && lat){first_p=true;}
	if(!lon){lon=127.75705611718877;first_p=false;}
	if(!lat){lat=26.321625762335273;first_p=false;}

	map = new GMap2(document.getElementById(map_id));
	map.setCenter(new GLatLng(lat,lon),14);
	//座標書き出し
	document.getElementById('lat').value=lat;
	document.getElementById('lon').value=lon;
	document.getElementById('zoom').value=map.getZoom();
	GLargeMapControl();
	streetview = new GStreetviewOverlay();
	map.addOverlay(streetview);
	
	var marker = new GMarker(map.getCenter(), icon);
	showLatLon= function (){
		var pointc = map.getCenter()
	};
	
	
	map.addControl(new GLargeMapControl());	
	map.enableScrollWheelZoom();  
	map.enableContinuousZoom();
	GEvent.addDomListener(document.getElementById(map_id),
	"DOMMouseScroll", CancelEvent); // Firefox
	GEvent.addDomListener(document.getElementById(map_id),
	"mousewheel",     CancelEvent); // IE
	
	
	
	
	//ポイントクリック時に動く
	GEvent.addListener(map, 'click', function(overlay, point) {
	if(point)
	{
		document.getElementById('lat').value=point.y;
		document.getElementById('lon').value=point.x;
		document.getElementById('zoom').value=map.getZoom();
		MAP_POINT(point);
	}
	});
	
	//キャンセルイベントだけどなぜかスクロールにも入ってる
	function CancelEvent(event)
	{
		e = event;
		if (typeof e.preventDefault  == 'function') 
		e.preventDefault();
		if (typeof e.stopPropagation == 'function')
		e.stopPropagation();
		if (window.event)
		{
			window.event.cancelBubble = true; // for IE
			window.event.returnValue = false; // for IE
		}
		//これはスクロールしたら動くようにしてるけど微妙かも
		//document.getElementById('zoom').value=map.getZoom();
	}
	
	//ポイント打ち込み
	if(lon && lat && first_p){
		//map.clearOverlays();
		Obj1= new GPoint(lon,lat);
		//MAP_POINT(Obj1);
		mark1=new GMarker(Obj1,{draggable: true});
		mark1=new GMarker(Obj1);
		map.addOverlay(mark1);
		//alert(mark1);
	}
	
}

//住所から座標を取得する
function showAddress(address_id) {
	var address=document.getElementById(address_id).value;
	geocoder = new GClientGeocoder();
	if (geocoder) {
		geocoder.getLatLng(
		address,
		function (point) {
			if (!point) {
				alert(address + "が見つかりません");
			} else {
				pzoom=map.getZoom();
				map.setCenter(point);
				document.getElementById('lon').value=point.x;
				document.getElementById('lat').value=point.y;
				document.getElementById('zoom').value=pzoom;
			}
		}
		);
	}
}

//googleマップから　ストリートビューを表示させる
function showsvAddress(sv_id) {
	if(Obj1 == null){
		alert("googlemapに場所が指定されていません。");
		return false;
	}
	
	var views = new GLatLng(Obj1.y,Obj1.x);
	
	if(views == null){
		alert("近くにストリートビュー対応地域がありません");
	}else{
		spov = {yaw:0,pitch:0,zoom:0};
		//streetObj = new GStreetviewPanorama(document.getElementById(sv_id));
		streetObj.setLocationAndPOV(views,spov);
		//GEvent.addListener(streetObj, "error", SRConError);
		document.getElementById('SVlat').value=Obj1.x;
		document.getElementById('SVlon').value=Obj1.y;
		document.getElementById('SVyaw').value=yaw;
		document.getElementById('SVpitch').value=pitch;
		document.getElementById('SVzoom').value=zoom;
		
	}
}

//ストリートビュー検索用
function SRC_SVMAP(lon,lat,Pyaw,Ppitch,Pvzoom,svmap_id) {
	var vlon;
	var vlat;
	var Pyaw;
	var Ppitch;
	var Pvzoom;
	
	//ストリートビューyaw pitch zoomはint化する。
	if(Pyaw){Pyaw=parseFloat(Pyaw);}
	if(Ppitch){Ppitch=parseFloat(Ppitch);}
	if(Pvzoom){Pvzoom=parseFloat(Pvzoom);}
	
	//マップがある場合、マップのセンターを取得する・・・
	//var view = map.getCenter();
	var view = new GLatLng(lat,lon);
	streetObj = new GStreetviewPanorama(document.getElementById(svmap_id));
	if(view == null){
		alert("近くにストリートビュー対応地域がありません");
	}else{
		//値があったら指定
		var spov=null;
		if(Pyaw && Ppitch && Pvzoom){
			spov = {yaw:Pyaw,pitch:Ppitch,zoom:Pvzoom};
		}else{
			spov = {yaw:0,pitch:0,zoom:0};
		}
		streetObj.setLocationAndPOV(view,spov);
	}
	GEvent.addListener(streetObj, "error", SRConError);
	
	//初期取得値
	document.getElementById('SVlat').value=lat;
	document.getElementById('SVlon').value=lon;
	document.getElementById('SVyaw').value=Pyaw;
	document.getElementById('SVpitch').value=Ppitch;
	document.getElementById('SVzoom').value=Pvzoom;
	
	//yawを変えたとき
	GEvent.addListener(streetObj, "yawchanged", function(yaw) {
		document.getElementById('SVyaw').value=yaw;
	});
	//pitchを変えたとき
	GEvent.addListener(streetObj, "pitchchanged", function(pitch) {
		document.getElementById('SVpitch').value=pitch;
	});
	//ズームを変えたとき
	GEvent.addListener(streetObj, "zoomchanged", function(zoom) {
		document.getElementById('SVzoom').value=zoom;
	});
	//どこかに動いたとき
	GEvent.addListener(streetObj, 'initialized', svgets);
	function svgets(location){
		document.getElementById('SVlon').value=location.latlng.lng();
		document.getElementById('SVlat').value=location.latlng.lat();
		document.getElementById('SVyaw').value=yaw;
		document.getElementById('SVpitch').value=pitch;
		document.getElementById('SVzoom').value=vzoom;
	}
	//ダブルクリックイベント・・・
	//GEvent.addListener(map, "dblclick", function(overlay,point) {
	//	var viewclient = new GStreetviewClient();
	//	viewclient.getNearestPanoramaLatLng(point, function(latlng){
	//		if (latlng){
	//			streetview.setLocationAndPOV(latlng);
	//		}
	//	});
	//});
	
}


