dojo.require("dojox.collections.Dictionary");dojo.require("dojox.collections.ArrayList");var goodsWnd=null;var iconSizeT=new GSize(28,40);var shadowSizeT=new GSize(40,40);var iconAnchorT=new GPoint(14,40);var iconList=new Array();var defaultIcon=new GIcon();defaultIcon.image="/Hades/pages/images/singlemap/gmap_house.png";defaultIcon.shadow="/Hades/pages/images/singlemap/gmap_shadow.png";defaultIcon.iconSize=iconSizeT;defaultIcon.shadowSize=shadowSizeT;defaultIcon.iconAnchor=iconAnchorT;defaultIcon.infoWindowAnchor=new GPoint(10,10);defaultIcon.transparent="/Hades/pages/images/singlemap/gmap_house.png";var buildingIcon=new GIcon();buildingIcon.image="/Hades/pages/images/singlemap/gmap_building.png";buildingIcon.shadow="/Hades/pages/images/singlemap/gmap_shadow.png";buildingIcon.iconSize=iconSizeT;buildingIcon.shadowSize=shadowSizeT;buildingIcon.iconAnchor=iconAnchorT;buildingIcon.infoWindowAnchor=new GPoint(10,10);buildingIcon.transparent="/Hades/pages/images/gmap_building.png";var parkingIcon=new GIcon();parkingIcon.image="/Hades/pages/images/singlemap/gmap_parking.png";parkingIcon.shadow="/Hades/pages/images/singlemap/gmap_shadow.png";parkingIcon.iconSize=iconSizeT;parkingIcon.shadowSize=shadowSizeT;parkingIcon.iconAnchor=iconAnchorT;parkingIcon.infoWindowAnchor=new GPoint(10,10);parkingIcon.transparent="/Hades/pages/images/singlemap/gmap_parking.png";var officeIcon=new GIcon();officeIcon.image="/Hades/pages/images/singlemap/gmap_office.png";officeIcon.shadow="/Hades/pages/images/singlemap/gmap_shadow.png";officeIcon.iconSize=iconSizeT;officeIcon.shadowSize=shadowSizeT;officeIcon.iconAnchor=iconAnchorT;officeIcon.infoWindowAnchor=new GPoint(10,10);officeIcon.transparent="/Hades/pages/images/singlemap/gmap_office.png";var shopIcon=new GIcon();shopIcon.image="/Hades/pages/images/singlemap/gmap_shop.png";shopIcon.shadow="/Hades/pages/images/singlemap/gmap_shadow.png";shopIcon.iconSize=iconSizeT;shopIcon.shadowSize=shadowSizeT;shopIcon.iconAnchor=iconAnchorT;shopIcon.infoWindowAnchor=new GPoint(10,10);shopIcon.transparent="/Hades/pages/images/singlemap/gmap_shop.png";iconList.push(defaultIcon);iconList.push(parkingIcon);iconList.push(shopIcon);iconList.push(buildingIcon);iconList.push(officeIcon);var myself=new Object();myself.map;myself.pano;myself.markerCache=new dojox.collections.Dictionary();myself.popupHtmlBase="";myself.fixedComplexStationParam="";myself.defaultZoom=15;myself.directions;myself.autoPan=true;myself.driveStart=false;myself.driveDestinationMarker=null;myself.startDrivingMark=false;myself.isDriving=false;myself.streetviewclient;myself.route;myself.vertices;myself.panoMetaData=null;myself.close=false;myself.bearing;myself.nextBearing;myself.nextVertexId;myself.nextVertex;myself.carMarker;myself.selectedStep=null;myself.advanceTimer=null;myself.advanceDelay=1;myself.naviEri=null;myself.kyori;myself.windowFlag=0;myself.windowFlagData;myself.windowLocationX;myself.windowLocationY;myself.markingpoint;var defTagId;var defDistanceLblId;var defWalkLblId;var defLatlng;var defZoom;var defAp;myself.setPanoramaDefault=function(c,f,e,a,d,b){myself.map.panTo(new GLatLng(myself.defLatlng))};myself.initialize=function(d,b,a,g,e,c){myself.defTagId=d;myself.defDistanceLblId=b;myself.defWalkLblId=a;myself.defLatlng=g;myself.defZoom=e;myself.defAp=c;myself.distanceLabelId=b;myself.walkTimeLabelId=a;myself.defaultZoom=e;myself.map=new GMap2(document.getElementById(d));GEvent.addListener(myself.map,"load",function(){if(!this.commented1){}myself.pano=new GMapPanoramaWindow({gmap:myself.map,enabled:true,imgswaphandler:function(h){GEvent.addListener(h,"dragend",function(i){})},onnewpanorama:function(h){GEvent.addListener(h,"initialized",function(i){myself.panoMetaData=i;myself.moveCar()})},onWalkerDragStarted:function(){myself.whenMarkersDragStarted()},onWalkerDragEnded:function(){myself.whenMarkersDragEnded()}});myself.streetviewclient=myself.pano.panoclient});myself.map.addControl(new GLargeMapControl(),new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(20,56)));myself.map.addControl(new GMapTypeControl(),new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(20,26)));myself.map.addControl(new GScaleControl());myself.map.addControl(new GOverviewMapControl());myself.map.disableDoubleClickZoom();var f={resultList:google.maps.LocalSearch.RESULT_LIST_SUPPRESS,searchFormHint:"周辺の情報を検索！",suppressInitialResultSelection:true,suppressZoomToBounds:true};myself.map.addControl(new google.maps.LocalSearch(f),new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(85,55)));myself.directions=new GDirections(myself.map);GEvent.addListener(myself.directions,"addoverlay",function(){var j=this.getNumGeocodes();for(var k=0;k<j;k++){var h=this.getMarker(k);myself.map.removeOverlay(h)}var l=myself.directions.getPolyline();l.setStrokeStyle({color:"#ff0000",weight:15})});GEvent.addListener(myself.directions,"load",function(){myself.jumpInMyCar()});GEvent.addListener(myself.directions,"error",function(){});if(Ext.isIE){goodsWnd=new Ext.Window({title:"物件",html:"ここに表示",autoHeight:true,minWidth:300,width:365,maxWidth:450,closable:true,closeAction:"hide",x:250,y:400})}else{goodsWnd=new Ext.Window({title:"物件",html:"ここに表示",autoHeight:true,autoWidth:true,closable:true,closeAction:"hide",resizable:false,x:250,y:400})}myself.autoPan=(c==null)?true:c;myself.map.setCenter(g,myself.defaultZoom);myself.moveTo(g)};myself.setPanoramaVisibility=function(b,c){if(b){var d=myself.map.getCenter();myself.pano.setCameraLocation(d);myself.pano.show(c);var a=myself.pano.putWalker(d);new Ext.util.DelayedTask(function(){var e='<div style=\'padding-left:10px;width:360px;font-size:1.2em;line-height:200%;\'><div style=\'float:left;\'><p style="font-size:1.6em;line-height:125%;">左のメニューより条件を選ぶ！</a><br /></div><div style="clear:both;" /><p style="font-size:0.9em;"><img src="/Hades/pages/images/singlemap/icons/0.png" style="width:40px;height:40px;"/>左パネルのメニューから駅や条件を選んで物件を探しましょう！</p></div>';a.openInfoWindowHtml(e)}).delay(1000)}else{if(myself.pano.isVisible()){myself.pano.hide(c)}myself.directions.clear()}};myself.togglePanorama=function(c,b){var a=(b||!myself.pano.isVisible());myself.setPanoramaVisibility(a,c)};myself.togglePanoramaSet=function(c,b){var a=(b||!myself.pano.isVisible());myself.setPanoramaVisibility(a,c);myself.setDriving(a)};function allAorkStop(){if(myself.isDriving){myself.stopDriving();var a=new Ext.util.DelayedTask();a.delay(1000,function(){myself.stopDriving()},this)}}function work(){allAorkStop();myself.generateRoute(myself.pano.getWalker().getLatLng(),myself.markingpoint.getLatLng());if(myself.windowFlag==0){myself.windowFlagData=Ext.get("gowork");myself.windowFlagData.update('<img src="/Hades/pages/images/singlemap/icons/go.gif" />');myself.windowFlag=1}else{if(myself.windowFlag==1){myself.windowFlagData.update("");myself.windowFlag=0}}goAndStop()}function goAndStop(){myself.windowFlagData.on("click",function(){if(!myself.isDriving){myself.advance();myself.windowFlagData.update('<img src="/Hades/pages/images/singlemap/icons/stop.gif" />')}else{myself.stopDriving();var a=new Ext.util.DelayedTask();a.delay(1000,function(){myself.stopDriving()},this);if(!myself.isDriving){myself.windowFlagData.update('<img src="/Hades/pages/images/singlemap/icons/go.gif" />')}}})}myself.updateInfoWnd=function(b,a){myself.windowFlagData=null;if(Ext.isReady){if(myself.driveStart){myself.map.removeOverlay(myself.directions.getPolyline());myself.setDriving(false);myself.driveStart=false}if(!goodsWnd.isVisible()){goodsWnd.show()}goodsWnd.body.update(a+="<div id='gowork'></div><div id='kyori'></div><input type='image' src='/Hades/pages/images/singlemap/icons/walkview.gif' onClick='work()'>").fadeIn();goodsWnd.setTitle(b)}};myself.showGoods=function(a){var b=new GLatLngBounds();this.updateMarkers(a,function(c){myself.map.addOverlay(c);b.extend(c.getLatLng())});if(this.autoPan&&b.getCenter()){this.moveTo(b.getCenter())}};myself.hideGoods=function(a){this.updateMarkers(a,function(b){myself.map.removeOverlay(b)})};function ss(c,a,b){if(a){return c+a+b}return""}function si(c,a,b){if(a&&a!=0){return c+a+b}return""}myself.updateMarkers=function(a,e){if(a&&0<a){if(this.markerCache.containsKey(a)){var c=this.markerCache.item(a);for(var d=0;d<c.count;d++){e(c.item(d))}}else{var b="/Hades/goods/find.do?json=true&feature="+a;if(this.fixedComplexStationParam){b+="&complexRailwayStation="+this.fixedComplexStationParam}dojo.xhrGet({url:b,handleAs:"json",sync:true,load:function(i,f){var h=new dojox.collections.ArrayList();for(var l=0;l<i.length;l++){var g=myself.popupHtmlBase.replace("__STATION__",ss("",i[l].station,"駅")).replace("__BY_WALK__",si("徒歩 ",i[l].byWalk,"分")).replace("__BY_BUS__",si("バス ",i[l].byBus,"分")).replace("__LAYOUT_IMG__",ss("<div class='thumbDetailImgE'><img src='",i[l].picExternal,"' id='gimgEx'/></div>")).replace("__EXTERNAL_IMG__",ss("<div class='thumbDetailImgL'><img src='",i[l].picLayout,"' id='gimgLy'/></div>")).replace("__PRICE__",si("",i[l].price,"万円")).replace("__LAYOUT__",ss("",i[l].layoutName,"")).replace("__AREA__",si("",i[l].area,"")).replace("__ID__",ss("",i[l].id,""));var j=ss("",i[l].station,"駅")+si("徒歩 ",i[l].byWalk,"分");var k=myself.createMarker(i[l].cordX,i[l].cordY,j,g,i[l].icon,i[l].id,false);h.add(k);e(k)}myself.markerCache.add(a,h);return i}})}}};myself.createDraggableMarker=function(h,i,c,e,a,b){var j=new GPoint(h,i);var g=new GIcon();g.image="/Hades/pages/images/singlemap/icons/"+c+".png";g.shadow="/Hades/pages/images/singlemap/icons/shadow.png";g.iconSize=new GSize(50,50);g.shadowSize=new GSize(22,20);g.iconAnchor=new GPoint(5,38);g.infoWindowAnchor=new GPoint(6,1);g.infoShadowAnchor=new GPoint(13,13);var d=new GMarker(j,{icon:g,draggable:true});if(e){GEvent.addListener(d,"dragstart",e)}if(a){GEvent.addListener(d,"dragend",a)}if(b){GEvent.addListener(d,"click",b)}return d};myself.createMarker=function(f,c,g,d,e,h){var a=new GPoint(f,c);var b=new GMarker(a,{icon:iconList[e]});GEvent.addListener(b,"click",function(){myself.map.closeInfoWindow();myself.updateInfoWnd(g,d);myself.markingpoint=b;if(myself.isDriving){myself.stopDriving();var i=new Ext.util.DelayedTask();i.delay(1000,function(){myself.stopDriving()},this)}myself.windowFlag=0});GEvent.addListener(b,"mouseover",function(){});return b};myself.moveTo=function(a){if(a&&23<a.lat()&&122<a.lng()){this.map.panTo(a)}};myself.moveToLatLng=function(b,a){var c=new GLatLng(b,a);this.moveTo(c);myself.pano.setCameraLocation(c)};myself.generateRoute=function(b,a){myself.directions.load("from: "+b+" to: "+a,{locale:"ja_JP",travelMode:G_TRAVEL_MODE_DRIVING,preserveViewport:true,getSteps:true})};myself.whenMarkersDragStarted=function(){myself.map.closeInfoWindow();if(myself.isDriving){myself.stopDriving()}};myself.whenMarkersDragEnded=function(){if(myself.isDriving){myself.stopDriving()}if(myself.driveDestinationMarker){var d=myself.driveDestinationMarker;myself.showupDrivingHint(d);myself.generateRoute(myself.pano.getWalker().getLatLng(),d.getLatLng());var c=myself.pano.getWalker().getPoint();var b=d.getPoint();var a=c.distanceFrom(b).toString();Ext.get(kyori).update('<p style="font-size:1.6em;line-height:125%;">距離は約'+Math.floor(a)+"mです。<br />徒歩約"+Math.floor((Math.floor(a))/80)+"分です。</p>")}};myself.setDriving=function(c){if(c){var b=this.map.getCenter();var e=b;var f=e.lat();var d=e.lng()+0.001;var a=new GLatLng(f,d);this.driveDestinationMarker=this.createDraggableMarker(a.x,a.y,"checker",function(){myself.whenMarkersDragStarted()},function(g){myself.whenMarkersDragEnded()},function(){myself.showupDrivingHint(this)});this.map.addOverlay(this.driveDestinationMarker)}else{if(this.driveDestinationMarker){myself.map.removeOverlay(this.driveDestinationMarker)}myself.map.closeInfoWindow()}};myself.jumpInMyCar=function(){myself.route=myself.directions.getRoute(0);myself.collapseVertices(myself.directions.getPolyline());myself.map.setCenter(myself.vertices[0],16);myself.checkCoverage(0)};myself.checkCoverage=function(a){if(a>myself.route.getNumSteps()){myself.stopDriving();myself.jumpToVertex(0)}else{if(a==myself.route.getNumSteps()){ll=myself.route.getEndLatLng()}else{ll=myself.route.getStep(a).getLatLng()}myself.streetviewclient.getNearestPanorama(ll,function(b){if(b.code==500){setTimeout("myself.checkCoverage("+a+")",1000)}else{if(b.code==600){}else{myself.checkCoverage(a+1)}}})}};myself.getBearing=function(d,b){if(d.equals(b)){return null}var f=d.lat().toRad();var e=b.lat().toRad();var c=(b.lng()-d.lng()).toRad();var g=Math.sin(c)*Math.cos(e);var a=Math.cos(f)*Math.sin(e)-Math.sin(f)*Math.cos(e)*Math.cos(c);return Math.atan2(g,a).toBrng()};myself.endReached=function(){myself.StopDriving();myself.selectedStep=null};myself.getBearingFromVertex=function(c){var b=myself.vertices[c];var a=myself.vertices[c+1];if(a!=undefined){return myself.getBearing(b,a)}else{return null}};myself.incrementVertex=function(){if(!myself.vertices[myself.nextVertexId+1]){myself.endReached()}else{myself.nextVertexId++;myself.nextVertex=myself.vertices[myself.nextVertexId];myself.bearing=myself.getBearingFromVertex(myself.nextVertexId-1);myself.nextBearing=myself.getBearingFromVertex(myself.nextVertexId)}};myself.checkDistanceFromNextVertex=function(){if(myself.nextVertex){myself.close=false;var c=myself.currentLatLng.distanceFrom(myself.nextVertex);var a=myself.getBearing(myself.currentLatLng,myself.nextVertex);if(myself.getYawDelta(myself.bearing,a)>90){myself.incrementVertex();if(myself.isDriving){myself.checkDistanceFromNextVertex()}}else{if(c<10){myself.close=true}}}};myself.moveCar=function(){if(myself.panoMetaData){myself.currentLatLng=myself.panoMetaData.latlng;myself.map.panTo(myself.currentLatLng);myself.streetviewclient.getNearestPanorama(myself.panoMetaData.latlng,function(a){if(a.code==500){setTimeout("myself.moveCar()",1000)}else{if(a.code==600){myself.jumpToVertex(myself.nextVertexId)}else{myself.panoMetaData.links=a.links;myself.checkDistanceFromNextVertex();if(myself.isDriving){myself.advanceTimer=setTimeout("myself.advance()",myself.advanceDelay*1000)}}}})}};myself.jumpToVertex=function(a){myself.currentLatLng=myself.vertices[a];myself.nextVertex=myself.vertices[a+1];myself.nextVertexId=a+1;myself.bearing=myself.getBearingFromVertex(a);myself.nextBearing=myself.getBearingFromVertex(a+1);myself.map.panTo(myself.currentLatLng,16);myself.checkDistanceFromNextVertex();myself.pano.panoView.setLocationAndPOV(myself.currentLatLng,{yaw:myself.bearing,pitch:0});myself.streetviewclient.getNearestPanorama(myself.currentLatLng,function(b){if(b.code==500){setTimeout("myself.jumpToVertex("+a+")",1000)}else{if(b.code==600){myself.jumpToVertex(myself.nextVertexId)}else{myself.panoMetaData=b.location;myself.panoMetaData.pov.yaw=myself.bearing;myself.moveCar()}}})};myself.collapseVertices=function(c){myself.vertices=new Array();myself.vertexMap=new Array(c.getVertexCount());myself.vertices.push(c.getVertex(0));myself.vertexMap[0]=0;for(var a=1;a<c.getVertexCount();a++){if(!c.getVertex(a).equals(myself.vertices[myself.vertices.length-1])){myself.vertices.push(c.getVertex(a))}myself.vertexMap[a]=myself.vertices.length-1}myself.stepToVertex=new Array(myself.route.getNumSteps());myself.stepMap=new Array(myself.vertices.length);for(var a=0;a<myself.route.getNumSteps();a++){myself.stepToVertex[a]=myself.vertexMap[myself.route.getStep(a).getPolylineIndex()]}var b=0;for(var a=0;a<myself.vertices.length;a++){if(myself.stepToVertex[b+1]==a){b++}myself.stepMap[a]=b}};myself.advance=function(){myself.isDriving=true;var a=myself.selectLink(myself.bearing);if(myself.close&&myself.nextBearing){var b=myself.selectLink(myself.nextBearing);if(b.delta<15){a=b;myself.incrementVertex()}}if(a.delta>40){myself.jumpToVertex(myself.nextVertexId)}else{if(a.idx){var c=myself.getYawDelta(myself.panoMetaData.pov.yaw,myself.panoMetaData.links[a.idx].yaw)}if(a.idx){myself.pano.panoView.panTo({yaw:myself.panoMetaData.links[a.idx].yaw,pitch:0})}setTimeout(function(){if(myself.panoMetaData&&myself.panoMetaData.links&&a.idx<myself.panoMetaData.links.length){myself.pano.panoView.followLink(myself.panoMetaData.links[a.idx].yaw)}},c*10)}};myself.startDriving=function(){var a=Ext.get("startStopDriving");if(!myself.isDriving){myself.advance();a.update('<img src="/Hades/pages/images/singlemap/icons/walkstop.png" />')}};myself.stopDriving=function(){myself.isDriving=false};myself.toggleDriving=function(){myself.setDriving(this.driveDestinationMarker==null)};myself.showupDrivingHint=function(a){if(!this.commented3){topmsg("","ウォークビューボタンをクリックしてみましょう！");this.commented3=true}};myself.startStopDriving=function(){var b=Ext.get("startStopDriving");if(!myself.isDriving){myself.advance();b.update('<img src="/Hades/pages/images/singlemap/icons/walkstop.png" />')}else{myself.stopDriving();var a=new Ext.util.DelayedTask();a.delay(1000,function(){myself.stopDriving()},this);b.update('<img src="/Hades/pages/images/singlemap/icons/walkview.png" />')}};myself.startStop=function(b,e){var d=Ext.get("startStopDriving");if(!myself.isDriving&e==true){myself.advance();d.update('<img src="/Hades/pages/images/singlemap/icons/walkstop.png" />')}else{if(myself.isDriving&e==false){myself.stopDriving();var c=new Ext.util.DelayedTask();c.delay(1000,function(){myself.stopDriving()},this);d.update('<img src="/Hades/pages/images/singlemap/icons/walkview.png" />')}}};myself.selectLink=function(c){var b=new Object();if(myself.panoMetaData&&myself.panoMetaData.links){for(var a=0;a<myself.panoMetaData.links.length;a++){var e=myself.getYawDelta(c,myself.panoMetaData.links[a].yaw);if(b.delta==null||e<b.delta){b.idx=a;b.delta=e}}}return b};myself.getYawDelta=function(e,c){var f=Math.abs(myself.sanitiseYaw(e)-myself.sanitiseYaw(c));if(f>180){f=360-f}return f};myself.sanitiseYaw=function(a){if(a>360||a<360){a=a%360}return a};myself.getArrowIcon=function(a){var c=new GIcon();c.image=marker.getArrowUrl(a);c.iconSize=new GSize(24,24);c.iconAnchor=new GPoint(12,12);return c};myself.getArrowUrl=function(a){var b=(3*Math.round(a/3))%120;return"http://maps.google.com/mapfiles/dir_"+b+".png"};function Gdistance(h,g){var d=h.x*Math.PI/180;var c=h.y*Math.PI/180;var b=g.x*Math.PI/180;var a=g.y*Math.PI/180;var e=Math.sin(c)*Math.sin(a)+Math.cos(c)*Math.cos(a)*Math.cos(b-d);var f=6378140*(Math.atan(-e/Math.sqrt(-e*e+1))+Math.PI/2);return Math.round(f)}Number.prototype.toRad=function(){return this*Math.PI/180};Number.prototype.toDeg=function(){return this*180/Math.PI};Number.prototype.toBrng=function(){return(this.toDeg()+360)%360};
