RouteMapAPI={};RouteMapAPI.CreateRouteStop=function(){return JSMapAPI.CreateJSPointLocation()};RouteMapAPI.CreateRouteMapSpec=function(){var A=JSMapAPI.CreateJSMapSpec();A.StartRouteStop=null;A.EndRouteStop=null;A.MinimizeTime=true;A.GetStops=function(){if(this.StartRouteStop&&this.EndRouteStop){return new Array(this.StartRouteStop.GetLatLong(),this.EndRouteStop.GetLatLong())}else{throw new Error("Invalid call to RouteMapAPI.RouteMapSpec.GetStops():Start and/or End Stop not defined.")}};A.DisposeStops=function(){this.StartRouteStop.Dispose();this.EndRouteStop.Dispose()};return A};RouteMapAPI.CreateRouteMap=function(){var A=JSMapAPI.CreateJSMap();A._initialize=function(){try{var C=this;JSMapAPI.DhtmlUtils.SetHidden(this.Spec.MapId);var B=new VERouteOptions();B.UseMWS=true;B.DrawRoute=true;B.SetBestMapView=true;B.DistanceUnit=VERouteDistanceUnit.Mile;B.RouteCallback=function(J){C.Impl.DeleteAllShapes();var E=J.RouteLegs;var I=0;for(var H=0;H<E.length;H++){leg=E[H];for(var G=0;G<leg.Itinerary.Items.length;G++){I++;var F=new VEShape(VEShapeType.Pushpin,leg.Itinerary.Items[G].LatLong);if(I==1){F.SetTitle("Start");F.SetDescription(C.Spec.StartRouteStop.Desc+"<br/><br/>"+leg.Itinerary.Items[G].Text);F.SetCustomIcon("<div class='pinDepart'><div class='text'>"+(I)+"</div></div>")}else{if(I==leg.Itinerary.Items.length){F.SetTitle("End");F.SetDescription("Arrive at "+C.Spec.EndRouteStop.Desc);F.SetCustomIcon("<div class='pinArrive'><div class='text'>"+(I)+"</div></div>")}else{F.SetTitle("Step "+I);F.SetDescription(leg.Itinerary.Items[G].Text);F.SetCustomIcon("<div class='pinTurn'><div class='text'>"+(I)+"</div></div>")}}C.Impl.AddShape(F)}}A._adjust_map_view();JSMapAPI.DhtmlUtils.SetVisible(C.Spec.MapId)};if(this.Spec.MinimizeTime){B.RouteOptimize=VERouteOptimize.MinimizeTime}else{B.RouteOptimize=VERouteOptimize.MinimizeDistance}this.Impl.GetDirections(this.Spec.GetStops(),B)}catch(D){throw new Error("RouteMapAPI.RouteMap._intialize() Error:"+D.message)}};A.Load=function(){A._initialize_impl();A._initialize()};A.LoadInPrintMode=function(){A._initialize_printable_impl();A._initialize()};A.UnLoad=function(){this.Spec.DisposeStops();this.DisposeImpl()};return A};