var MapScriptManager={isScriptLoaded:false,scriptUrl:"http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2",callback:null,tryCount:0,infoBoxWidth:320,getScript:function(callback,mapObj){$.getScript(MapScriptManager.scriptUrl,function(){MapScriptManager.isScriptLoaded=true;if(callback&&mapObj){MapScriptManager.callback=callback.bind(mapObj);window.setTimeout("MapScriptManager.invokeCallBack()",500)}$(document.body).append("<style type='text/css'>.ero .ero-body { width:"+MapScriptManager.infoBoxWidth+"px; }</style>")})},invokeCallBack:function(){if(MapScriptManager.tryCount>5||MapScriptManager.callback==null){alert("Virtual Earth Map is temporarily unavailable.");return }MapScriptManager.tryCount++;if(L_invaliddirections_text){MapScriptManager.callback()}else{window.setTimeout("MapScriptManager.invokeCallBack()",500)}}};var MapResizer={resize:function(mapObj,divId){var mapW=0,mapH=0;var mapDiv=document.getElementById(divId);var mapDivOffset=document.cumulativeOffset(mapDiv);var dimensions=document.viewport.getDimensions();mapW=dimensions.width;if(mapW<500){mapW=500}mapH=dimensions.height-mapDivOffset.top;if(mapH<400){mapH=400}mapDiv.style.width=mapW+"px";mapDiv.style.height=mapH+"px";mapObj.map.Resize(mapW,mapH);return }};function NycVEMap(mc,lat,lon,zm,ppt,ppd,rhId,dbSize){this.map=null;this.mapContainer=mc;this.pinID=1;this.latitude=lat;this.longitude=lon;this.zoom=zm;this.pPTitle=ppt;this.pPDesc=ppd;this.routeHolderId=rhId;this.locsInMap=new Array();this.hasMapInit=false;this.shapesInMap=new Array();this.dashboardSize=dbSize;this.setMapContainer=function(mapContainer){this.mapContainer=mapContainer};this.setLatitude=function(latitude){this.latitude=latitude};this.setLongitude=function(longitude){this.longitude=longitude};this.setZoom=function(zoom){this.zoom=zoom};this.setPPTitle=function(pPTitle){this.pPTitle=pPTitle};this.setPPDesc=function(pPDesc){this.pPDesc=pPDesc};this.setRouteHolderId=function(rHId){this.routeHolderId=rHId};this.setDashboardSize=function(dbSize){this.dashboardSize=dbSize};this.getBrowserScrollBottom=function(){var scrollTop=document.body.scrollTop;if(scrollTop==0){if(window.pageYOffset){scrollTop=window.pageYOffset}else{scrollTop=(document.body.parentElement)?document.body.parentElement.scrollTop:0}}var winH=window.innerHeight;if(winH==null||winH=="undefined"){winH=document.body.clientHeight}var scrollBottom=winH+scrollTop;return scrollBottom};this.getMapScrollTop=function(){var me=this;return document.getElementById(me.mapContainer).offsetTop};this.onscrollGetMap=function(callback){var me=this;if(me.hasMapInit){return }var scrollBottom=me.getBrowserScrollBottom();var mapScrollTop=me.getMapScrollTop();if(mapScrollTop<=scrollBottom){me.getMap(callback)}};this.getMap=function(callback){var me=this;if(MapScriptManager.isScriptLoaded){me._getMap(callback)}else{MapScriptManager.getScript(function(){me._getMap(callback)},me)}};this._getMap=function(callback){var me=this;document.getElementById(me.mapContainer).style.textAlign="left";me.map=new VEMap(me.mapContainer);if(me.dashboardSize==null){me.dashboardSize=VEDashboardSize.Normal}me.map.SetDashboardSize(me.dashboardSize);if(me.latitude==null||me.longitude==null||me.zoom==null){me.map.LoadMap(null,null,VEMapStyle.Road,false,VEMapMode.Mode2D,true);if(me.zoom!=null){me.map.SetZoomLevel(me.zoom)}}else{me.map.LoadMap(new VELatLong(me.latitude,me.longitude),me.zoom,VEMapStyle.Road,false,VEMapMode.Mode2D,true);if(me.pPTitle!=null&&me.pPDesc!=null){me.addPin(me.latitude,me.longitude,me.pPTitle,me.pPDesc,"","","","",me.getCustomIcon("veIconStar"))}}window.onunload=function(){me.map.Dispose()};me.hasMapInit=true;if(callback){callback()}};this.setShowDetail=function(isShown){VEPushpin.ShowDetailOnMouseOver=isShown};this.showControl=function(){this.map.ShowDashboard()};this.hideControl=function(){this.map.HideDashboard()};this.getNextPinID=function(){return this.pinID};this.addPin=function(lat,lng,title,desc,iconPath,iconStyle,titleStyle,detailStyle,customIcon){var latlong=new VELatLong(lat,lng);var shape=new VEShape(VEShapeType.Pushpin,latlong);shape.SetTitle(title);shape.SetDescription(desc+"<!--[if lte IE 6.5]><iframe class='cal-select-free'></iframe><![endif]-->");if(iconPath){var icon="";iconStyle+="";if(iconStyle.match(/pushpin/i)){var iconText=iconStyle.toLowerCase().replace(/pushpin/g,"");if(iconText.match(/solo/i)){icon=this.getCustomIcon("veIconStar")}else{icon=this.getCustomIcon("veIconHotel",iconText,"vepp_"+this.pinID)}shape.SetCustomIcon(icon)}else{var img='<img id="vepp_'+this.pinID+'" src="'+iconPath+'"'+(iconStyle!=null?' class="'+iconStyle+'"':"")+" />";shape.SetCustomIcon(img)}}else{if(customIcon){shape.SetCustomIcon(customIcon)}}this.map.AddShape(shape);this.shapesInMap[this.pinID-1]=shape;this.pinID++;var loc=new VELatLong(lat,lng);this.locsInMap.push(loc)};this.getCustomIcon=function(className,text,iconId){var customIcon="<div "+(iconId?"id='"+iconId+"'":"")+" class='"+className+"' onmouseover='mapIconRollover(this)' onmouseout='mapIconRollover(this)'>"+(text?"<span>"+text+"</span>":"")+"</div>";return customIcon};this.deletePin=function(pId){var shape=this.shapesInMap[pId-1];if(shape!=null){this.map.DeleteShape(shape);this.shapesInMap[pId-1]=null}};this.deleteAllPins=function(){this.map.DeleteAllShapes();this.locsInMap=new Array();this.shapesInMap=new Array();this.pinID=1};this.getRoute=function(start,end,isInMiles,isQuickest,isDriving){var me=this;var routeOptions=new VERouteOptions();routeOptions.DistanceUnit=isInMiles?VERouteDistanceUnit.Mile:VERouteDistanceUnit.Mile.Kilometer;routeOptions.RouteOptimize=isQuickest?VERouteOptimize.MinimizeTime:VERouteOptimize.MinimizeDistance;routeOptions.RouteCallback=function(route){me.printRoute(start,end,routeOptions.DistanceUnit,route)};routeOptions.RouteMode=isDriving?VERouteMode.Driving:VERouteMode.Walking;this.deleteAllPins();me.map.GetDirections([start,end],routeOptions)};this.printRoute=function(start,end,distanceUnit,route){var altColors=new Array("#ffffff","#eeeeee");var routeHolder=document.getElementById(this.routeHolderId);var routeHtml="";if(routeHolder==null||route==null||route.RouteLegs[0]==null){return }routeHtml="<div>";routeHtml+="<b>Found starting address:</b> <i>"+start+"</i></div>";routeHtml+="<div>";routeHtml+="<b>Found destination address:</b> <i>"+end+"</i></div>";routeHtml+="<div><br />";routeHtml+="<b>Total Distance:</b> <i>"+route.Distance.toFixed(2)+" "+(distanceUnit==VERouteDistanceUnit.Mile?"miles":"km")+"</i></div>";routeHtml+="<div>";routeHtml+="<b>Total Time:</b> <i>"+(route.Time<3600?Math.ceil(route.Time/60)+" minutes":parseInt(route.Time/3600)+" hours and "+Math.ceil((route.Time%3600)/60)+" minutes")+"</i></div><br />";routeHtml+="<table cellpadding='4' cellspacing='0' style='width:900px; margin:0 18px 30px 18px'>";routeHtml+="<tr style='color:white;'>";routeHtml+="  <td align='center' style='background-color: #4a4a4a'><b>#</b></td>";routeHtml+="  <td style='background-color: #4a4a4a'><b>Direction</b></td>";routeHtml+="  <td style='background-color: #4a4a4a'><b>"+(distanceUnit==VERouteDistanceUnit.Mile?"miles":"km")+"</b></td>";routeHtml+="  <td style='background-color: #4a4a4a'>&nbsp;</td>";routeHtml+="</tr>";var len=route.RouteLegs[0].Itinerary.Items.length;for(var i=0;i<len;i++){var turn=route.RouteLegs[0].Itinerary.Items[i];routeHtml+="<tr valign='middle'>";routeHtml+="  <td valign='top' align='center' style='background-color: "+altColors[i%2]+"'><img src='http://dev.virtualearth.net/mapcontrol/v6/i/bin/1.0.20070926140324.39/pins/"+(i>0&&i<len-1?"redcircle"+i:(i==0?"mapicon_start":"mapicon_end"))+".gif' /></td>";routeHtml+="  <td valign='top' style='background-color: "+altColors[i%2]+"'>"+turn.Text+"</td>";routeHtml+="  <td valign='top' style='background-color: "+altColors[i%2]+"'>"+(turn.Distance?turn.Distance.toFixed(2):"")+"</td>";routeHtml+="  <td valign='top' style='background-color: "+altColors[i%2]+"'>&nbsp;</td>";routeHtml+="</tr>"}routeHtml+="</table>";routeHolder.innerHTML=routeHtml;routeHolder.style.display=""};this.setZoomLevel=function(zm){this.map.SetZoomLevel(zm)};this.setMapView=function(){this.map.SetMapView(this.locsInMap)};this.setMapCenter=function(pid,zm){if(pid==null&&zm==null){var totalLat=0;var totalLong=0;var numOfLocs=this.locsInMap.length;for(i=0;i<numOfLocs;i++){totalLat+=parseFloat(this.locsInMap[i].Latitude);totalLong+=parseFloat(this.locsInMap[i].Longitude)}this.map.SetCenter(new VELatLong(totalLat/numOfLocs,totalLong/numOfLocs));return }if(zm!=null){this.map.SetCenterAndZoom(this.locsInMap[pid-1],zm)}else{this.map.SetCenter(this.locsInMap[pid-1])}};this.getUpperLeft=function(){var gmv=this.map.GetMapView();return gmv.TopLeftLatLong};this.getLowerRight=function(){var gmv=this.map.GetMapView();return gmv.BottomRightLatLong};this.showPushpinHover=function(id){var ppImg=document.getElementById("vepp_"+id.toString());var offset=new VEPixel(30,5);if(ppImg&&ppImg.className){ppImg.className=ppImg.className+"Select"}this.map.HideInfoBox();this.map.ShowInfoBox(this.shapesInMap[id-1],this.locsInMap[id-1],offset)};this.hidePushpinHover=function(id){var ppImg=document.getElementById("vepp_"+id.toString());if(ppImg&&ppImg.className){ppImg.className=ppImg.className.replace(/Select/g,"")}this.map.HideInfoBox(this.shapesInMap[id-1])};this.attachEvent=function(eventName,callBack){this.map.AttachEvent(eventName,callBack)};this.detachEvent=function(eventName,callBack){this.map.AttachEvent(eventName,callBack)};this.moveMap=function(newLoc,callBack){var location=newLoc;if(location.match("new york","i")==null&&location.match("ny","i")==null&&location.match("nj","i")==null){location+=", new york, NY"}location+=", USA";this.map.Find(null,location,null,null,null,null,null,null,null,null,callBack);return false};this.moveMapGeocodes=function(lat,lon,zoom){if(zoom==null){this.map.SetCenter(new VELatLong(lat,lon))}else{this.map.SetCenterAndZoom(new VELatLong(lat,lon),zoom)}};this.getCenterLat=function(){return this.map.GetCenter().Latitude};this.getCenterLon=function(){return this.map.GetCenter().Longitude};this.getZoomLevel=function(){return this.map.GetZoomLevel()};this.getMapStyle=function(){return this.map.GetMapStyle()};this.setMapStyle=function(s){var style;switch(s.toLowerCase()){case"a":style=VEMapStyle.Aerial;break;case"h":style=VEMapStyle.Hybrid;break;case"o":style=VEMapStyle.Birdseye;break;default:style=VEMapStyle.Road;break}this.map.SetMapStyle(style);return false}}function minMaxDashboard(){var dash=document.getElementById("lowerContainer");if(dash==null){return }if(dash.style.display!="none"){dash.style.display="none"}else{dash.style.display=""}}function mapIconRollover(icon){var className=icon.className;if(className.match(/select/i)){className=className.replace(/Select/g,"")}else{className+="Select"}icon.className=className}var regex=new RegExp("firefox/3","i");if(navigator.userAgent.match(regex)){var mouseEvt;if(typeof document.createEvent!=="undefined"){mouseEvt=document.createEvent("MouseEvents")}if(mouseEvt&&mouseEvt.__proto__&&mouseEvt.__proto__.__defineGetter__){mouseEvt.__proto__.__defineGetter__("pageX",function(){return this.clientX+window.pageXOffset});mouseEvt.__proto__.__defineGetter__("pageY",function(){return this.clientY+window.pageYOffset})}};