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};$(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")});var RoutePlanner=function(n,t,i){function at(n){var t=$(n),i="";return t!=null&&t.length&&t!=this&&(i=";"+t.attr("data-guids")),i}var u={},e=new RoutePlannerAutocomplete(n.map,i,window.extraPoi||[]),r=new WaypointManager(n.map,e,t,u),o=new RoutingPolyline(n,t,u),s=n.map,kt=$.connection.routingHub,b=new UserGeolocation(e,r,t,n.map,n),st=new TransitDirections(n,o,document.getElementById("transitRouteResults")),k=new MapFctns,h=[],v=0,l="",ht="",dt=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)})},y=function(){$(".waypointContainer").hide();c();h=[];v=0;typeof TransitOptions!="undefined"&&TransitOptions.reset();l="";r.clearAll();$("#btnSaveRoute").text(resources.Save);$(document).trigger("routeCleared-routePlanner")},c,ft,et,ot,wt,bt;kt.on("sendRoute",function(n,t){if(r.adjustMarker(0,n.waypoints[0].point.latitude,n.waypoints[0].point.longitude),r.adjustMarker(1,n.waypoints[1].point.latitude,n.waypoints[1].point.longitude),t==l){var i=h.push(n);ni();ti(n,i,i==1);loadBlockerApi.hideSpinner("calculateRoute")}});c=function(n){o.DeleteAll();$("#routeResults").hide();$("#routeTabContent").empty();$("#routeTabs").empty();n||f();r.clearMarkers();st.Reset()};$(document).on("clearRouteView-routePlanner",function(){c()});var p=function(){$(document).trigger("routingFail-routePlanner")},d=function(n,t,i){$(".waypointContainer").hide();$("#transitRouteResults").show();st.Directions(n,t,i);$("#routeResults").trigger("adjustTransitResultsHeight");f(resources.TransitForImmediateDepartures)},g=function(n,t,i,u,e,o,h){var c=n,l;t||$.connection.hub&&$.connection.hub.state!==$.signalR.connectionState.connected?(t&&(c=[n[0],t],l=[t,n[1]]),$.ajax("/api/route/getroutes",{type:"POST",data:{Waypoints:c,Options:i},transitHubLocation:t}).done(function(i){var f,u;for(f in i)for(u=0;u<2;u++)!c[u].isGoogle&&c[u].placeId&&(i[f].waypoints[u].poiId=c[u].placeId);t&&i.length>0?r.adjustMarker(0,i[0].waypoints[0].point.latitude,i[0].waypoints[0].point.longitude):i.length>0&&(r.adjustMarker(0,i[0].waypoints[0].point.latitude,i[0].waypoints[0].point.longitude),r.adjustMarker(1,i[0].waypoints[1].point.latitude,i[0].waypoints[1].point.longitude));lt(i,!0,t.name);t&&(d(l,h,!0),k.fitMapToRoute(s,n),loadBlockerApi.hideSpinner("calculateDriveTransitRoute"))}).fail(function(){p();f(resources.ErrorRetrievingYourRoute);loadBlockerApi.hideSpinner("calculateDriveTransitRoute")}).always(function(){loadBlockerApi.hideSpinner("calculateRoute")})):gt(c,u,e,o,i)},gt=function(n,t,i,r,u){h=[];v=0;l=dt();$.connection.routingHub.server.getRoutes({Waypoints:n,EndpointBoundingBoxFactor:t,ConnectionBoundingBoxFactor:i,RouteType:r,Options:u},l,s.zoom).done(function(n){n.taskId==l&&(n.numRoutes==0?(p(),f(resources.RouteNotAvailable),loadBlockerApi.hideSpinner("calculateRoute"),$(".waypointContainer").hide()):$(".waypointContainer").show(),$("#routeResults").trigger("adjustRoutePlannerHeight"))}).fail(function(){p();f(resources.ErrorRetrievingYourRoute);$(".waypointContainer").hide();loadBlockerApi.hideSpinner("calculateRoute")})},ct=function(n,t){n.forEach(function(n){n.listenerAdded=!1;google.maps.event.clearListeners(n,t)})},w=function(t,i){var o,u,a,y;if(loadBlockerApi.showSpinner("calculateRoute"),c(),l="",r.setDetails(),o={},u={},typeof TransitOptions!="undefined"){if(i&&i.target.id==="generateWalkOnlyRouteBtn"&&TransitOptions.UpdateTransitOptions("WALK"),i&&i.target.id==="generateBicycleOnlyRouteBtn"&&TransitOptions.UpdateTransitOptions("BICYCLE"),i&&i.target.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(p){}}$("#avoidTollsCheckBox").length>0&&(o.AvoidTolls=$("#avoidTollsCheckBox").is(":checked"));$("#avoidFerriesCheckBox").length>0&&(o.AvoidFerries=$("#avoidFerriesCheckBox").is(":checked"));i.target.id!=""?ht=i.target.id:i.target.id=ht;i&&i.target.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)),f(resources.DriveTransitHelpText),a=resources.ParkAndRideLayers.split(","),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),f=i.GetIcons();f.forEach(function(n){if(!n.listenerAdded){n.listenerAdded=!0;var t=n.addListener("mouseup",function(t){r.getLocationArray(function(i){if(i!=null){loadBlockerApi.showSpinner("calculateDriveTransitRoute");var r=e.GetCustomSimplePlace(n.title,null,t.latLng.lat(),t.latLng.lng(),!1);g(i,r,o,0,0,0,u);$("#transitRouteResults").addClass("padFix");ct(f,"mouseup")}else c(),ct(f,"mouseup"),loadBlockerApi.hideSpinner("calculateDriveTransitRoute")})})}})}})}),nt(a)):i&&(i.target.id==="generateTransitRouteBtn"||i.target.id==="generateWalkOnlyRouteBtn"||i.target.id==="generateBicycleOnlyRouteBtn")?d(t,u,!1):($("#transitRouteResults").hide(),h.length>0?(y=h[v],g(t,!1,o,y.endpointBoundingBoxFactor,y.connectionBoundingBoxFactor,y.routeType)):g(t,!1,o,0,0,0))},lt=function(n,t,i){if(n.length==0)$(".waypointContainer").hide(),p(),f(resources.RouteNotAvailable);else{$(".waypointContainer").show();$("#routeTabs").show();$(document).trigger("routeGenerated-routePlanner",[n]);for(var r=0;r<n.length;r++)vt(n[r],r+1,t,i);$("#routeTabs a").click(function(n){n.preventDefault();$(this).tab("show");o.MakeActive($(this).attr("data-guids")+at("#transitRouteTabs li.active a"))});o.MakeActive($("#routeTabs a:first").attr("data-guids")+at("#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)}};var ni=function(){$("#routeTabs").show();$("#routeResults").show();$("#routeResults").scrollTop(0);s.getStreetView().setVisible(!1);Modernizr.mq("(max-width: 992px)")&&$(document).trigger("BeforeDisplayRoute")},ti=function(n,t,i){vt(n,t,!1);$("#routeTabs a").click(function(n){n.preventDefault();$(this).tab("show");v=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",[h])},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)},vt=function(n,t,i,r){var f=n.statistics,c=o.AddRoute(n.encodedPolyline,null,!1,i),s="",h="",e,u;if(n.waypoints.length>1&&(s=n.waypoints[0].nameDirection,h=n.waypoints[n.waypoints.length-1].nameDirection),$("#routeTabs").append("<li class='routeTabHeader' role='presentation'><a href='#"+(i?"transit":"")+"routeTab-"+t+"' data-id='"+t+"' data-guids='"+c+"' data-travelTimeInSeconds='"+f.postedTravelTimeSeconds+"'>"+resources.Route+" "+t+"  <span class='badge'>"+f.travelTimeDisplay+"<\/span><\/a><\/li>"),e="<div class='panel panel-default routeContent'><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+" "+s+" "+resources.To+" "+h+"<\/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>",n.includesTollLink&&(e+="<span class='label label-info' style='margin-right: 2px;'>"+resources.ThisRouteIncludesTolls+"<\/span>"),n.includesFerryLink&&(e+="<span class='label label-info'>"+resources.ThisRouteIncludesFerry+"<\/span>"),e+="<\/div>",e+="<ul class='list-group'>",r=r?" ("+r+")":"",f.instructions)for(u=0;u<f.instructions.length;u++)e+="<li class='list-group-item'><div "+ri(f.instructions[u].linkConditions)+">"+f.instructions[u].instruction+ut(f.instructions[u].linkEvents)+it(f.instructions[u].linkCameras,t,u)+ii(f.instructions[u].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)+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)+it(f.links[u].linkCameras,t,u)+"<\/li>";e+="<\/ul><\/div>";$("#routeTabContent").append('<div id="'+(i?"transit":"")+"routeTab-"+t+'" data-id="'+t+'" class="routeTab tab-pane fade">'+e+'<small class="list-group-item">'+resources.AllTravelTimesBasedOnEstimates+"<\/small><\/div>");$(".CameraRouteToggle"+t).on("click",function(){var n=$(this).data("id");$("#"+n+"circle").toggleClass("fa-plus-circle fa-minus-circle");$("#"+n+"div").toggle(400)});$(".Cctv-link").on("click",function(){UserCameras.zoomToCamera(this.getAttribute("data-id"),"Camera","Cameras")})};String.prototype.replaceAll=function(n,t){return this.split(n).join(t)};var tt=null,it=function(n,t,i){var r,u;if(!n||!n.length)return"";r=n[0].id+t+i;tt||(tt='<div class="map-tooltip routeLinkCamera"><p><img src="{IconURL}" alt="{Name}">&nbsp;<a class="Cctv-link" href="#" data-id="{Id}">{Name}<\/a><\/p><\/div>');var e='<div class="CameraRouteSection"><h4><img src="/Content/Images/ic_camera.png" alt="Camera Icon"/> Cameras<span class="CameraRouteToggle'+t+'" data-id="'+r+'" data-toggle="collapse" title="Toggle" aria-expanded="true" class=""><button class="cameraRouteBtn"><i id="'+r+'circle" class="far fa-plus-circle"><\/i><\/button><\/span><\/h4><div id="'+r+'div" class="routeCameras" style="display:none;">',f="";for(u in n)f+=tt.replaceAll("{Name}",n[u].displayName).replaceAll("{Id}",n[u].id).replaceAll("{IconURL}",n[u].icon.url);return e+f+"<\/div>"},rt=null,ut=function(n){var i,t,u,r,f;if(!n||!n.length)return"";rt||(i='<div class="map-tooltip routeLinkEvent">',i+='<h4><img src="{iconUrl}" alt="{heading}">&nbsp;{heading}<\/h4>',i+='<table class="table-condensed table-striped">',i+="<tbody>",i+='<tr><td colspan="2"><b>{subheading}<\/b><\/td><\/tr>{attributes}',i+="<\/tbody><\/table><\/div>",rt=i);var e="";for(t in n){u="";for(r in n[t].orderedPiecesOfInfo)f=n[t].orderedPiecesOfInfo[r].title?"<tr><td>{title}<\/td><td>{text}<\/td><\/tr>":'<tr><td colspan="2">{text}<\/td><\/tr>',u+=n[t].orderedPiecesOfInfo[r].title=="Comment"?f.replaceAll("{title}",n[t].orderedPiecesOfInfo[r].title).replaceAll("{text}",replaceUrlsWithLinks(n[t].orderedPiecesOfInfo[r].text)):f.replaceAll("{title}",n[t].orderedPiecesOfInfo[r].title).replaceAll("{text}",n[t].orderedPiecesOfInfo[r].text);e+=rt.replaceAll("{iconUrl}",n[t].icon.url).replaceAll("{heading}",n[t].heading).replaceAll("{subheading}",n[t].subHeading).replaceAll("{attributes}",u)}return e},ii=function(n){var t,r,i;if(!n||!n.length)return"";for(t='<div class="map-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>"},ri=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"style ='border-style: solid; border-width: 5px; border-right: 0; margin-left: -15px; margin-top: -10px; margin-bottom: -10px; padding-left: 10px; padding-top: 5px; padding-bottom: 5px; border-image: linear-gradient(to bottom, "+i+") 1 100%;'"}},f=RoutePlannerStatus.updateStatus,a=function(n){n.preventDefault();h=[];v=0;var t=$("#startLocationText").val(),i=$("#endLocationText").val();t.match(/^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$/g)&&i.match(/^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$/g)?w([{point:{latitude:t.split(",")[0],longitude:t.split(",")[1]}},{point:{latitude:i.split(",")[0],longitude:i.split(",")[1]}}],n):r.getLocationArray(function(t){t==null?(f(resources.PleaseCheckStartEndLocation),c(!0)):yt(t)?(f(resources.StartAndEndLocationCannotBeSame),c(!0)):(f(),w(t,n))});s.getStreetView().setVisible(!1)},yt=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=e.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.displayRoutes=function(n){y();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));lt(n,!1)};u.displayRoute=function(n){u.displayRoutes([n],!1)};u.displayTransitRoute=function(n){y();r.setStartEndPoint(new e.GetCustomSimplePlace(n.fromAddress,null,n.fromLat,n.fromLong,!1),new e.GetCustomSimplePlace(n.toAddress,null,n.toLat,n.toLong,!1));r.getLocationArray(function(t){d(t,n.options,!1)});typeof TransitOptions!="undefined"&&TransitOptions.SetTransitOptions(n.options)};u.resetRoutePlanner=y;u.calculateRoute=function(n){var t={};t.target={id:n};t.preventDefault=function(){};r.getLocationArray(function(n){w(n,t)})};ft=function(){var n=$(".waypointText:last");return n.html()!=undefined&&n.val().length===0};et=function(n,t,i){var o=ft(),f;o&&$(".waypointText:last").parent().parent().empty();f='<div class="form-group hidden-print" data-waypointparent="'+n+'"><div class="input-group"><label class="sr-only" for="waypointText-'+n+'">'+resources.Waypoint+'<\/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" id="deleteWaypoint-'+n+'" type="button" data-wpId="'+n+'" title="'+resources.Remove+'"><i class="far fa-times"<\/button><\/div><\/div><\/div>';$("#waypoints").append(f);$("#waypointText-"+n).val(t);$("#deleteWaypoint-"+n).click(function(){var n=$(this).data("wpid");r.ClearWaypoint(n,null,!0);e.clearGoogleToken("#waypointText-"+n);u.redrawWaypoints(!1)});$("#setWaypointGeolocation-"+n).click(function(){var n=$(this).data("wpid");b.AttemptToSetWaypointWithUsersGeolocation(n)});e.SetupAutoComplete("#waypointText-"+n,n,i)};u.redrawWaypoints=function(n,t){r.getLocationArray(function(i){var u,r;if(i)if(t)u=i.length-1,et(u,n,!1);else for($("#waypoints").html(""),r=1;r<i.length-1;r++)et(r,i[r].name,!0)})};u.AddWaypointToPlanner=function(n,t){u.redrawWaypoints(n,t)};ot=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()):f(resources.NoRouteDetailGenerated,RoutePlannerStatus.StatusTypes.danger)};wt=function(){var n=$.QueryString.placeId,t=$.QueryString.destination;n?pt(null,parseInt(n)):t&&e.GetSimplePlaceByTextSearch(t,function(n){n&&r.setLocation(!1,n,!0)})};$(document).on("UserRouteDropDownVisible",function(){$(".linkRoute").toggle(!0)});return bt=function(){if($("#generateRouteBtn").click(a),$("#generateTransitRouteBtn").click(a),$("#generateDriveTransitRouteBtn").click(a),$("#generateWalkOnlyRouteBtn").click(a),$("#generateBicycleOnlyRouteBtn").click(a),$("#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()}),resources.AutoGenerateDriveRoute==="True")$(document).on("generateRoute-waypointManager",function(n){r.getLocationArray(function(t){t==null?f(resources.PleaseCheckStartEndLocation):yt(t)?f(resources.StartAndEndLocationCannotBeSame):(f(),w(t,n))})});$(document).on("resetRoutePlanner-contextMenu",y);$(document).on("setCarpoolDestination.carpoolTooltip",function(n,t,i,u){var s=$(".showSideBar").css("display")=="block",f,o;s&&$(".showSideBar").trigger("click");f=i/1e6;o=t/1e6;(f<-90||f>90)&&(f=f/10);(o<-180||o>180)&&(o=o/10);r.setLocation(!1,e.GetCustomSimplePlace(u,null,f,o,!1),!0);bootbox.closeMapPageDialog()});$(document).on("clearRouteButtonClicked.routeSave",urlHash.clearHash);$("#clearRouteBtn").click(function(){y();$(document).trigger("clearRouteButtonClicked")});$(document).on("clearUserRouteTrigger",function(){$("#clearRouteBtn").trigger("click")});$("#swapLocationsBtn").click(function(n){var t=$("#startLocationText").val();$("#startLocationText").val($("#endLocationText").val());$("#endLocationText").val(t);r.swapStartEnd();r.setDetails();resources.AutoGenerateDriveRoute==="True"&&r.getLocationArray(function(t){t!=null&&a(n)})});wt();$(".fa-print").click(ot);$(".fa-print").bind("keypress",function(n){n.keyCode==13&&ot()});$(".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=ft();n||u.AddWaypointToPlanner(null,!0)})},bt(),u},RoutePlannerAutocomplete=function(n,t,i){var r={},f,e;i&&$(i).each(function(n,t){t.isGoogle=!1});var k=new google.maps.LatLng(t.RoutingModel.MapBottomLeftBounds.Latitude,t.RoutingModel.MapBottomLeftBounds.Longitude),d=new google.maps.LatLng(t.RoutingModel.MapTopRightBounds.Latitude,t.RoutingModel.MapTopRightBounds.Longitude),y=new google.maps.LatLngBounds(k,d),p=new google.maps.places.AutocompleteService,u={start:new google.maps.places.AutocompleteSessionToken,end:new google.maps.places.AutocompleteSessionToken},w=function(n,t){var u=new RegExp("^"+$.ui.autocomplete.escapeRegex(t),"i"),r=$.grep(i,function(n){return u.test(n.label)}),f=$.grep(i,function(n){return $.inArray(n,r)==-1});return r.concat($.ui.autocomplete.filter(f.concat(n),t))},h=function(n){return function(r,f){var o=[],e=(r.term||"").trim(),s;e&&e.length>=3?(s={input:e,bounds:y,componentRestrictions:{country:t.RoutingModel.AutoCompleteCountryCode.split(",")},sessionToken:u[n]},p.getPlacePredictions(s,function(n,t){t==google.maps.places.PlacesServiceStatus.OK&&(o=b(n));var i=w(o,e);f(i)})):f($.ui.autocomplete.filter(i,e))}},c=function(){$("ul.ui-autocomplete.ui-menu").append($("<div>").css("text-align","right").html($("<img>").attr("src","/Content/images/poweredByGoogle.png")))},l,a,v=function(n,t){$(".ui-menu .active").removeClass("active");var i=$(n.target).attr("data-type"),r=$(n.target).attr("data-index"),u=$(n.target).attr("data-exists")=="true";$(n.target).attr("data-exists",!0);i=="fromHere"?l=t:i=="toHere"&&(a=t);$(".ui-menu .ui-menu-item .ui-state-active").parent().addClass("active");$(document).trigger("locationSelected-autocomplete",[i,t,r,u])};r.clearEntries=function(){l=null;a=null};r.clearGoogleToken=function(n){n&&delete u[n]};$("#startLocationText").autocomplete({minLength:1,source:h("start"),select:v,open:c,delay:150}).click(function(){$(this).select()}).on("place_changed",function(){$(this).select()}).attr("data-type","fromHere");$("#endLocationText").autocomplete({minLength:1,source:h("end"),select:v,open:c,delay:150}).click(function(){$(this).select()}).on("place_changed",function(){$(this).select()}).attr("data-type","toHere");r.SetupAutoComplete=function(n,t,i){u[n]=new google.maps.places.AutocompleteSessionToken;$(n).autocomplete({minLength:1,source:h(n),select:v,open:c,delay:150}).click(function(){$(this).select()}).attr({"data-type":"waypoint","data-index":t,"data-exists":i!="undefined"?i:!1})};f=new google.maps.places.PlacesService(n);r.GetWaypointLocationDetails=function(n,t,i){var e;(n=n?n.item:null)?(e=u["#waypointText-"+t],n.isGoogle?f.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:e},function(r,f){u["#waypointText-"+t]=new google.maps.places.AutocompleteSessionToken;i(f==google.maps.places.PlacesServiceStatus.OK?s(function(){return r.formatted_address=n.label,r}()):null)}):i(o(n))):(n=$("#waypointText-"+t).val(),n=(n||"").trim(),e=u["#waypointText-"+t],r.GetSimplePlaceByTextSearch(n,i,e))};r.GetLocationDetails=function(n,t){var i=n?l:a,e;(i=i?i.item:null)?i.isGoogle?(e=n?u.start:u.end,f.getDetails({placeId:i.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:e},function(r,f){n?u.start=new google.maps.places.AutocompleteSessionToken:u.end=new google.maps.places.AutocompleteSessionToken;t(f==google.maps.places.PlacesServiceStatus.OK?s(function(){return r.formatted_address=i.label,r}()):null)})):t(o(i)):(i=n?$("#startLocationText").val():$("#endLocationText").val(),i=(i||"").trim(),e=n?"start":"end",r.GetSimplePlaceByTextSearch(i,t,e))};r.GetSimplePlace=function(n){for(var t=0,r=i.length;t<r;t++)if(i[t].poiId===n)return o(i[t]);return null};r.GetSimplePlaceByTextSearch=function(n,i,r){if(n=(n||"").trim(),!n){i(null);return}var e=u[r],h={input:n,bounds:y,componentRestrictions:{country:t.RoutingModel.AutoCompleteCountryCode},sessionToken:e};p.getPlacePredictions(h,function(t,h){var a=[],c,l;h==google.maps.places.PlacesServiceStatus.OK&&(a=b(t));c=w(a,n);l=null;c.length?c[0].isGoogle?f.getDetails({placeId:c[0].googleObj.place_id,fields:["address_component,adr_address,alt_id,formatted_address,geometry,icon,id,name,place_id,plus_code,scope,type,url,utc_offset,vicinity"],sessionToken:e},function(n,t){u[r]=new google.maps.places.AutocompleteSessionToken;i(t==google.maps.places.PlacesServiceStatus.OK?s(n):null)}):(l=o(c[0]),i(l)):(new google.maps.Geocoder).geocode({address:n},function(n,t){i(t==google.maps.places.PlacesServiceStatus.OK?s(n[0]):null)})})};e=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,u){return new e(n,t,i,r,u)};var o=function(n){return new e(n.label,n.poiId,n.latLng[0],n.latLng[1],!1)},s=function(n){var i=n.formatted_address||n.name,u=n.geometry.location.lat(),f=n.geometry.location.lng(),t=r.GetAddressDetails(n.address_components);return new e(i,n.place_id,u,f,!0,t.streetNumber,t.streetName,t.postalCode)},b=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};return r.GetAddressDetails=function(n){for(var i,r,u,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&&(state=n[t].short_name);return{streetName:i,streetNumber:r,postalCode:u,state:state}},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){var f=$("#statusBar"),e=$(".createRouteAlert"),s=$(".createRouteAlert .msg"),h=!1,o,c;for(o in n.StatusTypes)f.removeClass(n.StatusTypes[o]),i==n.StatusTypes[o]&&(h=!0);f.addClass(h?i:n.StatusTypes.info);t&&t.length>1?(f.attr("style","display:block;"),f.html(t).show(),r&&u&&(s.html('<i class="fas fa-bell" aria-hidden="true"><\/i><a href= "/my511/routealert?routeID='+r+'">'+window.resources.CreateAlertLink),Modernizr.mq("(min-width: 993px)")?(c=$(".sideBarColContainer").width()+40,e.css("left",c+"px")):e.insertAfter("#routingInput #statusBar"),e.show())):(f.text("").hide(),s.html(""),e.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:"#0000FF",zIndex:-99};u.AddRoute=function(c,a,v,y,p,w){var g=l(),k,d,b;(typeof c=="string"||c instanceof String)&&(c=[c]);for(k in c)d=c[k],a=h(a),v&&(a.map=e),d&&(a.path=google.maps.geometry.encoding.decodePath(d)),b={id:g,polyline:new google.maps.Polyline(a),strokeColor:a.strokeColor,isActive:!1,index:k,isTransit:y},google.maps.event.addListener(b.polyline,"click",function(){b.isActive||$('#routeTabs a[data-guids="'+b.id+'"]').click()}),p&&p.length>0&&p[k].length>0&&google.maps.event.addListener(b.polyline,"mouseover",function(t){b.isActive?n.appHelper.showInfoWindow(p[k],null,!0,t.latLng):n.appHelper.showInfoWindow('<span class="simpleToolTip"> Select route '+w+" to see details<\/span>",null,!0,t.latLng)}),!y&&resources.DraggableRoutesEnabled==="True"&&Modernizr.mq("(min-width: 992px)")&&(b.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)}),b.polyline.addListener("drag",function(n){f&&o&&o.setPosition(n.latLng)}),b.polyline.addListener("dragend",function(n){if(f){var r=s(this);r.copy.setMap(null);t.helper.getNearestLocations(n.latLng,function(n){u.isOnActivePolylines(new google.maps.LatLng(n[0].point.latitude,n[0].point.longitude))||(i.SetWaypoint(n[0],f.index,!1),i.AddWaypointToPlanner(n[0].name,!1),i.calculateRoute());o.setMap(null);o=null;f=null},!0)}})),r.push(b);return g};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")));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,Options:t}}).done(function(t){t.status=="OK"?(i?$(document).trigger("driveTransitRouteGenerated-routePlanner",[t]):$(document).trigger("transitRouteGenerated-routePlanner",[t]),s(n,t,i)):i?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.DriveAndTransitRouteNotAvailable)):t.status=="ZERO_RESULTS"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.RouteNotAvailable)):t.status=="NOT_FOUND"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.RouteNotAvailable)):t.status=="PATH_NOT_FOUND"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.RouteNotAvailable)):t.status=="OUTSIDE_BOUNDS"?($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.AreaNotCovered)):($(document).trigger("clearRouteView-routePlanner"),RoutePlannerStatus.updateStatus(window.resources.ErrorRetrievingYourRoute,RoutePlannerStatus.StatusTypes.danger))}).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){var t=null,i=$("#btnSaveRoute"),u=$(".routeName"),f=$("#routeName",u),e=null,r=null,y=function(){w();typeof TransitOptions!="undefined"&&TransitOptions.init();i.length&&(i.toggle(!1),u.toggle(!1),f.attr("placeholder",resources.EnterRouteNameToSave),p(),h())},s=null,p=function(){var e=$(".atisUserDd"),u=$(".btn .atisUserDdBtnText",e);s=u.text();e.on("click","li a",function(e){var c=$(this),h=c.attr("data-id"),l,a,s;r=window.atisUserRoutes[h];r.isTransit?(l=r.routeName,a=r,o(r.shareId),n.displayTransitRoute(r),r=a,f.val(l),u.text(c.text()).attr("data-id",h),i.text(resources.Update)):(loadBlockerApi.showSpinner("loadSavedRoute"),s=v(r),k(s,function(e){e?(r.statistics=e,s.statistics=e,n.displayRoute(s),r=window.atisUserRoutes[h],o(s.shareId),setTimeout(function(){u.text(c.text()).attr("data-id",h);t=[s];f.val(s.routeName)},0)):(n.resetRoutePlanner(),RoutePlannerStatus.updateStatus(resources.SorryUnableToFetchRoute));n.redrawWaypoints(!1);loadBlockerApi.hideSpinner("loadSavedRoute");i.text(resources.Update)}));e.preventDefault()})},h=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")},c=function(){var n=$(".atisUserDd"),t=$(".btn .atisUserDdBtnText",n);t.text(s).removeAttr("data-id")},w=function(){$(document).on("routeCleared-routePlanner.routeSave routingFail-routePlanner.routeSave driveTransitRouteGenerated-routePlanner.routeSave",function(){t=null;r=null;u.toggle(!1);i.toggle(!1);f.val(null);c()});$(document).on("clearRouteButtonClicked",function(){e=null});$(document).on("transitRouteGenerated-routePlanner.routeSave",function(n,f){resources.SaveTransit==="true"?(t=f,r&&(t.shareId=r.shareId),e="transit",u.toggle(!0),i.toggle(!0)):(u.toggle(!1),i.toggle(!1))});$(document).on("routeGenerated-routePlanner.routeSave",function(n,f){var o=t!=null&&t.length&&t[0].segmentId?t[0].segmentId:null;e="drive";t=f;r&&(t.shareId=r.shareId);$(t).each(function(n,t){t.statistics.date=new Date});o&&$(t).each(function(n,t){t.segmentId=o});u.toggle(!0);t[0].saveable===!1?(i.toggle(!1),u.toggle(!1)):(i.toggle(!0),u.toggle(!0))});$(document).on("hashChanged-urlHash",function(){var n=o(),t=null;n&&(t=d(n))?($('.atisUserDd li a[data-id="'+t+'"]').click(),i.text(resources.Update)):(b(n),i.text(resources.Save))});$(document).on("dropdownPopulated-userRoutePlanner",function(){var n=window.atisUserRoutes!=null&&window.atisUserRoutes.length>0;$(".atisUserDd").toggle(n);n&&$(document).trigger("UserRouteDropDownVisible")});i.on("click.routeSave",function(){var u=f.val()||"",o,s,r;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(a){o=s}}r=nt(u,o);$.ajax("/My511/SaveTransitRoute",{data:r,type:"POST"}).done(function(n){r.shareId=n.shareId;r.isTransit=!0;$(document).one("transitRouteGenerated-routePlanner.routeSave-msg",function(){RoutePlannerStatus.updateStatus(resources.YourRouteHasBeenSaved,RoutePlannerStatus.StatusTypes.success)});l(r);i.text(resources.Update)}).fail(function(){RoutePlannerStatus.updateStatus(resources.SorryErrorSavingRoute)}).always(function(){loadBlockerApi.hideSpinner("saveRoute")})}else{var c=i.text()===resources.Save,h=n.getActiveRouteIndex(),r=tt(u,h);$.ajax("/Api/Route/SaveUserRoute",{data:r,type:"POST"}).done(function(n){r.segmentId=n.segmentId;r.allLinks=n.allLinks;r.Statistics=t[h].Statistics;r.subscriberRouteId=n.subscriberRouteId;r.shareId=n.shareId;$(document).one("routeGenerated-routePlanner.routeSave-msg",function(){RoutePlannerStatus.updateStatus(resources.YourRouteHasBeenSaved,RoutePlannerStatus.StatusTypes.success,r.subscriberRouteId,c)});l(r);i.text(resources.Update)}).fail(function(){RoutePlannerStatus.updateStatus(resources.SorryErrorSavingRoute)}).always(function(){loadBlockerApi.hideSpinner("saveRoute")})}return!1});$(".fa-link").click(a);$(".fa-link").bind("keypress",function(n){n.keyCode==13&&a()})},b=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(v(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)},l=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);c();h();$('.atisUserDd li a[data-id="'+i+'"]').click()},o=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)},a=function(){o()?bootbox.dialog({title:resources.LinkToYourRoute,message:'<input class="form-control" value="'+document.URL+'" ><br/>'+resources.CopyFromBrowserText}):RoutePlannerStatus.updateStatus(resources.SelectRouteFromDropdownText,RoutePlannerStatus.StatusTypes.danger)},k=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)})},d=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},v=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=g(n.encodedMarkers),t},g=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},nt=function(n,i){var r={},u=t;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=i,r},tt=function(n,i){var r={},u=t[i];return r.cacheId=u.cacheId,r.segmentId=u.segmentId,r.routeName=n,r.encodedPolyline=u.encodedPolyline,r.encodedMarkers=it(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=t.shareId,r},it=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 y(),{}}