var AtisContextMenu=function(n){var t={},i,u,r;return t.populateMenu=function(t,r,u,f,e){var o=16;!1&&(o=n.zoom);$.ajax("/api/route/getlocations?latitude="+f.lat()+"&longitude="+f.lng()+"&zoom="+o).done(function(n){var o="",t,s;if(i=[],n!=null)if(n.length)for(t=0,s=n.length;t<s;t++)n[t].name&&(o+='<li><a  href="#'+t+'">'+n[t].nameDirection+"<\/a><\/li>",i.push(n[t]));else o='<li><p class="error">'+resources.CouldNotRetrieveMapLocation+"<\/p><\/li>";e(o,r,u,f)}).fail(function(){e(null,r,u,f)})},t.doAction=function(n,t,u){var f=i[u];r(t,f,n)},t.setupEventHandlers=function(n){n.find("a").hover(function(){$(this).parent().addClass("hover")},function(){$(this).parent().removeClass("hover")})},t.resetMarkers=function(){$(document).trigger("resetRoutePlanner-contextMenu")},u=function(n){var r="",t,u;if(i=[],n!=null)if(n.length)for(t=0,u=n.length;t<u;t++)n[t].name&&(r+='<li><a  href="#'+t+'">'+n[t].nameDirection+"<\/a><\/li>",i.push(n[t]));else r='<li><p class="error">'+resources.CouldNotRetrieveMapLocation+"<\/p><\/li>";displayMenu(r)},r=function(n,t,i){var f=$(n.target),r=f.parent(),s=f.detach(),u=this,e,o;u.mostRecentLocation=t;r.append(u.toHereFromHereMenuItem||'<div class="btn-group" id="contextMenuToFrom"><button class="btn btn-info" data-type="fromHere">'+resources.FromHere+'<\/button><button class="btn btn-info" data-type="toHere">'+resources.ToHere+"<\/button><\/div>");u.toHereFromHereMenuItem||(e=r.children().first(),o=function(n){$(document).trigger("locationSelected-contextMenu",[n,u.mostRecentLocation]);i.fadeOut(75)},$('[data-type="fromHere"],[data-type="toHere"]',e).on("click",function(){o($(this).attr("data-type"))}).css("cursor","pointer"));r.on("mouseleave.atisContextMenu",function(){u.toHereFromHereMenuItem=r.children().first().detach();r.append(s);r.off("mouseleave.atisContextMenu");r.removeClass("hover")})},t},NewAtisContextMenu=function(n){var r={},o,t,i,u,f,e,c,a,s,h;r.populateMenu=function(n,t,i,r,u){o=r;u('<a class="list-group-item contextPointButton" data-type="fromHere" href="#1">'+resources.FromHere+'<\/a><a class="list-group-item contextPointButton" data-type="toHere" href="#2">'+resources.ToHere+"<\/a>",t,i,r)};a=function(n){if(t.hide(),$("#RoutesTab").length>0&&($("#RoutesTab").hasClass("active")||$("#RoutesTab > a").trigger("click")),u=n.pixel.x,f=n.pixel.y,i=n.latLng,resources.DisplayLocationsInContextMenu=="True")r.getNearestLocations(i,v);else{var e='<a class="list-group-item contextPointButton" data-type="fromHere">'+resources.FromHere+'<\/a><a class="list-group-item contextPointButton" data-type="toHere">'+resources.ToHere+"<\/a>";c&&(e+='<a class="list-group-item contextPointButton" data-type="waypoint">'+resources.AddWaypoint+"<\/a>");globalVars.canCreateEvents=="True"&&(e+='<a class="list-group-item addEventButton">Add Event<\/a>');l(e);$(".contextPointButton").click(function(){$(document).trigger("locationSelected-contextMenu",[$(this).attr("data-type"),{point:{latitude:i.lat(),longitude:i.lng()}}]);t.fadeOut(75)});$(".addEventButton").click(function(){window.location.href="/Admin/EditEvent?lat="+i.lat()+"&lng="+i.lng()})}};r.AddWaypointToContextMenu=function(n){c=n};r.getNearestLocations=function(t,i,r){var u=16;r&&(u=n.map.zoom);$.ajax("/api/route/getlocations?latitude="+t.lat()+"&longitude="+t.lng()+"&zoom="+u).done(function(n){i(n||[])}).fail(function(){i(null)})};var v=function(n){var i="",t,r;if(e=[],n!=null)if(n.length)for(t=0,r=n.length;t<r;t++)n[t].name&&(i+='<li><a  href="#'+t+'">'+n[t].nameDirection+"<\/a><\/li>",e.push(n[t]));else i='<li><p class="error">'+resources.CouldNotRetrieveMapLocation+"<\/p><\/li>";l(i)},l=function(n){t.empty();y(n);var i=$(map.getDiv());u>i.width()-t.width()&&(u-=t.width());f>i.height()-t.height()&&(f-=t.height());t.css({top:f,left:u}).fadeIn(300)},y=function(n){resources.DisplayLocationsInContextMenu=="True"?(t.append(n+"<hr>"),t.append('<li><a href="#resetMarkers">'+resources.StartOver+'<\/a><\/li><li><a href="#zoomIn">'+resources.ZoomIn+'<\/a><\/li><li><a href="#zoomOut">'+resources.ZoomOut+'<\/a><\/li><li><a href="#centerMap">'+resources.CenterHere+"<\/a><\/li>")):(t.append(n),t.append('<a href="#resetMarkers" class="list-group-item defaultMenu">'+resources.StartOver+'<\/a><a href="#zoomIn" class="list-group-item defaultMenu">'+resources.ZoomIn+'<\/a><a href="#zoomOut" class="list-group-item defaultMenu">'+resources.ZoomOut+'<\/a><a href="#centerMap" class="list-group-item defaultMenu">'+resources.CenterHere+"<\/a>"));setUpMenuEventHandlers()};return r.setupEventHandlers=function(){},r.setupEventHandlersold=function(){resources.DisplayLocationsInContextMenu=="True"?t.find("a").click(function(n){var r,u,f;if(n.preventDefault(),r=$(n.target).attr("href").substr(1),u=h(r),u!=null)f=e[u],s(n,f);else{t.fadeOut(75);switch(r){case"resetMarkers":$(document).trigger("resetRoutePlanner-contextMenu");break;case"zoomIn":map.setZoom(map.getZoom()+1);map.panTo(i);break;case"zoomOut":map.setZoom(map.getZoom()-1);map.panTo(i);break;case"centerMap":map.panTo(i)}}}):$(".defaultMenu").click(function(n){var r,u,f;if(n.preventDefault(),r=$(n.target).attr("href").substr(1),u=h(r),u!=null)f=e[u],s(n,f);else{t.fadeOut(75);switch(r){case"resetMarkers":$(document).trigger("resetRoutePlanner-contextMenu");break;case"zoomIn":map.setZoom(map.getZoom()+1);map.panTo(i);break;case"zoomOut":map.setZoom(map.getZoom()-1);map.panTo(i);break;case"centerMap":map.panTo(i)}}});t.find("a").hover(function(){$(this).parent().addClass("hover")},function(){$(this).parent().removeClass("hover")})},s=function(n,i){var f=$(n.target),r=f.parent(),s=f.detach(),u=this,e,o;u.mostRecentLocation=i;r.append(u.toHereFromHereMenuItem||'<div class="btn-group" id="contextMenuToFrom"><button class="btn btn-info" data-type="fromHere">'+resources.FromHere+'<\/button><button class="btn btn-info" data-type="toHere">'+resources.ToHere+"<\/button><\/div>");u.toHereFromHereMenuItem||(e=r.children().first(),o=function(n){$(document).trigger("locationSelected-contextMenu",[n,u.mostRecentLocation]);t.fadeOut(75)},$('[data-type="fromHere"],[data-type="toHere"]',e).on("click",function(){o($(this).attr("data-type"))}).css("cursor","pointer"));r.on("mouseleave.atisContextMenu",function(){u.toHereFromHereMenuItem=r.children().first().detach();r.append(s);r.off("mouseleave.atisContextMenu");r.removeClass("hover")})},h=function(n){try{var t=parseInt(n);return isNaN(t)?null:t}catch(i){return null}},r.resetMarkers=function(){$(document).trigger("resetRoutePlanner-contextMenu")},r.doAction=function(n,t,i){$(document).trigger("locationSelected-contextMenu",[i==1?"fromHere":"toHere",{point:{latitude:o.lat(),longitude:o.lng()}}]);$("#mapLocation").is(":visible")&&$(".myRouteBtn").trigger("click");n.fadeOut(75)},r},NewAtisContextMenuFromErs=function(n){var t={},i,r;return t.populateMenu=function(n,t,r,u,f){i=u;f('<a class="list-group-item contextPointButton" data-type="fromHere" href="1">'+resources.FromHere+'<\/a><a class="list-group-item contextPointButton" data-type="toHere" href="2">'+resources.ToHere+"<\/a>",t,r,u)},t.doAction=function(n,t,r){$(document).trigger("locationSelected-contextMenu",[r==1?"fromHere":"toHere",{point:{latitude:i.lat(),longitude:i.lng()}}]);contextMenu.fadeOut(75)},t.setupEventHandlers=function(){},t.getNearestLocations=function(t,i,r){var u=16;r&&(u=n.zoom);$.ajax("/api/route/getlocations?latitude="+t.lat()+"&longitude="+t.lng()+"&zoom="+u).done(function(n){i(n||[])}).fail(function(){i(null)})},r=function(n){var i="",t,r;if(nearestLocationsArray=[],n!=null)if(n.length)for(t=0,r=n.length;t<r;t++)n[t].name&&(i+='<li><a  href="#'+t+'">'+n[t].nameDirection+"<\/a><\/li>",nearestLocationsArray.push(n[t]));else i='<li><p class="error">'+resources.CouldNotRetrieveMapLocation+"<\/p><\/li>";displayMenu(i)},t.resetMarkers=function(){$(document).trigger("resetRoutePlanner-contextMenu")},t},RoutePlanner,RoutePlannerAutocomplete,RoutePlannerStatus;$(()=>{$("#setStartGeolocation")[0].addEventListener("focus",()=>{$("#startLocationText").val()!==""&&$("#swapLocationsBtn").focus()}),$("#setEndGeolocation")[0].addEventListener("focus",()=>{$("#endLocationText").val()!==""&&$("#generateRouteBtn").focus()}),$("#generateRouteBtn").keydown(function(n){n.key==="Tab"&&n.shiftKey&&setTimeout(()=>{$("#endLocationText").focus()})}),$("#swapLocationsBtn").keydown(function(n){n.key==="Tab"&&n.shiftKey&&setTimeout(()=>{$("#startLocationText").focus()})})});RoutePlanner=function(n,t,i){function vt(n){var t=$(n),i="";return t!=null&&t.length&&t!=this&&(i=";"+t.attr("data-guids")),i}function w(n,t){var i=n?$(n).parent().find(".routeLinkEvent"):$(".routeTab:visible .routeLinkEvent");i.each(function(){var n=$(this).find(".shorten")[0],i=$(this).find(".showMore");t=="windowResize"&&($(n).hasClass("expanded")&&$(n).removeClass("expanded"),i&&i.remove());n&&n.clientHeight<n.scrollHeight&&!n.nextElementSibling&&$(this).find(".text").append("<button class='showMore'>"+resources.ShowMore+"<\/button>")})}var u={},f=new RoutePlannerAutocomplete(n.map,i,window.extraPoi||[]),r=new WaypointManager(n.map,f,t,u),o=new RoutingPolyline(n,t,u),s=n.map,b=new UserGeolocation(f,r,t,n.map,n),et=new TransitDirections(n,o,document.getElementById("transitRouteResults")),k=new MapFctns,l=[],y=0,ot="",st="",wt,p,ft,bt,kt,dt;f.SetupAutoComplete("#startLocationText",r.getLocations()[0]);f.SetupAutoComplete("#endLocationText",r.getLocations()[r.getLocations().length-1]);var c=function(n){n.preventDefault();l=[];y=0;var t=$("#startLocationText").val(),i=$("#endLocationText").val();t.match(/^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$/g)&&i.match(/^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$/g)?lt([{point:{latitude:t.split(",")[0],longitude:t.split(",")[1]}},{point:{latitude:i.split(",")[0],longitude:i.split(",")[1]}}],n):r.getLocationArray().then(t=>{d(t)?h(!0):ii(t)?(e(resources.StartAndEndLocationCannotBeSame),h(!0)):(e(),lt(t,n))}).catch(()=>e(resources.PleaseCheckStartEndLocation));s.getStreetView().setVisible(!1);$(document).off("keypress",null,WaypointManager.enterkeyHandler)},d=function(n){for(let t=0;t<n.length;t++)if(!n[t])return t===0?e(resources.PleaseCheckStartLocation):t===n.length-1?e(resources.PleaseCheckEndLocation):e(resources.PleaseCheckWaypoints),!0;return!1},ri=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=Math.random()*16|0,i=n==="x"?t:t&3|8;return i.toString(16)})},a=function(){$(".waypointContainer").hide();h();l=[];y=0;typeof TransitOptions!="undefined"&&TransitOptions.reset();ot="";r.clearAll();$("#btnSaveRoute").text(resources.Save);$(document).trigger("routeCleared-routePlanner");$("#Map_Index_RoutePlannerDescription > div").contents().length>0&&$("#routePlannerDesc").show();$(document).off("keypress",null,r.enterkeyHandler)},h=function(n){o.DeleteAll();$("#routeResults").hide();$("#routeTabContent").empty();$("#routeTabs").empty();n||e();et.Reset()};$(document).on("clearRouteView-routePlanner",function(){h()});$(document).on("saveRoutePoints",function(){var n=$.map(r.getLocations(),function(n){return n.point}),t={locations:n,avoidToll:$("#avoidTollsCheckBox").is(":checked")};localStorage.setItem("routeLocations",JSON.stringify(t))});var ht=function(){$(document).trigger("routingFail-routePlanner")},gt=function(){$(document).trigger("routingSuccess-routePlanner")},v=function(n,t,i){$(".waypointContainer").hide();$("#transitRouteResults").show();et.Directions(n,t,i);$("#routeResults").trigger("adjustTransitResultsHeight");e(resources.TransitForImmediateDepartures)},g=function(n,t,i,u){var f=n,o;t&&(f=[n[0],t],o=[t,n[1]]);$.ajax("/api/route/getroutes",{type:"POST",data:{Waypoints:f,Options:i},transitHubLocation:t}).done(function(i){if(i.length>0){for(let n=0;n<i[0].waypoints.length;n++){if(n===1&&t)break;r.adjustMarker(n,i[0].waypoints[n].point.latitude,i[0].waypoints[n].point.longitude)}$(document).trigger("routeGenerated-loginModal")}at(i,t!==!1,t.name);t&&(v(o,u,!0),k.fitMapToRoute(s,n),loadBlockerApi.hideSpinner("calculateDriveTransitRoute"));gt()}).fail(function(){ht();e(resources.ErrorRetrievingYourRoute);loadBlockerApi.hideSpinner("calculateDriveTransitRoute")}).always(function(){loadBlockerApi.hideSpinner("calculateRoute")})},ct=function(n,t){n.forEach(function(n){n.listenerAdded=!1;google.maps.event.clearListeners(n,t)})},lt=function(t,i){var o,u,a,c,p;if(i.currentTarget.id=i.currentTarget.id?i.currentTarget.id:i.target.id,loadBlockerApi.showSpinner("calculateRoute"),h(),ot="",$("#routePlannerDesc").hide(),r.setDetails(),o={},u={},typeof TransitOptions!="undefined"){if(i&&i.currentTarget.id==="generateWalkOnlyRouteBtn"&&TransitOptions.UpdateTransitOptions("WALK"),i&&i.currentTarget.id==="generateBicycleOnlyRouteBtn"&&TransitOptions.UpdateTransitOptions("BICYCLE"),i&&i.currentTarget.id==="generateTransitRouteBtn"&&TransitOptions.UpdateTransitOptionsFromDropDown(),u=TransitOptions.GetTransitOptions(),u.error){loadBlockerApi.hideSpinner("calculateRoute");RoutePlannerStatus.updateStatus(u.errMsg,RoutePlannerStatus.StatusTypes.danger);return}try{u=JSON.stringify(u)}catch(w){}}$("#avoidTollsCheckBox").length>0&&(o.AvoidTolls=$("#avoidTollsCheckBox").is(":checked"));$("#avoidFerriesCheckBox").length>0&&(o.AvoidFerries=$("#avoidFerriesCheckBox").is(":checked"));i.currentTarget.id!=""?st=i.currentTarget.id:i.currentTarget.id=st;i&&i.currentTarget.id==="generateDriveTransitRouteBtn"?($(".waypointContainer").hide(),loadBlockerApi.hideSpinner("calculateRoute"),$(".routeName").toggle(!1),$("#btnSaveRoute").toggle(!1),s.setZoom(12),s.panTo(new google.maps.LatLng(t[0].point.latitude,t[0].point.longitude)),e(resources.DriveTransitHelpText),a=resources.ParkAndRideLayers.split(","),c=[],a.forEach(function(t){$(document).on("layerRefreshed-iconsAdded."+t,function(t,i){if(a.indexOf(i)>-1){$(document).off("layerRefreshed-iconsAdded."+i);var i=n.appHelper.iconManager.GetIconLayer(i),e=i.GetIcons();c=c.concat(e);e.forEach(function(n){if(!n.listenerAdded){n.listenerAdded=!0;var t=n.addListener("mouseup",function(t){r.getLocationArray().then(i=>{if(d(i))h(),ct(c,"mouseup"),loadBlockerApi.hideSpinner("calculateDriveTransitRoute");else{loadBlockerApi.showSpinner("calculateDriveTransitRoute");var r=f.GetCustomSimplePlace(n.title,null,t.latLng.lat(),t.latLng.lng(),!1);g(i,r,o,u);$("#transitRouteResults").addClass("padFix");ct(c,"mouseup")}})})}})}})}),nt(a)):i&&i.currentTarget.id==="generateTransitRouteBtn"?(u.travelMode="transit",v(t,u,!1)):i&&i.currentTarget.id==="generateWalkOnlyRouteBtn"?(u.travelMode="walking",v(t,u,!1)):i&&i.currentTarget.id==="generateBicycleOnlyRouteBtn"?(u.travelMode="bicycling",v(t,u,!1)):($("#transitRouteResults").hide(),l.length>0?(p=l[y],g(t,!1,o)):g(t,!1,o))},at=function(n,t,i){if($("#routePlannerDesc").hide(),n.length==0){ht();let n=r.getLocations();e(n.length<=2?resources.RouteNotAvailable:resources.RouteNotAvailableWithWaypoints)}else{$(".waypointContainer").show();$("#routeTabs").show();$(document).trigger("routeGenerated-routePlanner",[n]);h(!0);for(var u=0;u<n.length;u++)yt(n[u],u+1,t,i);$("#routeTabs a").click(function(n){n.preventDefault();$(this).tab("show");o.MakeActive($(this).attr("data-guids")+vt("#transitRouteTabs li.active a"))});o.MakeActive($("#routeTabs a:first").attr("data-guids")+vt("#transitRouteTabs li.active a"));$("#routeTabs a:first").tab("show");$("#routeResults").show();$("#routeResults").scrollTop(0);n[0].waypoints.length>0&&k.fitMapToRoute(s,n[0].waypoints);$("#routeResults").trigger("adjustRoutePlannerHeight");nt(n[0].enableMapLayers);s.getStreetView().setVisible(!1);w();$("#routeTabs a").on("shown.bs.tab",function(){w()})}};var ui=function(){$("#routeTabs").show();$("#routeResults").show();$("#routeResults").scrollTop(0);s.getStreetView().setVisible(!1);Modernizr.mq("(max-width: 992px)")&&$(document).trigger("BeforeDisplayRoute")},fi=function(n,t,i){yt(n,t,!1);$("#routeTabs a").click(function(n){n.preventDefault();$(this).tab("show");y=t-1;o.MakeActive($(this).attr("data-guids"))});i?($("#routeTabs a:first").tab("show"),o.MakeActive($("#routeTabs a:first").attr("data-guids")),n.waypoints.length>0&&k.fitMapToRoute(s,n.waypoints),nt(n.enableMapLayers)):o.MakeActive(o.getActivePolylines());$(document).trigger("routeGenerated-routePlanner",[l])},nt=function(t){var r,i;for(r in t)i=$("input[type='checkbox'][data-layerid ="+t[r]+"]",$("#layerSelection")),i&&i[0]&&!i[0].checked?i[0].click():n.appHelper.iconManager.RefreshLayer(t[r],!0)},yt=function(n,t,i,r){var f=n.statistics,h=resources.EnableRouteClosureDisclaimer=="True"&&n.statistics.includesClosures,c=resources.EnableRouteConditionDisclaimer=="True"&&n.statistics.includesRouteConditions,b=h?{strokeColor:"#FF0000"}:null,k=o.AddRoute(n.encodedPolyline,b,!1,i),v="",y="",a,e,s,l,u;if(n.waypoints.length>1&&(v=n.waypoints[0].nameDirection,y=n.waypoints[n.waypoints.length-1].nameDirection),a=h||c?"withDisclaimer":"",$("#routeTabs").append("<li class='routeTabHeader "+a+"' role='presentation'><a href='#"+(i?"transit":"")+"routeTab-"+t+"' data-id='"+t+"' data-guids='"+k+"' data-travelTimeInSeconds='"+f.postedTravelTimeSeconds+"'>"+resources.Route+" "+t+"  <span class='badge'>"+f.travelTimeDisplay+"<\/span><\/a><\/li>"),e="",(h||c)&&(e+='<div id="routeIncludesDisclaimerDiv'+t+'" class="alert alert-danger" role="alert">',e+=h?c?"<p>"+resources.RouteIncludesClosuresAndConditionsDisclaimer+"<\/p>":"<p>"+resources.RouteIncludesClosuresDisclaimer+"<\/p>":"<p>"+resources.RouteIncludesConditionsDisclaimer+"<\/p>",e+='<button id="acceptRouteDisclaimerBtn'+t+'" type="button" class="btn btn-info">'+resources.OK+"<\/button><\/div >",e+='<div class="hideRouteTab'+t+'" style="opacity: .10;">'),e+="<div class='panel panel-default routeContent "+a+"'><h3 class='printHeader'>"+resources.SiteHeader+" "+resources.RouteDetails+"<\/h3><div class='panel-body'><i class='far fa-car fa-2x'><\/i><span class='printToFrom'>"+resources.From+" "+v+" "+resources.To+" "+y+"<\/span><p><b>"+resources.TotalTime+" <span class='pull-right'> "+f.travelTimeDisplay+"<\/span><\/b><br />",e+="<b>"+resources.TotalTravelDistance+" <span class='pull-right'> "+f.lengthDisplay+"<\/span><\/b><\/p>",s=[],n.includesTollLink&&s.push(resources.Tolls.toLowerCase()),n.includesFerryLink&&s.push(resources.Ferries.toLowerCase()),l="",s.length==2?l=s[0]+" "+resources.And+" "+s[1]:s.length==1&&(l=s[0]),s.length>0&&(e+='<div class="route-alert"><i class="fas fa-exclamation-triangle" aria-hidden="true"><\/i> '+resources.ThisRouteIncludes+" "+l+".<\/div>"),e+="<\/div>",e+="<ul class='list-group'>",r=r?" ("+r+")":"",f.instructions)for(u=0;u<f.instructions.length;u++){let n=f.instructions[u],i=arrowDirection.getDriveImg(n.instruction);e+='<li class="list-group-item"><div class="directionArrow">'+i+"<\/div><div "+ti(n.linkConditions)+">"+n.instruction+ut(n.linkEvents,t,u)+it(n.linkCameras,t,u)+ni(n.linkConditions)+"<\/div><\/li>"}else for(u=0;u<f.links.length;u++)e+=u==f.links.length-1?"<li class='list-group-item'><b>"+f.links[u].nameDirection+r+"<\/b><br/>"+f.links[u].travelTimeDisplay+" ("+f.links[u].lengthDisplay+")"+ut(f.links[u].linkEvents,t,u)+it(f.links[u].linkCameras,t,u)+"<\/li>":"<li class='list-group-item'><b>"+resources.From+" "+f.links[u].nameDirection+" "+resources.To+" "+f.links[u+1].nameDirection+"<\/b><br/>"+f.links[u].travelTimeDisplay+" ("+f.links[u].lengthDisplay+")"+ut(f.links[u].linkEvents,t,u)+it(f.links[u].linkCameras,t,u)+"<\/li>";e+="<\/ul><\/div>";(h||c)&&(e+="<\/div>");let p;p=n.includesFerryLink||resources.OutsideONTTDistanceTravelPortions!==""?`<div class="routeNotes">
                        <p>${resources.Notes}</p>
                        <ul>
                            <li>${resources.AllTravelTimesBasedOnEstimates}</li>
                            ${resources.OutsideONTTDistanceTravelPortions!==""?"<li>"+resources.OutsideONTTDistanceTravelPortions+"<\/li>":""}
                            ${n.includesFerryLink?"<li>"+resources.FerryNote+"<\/li> ":""}   
                        </ul>
                     </div> `:`<p class="routeNote"><b>${resources.NoteColon}</b> ${resources.AllTravelTimesBasedOnEstimates}</p>`;$("#routeTabContent").append('<div id="'+(i?"transit":"")+"routeTab-"+t+'" data-id="'+t+'" class="routeTab tab-pane fade">'+e+p+"<\/div>");$("#cameraRouteToggle"+t+" , #eventRouteToggle"+t).on("click",function(){var n=$(this).data("id"),t;$("i[id='"+n+"circle'").toggleClass("fa-plus-circle fa-minus-circle");$("div[id='"+n+"div'").toggle(400);this.className=="eventRouteToggle"&&(t=$(this).parent().find(".showMore").length>0,t||w(this))});$(".Cctv-link").on("click",function(){UserCameras.zoomToCamera(this.getAttribute("data-id"),"Camera","Cameras")});$("#acceptRouteDisclaimerBtn"+t).on("click",function(){$(".hideRouteTab"+t).css({opacity:"1"});$("#routeIncludesDisclaimerDiv"+t).hide()})};String.prototype.replaceAll=function(n,t){return this.split(n).join(t)};var tt=null,it=function(n,t,i){var u,r,f,e,o;if(!n||!n.length)return"";u=n[0].id+t+i;tt||(tt='<div class="route-tooltip routeLinkCamera"><p><img src="{IconURL}" alt="{Name}">&nbsp;<a class="Cctv-link" href="#" data-id="{Id}">{Name}<\/a><\/p><\/div>');r="";for(f in n)r+=tt.replaceAll("{Name}",n[f].displayName).replaceAll("{Id}",n[f].id).replaceAll("{IconURL}",n[f].icon.url);return n.length>1&&(e='<div class="cameraRouteSection"><button id="cameraRouteToggle'+t+'" class="cameraRouteToggle" data-id="'+u+'" data-toggle="collapse" title="Toggle" aria-expanded="true" class="">'+resources.Cameras+' <span class="badge">'+n.length+'<\/span><i id="'+u+'circle" class="far fa-plus-circle"><\/i><\/button><div id="'+u+'div" class="routeCameras" style="display:none;">',o="<\/div>",r=e+r+o),r},rt=null,ut=function(n,t,i){var u,f,r,s,h,e,o;if(!n||!n.length)return"";rt||(u='<div class="route-tooltip routeLinkEvent">',u+='<button onclick="routeViewOnMap(\'{viewLink}\')" class="routeViewOnMap">'+resources.ViewOnMap+"<\/button>",u+='<h4><img src="{iconUrl}" alt="{heading}">&nbsp;{heading}<\/h4>',u+='<div class="text">',u+="{text}",u+="<\/div><\/div>",rt=u);f="";for(r in n){s="";for(h in n[r].orderedPiecesOfInfo)n[r].orderedPiecesOfInfo[h].title==resources.Description&&(e=n[r].orderedPiecesOfInfo[h].text.trim().replace(/\s\s+/g," "),e=e.replace(" .","."),o='<div class="shorten">',o+=e,o+="<\/div>",s+=rt.replaceAll("{text}",o));f+=s.replaceAll("{iconUrl}",n[r].icon.url).replaceAll("{heading}",n[r].heading).replaceAll("{viewLink}",n[r].urlFriendlyName+"-"+n[r].id)}if(n.length>1){var c=n[0].id+t+i,l='<div class="eventRouteSection"><button id="eventRouteToggle'+t+'" class="eventRouteToggle" data-id="'+c+'" data-toggle="collapse" title="Toggle" aria-expanded="true" class=""> '+resources.Events+'<span class="badge">'+n.length+'<\/span><i id="'+c+'circle" class="far fa-plus-circle"><\/i><\/button><div id="'+c+'div" class="routeEvents" style="display:none;">';f=l+f+"<\/div><\/div>"}return f},ni=function(n){var t,r,i;if(!n||!n.length)return"";for(t='<div class="route-tooltip routeLinkEvent">',t+='<h4><img class="notMarker" src="/Content/Images/ic_wta.svg" alt="'+resources.RoadConditions+'">'+resources.RoadConditions+"<\/h4>",t+='<ul class="wtaInfo">',r=n.reduce(function(n,t){var i=n.filter(function(n){return t.id==n.id});return i.length==0&&n.push(t),n},[]),i=0;i<r.length;i++)t+='<li><span class="wtaDot" style="background-color: '+r[i].colour+'" aria-hidden="true"><\/span>'+r[i].statusName+"<\/li>";return t+="<\/ul>",t+"<\/div>"},ti=function(n){var i="",r,t,u;if(n&&n.length>0){for(r=Math.round(100/n.length),t=0;t<n.length;t++)u=r*t,i+=n[t].colour+" "+u+"%, "+n[t].colour+" "+(u+r)+"%",i+=t+1!=n.length?",":", "+n[t].colour+" 100%";return'class="instructionText" style ="border-style: solid; border-width: 5px; border-right: 0; margin-left: -15px; margin-top: -10px; margin-bottom: -10px; padding-left: 30px; padding-top: 5px; padding-bottom: 5px; border-image: linear-gradient(to bottom, '+i+') 1 100%;"'}return'class="instructionText"'},e=RoutePlannerStatus.updateStatus,ii=function(n){var t=(n[0].point.latitude||"rand")==n[n.length-1].point.latitude&&(n[0].point.longitude||"rand")==n[n.length-1].point.longitude,i=(n[0].linkId||"rand")==n[n.length-1].linkId;return t||i},pt=function(n,t){var i=f.GetSimplePlace(t);i&&r.setLocation(!1,i,!0)};u.SetWaypoint=function(n,t,i){r.setWaypoint(n,Number(t)+1,!0,i)};u.getActiveRouteIndex=function(){var n=$("#routeTabs li.active a").attr("data-id");return isNaN(n)?null:n-1};u.getNameForSimplePlace=function(n,t){r.getNameForSimplePlace(n,t)};u.displayRoutes=function(n){a();n[0].waypoints.length>0&&(n[0].waypoints[n[0].waypoints.length-1].poiId?(pt(null,n[0].waypoints[n[0].waypoints.length].poiId),r.setLocation(!0,n[0].waypoints[0],!0)):r.setAllLocations(n[0].waypoints));f.SetupAutoComplete("#startLocationText",r.getLocations()[0]);f.SetupAutoComplete("#endLocationText",r.getLocations()[r.getLocations().length-1]);at(n,!1)};u.displayRoute=function(n){u.displayRoutes([n],!1)};u.displayTransitRoute=function(n){a();r.setStartEndPoint(new f.GetCustomSimplePlace(n.fromAddress,null,n.fromLat,n.fromLong,!1),new f.GetCustomSimplePlace(n.toAddress,null,n.toLat,n.toLong,!1));r.getLocationArray().then(t=>{d(t)?h():v(t,n.options,!1)});typeof TransitOptions!="undefined"&&TransitOptions.SetTransitOptions(n.options)};u.resetRoutePlanner=a;u.calculateRoute=function(n){var t={};t.currentTarget={id:n};t.target={id:n};t.preventDefault=function(){};c(t)};u.clearLoationsWithoutPoints=function(){r.clearLoationsWithoutPoints()};wt=function(){var n=$(".waypointText:last");return n.html()!=undefined&&n.val().length===0};p=function(n,t,i){var u='<div class="form-group hidden-print" data-waypointparent="'+n+'"><div class="input-group"><label class="sr-only" for="waypointText-'+n+'">'+resources.Waypoint+" "+n+'<\/label><div class="input-group-addon"><div class="waypointCircle" aria-hidden="true"><\/div><\/div><input type="text" class="form-control waypointText" id="waypointText-'+n+'" placeholder="'+resources.Waypoint+'"><div class="input-group-btn"><button class="btn btn-default" id="setWaypointGeolocation-'+n+'" type="button" data-wpId="'+n+'" title="'+resources.MyLocation+'"><i class="far fa-crosshairs" aria-hidden="true"><\/i><span class="sr-only">'+resources.MyLocation+'<\/span><\/button><button class="btn btn-default" aria-label= "'+resources.Remove+'" id="deleteWaypoint-'+n+'" type="button" data-wpId="'+n+'" title="'+resources.Remove+'"><i class="far fa-times"<\/button><\/div><\/div><\/div>';$("#waypoints").append(u);$("#waypointText-"+n).val(t);$("#deleteWaypoint-"+n).click(function(){var n=$(this).data("wpid");r.ClearWaypoint(n,null,!0)});$("#setWaypointGeolocation-"+n).click(function(){var n=$(this).data("wpid");b.AttemptToSetWaypointWithUsersGeolocation(n)});f.SetupAutoComplete("#waypointText-"+n,r.getLocations()[n],i)};u.redrawWaypoints=function(n,t){var f,i;let u=r.getLocations();if(t)f=u.length-1,r.addWaypoint(f),p(f,n,!1);else for($("#waypoints").html(""),i=1;i<u.length-1;i++)p(i,u[i].text,!0)};u.AddWaypointToPlanner=function(n,t){u.redrawWaypoints(n,t)};ft=function(){var r=$("#routeTabs").html(),n=r.length>0,u=$("#transitRouteResults").html(),t=u.length>0,i;n||t?(i=n&&t?"#routeTabContent div.active, #transitRouteResults":n?"#routeTabContent div.active":"#transitRouteResults",$(i).printThis()):e(resources.NoRouteDetailGenerated,RoutePlannerStatus.StatusTypes.danger)};bt=function(){var n=$.QueryString.placeId,t=$.QueryString.destination;n?pt(null,parseInt(n)):t&&f.GetSimplePlaceByTextSearch(t,function(n){n&&r.setLocation(!1,n,!0)})};$(document).on("UserRouteDropDownVisible",function(){$(".linkRoute").toggle(!0)});return setAllLocations=function(n){r.setStartEndPoint(n[0],n[n.length-1]);for(var t=1;t<n.length-1;++t)p(t,"",!1),r.setWaypoint(n[t],t,!0,!1)},kt=function(){var i=localStorage.getItem("routeLocations"),t,n;i&&(t=JSON.parse(i),setAllLocations(t.locations),t.avoidToll&&($("#avoidTollsCheckBox").prop("checked",!0),$("#routeOptions").click()),$(".myRouteBtn").trigger("click",{skipPtBSetup:!0}),n=localStorage.getItem("routeGenerateButton"),n==="TRANSIT"?$("#generateTransitRouteBtn").click():n==="DRIVETRANSIT"?$("#generateDriveTransitRouteBtn").click():n==="WALK"?$("#generateWalkOnlyRouteBtn").click():n==="CYCLE"?$("#generateBicycleOnlyRouteBtn").click():$("#generateRouteBtn").click(),localStorage.removeItem("routeLocations"))},dt=function(){$("#generateRouteBtn").click(c);$("#generateTransitRouteBtn").click(c);$("#generateDriveTransitRouteBtn").click(c);$("#generateWalkOnlyRouteBtn").click(c);$("#generateBicycleOnlyRouteBtn").click(c);$("#generateRouteBtn").submit(function(n){n.preventDefault()});$("#generateTransitRouteBtn").submit(function(n){n.preventDefault()});$("#generateWalkOnlyRouteBtn").submit(function(n){n.preventDefault()});$("#generateBicycleOnlyRouteBtn").submit(function(n){n.preventDefault()});$("#generateDriveTransitRouteBtn").submit(function(n){n.preventDefault()});window.location.hash.indexOf("#route-")<0?kt():localStorage.removeItem("routeLocations");$(document).on("resetRoutePlanner-contextMenu",a);$(document).on("setCarpoolDestination.carpoolTooltip",function(n,t,i,u){var s=$(".showSideBar").css("display")=="block",e,o;s&&$(".showSideBar").trigger("click");e=i/1e6;o=t/1e6;(e<-90||e>90)&&(e=e/10);(o<-180||o>180)&&(o=o/10);r.setLocation(!1,f.GetCustomSimplePlace(u,null,e,o,!1),!0);bootbox.closeMapPageDialog()});$(document).on("clearRouteButtonClicked.routeSave",urlHash.clearHash);$("#clearRouteBtn").click(function(){a();$(document).trigger("clearRouteButtonClicked");$(".clearLocateBtn").trigger("click")});$(document).on("clearUserRouteTrigger",function(){$("#clearRouteBtn").trigger("click")});if($("#swapLocationsBtn").click(function(n){var t=$("#startLocationText").val();$("#startLocationText").val($("#endLocationText").val());$("#endLocationText").val(t);r.swapStartEnd();r.setDetails();resources.AutoGenerateDriveRoute==="True"&&r.getLocationArray().then(t=>{t!=null&&c(n)})}),bt(),$(".printRoute").click(ft),$(".printRoute").bind("keydown",function(n){n.keyCode==13&&ft()}),$("#routeNotificationAlert").length>0)$(".createRouteAlert .close").on("click",function(){$(".createRouteAlert").hide()});$("#setStartGeolocation").click(function(){b.AttemptToSetLocationWithUsersGeolocation(!0,!0)});$("#setEndGeolocation").click(function(){b.AttemptToSetLocationWithUsersGeolocation(!1,!0)});$("#addWaypointBtn").click(function(){var n=wt();n||u.AddWaypointToPlanner(null,!0)});$(document).on("checkEventOnRoutePlanner",w)},$(document).ready(dt),u};$(document).on("appInitComplete",function(n,t,i){var r=resources.DisplayLocationsInContextMenu=="true"?new AtisContextMenu(t.map,i):new NewAtisContextMenu(t,i);var u=new ContextMenu(t.map,r),f=new RoutePlanner(t,u,i),e=new UserRoutePlanner(f);$(document).trigger("hashChanged-urlHash")});RoutePlannerAutocomplete=function(n,t,i){var r={},f,u,p,e,o,s;i&&$(i).each(function(n,t){t.isGoogle=!1});var h=new google.maps.LatLng(t.RoutingModel.MapBottomLeftBounds.Latitude,t.RoutingModel.MapBottomLeftBounds.Longitude),c=new google.maps.LatLng(t.RoutingModel.MapTopRightBounds.Latitude,t.RoutingModel.MapTopRightBounds.Longitude),l=new google.maps.LatLngBounds(h,c),a=new google.maps.places.AutocompleteService,v=new google.maps.places.PlacesService(n),y=function(n,t){var r=new RegExp("^"+$.ui.autocomplete.escapeRegex(t),"i"),u=$.grep(i,function(n){return r.test(n.label)});return u.concat(n)};return r.GetLocationDetails=function(n){return n.point&&n.point.name==n.text?new Promise(t=>{t(n.point)}):r.autoCompleteSource(n,n.text).then(t=>{if(t.length){var i=t[0];return n.poiId=i.poiId,n.text=i.label,$(n.selector).val(n.text),r.GetGoogleLocaition(n).then(t=>n.point=t,t)}})},r.GetGoogleLocaition=function(n){return new Promise((t,i)=>{n.poiId||i("invalid poiId"),v.getDetails({placeId:n.poiId,fields:["address_component,adr_address,alt_id,formatted_address,geometry,icon,id,name,place_id,plus_code,scope,type,url,utc_offset,vicinity"],sessionToken:n.token},(r,u)=>{if(n.token=new google.maps.places.AutocompleteSessionToken,u!==google.maps.places.PlacesServiceStatus.OK){i(u);return}r.formatted_address=n.text;t(e(r))})})},r.selectHandler=function(n,t){var i=this;i.poiId=t.item.poiId;i.isGoogle=!0;i.text=t.item.label;r.GetGoogleLocaition(i).then(n=>{i.point=n,$(document).trigger("locationSelected-autocomplete",i)})},r.autoCompleteSource=function(n,r){var r=(r||n.text||"").trim(),u;return!r||r.length<resources.AutoCompleteNumCharacters?Promise.resolve($.ui.autocomplete.filter(i,r)):((n.token==null||n.tokenCreatedTime==null||n.tokenCreatedTime<new Date(Date.now()-18e4))&&(n.token=new google.maps.places.AutocompleteSessionToken,n.tokenCreatedTime=Date.now()),u={input:r,bounds:l,componentRestrictions:{country:t.RoutingModel.AutoCompleteCountryCode.split(",")},sessionToken:n.token},a.getPlacePredictions(u).then(n=>{googleResults=f(n.predictions);return y(googleResults,r)}))},r.appendGoogleLogoToAutocompleteResults=function(){$("ul.ui-autocomplete.ui-menu").append($("<div>").css("text-align","right").html($("<img>").attr("src","/Content/images/poweredByGoogle.png")))},f=function(n){for(var i=0,t,r=[];t=n[i];i++)r.push({label:t.description||t.name,poiId:t.place_id,isGoogle:!0,googleObj:t});return r},u=function(n,t,i,r,u,f,e,o){this.name=n;this.placeId=t;this.point={latitude:i,longitude:r};this.isGoogle=u;this.linkId=null;this.streetNumber=f;this.streetName=e;this.postalCode=o},r.GetCustomSimplePlace=function(n,t,i,r,f){return new u(n,t,i,r,f)},p=function(n){return new u(n.label,n.poiId,n.latLng[0],n.latLng[1],!1)},e=function(n){for(var i,f,o=resources.PlaceOverrides.split(";"),t=0;t<o.length;t++)i=o[t].split("|"),n.formatted_address==i[0]&&(f=i[1].split(","),n.geometry.location=new google.maps.LatLng(f[0],f[1]));var s=n.formatted_address||n.name,h=n.geometry.location.lat(),c=n.geometry.location.lng(),e=r.GetAddressDetails(n.address_components);return new u(s,n.place_id,h,c,!0,e.streetNumber,e.streetName,e.postalCode)},r.GetAddressDetails=function(n){for(var i,r,u,f,t=0;t<n.length;t++)n[t].types.indexOf("route")>-1&&(i=n[t].short_name),n[t].types.indexOf("street_number")>-1&&(r=n[t].long_name),n[t].types.indexOf("postal_code")>-1&&(u=n[t].long_name),n[t].types.indexOf("administrative_area_level_1")>-1&&(f=n[t].short_name);return{streetName:i,streetNumber:r,postalCode:u,state:f}},o=function(n,t){var i=this;r.autoCompleteSource(i,n.term).then(n=>{t(n)}).catch(s)},r.SetupAutoComplete=function(n,t,i){$(n).autocomplete({minLength:resources.AutoCompleteNumCharacters,source:o.bind(t),select:r.selectHandler.bind(t),open:r.appendGoogleLogoToAutocompleteResults,delay:150}).click(function(){$(this).select()}).attr({"data-exists":i!="undefined"?i:!1});$(n).off("focusout");$(n).on("focusout",()=>{let n=t.text;t.text=$(t.selector).val();n!==t.text&&t.text&&t.text.length>=resources.AutoCompleteNumCharacters&&r.GetLocationDetails(t).then(()=>{$(document).trigger("locationSelected-autocomplete",t)})})},s=function(n){console.log(n)},r};RoutePlannerStatus=new function(){var n={};return n.StatusTypes={info:"alert-info",success:"alert-success",danger:"alert-danger"},n.updateStatus=function(t,i,r,u,f){var e=$("#statusBar"),l=$("#routePlannerDesc"),a=!1,h,o,c,v,y,s;for(h in n.StatusTypes)e.removeClass(n.StatusTypes[h]),i==n.StatusTypes[h]&&(a=!0);e.addClass(a?i:n.StatusTypes.info);$("#routeNotificationAlert").length>0?(o=$(".createRouteAlert"),c=$(".createRouteAlert .msg"),t&&t.length>1?(l.hide(),e.attr("style","display:block;"),e.html(t).show(),r&&u&&(c.html('<i class="fas fa-bell" aria-hidden="true"><\/i><a href= "/my511/routealert?routeID='+r+'">'+window.resources.CreateAlertLink),Modernizr.mq("(min-width: 993px)")?(v=$(".sideBarColContainer").width()+40,o.css("left",v+"px")):o.insertAfter("#routingInput #statusBar"),o.show())):(e.text("").hide(),c.html(""),o.hide())):t&&t.length>1?(l.hide(),e.attr("style","display:block;"),e.html(t).show(),r&&u&&(resources.ShowSimplifyRouteNotificationModal==="true"?(s=Cookies.get("_hideSimplifyRouteNotificationModal"),s||($("#subscriberRouteName").attr("data-subscriberRouteId",r).text(f),$(".routeNotificationMsg").show(),$(".doNotShowThisMessageAgain").show(),y="/my511/routealert?routeID="+r,$(".editRouteAlert").attr("href",y),$("#quickRouteNotificationModal").modal("show"))):(s=Cookies.get("_hideRouteNotificationModal"),s||($("#createAlterForRoute").attr("href","/my511/routealert?routeID="+r),$("#routeNotificationModal").modal("show"))))):e.text("").hide()},n};$(document).ready(function(){var t=!0,f=$("ul.nav-tabs > li").hasClass("active"),i,n;f||(i=window.location.hash===""||window.location.hash.indexOf("-")>=0?"#MyRoutes":window.location.hash.replace(":",""),$("#MainTabs a[href='"+i+"']").tab("show"));$("#MainTabs a").click(function(n){n.preventDefault();$(this).tab("show");$(this).attr("href")=="#MyRoutes"?window.DisplayMyCameras():$(this).attr("href")=="#Alerts"&&$(document).trigger("checkAlertsTab")});$("ul.nav-tabs > li > a").on("shown.bs.tab",function(n){var t=$(n.target).attr("href").substr(1);window.location.hash=":"+t});n=window.location.hash.replace(":","");setTimeout(function(){$(".twitter-timeline").each(function(){var n=$(this).contents().find("head");n.length&&n.append('<style type="text/css">.timeline { max-width: 100% !important; } <\/style>')})},1e3);var e=n.toLowerCase().indexOf("route")>=0,o=n.toLowerCase().indexOf("camera")>=0,s=n.toLowerCase().indexOf("transitregion")>=0,r=n.toLocaleLowerCase().indexOf("news")>=0;if(e||o||s||r||n.indexOf("-")>=0){if(t=!1,!$("#RoutesTab").hasClass("active")&&!r){$("#RoutesTab > a").trigger("click");var h=window.location.hash.replace(":",""),u=n.lastIndexOf("#"),c=n.length;n=u===0?n:n.substring(u,c);h.toLowerCase()!==n&&(window.location.hash+=n)}}else t=!0;$(document).on("contentFiltered",function(){GetAlertContent(t);t=!1});adjustHeight();OrganizeRouting()});var RoutingPolyline=function(n,t,i){var u={},r=[],f=null,o=null,e=n.map,c={strokeWeight:4,strokeOpacity:1,strokeColor:resources.RoutePolylineColour,zIndex:-99};u.AddRoute=function(t,c,a,v,y,p){var d=l(),b,k,w;(typeof t=="string"||t instanceof String)&&(t=[t]);for(b in t)k=t[b],c=h(c),a&&(c.map=e),k&&(c.path=google.maps.geometry.encoding.decodePath(k)),w={id:d,polyline:new google.maps.Polyline(c),strokeColor:c.strokeColor,isActive:!1,index:b,isTransit:v},google.maps.event.addListener(w.polyline,"click",function(){w.isActive||$('#routeTabs a[data-guids="'+w.id+'"]').click()}),y&&y.length>0&&y[b].length>0&&google.maps.event.addListener(w.polyline,"mouseover",function(t){w.isActive?n.appHelper.showInfoWindow(y[b],null,!0,t.latLng):n.appHelper.showInfoWindow('<span class="simpleToolTip"> Select route '+p+" to see details<\/span>",null,!0,t.latLng)}),!v&&resources.DraggableRoutesEnabled==="True"&&Modernizr.mq("(min-width: 992px)")&&(w.polyline.addListener("dragstart",function(n){var t=s(this),i=google.maps.geometry.encoding.decodePath(google.maps.geometry.encoding.encodePath(t.polyline.getPath())),r=new google.maps.Polyline({path:i,map:e,strokeColor:t.strokeColor,draggable:!1});t.copy=r;t.polyline.setOptions({strokeColor:"transparent"});t.isActive&&(t.isMoving=!0,o=new google.maps.Marker({position:n.latLng,icon:{path:google.maps.SymbolPath.CIRCLE,scale:3},draggable:!1,map:e}),f=t)}),w.polyline.addListener("drag",function(n){f&&o&&o.setPosition(n.latLng)}),w.polyline.addListener("dragend",function(n){var t,r;f&&(t=s(this),t.copy.setMap(null),u.isOnActivePolylines(n.latLng)||(r={point:{latitude:n.latLng.lat(),longitude:n.latLng.lng()}},i.getNameForSimplePlace(r,function(n){i.clearLoationsWithoutPoints();i.SetWaypoint(n,f.index,!1);i.AddWaypointToPlanner(n.name,!1);resources.AutoGenerateDriveRoute!=="True"&&i.calculateRoute();o.setMap(null);o=null;f=null})))})),r.push(w);return d};var s=function(n){for(var t in r)if(r[t].polyline===n)return r[t]},l=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=Math.random()*16|0,i=n==="x"?t:t&3|8;return i.toString(16)})},h=function(n){var t=JSON.parse(JSON.stringify(c));return n?(t.strokeWeight=n.strokeWeight||t.strokeWeight,t.strokeOpacity=n.strokeOpacity||t.strokeOpacity,t.strokeColor=n.strokeColor||t.strokeColor,t.zIndex=n.zIndex||t.zIndex,t):t};return u.SetOptions=function(n,t){var u=$.grep(r,function(t){return t.id==n}),i;u.length>0&&(i=u[0].polyline,t=h(t),i.getMap()&&(t.Map=e),i.setOptions(t))},u.ToggleVisibility=function(n){var i=$.grep(r,function(t){return t.id==n}),t;i.length>0&&(t=i[0].polyline,t.setMap(t.getMap()?null:e))},u.HideAll=function(){var t,i;n.appHelper.closeInfoWindow();for(t in r)i=r[t].polyline,i.setMap(null)},u.ShowAll=function(){var n,t;for(n in r)t=r[n].polyline,t.setMap(e)},u.DeleteAll=function(){u.HideAll();r=[];f=null},u.Delete=function(n){var t=$.grep(r,function(t){return t.id==n}),i;if(t.length>0){for(i in t)t[i].polyline.setMap(null);r=$.grep(r,function(t){return t.id==n},!0)}},u.MakeActive=function(n){var f,t,i;u.HideAll();f=n.split(";");for(t in r)i=r[t].polyline,f.indexOf(r[t].id)>-1?(r[t].isActive=!0,!r[t].isTransit&&resources.DraggableRoutesEnabled==="True"&&Modernizr.mq("(min-width: 992px)")&&i.setDraggable(!0),i.setOptions({strokeWeight:3.5,strokeColor:r[t].strokeColor,zIndex:2})):(r[t].isActive=!1,i.setDraggable(!1),i.setOptions({strokeWeight:3,strokeColor:"#6A6A6A",zIndex:1}));u.ShowAll()},u.getActivePolylines=function(){var n="";for(var t in r)r[t].isActive&&(n+=r[t].id+";");return n},u.isOnActivePolylines=function(n){for(var t in r)if(r[t].isActive&&google.maps.geometry.poly.isLocationOnEdge(n,r[t].polyline))return!0;return!1},u},TransitDirections=function(n,t,i){function f(n){var t=$(n),i="";return t!=null&&t.length&&t!=this&&(i=";"+t.attr("data-guids")),i}var u={},r=null,e=new MapFctns,o=function(n){var i=Math.floor(n/3600),t=Math.floor((n-i*3600)/60),r=n-i*3600-t*60;return t<1&&r>0&&(t=1),i>0?i+" "+window.resources.Hr+" "+t+" "+window.resources.Min:t+" "+window.resources.Min},s=function(u,s,h){var y,a,v,c,l;if($(i).html(s.summaryHtml),s.polyline&&s.polyline.length>0){for(j=0;j<s.polyline.length;j++)for(c=0;c<s.polyline[j].length;c++)y=s.polyline[j][c].polyline,a={strokeWeight:4,strokeOpacity:1,strokeColor:"#252525",zIndex:2},s.polyline[j][c].transit_details&&(s.polyline[j][c].line_color&&s.polyline[j][c].line_color.indexOf("#")==-1&&(s.polyline[j][c].line_color="#"+s.polyline[j][c].line_color),a.strokeColor=s.polyline[j][c].line_color||"#00BFFF"),r=t.AddRoute(y,a,j==0?!0:!1,!0,[s.polyline[j][c].infoWindowInformation],j+1),h&&!$("#transitRouteTabs").length&&$("#routeTabs a").each(function(){$(this).attr("data-guids",$(this).attr("data-guids")+";"+r)},[r]),$("#transitRouteTabs").length&&(v=$("#transitRouteTabs :nth-child("+(j+1)+") a"),v.attr("data-guids",r+";"+v.attr("data-guids"))),document.getElementsByClassName("directionStep")&&(document.getElementsByClassName("directionStep")[c].style.borderColor=a.strokeColor);h||e.fitMapToRoute(n.map,u)}for(c in s.enableMapLayers)l=$("input[type='checkbox'][data-layerid = "+s.enableMapLayers[c]+"]",$("#layerSelection")),l&&(l[0].checked=!0);for(c in s.disableMapLayers)l=$("input[type='checkbox'][data-layerid = "+s.disableMapLayers[c]+"]",$("#layerSelection")),l&&(l[0].checked=!1);$("#routeResults").show();$("#transitRouteTabs").length&&($("#transitRouteTabs a").click(function(n){n.preventDefault();$(this).tab("show");t.MakeActive($(this).attr("data-guids")+f("#routeTabs li.active a"))}),$("#transitRouteTabs a:first").tab("show"),t.MakeActive($("#transitRouteTabs a:first").attr("data-guids")+f("#routeTabs li.active a")));$("#routeResults").scrollTop(0);$("#routeResults").trigger("adjustRoutePlannerHeight");$(".startPoint").text(s.waypoints[0].nameDirection);$(".endPoint").text(s.waypoints[s.waypoints.length-1].nameDirection);h&&$("#routeTabs a").each(function(){var n=$(this).attr("data-travelTimeInSeconds"),t=$("#transitTimeInSeconds").val(),i=+n+ +t;$(this).find(".badge").text(o(i))})};return u.Reset=function(){t.Delete(r);$(i).html(null)},u.Directions=function(n,t,i){$.ajax("/map/GetTransitRoute",{type:"POST",data:{Waypoints:n,travelMode:t.travelMode?t.travelMode:t}}).done(function(r){if(r.status=="OK"){i?$(document).trigger("driveTransitRouteGenerated-routePlanner",[r]):$(document).trigger("transitRouteGenerated-routePlanner",[r]);s(n,r,i);let f={walking:"walking",bicycling:"bicycle",transit:"bus"},u=document.getElementById("transitRouteResults").getElementsByTagName("i")[0];u&&(u.className="far fa-"+f[t.travelMode]+" fa-2x",u.setAttribute("title",f[t.travelMode]))}else i?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.DriveAndTransitRouteNotAvailable)):r.status=="ZERO_RESULTS"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.RouteNotAvailable)):r.status=="NOT_FOUND"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.RouteNotAvailable)):r.status=="PATH_NOT_FOUND"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.RouteNotAvailable)):r.status=="OUTSIDE_BOUNDS"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.AreaNotCovered)):($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.ErrorRetrievingYourRoute,RoutePlannerStatus.StatusTypes.danger));let u=Array.from(document.getElementsByClassName("substeps"));if(u.forEach(n=>{arrowDirection.setTransitSubstepImg(n)}),u.length==0){let n=Array.from(document.getElementsByClassName("directionStep"));n.forEach(n=>{arrowDirection.setStepImg(n)})}}).fail(function(){$(document).trigger("clearRouteView-routePlanner");RoutePlannerStatus.updateStatus(window.resources.ErrorRetrievingYourRoute,RoutePlannerStatus.StatusTypes.danger);loadBlockerApi.hideSpinner("calculateDriveTransitRoute")}).always(function(){loadBlockerApi.hideSpinner("calculateRoute")})},u.SaveRoute=function(n){$.ajax("/map/SaveTransitRoute",{type:"POST",data:{Waypoints:n}}).done(function(){}).fail(function(){$(document).trigger("clearRouteView-routePlanner");RoutePlannerStatus.updateStatus(window.resources.ErrorRetrievingYourRoute,RoutePlannerStatus.StatusTypes.danger);loadBlockerApi.hideSpinner("calculateDriveTransitRoute")}).always(function(){loadBlockerApi.hideSpinner("calculateRoute")})},u},UserRoutePlanner=function(n){function s(n){if($("#btnSaveRoute").length>0){o=n;let t=$("#btnSaveRoute")[0];t.disabled=n;t.classList.toggle("disabled",n)}}var i=null,r=$("#btnSaveRoute"),u=$(".routeName"),f=$("#routeName",u),e=null,t=null,w=function(){k();typeof TransitOptions!="undefined"&&TransitOptions.init();r.length&&(r.toggle(!1),u.toggle(!1),f.attr("placeholder",resources.EnterRouteNameToSave),b(),l())},c=null,b=function(){var e=$(".atisUserDd"),u=$(".btn .atisUserDdBtnText",e);c=u.text();e.on("click","li a",function(e){var c=$(this),s=c.attr("data-id"),l,a,o;t=window.atisUserRoutes[s];t.isTransit?(l=t.routeName,a=t,h(t.shareId),n.displayTransitRoute(t),t=a,f.val(l),u.text(c.text()).attr("data-id",s),r.text(resources.Update)):(loadBlockerApi.showSpinner("loadSavedRoute"),o=p(t),g(o,function(e){e?(t.statistics=e,o.statistics=e,n.displayRoute(o),t=window.atisUserRoutes[s],h(o.shareId),setTimeout(function(){u.text(c.text()).attr("data-id",s);i=[o];f.val(o.routeName)},0)):(n.resetRoutePlanner(),RoutePlannerStatus.updateStatus(resources.SorryUnableToFetchRoute));n.redrawWaypoints(!1);loadBlockerApi.hideSpinner("loadSavedRoute");r.text(resources.Update)}));e.preventDefault()})},l=function(){var n,t;if(window.atisUserRoutes){n=$(".atisUserDdVals");n.empty();for(t in window.atisUserRoutes)n.append($('<li role="presentation">').append($('<a role="menuitem" tabindex="-1" href="">').attr("data-id",t).text(window.atisUserRoutes[t].routeName)))}$(document).trigger("dropdownPopulated-userRoutePlanner")},a=function(){var n=$(".atisUserDd"),t=$(".btn .atisUserDdBtnText",n);t.text(c).removeAttr("data-id")},o=!1,k=function(){$(document).on("routeCleared-routePlanner.routeSave routingFail-routePlanner.routeSave driveTransitRouteGenerated-routePlanner.routeSave",function(){i=null;t=null;u.toggle(!1);r.toggle(!1);f.val(null);a()});$(document).on("clearRouteButtonClicked",function(){e=null;s(!1)});$(document).on("transitRouteGenerated-routePlanner.routeSave",function(n,o){resources.SaveTransit==="true"?(i=o,t&&(i.shareId=t.shareId),e="transit",u.toggle(!0),f.focus(),r.toggle(!0)):(u.toggle(!1),r.toggle(!1))});$(document).on("routeGenerated-routePlanner.routeSave",function(n,o){var s=i!=null&&i.length&&i[0].segmentId?i[0].segmentId:null;e="drive";i=o;t&&(i.shareId=t.shareId);$(i).each(function(n,t){t.statistics.date=new Date});s&&$(i).each(function(n,t){t.segmentId=s});u.toggle(!0);f.focus();i[0].saveable===!1?(r.toggle(!1),u.toggle(!1)):(r.toggle(!0),u.toggle(!0),f.focus())});$(document).on("hashChanged-urlHash",function(){var n=h(),t=null;n&&(t=nt(n))?($('.atisUserDd li a[data-id="'+t+'"]').click(),r.text(resources.Update)):n&&(d(n),r.text(resources.Save))});$(document).on("dropdownPopulated-userRoutePlanner",function(){var n=window.atisUserRoutes!=null&&window.atisUserRoutes.length>0;$(".atisUserDd").toggle(n);n&&$(document).trigger("UserRouteDropDownVisible")});r.on("click.routeSave",function(){var u=f.val()||"",o,s,t;if(u=u.trim(),RoutePlannerStatus.updateStatus(),!u)return RoutePlannerStatus.updateStatus(resources.PleaseEnterRouteNameToSave),!1;if(loadBlockerApi.showSpinner("saveRoute"),e=="transit"){if(o="",typeof TransitOptions!="undefined"){s=TransitOptions.GetTransitOptions();try{o=JSON.stringify(s)}catch(l){o=s}}t=it(u,o);$.ajax("/My511/SaveTransitRoute",{data:t,type:"POST"}).done(function(n){t.shareId=n.shareId;t.isTransit=!0;$(document).one("transitRouteGenerated-routePlanner.routeSave-msg",function(){RoutePlannerStatus.updateStatus(resources.YourRouteHasBeenSaved,RoutePlannerStatus.StatusTypes.success)});v(t);r.text(resources.Update)}).fail(function(){RoutePlannerStatus.updateStatus(resources.SorryErrorSavingRoute)}).always(function(){loadBlockerApi.hideSpinner("saveRoute")})}else{var c=r.text()===resources.Save,h=n.getActiveRouteIndex(),t=rt(u,h);$.ajax("/Api/Route/SaveUserRoute",{data:t,type:"POST"}).done(function(n){t.segmentId=n.segmentId;t.allLinks=n.allLinks;t.statistics=i[h].statistics;t.subscriberRouteId=n.subscriberRouteId;t.shareId=n.shareId;$(document).one("routeGenerated-routePlanner.routeSave-msg",function(){RoutePlannerStatus.updateStatus(resources.YourRouteHasBeenSaved,RoutePlannerStatus.StatusTypes.success,t.subscriberRouteId,c,t.routeName)});v(t);r.text(resources.Update)}).fail(function(n){var i,t;if(n.status==400){for(i="",t=0;t<n.responseJSON.length;t++)i+=n.responseJSON[t].errorMessage+"<br>";RoutePlannerStatus.updateStatus(i)}else RoutePlannerStatus.updateStatus(resources.SorryErrorSavingRoute)}).always(function(){loadBlockerApi.hideSpinner("saveRoute")})}return!1});if($(".linkRoute").click(y),$(".linkRoute").bind("keydown",function(n){n.keyCode==13&&y()}),document.querySelector("#routeName")){let n=document.querySelector("#statusBar");document.querySelector("#routeName").addEventListener("input",t=>{t.target.value.length>25&&!o?($("#routeNameTooLong").show(),s(!0)):t.target.value.length<=25&&o&&($("#routeNameTooLong").hide(),s(!1)),n.style.display!=="none"&&(n.style.display="none")});document.querySelector(".atisUserDdVals").addEventListener("click",()=>{$("#routeNameTooLong").hide()})}},d=function(t){t!=null&&t.length>0&&(t.indexOf("-")>=0?(loadBlockerApi.showSpinner("loadSavedRoute"),$.ajax("/Api/Route/GetRouteByShareID?shareId="+t,{type:"POST"}).done(function(t){t?t.isTransit==!0?n.displayTransitRoute(t):(n.displayRoute(p(t)),n.redrawWaypoints(!1)):(n.resetRoutePlanner(),RoutePlannerStatus.updateStatus(resources.SorryUnableToFetchRoute))}).fail(function(){RoutePlannerStatus.updateStatus(resources.SorryUnableToFetchRoute)}),loadBlockerApi.hideSpinner("loadSavedRoute")):window.location.href="my511/login?ReturnUrl=/map%23route-"+t)},v=function(n){var i=-1,t;window.atisUserRoutes=window.atisUserRoutes||[];for(t in window.atisUserRoutes)window.atisUserRoutes[t].shareId==n.shareId?(window.atisUserRoutes[t]=n,i=t):window.atisUserRoutes[t].routeName==n.routeName&&(window.atisUserRoutes[t]=n,i=t);i==-1&&(window.atisUserRoutes.push(n),i=window.atisUserRoutes.length-1);a();l();$('.atisUserDd li a[data-id="'+i+'"]').click()},h=function(n){var t=urlHash.hash(),i;return!n&&!(t&&t.toLowerCase().lastIndexOf("route-",0)==0)?null:(i="route-{0}",t=i.replace("{0}",n||""),n?urlHash.hash(t):(n=urlHash.hash(),n=n.substring(n.indexOf("-")+1)),n)},y=function(){t&&t.shareId?bootbox.dialog({title:resources.LinkToYourRoute,message:'<input class="form-control" value="'+window.location.protocol+"//"+window.location.host+"/map#route-"+t.shareId+'" ><br/>'+resources.CopyFromBrowserText}):RoutePlannerStatus.updateStatus(resources.SelectRouteFromDropdownText,RoutePlannerStatus.StatusTypes.danger)},g=function(n,t){if(n.statistics&&n.statistics.date&&new Date-n.statistics.date<6e4){t(n.statistics);return}$.ajax("/Api/Route/GetUserRouteStatistics?segmentId="+n.segmentId,{type:"POST"}).done(function(n){n.date=new Date;t(n)}).fail(function(){t(null)})},nt=function(n){var i=null;for(var t in window.atisUserRoutes){if(window.atisUserRoutes[t].shareId==n){i=t;break}if(window.atisUserRoutes[t].segmentId==n){i=t;break}}return i},p=function(n){var t={};return t.segmentId=n.segmentId,t.routeName=n.routeName,t.encodedPolyline=n.encodedPolyline,t.includesTollLink=n.includesTollLink,t.includesFerryLink=n.includesFerryLink,t.allLinks=n.allLinks,t.statistics=n.statistics,t.shareId=n.shareId,t.cacheId=n.cacheId,t.instructions=n.instructions,t.saveable=n.saveable,t.waypoints=tt(n.encodedMarkers),t},tt=function(n){var u=[],r,i,t;if(n)for(n=JSON.parse(n),r=0;r<n.length;r++)i=n[r],t={},t.linkId=i.location.LinkId,t.name=t.nameDirection=i.location.Name,t.isForward=i.location.IsForward,t.poiId=i.location.PoiId,t.point={latitude:i.lat,longitude:i.lng},u.push(t);return u},it=function(n,t){var r={},u=i;return r.shareId=u.shareId,r.routeName=n,r.fromAddress=u.waypoints[0].name,r.fromLat=u.waypoints[0].point.latitude,r.fromLong=u.waypoints[0].point.longitude,r.toAddress=u.waypoints[u.waypoints.length-1].name,r.toLat=u.waypoints[u.waypoints.length-1].point.latitude,r.toLong=u.waypoints[u.waypoints.length-1].point.longitude,r.options=t,r},rt=function(n,t){var r={},u=i[t];return r.cacheId=u.cacheId,r.segmentId=u.segmentId,r.routeName=n,r.encodedPolyline=u.encodedPolyline,r.encodedMarkers=ut(u.waypoints),r.includesTollLink=u.includesTollLink,r.includesFerryLink=u.includesFerryLink,r.lengthMeters=u.statistics.lengthMeters,r.postedTravelTimeSeconds=u.statistics.postedTravelTimeSeconds,r.subscriberRouteId=u.subscriberRouteId,r.shareId=u.shareId,u.statistics.instructions&&(r.instructions=u.statistics.instructions),r.previousTransitShareId=i.shareId,r},ut=function(n){for(var u=[],i=0;i<n.length;i++){var t=n[i],r={},f=i==0?"A":i==n.length-1?"B":"W";r.lat=t.point.latitude;r.lng=t.point.longitude;r.letter=f;r.location={Name:t.nameDirection==null?t.name:t.nameDirection,X:t.point.longitude,Y:t.point.latitude,LinkId:t.linkId,IsForward:t.isForward,Letter:f,PoiId:t.poiId};u.push(r)}return JSON.stringify(u)};return w(),{}}