if (GBrowserIsCompatible()) {
	$(document).ready(function(){
		
		//-----
		//変数宣言
		//-----
		var i;
		var lc = "#c61628";
		var mkS = "/images/access/point-small.png";		//14px
		var mkL = "/images/access/point-big.png";			//20px
		var at = "walk";
		var cp = 0;
		var stepAccess = false;
		var pointList = {
			walk: [
				{lat:35.499101, lng:139.408363, yawA:-30, yawB:0, pitch:0, img:"/images/access/walk01.jpg", txt:"相武台前駅改札"},
				{lat:35.498976, lng:139.408873, yawA:-60, yawB:-180, pitch:0, img:"", txt:"相武台前駅南口より横断歩道を２つ渡ります。"},
				{lat:35.49886, lng:139.408994, yawA:-90, yawB:-180, pitch:0, img:"", txt:"南方面（味の一番街）"},
				{lat:35.498004, lng:139.408878, yawA:90, yawB:10, pitch:0, img:"", txt:"南東方面へ"},
				{lat:35.497968, lng:139.409042, yawA:-70, yawB:-140, pitch:0, img:"", txt:"南西方面へ"},
				{lat:35.497782, lng:139.408827, yawA:10, yawB:-90, pitch:0, img:"", txt:"西方面へ"},
				{lat:35.49769, lng:139.408064, yawA:-100, yawB:-100, pitch:0, img:"", txt:"左手に三晃診療所、西方面へ"},
				{lat:35.497644, lng:139.407714, yawA:-90, yawB:-90, pitch:0, img:"", txt:"道なりに西方面へ"},
				{lat:35.49756, lng:139.407364, yawA:-120, yawB:-120, pitch:0, img:"", txt:"道なりに進んでください。"},
				{lat:35.497397, lng:139.407076, yawA:0, yawB:0, pitch:0, img:"/images/access/walk02.jpg", txt:"都南まであと30m！（この先車両は通行禁止です)"},
				{lat:35.496777, lng:139.407299, yawA:0, yawB:0, pitch:0, img:"/images/access/walk03.jpg", txt:"ここが都南の入口です。"},
				{lat:35.496797, lng:139.407706, yawA:0, yawB:0, pitch:0, img:"/images/access/walk04.jpg", txt:"到着！"}
			],
			car1: [
				{lat:35.4977, lng:139.405804, yawA:-90, yawB:-180, pitch:0, img:"", txt:"「座間市役所入口」交差点を南へ"},	
				{lat:35.496576, lng:139.405558, yawA:-30, yawB:80, pitch:0, img:"", txt:"Ｔ字路を左折してください。（東方面へ）"},	
				{lat:35.496657, lng:139.406065, yawA:90, yawB:90, pitch:0, img:"", txt:"踏切を越えます。（東方面へ）"},	
				{lat:35.496495, lng:139.407097, yawA:90, yawB:90, pitch:0, img:"", txt:"左前方に教習所が見えます。（ここで左折です）"},	
				{lat:35.496482, lng:139.407191, yawA:-60, yawB:30, pitch:0, img:"", txt:"ここが都南の入口です。"},	
				{lat:35.496615, lng:139.407248, yawA:-30, yawB:30, pitch:0, img:"/images/access/car.jpg", txt:"駐車場に到着！"}
			],
			car2: [
				{lat:35.496004, lng:139.405383, yawA:60, yawB:0, pitch:0, img:"", txt:"北方面へ"},	
				{lat:35.496576, lng:139.405558, yawA:180, yawB:80, pitch:0, img:"", txt:"Ｔ字路を右折してください。（東方面へ）"},	
				{lat:35.496657, lng:139.406065, yawA:90, yawB:90, pitch:0, img:"", txt:"踏切を越えます。（東方面へ）"},	
				{lat:35.496495, lng:139.407097, yawA:90, yawB:90, pitch:0, img:"", txt:"左前方に教習所が見えます。（ここで左折です）"},	
				{lat:35.496482, lng:139.407191, yawA:-60, yawB:30, pitch:0, img:"", txt:"ここが都南の入口です。"},	
				{lat:35.496615, lng:139.407248, yawA:-30, yawB:30, pitch:0, img:"/images/access/car.jpg", txt:"駐車場に到着！"}
			]
		};
		
		//-----
		//画像のプリロード
		//-----
		var pimg;
		for ( i=0; i<pointList["walk"].length; i++) {
			if ( ! pointList["walk"][i].img ) continue;
			pimg = new Image();
			pimg.src = pointList["walk"][i].img;
		}
		pimg = new Image();
		pimg.src = "/images/access/no-panorama.gif";
		
		//-----
		//エレメントの書き換え
		//-----
		$("div#THREECONTENT").before('<div id="ACCESSMAP"><div id="MAP-TAB" class="clearfix"><a href="#" id="MAP-WALK" class="selected"><span>徒歩</span></a><a href="#" id="MAP-CAR1"><span>キャンプ方面よりお車で</span></a><a href="#" id="MAP-CAR2"><span>座間市役所方面よりお車で</span></a></div><div id="MAP-WRAPPER" class="clearfix"><div id="MAP-BG"><div id="MAP-SPACER"><div id="GMAP"></div></div></div><div id="SVIEW-BG"></div><div id="SVIEW-WRAPPER"><div id="SVIEW-SCREEN"><div id="SVIEW"></div><div id="SVIEW-IMG"></div></div><p id="SVIEW-TEXT"></p></div><div id="SVEIW-CONTROL" class="clearfix"><a href="#" id="SVIEW-PREV"><span>戻る</span></a><a href="#" id="SVIEW-NEXT"><span>次へ</span></a></div></div></div>');
		
		//ルート切り替え
		
		$("#MAP-WALK").click(function(){
			$("#MAP-TAB a").removeClass("selected");
			$(this).addClass("selected");
			at = "walk";
			moveMap(0);
			return false;
		});
		$("#MAP-CAR1").click(function(){
			$("#MAP-TAB a").removeClass("selected");
			$(this).addClass("selected");
			at = "car1";
			moveMap(0);
			return false;
		});
		$("#MAP-CAR2").click(function(){
			$("#MAP-TAB a").removeClass("selected");
			$(this).addClass("selected");
			at = "car2";
			moveMap(0);
			return false;
		});
		
		//次へ／前へのイベント
		$("#SVIEW-PREV").click(function(){
			moveMap(cp-1);
			return false;
		});
		$("#SVIEW-NEXT").click(function(){
			moveMap(cp+1);
			return false;
		});
		
		//-----
		//IE PNG対策
		//-----
		
		function iePng() {
			var p = SWFAddress.getValue();
			c = ( p && p.split("/")[1] ) ? p.split("/")[1] : "fourwheel";
			$("div#SVIEW-BG").css("background-image","none");
			$("div#SVIEW-BG").css("filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/access/balloon."+c+".png',sizingMethod='scale')");
			$("a#SVIEW-PREV").css("background-image","none");
			$("a#SVIEW-PREV").css("filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/access/button-back."+c+".png',sizingMethod='scale')");
			$("a#SVIEW-NEXT").css("background-image","none");
			$("a#SVIEW-NEXT").css("filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/access/button-next."+c+".png',sizingMethod='scale')");
		}
		
		if ( $.browser.msie && $.browser.version >= 5.5 && $.browser.version < 7 ) {
			iePng();
			SWFAddress.addEventListener(SWFAddressEvent.CHANGE,iePng);
			$("div#MAP-BG").css("background-image","none");
			$("div#MAP-BG").css("filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/access/bgwhite.png',sizingMethod='scale')");
		}
		
		//-----
		//所要時間図の色
		//-----
		function accessTimeColor() {
			var p = SWFAddress.getValue();
			c = ( p && p.split("/")[1] ) ? p.split("/")[1] : "fourwheel";
			$("img#ACCESS-TIME").attr({src:"/images/access/time."+c+".gif"});
		}
		SWFAddress.addEventListener(SWFAddressEvent.CHANGE,accessTimeColor);
		
		//-----
		//ストリートビューのパン
		//-----
		var panTimer;
		function clearPanTimer() {
			//if ( panTimer ) clearTimeout(panTimer);
		}
		function setPanTimer() {
			//panTimer = setTimeout(panView,1000);
		}
		
		function panView(loc) {
			clearPanTimer();
			GEvent.clearListeners(streetObj, "yawchanged");
			streetObj.panTo({yaw:pointList[at][cp].yawB,pitch:pointList[at][cp].pitch});
			if ( loc ) setPanTimer();
		}
		
		//-----
		//マップの移動
		//-----
		function moveMap(p) {
			if ( isNaN(p) ) p = cp;
			if ( ! pointList[at][p] ) return;
			cp = p;
			stepAccess = true;
			//マップのパン、ズーム
			mapObj.panTo(new GLatLng(pointList[at][cp].lat, pointList[at][cp].lng));
			//ストリートビュー
			if ( pointList[at][cp].img ) {
				//画像の場合
				GEvent.clearListeners(streetObj, "yawchanged");
				//streetObj.hide();
				$("#SVIEW").css("left","-9999px");
				$("#SVIEW-IMG").css("display","block");
				$("#SVIEW-IMG").empty();
				$("#SVIEW-IMG").append('<img src="'+pointList[at][cp].img+'" width="335" height="215" />');
			} else {
				$("#SVIEW").css("display","block");
				$("#SVIEW").css("left","0px");
				$("#SVIEW-IMG").css("display","none");
				//streetObj.show();
				if ( pointList[at][cp].yawA != pointList[at][cp].yawB ) GEvent.addListener(streetObj, "yawchanged", panView);
				streetObj.setLocationAndPOV(new GLatLng(pointList[at][cp].lat,pointList[at][cp].lng),{yaw:pointList[at][cp].yawA,pitch:pointList[at][cp].pitch});
			}
			
			//ボタンの表示切り替え
			if ( cp >= pointList[at].length-1 ) $("#SVIEW-NEXT").css("display","none");
			else $("#SVIEW-NEXT").css("display","block");
			if ( cp <= 0 ) $("#SVIEW-PREV").css("display","none");
			else $("#SVIEW-PREV").css("display","block");
			
			//テキスト表示
			$("#SVIEW-TEXT").empty();
			$("#SVIEW-TEXT").append(pointList[at][cp].txt);
			//-----
			//オーバーレイ
			//-----
			resetOverlay(pointList[at][cp].lat, pointList[at][cp].lng);
		}
		
		//-----
		//オーバーレイ
		//-----
		function resetOverlay(lat,lng) {
			mapObj.clearOverlays();
			//ラインを引く
			if ( cp > 0 ) {
				var lp = [];
				for ( i=0; i<=cp; i++ ) lp.push(new GLatLng(pointList[at][i].lat, pointList[at][i].lng));
				var l = new GPolyline(lp,lc,4,0.8);
				mapObj.addOverlay(l);
			}
			
			//マーカーの追加
			var mk;
			var ic;
			//小さいの
			for ( i=0; i<=cp; i++ ) {
				ic = new GIcon();
				ic.image = mkS;
				ic.iconSize = new GSize(14,14);
				ic.iconAnchor = new GPoint(7,7);
				mk = new GMarker(new GLatLng(pointList[at][i].lat, pointList[at][i].lng),ic);
				mapObj.addOverlay(mk);
			}
			//大きいの
			ic = new GIcon();
			ic.image = mkL;
			ic.iconSize = new GSize(20,20);
			ic.iconAnchor = new GPoint(10,10);
			//mk = new GMarker(new GLatLng(pointList[at][cp].lat, pointList[at][cp].lng),ic);
			mk = new GMarker(new GLatLng(lat,lng),ic);
			mapObj.addOverlay(mk);
		}
		//-----
		//ストリートビューの移動時にマップの場所を合わせる
		//-----
		function fixMapLocation(loc) {
			if ( !stepAccess ) {
				$("#SVIEW-TEXT").empty();
				resetOverlay(loc.latlng.lat(),loc.latlng.lng());
			}
			mapObj.panTo(loc.latlng);
			stepAccess = false;
		}
		
		//-----
		//マップの移動時にビューの場所を合わせる
		//-----
		function fixViewLocation() {
			$("#SVIEW").css("display","block");
			$("#SVIEW").css("left","0px");
			$("#SVIEW-IMG").css("display","none");
			$("#SVIEW-TEXT").empty();
			//
			 var latlng = mapObj.getCenter();
			resetOverlay(latlng.lat(),latlng.lng());
			streetObj.setLocationAndPOV(latlng);
			var gsvClient = new GStreetviewClient();
			gsvClient.getNearestPanoramaLatLng(latlng,nearestPanoramaLatLng);
		}
		
		function nearestPanoramaLatLng(latlng) {
			if ( latlng == null ) {
				$("#SVIEW").css("left","-9999px");
				$("#SVIEW-IMG").css("display","block");
				$("#SVIEW-IMG").empty();
				$("#SVIEW-IMG").append('<img src="/images/access/no-panorama.gif" width="335" height="215" />');
			} else {
				resetOverlay(latlng.lat(),latlng.lng());
			}
		}
		//-----
		//ロード時に実行
		//-----
		$(window).load(function(){
			mapObj = new GMap2($("#GMAP")[0]);
			mapObj.setCenter(new GLatLng(pointList[at][cp].lat, pointList[at][cp].lng), 17);
			mapObj.addControl(new GMapTypeControl());
			mapObj.addControl(new GSmallMapControl());
			//mapObj.disableDragging();
			//mapObj.disableDoubleClickZoom();
			GEvent.addListener(mapObj,"dragend",fixViewLocation);
			streetObj = new GStreetviewPanorama($("#SVIEW")[0]);
			streetObj.setLocationAndPOV(new GLatLng(pointList[at][cp].lat,pointList[at][1].lng),{yaw:pointList[at][1].yawA,pitch:pointList[at][1].pitch});
			GEvent.addListener(streetObj, "initialized", fixMapLocation);
			moveMap();
		});
	});
}


