function MappingConstants(){return(this instanceof MappingConstants)?(this.MAX_DISTANCE_TO_SUGGEST_OTHER_LOCATION=.0005,this.API_KEY="AIzaSyAuFIS1CMmF0P4jwNJRKKavO7uCWX1YaHU",this.GOOGLE_MAPS_VERSION="quarterly",this.CIVIC_ADDRESS_SELECTION="Civic",this.RURAL_ADDRESS_SELECTION="Rural",this):new MappingConstants}function AddressCorrectionHelper(){if(!(this instanceof AddressCorrectionHelper))return new AddressCorrectionHelper;var n=$("#locationCorrectionForm"),i=ToTitleCase(n.find("[name=Address]").val()),r=n.find("[name=Suite]").val().toUpperCase(),t=ToTitleCase(n.find("[name=City]").val()),u=$("#SelectedProvinceName").val(),e=n.find("[name=PostalCode]").val().toUpperCase(),f=$("#Country").val();return this.SetValuesForLocationCorrectionForm=function(t){n.find("[name=Address]").val(t.Address);n.find("[name=Suite]").val(t.Suite);n.find("[name=City]").val(t.City);n.find("[name=PostalCode]").val(t.PostalCode)},this.GeocodeCorrectedLocation=function(){var n=i+", "+t+" "+u+", "+f;return GeocodeHelper().ByAddress(n)},this.GeocodeCorrectedLocationByCity=function(){var n=t+" "+u+", "+f;return GeocodeHelper().ByAddress(n)},this.GetFormattedAddressOfCorrectedLocation=function(){var n=i+", "+t+", "+u+" "+e+", "+f;return r?r+"-"+n:n},this.SetCorrectedLocationFields=function(){$("#IsLocationAddressCorrected").val(!0);$("#CorrectedAddress").val(i);$("#CorrectedSuite").val(r);$("#CorrectedCity").val(t);$("#CorrectedPostalCode").val(e)},this}function GeocodeHelper(){return(this instanceof GeocodeHelper)?(this.ByPlaceId=function(n){var t=null;return $.ajax({type:"GET",url:"https://maps.googleapis.com/maps/api/geocode/json?place_id="+n+"&key="+MappingConstants().API_KEY+"&language="+document.documentElement.lang,dataType:"json",async:!1,success:function(n){n.status==="OK"?n.results[0]?t=n.results[0]:console.log("No results found"):console.log("Geocoder failed due to: "+n.status)}}),t},this.ByLatLng=function(n){var t=null;return $.ajax({type:"GET",url:"https://maps.googleapis.com/maps/api/geocode/json?latlng="+n.toUrlValue()+"&key="+MappingConstants().API_KEY+"&language="+document.documentElement.lang,dataType:"json",async:!1,success:function(n){n.status==="OK"?n.results[0]?t=n.results[0]:console.log("No results found"):console.log("Geocoder failed due to: "+n.status)}}),t},this.ByAddress=function(n){var t=null;return $.ajax({type:"GET",url:"https://maps.googleapis.com/maps/api/geocode/json?address="+n+"&key="+MappingConstants().API_KEY+"&language="+document.documentElement.lang,dataType:"json",async:!1,success:function(n){n.status==="OK"?n.results[0]?t=n.results[0]:console.log("No results found"):console.log("Geocoder failed due to: "+n.status)}}),t},this):new GeocodeHelper}function GoogleMapsHelper(){return(this instanceof GoogleMapsHelper)?(this.ClearMapMarkers=function(n,t){var i=null;n.forEach(function(n){n.getPosition()!==t?n.setMap(null):i=n});n.length=0;i!==null&&n.push(i)},this.PlaceMapMarkers=function(n,t,i){var r=new google.maps.LatLngBounds;n.forEach(function(n){if(n.geometry){var u=GoogleMapsHelper().GenerateInfoContent(n),f=new google.maps.Marker({map:i,title:n.name,position:n.geometry.location,placeId:n.place_id,locationInfo:u});t.push(f);n.geometry.viewport?r.union(n.geometry.viewport):r.extend(n.geometry.location)}});i.fitBounds(r)},this.PlaceMarkerAndPanTo=function(n,t,i){var r=new google.maps.Marker({position:n,map:t});i.push(r);t.panTo(n)},this.PlaceMarkerForNoResults=function(n,t,i){var r=new google.maps.Marker({position:n,map:t});i.push(r);t.panTo(n)},this.PlaceMyLocationMarker=function(n,t,i){var r=new google.maps.Marker({position:n,map:t,icon:{path:google.maps.SymbolPath.CIRCLE,scale:7,fillOpacity:1,strokeWeight:2,fillColor:"#5384ED",strokeColor:"#ffffff"}});return i.push(r),t.panTo(n),t.setZoom(14),r},this.GenerateInfoContent=function(n){var t="Name"in n?"<strong>"+n.name+"<\/strong><br>":"";return"<div>"+t+n.formatted_address+"<\/div>"},this.GenerateNearestPlaceInfoContent=function(n){return"<button class='btn-link use-nearest' style='padding:0;border:0;text-align:left;'>"+n.formatted_address+"<\/button>"},this.SetMarkerLabelToBlank=function(n){n.setLabel(" ")},this.LoadGoogleMapsApi=function(){var t="https://maps.googleapis.com/maps/api/js?v="+MappingConstants().GOOGLE_MAPS_VERSION+"&key="+MappingConstants().API_KEY+"&libraries=places&callback=InitMap&language="+document.documentElement.lang,n=document.createElement("script");n.setAttribute("async","");n.setAttribute("defer","");n.src=t;document.body.appendChild(n)},this.LoadAutocomplete=function(){var t="https://maps.googleapis.com/maps/api/js?v="+MappingConstants().GOOGLE_MAPS_VERSION+"&key="+MappingConstants().API_KEY+"&libraries=places&language="+document.documentElement.lang,n=document.createElement("script");n.setAttribute("async","");n.setAttribute("defer","");n.src=t;document.body.appendChild(n)},this.ZoomMapToFitBoundary=function(){mapObjects.Map.fitBounds(mapObjects.Bounds,0)},this.SetupBoundaries=function(n){var t=new JurisdictionBoundaryService(JSON.parse(n),mapObjects.Map);mapObjects.Bounds=new google.maps.LatLngBounds(new google.maps.LatLng(t.minLatitude,t.minLongitude),new google.maps.LatLng(t.maxLatitude,t.maxLongitude));mapObjects.SearchBox.setBounds(mapObjects.Bounds);mapObjects.Polygon=t.polygon},this.RemoveMapEvents=function(){google.maps.event.clearInstanceListeners(mapObjects.SearchBox);google.maps.event.removeListener(mapObjects.CivicMapClickListener);google.maps.event.removeListener(mapObjects.RuralMapClickListener);$(document).off("click",".use-nearest")},this.ResetMapBackToDefault=function(){UiHelper().ClearMap(mapObjects.Markers);mapObjects.Map.data.remove(mapObjects.Features[0]);GoogleMapsHelper().RemoveMapEvents()},this.AreCoordinatesInsidePolygon=function(n,t){return google.maps.geometry.poly.containsLocation(n,t)},this):new GoogleMapsHelper}function JurisdictionBoundaryHelper(){function n(n){return n===!1}function t(n,t){var i=t!==n,r=n!==null;return i&&r?!0:!1}function i(n){var t="",i=$("#detachmentBoundaryUrl"),r=parseInt(i.attr("data-detachment-id"));return $.ajax({url:i.data("url"),type:"GET",data:{detachmentId:r},async:!1,success:function(i){t=i;n.DetachmentBoundaryId=t.DetachmentId;n.IsRuralAddressingEnabled=t.IsRuralAddressingEnabled;n.IsSearchingByDivision=!1;LocationTypeSelectionHelper().ToggleDisplayingOfRuralAddressingSelector(mapConfigs.IsRuralAddressingEnabled)}}),t}function r(n){var t="",i=$("#divisionBoundaryUrl"),r=parseInt(i.attr("data-division-id"));return $.ajax({url:i.data("url"),type:"GET",data:{divisionId:r},async:!1,success:function(i){t=i;n.DetachmentBoundaryId=t.DetachmentIdOfDivision;n.IsRuralAddressingEnabled=t.IsRuralAddressingEnabled;n.IsSearchingByDivision=!0;n.ValidateLocationUsingOnlyServer=n.DetachmentBoundaryId===null?!0:!1;LocationTypeSelectionHelper().ToggleDisplayingOfRuralAddressingSelector(mapConfigs.IsRuralAddressingEnabled);$("#detachmentFinder").attr("data-detachment-id-to-exclude",mapConfigs.DetachmentBoundaryId)}}),t}return(this instanceof JurisdictionBoundaryHelper)?(this.GetJurisdictionBoundaryJson=function(n,t){return n==="True"?r(t):i(t)},this.SearchForDetachmentFromLatLng=function(n,t,i){return i===!0?JurisdictionBoundaryHelper().GetDetachmentDtoFromServer(n):GoogleMapsHelper().AreCoordinatesInsidePolygon(n,t)===!0?new DetachmentDto(mapConfigs.DetachmentBoundaryId,!0,!1):JurisdictionBoundaryHelper().GetDetachmentDtoFromServer(n)},this.GetDetachmentDtoFromServer=function(n){var f=n.lat,e=n.lng,t=$("#detachmentFinder"),o=parseInt(t.attr("data-division-id")),s=parseInt(t.attr("data-detachment-id-to-exclude")),i=null,r=!0,u=null;return $.ajax({url:t.data("url"),type:"GET",async:!1,data:{latitude:f,longitude:e,divisionId:o,languageCode:document.documentElement.lang,detachmentIdToExclude:s},success:function(n){n!==null&&(i=n.Id,mapMessages.DetachmentName=n.Name,r=n.IsRcmp,u=n.HtmlMessage)}}),new DetachmentDto(i,r,u)},this.GetMessageIfLocationIsInAnotherDetachment=function(i,r,u){return n(i)&&t(r,u)?ValidationMessagesHelper().messages.InAnotherDetachment.replace("{detachment}",mapMessages.DetachmentName):null},this):new JurisdictionBoundaryHelper}function LocationTypeSelectionHelper(){function n(){UiHelper().ClearMap(mapObjects.Markers);GoogleMapsHelper().RemoveMapEvents();GoogleMapsHelper().ZoomMapToFitBoundary();mapMessages.ProceedButton.classList.add("rural-address-mode");var n=new UiService(mapObjects.Markers,mapObjects.Polygon,mapObjects.Map);n.SetupMapForRuralAddressing();$("#map-section").addClass("hidden");UtilityHelper().DisableLocationFields();$("#rural-address-section").removeClass("hidden");$("#RuralAddress").prop("disabled",!1);$("#Municipality").prop("disabled",!1);$("#Latitude").prop("disabled",!1);$("#Longitude").prop("disabled",!1);UiHelper().ShowMapUiForRuralAddressing();$("#RuralAddress").val(null);$("#Municipality").val(null);ToggleButtonState($("#next"),!1)}function t(){if($("#mapInterface").hasClass("hidden")&&GoogleMapsHelper().LoadGoogleMapsApi(),$("#map-section").removeClass("hidden"),UtilityHelper().EnableLocationFields(),$("#rural-address-section").addClass("hidden"),$("#RuralAddress").prop("disabled",!0),$("#Municipality").prop("disabled",!0),UiHelper().ShowMapUiForCivicAddressing(),$("#mapInterface").hasClass("hidden")===!1){UiHelper().ClearMap(mapObjects.Markers);GoogleMapsHelper().RemoveMapEvents();GoogleMapsHelper().ZoomMapToFitBoundary();mapMessages.ProceedButton.classList.remove("rural-address-mode");var n=new UiService(mapObjects.Markers,mapObjects.Polygon,mapObjects.Map);n.SetupMapForCivicAddressing(mapObjects.SearchBox)}}return(this instanceof LocationTypeSelectionHelper)?(this.ToggleDisplayingOfRuralAddressingSelector=function(n){n===!0?$("#addressTypeSelector").removeClass("hidden"):$("#addressTypeSelector").addClass("hidden")},this.LoadMapForCivicAddress=function(){$("#mapInterface").hasClass("hidden")&&GoogleMapsHelper().LoadGoogleMapsApi()},this.ValidateRuralAddressFields=function(){LocationValidationHelper().AreRuralAddressFieldsFilledOut()?ToggleButtonState($("#next"),!0):(ToggleButtonState($("#next"),!1),$("#map-section").hasClass("hidden")===!1&&(GoogleMapsHelper().ZoomMapToFitBoundary(),UiHelper().ClearMap(mapObjects.Markers),$("#map-section").addClass("hidden")))},this.ToggleLocationSelectionType=function(i){i==="True"?(mapConfigs.LocationSelectionMode=MappingConstants().RURAL_ADDRESS_SELECTION,n()):(mapConfigs.LocationSelectionMode=MappingConstants().CIVIC_ADDRESS_SELECTION,t())},this):new LocationTypeSelectionHelper}function LocationValidationHelper(){return this.IsLocationTypeValid=function(n){var t=new PlaceService(n);return t.IsStreetAddressOrIntersection()||t.isParkWithName()||t.HasStreetNumber()||t.IsPoiWithFormattedAddress()},this.IsGeometryTypeValid=function(n){return new PlaceService(n).IsValidGeometryType()},this.IsLocationTypeAndGeometryValid=function(n){return IsLocationTypeValid(n)&&IsGeometryTypeValid(n)},this.AreRuralAddressFieldsFilledOut=function(){return $.trim($("#RuralAddress").val())&&$.trim($("#Municipality").val())?!0:!1},this.IsLocationOutsideOfBoundaryInAnotherDetachment=function(n){var r=mapConfigs.ValidateLocationUsingOnlyServer===!1,t,i;if(r)return t=mapConfigs.DetachmentBoundaryId!==n,i=n!==null,t&&i?!0:!1},this.SetOutOfBoundaryValidationResults=function(n){n.IsLocationOutsideOfBoundary=!0;n.Message=ValidationMessagesHelper().messages.InAnotherDetachment.replace("{detachment}",mapMessages.DetachmentName)},this}function UiHelper(){function n(n,t){n===""?mapMessages.DisplayedAddressSection.classList.add("hidden"):(mapMessages.DisplayedAddress.innerHTML=n,mapMessages.DisplayedAddressSection.classList.remove("hidden"));t?mapMessages.DisplayedAddressSection.classList.add("valid"):mapMessages.DisplayedAddressSection.classList.remove("valid")}function t(n,t){mapObjects.Map.controls[google.maps.ControlPosition.TOP_CENTER].length>0&&mapObjects.Map.controls[google.maps.ControlPosition.TOP_CENTER].clear();mapObjects.Map.controls[google.maps.ControlPosition.TOP_CENTER].push(mapMessages.MapMessageSection);mapMessages.MapMessageSection.classList.remove("hidden");t===!0?i():u(n)}function i(){mapMessages.ProceedButton.classList.remove("hidden");mapMessages.InfoMessage.classList.add("hidden");mapMessages.InfoMessage.innerHTML=null}function r(n){mapMessages.InfoMessage.classList.remove("error");mapMessages.InfoMessage.classList.remove("hidden");mapMessages.InfoMessage.innerHTML=n}function u(n){mapMessages.ProceedButton.classList.add("hidden");mapMessages.InfoMessage.classList.add("error");mapMessages.InfoMessage.classList.remove("hidden");mapMessages.InfoMessage.innerHTML=n}return(this instanceof UiHelper)?(this.SetMapValidationMessage=function(i,r,u){$("#LocationIsValid").val(u);n(r,u);t(i,u)},this.SetMapMessageForLocationOutsideOfBoundary=function(n){r(n)},this.ClearMapMessage=function(){mapMessages.InfoMessage.classList.add("hidden");mapMessages.InfoMessage.classList.remove("error");mapMessages.InfoMessage.innerHTML=null;mapMessages.ProceedButton.classList.add("hidden");mapMessages.DisplayedAddressSection.classList.remove("valid");mapMessages.DisplayedAddressSection.classList.add("hidden")},this.ResetRuralAddressFields=function(){$("input[name='IsRural'][value='False']").prop("checked",!0);$("#RuralAddress").val(null);$("#Municipality").val(null)},this.ResetSelectLocationSection=function(){$("#selectLocationSection").hide();$("input[name='IsIncidentLocationKnown']:checked").prop("checked",!1);$(".location-question").hide()},this.ShowMapUiForCivicAddressing=function(){$("#searchContainer").removeClass("hidden");$("#civicAddressInstructions").removeClass("hidden");$("#ruralAddressInstructions").addClass("hidden")},this.ShowMapUiForRuralAddressing=function(){$("#searchContainer").addClass("hidden");$("#civicAddressInstructions").addClass("hidden");$("#ruralAddressInstructions").removeClass("hidden")},this.ScrollDownToMapAndFocusOnMapSearchInput=function(){var n=$(".location-question:visible");IsMobile()===!1&&TryToFocusFieldOnElement($("#mapSearchInput"),500);ScrollToElement(n,400)},this.ClearMap=function(n){$("#mapSearchInput").val(null);GoogleMapsHelper().ClearMapMarkers(n);UiHelper().ClearMapMessage();UtilityHelper().ClearLocationFields()},this):new UiHelper}function UtilityHelper(){return(this instanceof UtilityHelper)?(this.ComputeDistanceBetweenPoints=function(n,t){return Math.sqrt(Math.pow(t.lat-n.lat,2)+Math.pow(t.lng-n.lng,2))},this.IsThereCommonValueBetweenArrays=function(n,t){return n.some(function(n){return t.indexOf(n)!=-1})?!0:!1},this.CleanSubpremiseString=function(n){return["Unit ","#","Suite "].forEach(function(t){n=n.replace(t,"")}),n},this.GetAddressComponentValueByType=function(n,t,i){var r,u;for(i=typeof i!="undefined"?i:"long_name",r=0;r<n.length;r++)for(u=0;u<n[r].types.length;u++)if(n[r].types[u]===t)return n[r][i];return""},this.GetCity=function(n,t){var r=this.GetAddressComponentValueByType(n,"locality",t),i;return r!==""?r:(i=this.GetAddressComponentValueByType(n,"administrative_area_level_3",t),i!==""?i:void 0)},this.SetLocationFields=function(n,t){var i=$("#locationFieldsSection");i.find("[name=FormattedAddress]").val(n.formatted_address);i.find("[name=PrimeAddress]").val(new PlaceService(n).GeneratePrimeAddress(n));i.find("[name=GoogleMapsPlaceId]").val(n.place_id);i.find("[name=City]").val(this.GetCity(n.address_components));i.find("[name=Suite]").val(this.CleanSubpremiseString(this.GetAddressComponentValueByType(n.address_components,"subpremise")));i.find("[name=Latitude]").val(n.geometry.location.lat);i.find("[name=Longitude]").val(n.geometry.location.lng);i.find("[name=Province]").val(this.GetAddressComponentValueByType(n.address_components,"administrative_area_level_1"));i.find("[name=ProvinceCode]").val(this.GetAddressComponentValueByType(n.address_components,"administrative_area_level_1","short_name"));i.find("[name=PostalCode]").val(this.GetAddressComponentValueByType(n.address_components,"postal_code"));i.find("[name=Country]").val(this.GetAddressComponentValueByType(n.address_components,"country"));$("#DetachmentId").val(t)},this.ClearCorrectedLocationFields=function(){$("#IsLocationAddressCorrected").val(!1);$("#correctedLocationFields input").val(null)},this.ClearLocationFields=function(){$("#locationFieldsSection").find("input").val(null)},this.DisableLocationFields=function(){$("#locationFieldsSection").find("input").prop("disabled",!0)},this.EnableLocationFields=function(){$("#locationFieldsSection").find("input").prop("disabled",!1)},this.GetGeometryType=function(n){return n.geometry.type},this):new UtilityHelper}function ValidationMessagesHelper(){return(this instanceof ValidationMessagesHelper)?(this.messages=JSON.parse($("#ValidationMessagesJson").text()),this):new ValidationMessagesHelper}function JurisdictionBoundaryService(n,t){function c(n){var t=[],i=[],r=UtilityHelper().GetGeometryType(n);if(r===u)n.geometry.coordinates.forEach(function(n){n.forEach(function(n){t=t.concat(o(n));i=i.concat(e(n))})});else if(r===f)n.geometry.coordinates.forEach(function(n){t=t.concat(o(n));i=i.concat(e(n))});else return;return{maxLongitude:Math.max.apply(this,t),minLongitude:Math.min.apply(this,t),maxLatitude:Math.max.apply(this,i),minLatitude:Math.min.apply(this,i)}}function e(n){return n.map(function(n){return n[h]})}function o(n){return n.map(function(n){return n[s]})}function l(n){if(overlayPolygon=[[0,90],[180,90],[180,-90],[0,-90],[-180,-90],[-180,0],[-180,90],[0,90]],n.geometry.type===u){var t=[];t.push(overlayPolygon);n.geometry.coordinates.forEach(function(n){n.forEach(function(n){t.push(n)})});n.geometry.type=f;n.geometry.coordinates=t}else n.geometry.coordinates.unshift(overlayPolygon)}var i,r;const u="MultiPolygon",f="Polygon",s=0,h=1;i=c(n);this.maxLongitude=i.maxLongitude;this.minLongitude=i.minLongitude;this.maxLatitude=i.maxLatitude;this.minLatitude=i.minLatitude;l(n);mapObjects.Features=t.data.addGeoJson(n);t.data.setStyle({strokeColor:"red",strokeOpacity:.8,strokeWeight:3,fillColor:"gray",fillOpacity:.5,clickable:!1});r=[];t.data.forEach(function(n){n.getGeometry().getArray().forEach(function(n){r.push(n.getArray())})});this.polygon=new google.maps.Polygon({paths:r})}function LocationValidationService(n){function i(n,t){var i={Valid:!1,Message:null,FormattedAddress:null,DetachmentIdOfLocation:null},r=LocationValidationHelper().IsLocationTypeValid(n),u=LocationValidationHelper().IsGeometryTypeValid(n),f;return f=t!==null?!0:!1,i.DetachmentIdOfLocation=t,r===!0&&u===!0&&f===!0?(i.Message=ValidationMessagesHelper().messages.Valid,i.Valid=!0):i.Message=r===!1&&u===!0&&f===!0?ValidationMessagesHelper().messages.NoStreetAddressOrIntersection:r===!0&&u===!0&&f===!1?ValidationMessagesHelper().messages.OutsideOfJurisdiction:r===!0&&u===!1?ValidationMessagesHelper().messages.NotValidGeometry:ValidationMessagesHelper().messages.NoAddressAndOutsideOfJurisdiction,i.FormattedAddress=n.formatted_address,i}var t=mapConfigs.ValidateLocationUsingOnlyServer;this.ValidatePlace=function(r){var f=JurisdictionBoundaryHelper().SearchForDetachmentFromLatLng(new google.maps.LatLng(r.geometry.location),n,t),u=i(r,f.id),e=null;f.isRcmp===!1?(u.Message=f.htmlMessage,u.Valid=!1):e=JurisdictionBoundaryHelper().GetMessageIfLocationIsInAnotherDetachment(mapConfigs.IsSearchingByDivision,u.DetachmentIdOfLocation,mapConfigs.DetachmentBoundaryId);UiHelper().SetMapValidationMessage(u.Message,u.FormattedAddress,u.Valid);UtilityHelper().SetLocationFields(r,u.DetachmentIdOfLocation);UtilityHelper().ClearCorrectedLocationFields();e!=null&&UiHelper().SetMapMessageForLocationOutsideOfBoundary(e)}}function PlaceService(n){this.IsStreetAddressOrIntersection=function(){return UtilityHelper().IsThereCommonValueBetweenArrays(n.types,["street_address","intersection"])};this.HasStreetNumber=function(){return UtilityHelper().GetAddressComponentValueByType(n.address_components,"street_number")!==""};this.IsPoiWithFormattedAddress=function(){if(n.types.indexOf("point_of_interest")!=-1)if(/\d/.test(n.formatted_address.split(",")[0]))return!0;return!1};this.isParkWithName=function(){return UtilityHelper().IsThereCommonValueBetweenArrays(n.types,["park","natural_feature"])&&(UtilityHelper().GetAddressComponentValueByType(n.address_components,"natural_feature")!==""||UtilityHelper().GetAddressComponentValueByType(n.address_components,"park")!=="")?!0:!1};this.GeneratePrimeAddress=function(){var t=n.address_components;return n.types.indexOf("intersection")!=-1?UtilityHelper().GetAddressComponentValueByType(t,"intersection","short_name").replace("&","/"):n.types.indexOf("street_address")!=-1?UtilityHelper().GetAddressComponentValueByType(t,"street_number","short_name")+" "+UtilityHelper().GetAddressComponentValueByType(t,"route","short_name"):UtilityHelper().GetAddressComponentValueByType(t,"park")!==""?UtilityHelper().GetAddressComponentValueByType(t,"park","short_name"):UtilityHelper().GetAddressComponentValueByType(t,"natural_feature")!==""?UtilityHelper().GetAddressComponentValueByType(t,"natural_feature","short_name"):UtilityHelper().GetAddressComponentValueByType(t,"street_number")!==""?UtilityHelper().GetAddressComponentValueByType(t,"street_number","short_name")+" "+UtilityHelper().GetAddressComponentValueByType(t,"route","short_name"):this.IsPoiWithFormattedAddress(n)?n.formatted_address.split(",")[0]:null};this.IsValidGeometryType=function(){return["ROOFTOP","GEOMETRIC_CENTER","APPROXIMATE","RANGE_INTERPOLATED"].indexOf(n.geometry.location_type)!=-1?!0:!1}}function UiService(n,t,i){function e(u){var f;mapObjects.MapSearchListener=u.addListener("places_changed",function(){var f,e;if($("#LocationTypeSelector").val("searchMapBtn"),f=u.getPlaces(),GoogleMapsHelper().ClearMapMarkers(n),f.length===0){UiHelper().SetMapValidationMessage(ValidationMessagesHelper().messages.NotFound,"",!1);return}f.length>1?UiHelper().SetMapValidationMessage(ValidationMessagesHelper().messages.NarrowChoice,"",!1):(e=GeocodeHelper().ByPlaceId(f[0].place_id),new LocationValidationService(t).ValidatePlace(e));GoogleMapsHelper().PlaceMapMarkers(f,n,i);n.forEach(function(t){f.length>1&&(n.forEach(function(n){GoogleMapsHelper().SetMarkerLabelToBlank(n)}),t.addListener("click",function(){n.forEach(function(n){GoogleMapsHelper().SetMarkerLabelToBlank(n)});t.setLabel(null);r(t)}))})});$(document).on("click",".narrow-search",function(){r(f)})}function r(n){i.setZoom(16);i.setCenter(n.getPosition());var r=GeocodeHelper().ByPlaceId(n.placeId);new LocationValidationService(t).ValidatePlace(r)}function o(){mapObjects.CivicMapClickListener=i.addListener("click",function(t){$("#LocationTypeSelector").val("clickMapBtn");$("#mapSearchInput").val(null);var r=null;if(r=t.placeId?GeocodeHelper().ByPlaceId(t.placeId):GeocodeHelper().ByLatLng(t.latLng),r!==null&&LocationValidationHelper().IsLocationTypeAndGeometryValid(r)==!1&&(r=null),t.stop(),r===null){GoogleMapsHelper().ClearMapMarkers(n,t.latLng);GoogleMapsHelper().PlaceMarkerForNoResults(t.latLng,i,n);UiHelper().SetMapValidationMessage(ValidationMessagesHelper().messages.ClickedLocationHasNoAddress,"",!1);return}GoogleMapsHelper().ClearMapMarkers(n,t.latLng);GoogleMapsHelper().PlaceMarkerAndPanTo(t.latLng,i,n);u(t.latLng,r);mapObjects.NearestGeocodedPlace=r});$(document).on("click",".use-nearest",function(){h()})}function s(){mapObjects.RuralMapClickListener=i.addListener("click",function(n){n.stop();f(n.latLng)})}function u(n,i){var r={lat:n.lat(),lng:n.lng()},u={lat:i.geometry.location.lat,lng:i.geometry.location.lng},f=UtilityHelper().ComputeDistanceBetweenPoints(r,u);f>MappingConstants().MAX_DISTANCE_TO_SUGGEST_OTHER_LOCATION?UiHelper().SetMapValidationMessage(ValidationMessagesHelper().messages.ClickedLocationHasNoAddressAndNearestAddressIs+"<br/>"+GoogleMapsHelper().GenerateNearestPlaceInfoContent(i),"",!1):new LocationValidationService(t).ValidatePlace(i)}function h(){GoogleMapsHelper().ClearMapMarkers(n);GoogleMapsHelper().PlaceMarkerAndPanTo(mapObjects.NearestGeocodedPlace.geometry.location,i,n);new LocationValidationService(t).ValidatePlace(mapObjects.NearestGeocodedPlace)}function f(r){var o;GoogleMapsHelper().ClearMapMarkers(n);GoogleMapsHelper().PlaceMarkerAndPanTo(r,i,n);var f=JurisdictionBoundaryHelper().SearchForDetachmentFromLatLng(new google.maps.LatLng(r),t,mapConfigs.ValidateLocationUsingOnlyServer),e=f.id,s=f.isRcmp,u=$("#locationFieldsSection");s===!1?(GoogleMapsHelper().ClearMapMarkers(n),GoogleMapsHelper().PlaceMarkerAndPanTo(r,i,n),u.find("[name=Latitude]").val(null),u.find("[name=Longitude]").val(null),UiHelper().SetMapValidationMessage(f.htmlMessage,null,!1),mapMessages.DisplayedAddressSection.classList.add("hidden")):(e!==null?($("#DetachmentId").val(e),u.find("[name=Latitude]").val(r.lat()),u.find("[name=Longitude]").val(r.lng()),UiHelper().SetMapValidationMessage(null,null,!0)):(u.find("[name=Latitude]").val(null),u.find("[name=Longitude]").val(null),UiHelper().SetMapValidationMessage(ValidationMessagesHelper().messages.OutsideOfJurisdiction,null,!1)),mapMessages.DisplayedAddressSection.classList.add("hidden"),o=JurisdictionBoundaryHelper().GetMessageIfLocationIsInAnotherDetachment(mapConfigs.IsSearchingByDivision,e,mapConfigs.DetachmentBoundaryId),o!=null&&UiHelper().SetMapMessageForLocationOutsideOfBoundary(inAnotherDetachmentMessage))}this.SetupMapForCivicAddressing=function(n){e(n);o()};this.SetupMapForRuralAddressing=function(){s()};this.SetupMyLocationButton=function(t){i.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(t);t.addEventListener("click",function(t){t.preventDefault();navigator.geolocation&&navigator.geolocation.getCurrentPosition(function(t){var r=new google.maps.LatLng(t.coords.latitude,t.coords.longitude),e=GoogleMapsHelper().PlaceMyLocationMarker(r,i,n);mapConfigs.LocationSelectionMode===MappingConstants().CIVIC_ADDRESS_SELECTION?e.addListener("click",function(){var t=GeocodeHelper().ByLatLng(r);if(t!==null&&LocationValidationHelper().IsLocationTypeAndGeometryValid(t)===!1&&(t=null),t===null){GoogleMapsHelper().ClearMapMarkers(n);GoogleMapsHelper().PlaceMarkerForNoResults(r,i,n);UiHelper().SetMapValidationMessage(ValidationMessagesHelper().messages.ClickedLocationHasNoAddress,"",!1);return}GoogleMapsHelper().ClearMapMarkers(n);GoogleMapsHelper().PlaceMarkerAndPanTo(r,i,n);u(r,t);mapObjects.NearestGeocodedPlace=t}):mapConfigs.LocationSelectionMode===MappingConstants().RURAL_ADDRESS_SELECTION&&e.addListener("click",function(){f(r)})})})}}function InitLocationFields(){$("input[name='IsRural']").change(function(){var n=$(this).val();n==="True"&&$("#DetachmentId").val(mapConfigs.DetachmentBoundaryId);LocationTypeSelectionHelper().ToggleLocationSelectionType(n)});$("#RuralAddress").on("keyup",function(){LocationTypeSelectionHelper().ValidateRuralAddressFields()});$("#Municipality").on("keyup",function(){LocationTypeSelectionHelper().ValidateRuralAddressFields()});$("input[name='IsIncidentLocationKnown']").click(function(){var n=$(this).val(),t=$(this).closest("section").next("section"),i;t.is(":visible")?n==="True"?$("#unknown-location-question").fadeOut("fast",function(){$("#known-location-question").fadeIn("fast")}):$("#known-location-question").fadeOut("fast",function(){$("#unknown-location-question").fadeIn("fast")}):(n==="True"?$("#known-location-question").show():$("#unknown-location-question").show(),t.fadeIn("fast"));i=$("input[name='IsRural']:checked").val();LocationTypeSelectionHelper().ToggleLocationSelectionType(i);$("#next").on("click",function(){var r=$("#Municipality").val(),u=r+", "+$("#SelectedProvinceName").val(),n=GeocodeHelper().ByAddress(u),t,i;($("#map-section").removeClass("hidden"),ScrollToElement($("#map-section"),400),n!==null)&&(t=new google.maps.LatLng(n.geometry.location),i=GoogleMapsHelper().AreCoordinatesInsidePolygon(t,mapObjects.Polygon),i===!0&&(mapObjects.Map.panTo(n.geometry.location),mapObjects.Map.setZoom(12)))})})}function InitMap(){var i=JurisdictionBoundaryHelper().GetJurisdictionBoundaryJson($("#IsSearchingByDivision").val(),mapConfigs).GeoJson,n,t;mapObjects.Map=new google.maps.Map(document.getElementById("map"),{gestureHandling:"greedy",fullscreenControl:!1,streetViewControl:!1,draggableCursor:"default",draggingCursor:"move",clickableIcons:!0,mapTypeControl:!1});mapObjects.SearchBox=new google.maps.places.SearchBox(document.getElementById("mapSearchInput"));mapMessages.MapMessageSection=document.getElementById("mapMessageSection");mapMessages.DisplayedAddress=document.getElementById("displayedAddress");mapMessages.DisplayedAddressSection=document.getElementById("displayedAddressSection");mapMessages.InfoMessage=document.getElementById("infoMessage");mapMessages.ProceedButton=document.getElementById("proceed");document.getElementById("mapInterface").removeChild(mapMessages.MapMessageSection);mapObjects.Markers=[];GoogleMapsHelper().SetupBoundaries(i);GoogleMapsHelper().ZoomMapToFitBoundary();n=new UiService(mapObjects.Markers,mapObjects.Polygon,mapObjects.Map);n.SetupMapForCivicAddressing(mapObjects.SearchBox);$("#mapInterface").removeClass("hidden");t=document.getElementById("myLocationButton");n.SetupMyLocationButton(t);google.maps.event.addListenerOnce(mapObjects.Map,"tilesloaded",function(){$(".loading-icon").addClass("visibility-hidden");t.classList.remove("hidden");UiHelper().ScrollDownToMapAndFocusOnMapSearchInput();mapConfigs.IsMapLoaded=!0});$("input[name='IsIncidentLocationKnown'").click(function(){UiHelper().ScrollDownToMapAndFocusOnMapSearchInput();$("#map-section").hasClass("hidden")===!1&&GoogleMapsHelper().ZoomMapToFitBoundary()})}function ProcessIncidentLocationCorrection(n){var u,s,h,a;if(n===""){(new FormHelper).ResetValidationErrors();var f=mapObjects.Polygon,t=mapObjects.Markers,c=mapObjects.Map,i=AddressCorrectionHelper().GeocodeCorrectedLocation(),e=JurisdictionBoundaryHelper().SearchForDetachmentFromLatLng(new google.maps.LatLng(i.geometry.location),f,mapConfigs.ValidateLocationUsingOnlyServer),r=e.id,o=i.geometry.location,v=$("#DetachmentId").val(),l=LocationValidationHelper().IsLocationTypeAndGeometryValid(i);if(l===!0)new LocationValidationService(f).ValidatePlace(i);else{if(u=AddressCorrectionHelper().GeocodeCorrectedLocationByCity(),u===null){(new FormHelper).UpdateValidationSummary(ValidationMessagesHelper().messages.CityNotFound);return}if(s=JurisdictionBoundaryHelper().SearchForDetachmentFromLatLng(new google.maps.LatLng(u.geometry.location),f,mapConfigs.ValidateLocationUsingOnlyServer).id,s===null){(new FormHelper).UpdateValidationSummary(ValidationMessagesHelper().messages.OutsideOfJurisdiction);return}r=s;o=u.geometry.location;UiHelper().SetMapValidationMessage(ValidationMessagesHelper().messages.Valid,AddressCorrectionHelper().GetFormattedAddressOfCorrectedLocation(),!0)}e.isRcmp===!1?(UiHelper().SetMapValidationMessage(e.htmlMessage,AddressCorrectionHelper().GetFormattedAddressOfCorrectedLocation(),!1),GoogleMapsHelper().ClearMapMarkers(t),GoogleMapsHelper().PlaceMarkerAndPanTo(o,c,t)):(h=parseInt(v)===parseInt(r),h===!1&&$("#DetachmentId").val(r),(h===!1||l===!0)&&(GoogleMapsHelper().ClearMapMarkers(t),GoogleMapsHelper().PlaceMarkerAndPanTo(o,c,t)),LocationValidationHelper().IsLocationOutsideOfBoundaryInAnotherDetachment(r)===!0&&(a=ValidationMessagesHelper().messages.InAnotherDetachment.replace("{detachment}",mapMessages.DetachmentName),UiHelper().SetMapMessageForLocationOutsideOfBoundary(a)));CloseFormModal();AddressCorrectionHelper().SetCorrectedLocationFields();$("#displayedAddress").html(AddressCorrectionHelper().GetFormattedAddressOfCorrectedLocation())}else $("#formModalBody").html(n),InitAjaxForLocationCorrectionForm()}function InitLocationCorrectionForm(){AddressCorrectionHelper().SetValuesForLocationCorrectionForm(GetIncidentLocationFromHiddenLocationFieldSection());InitAjaxForLocationCorrectionForm()}function GetIncidentLocationFromHiddenLocationFieldSection(){var i=$("#IsLocationAddressCorrected").val(),n,t;return i==="true"?t={Address:$("#CorrectedAddress").val(),Suite:$("#CorrectedSuite").val(),City:$("#CorrectedCity").val(),PostalCode:$("#CorrectedPostalCode").val()}:(n=$("#locationFieldsSection"),t={Address:n.find("input[name=PrimeAddress]").val(),Suite:n.find("[name=Suite]").val(),City:n.find("[name=City]").val(),PostalCode:n.find("[name=PostalCode]").val()}),t}function InitAjaxForLocationCorrectionForm(){$("#locationCorrectionForm").on("submit",function(n){n.preventDefault();$.ajax({url:$(this).data("url"),type:"POST",data:$(this).serialize(),async:!1,success:function(n){ProcessIncidentLocationCorrection(n)}})})}var isMobile;class DetachmentDto{constructor(n,t,i){this.id=n;this.isRcmp=t;this.htmlMessage=i}}var mapObjects={Map:null,SearchBox:null,Markers:null,Polygon:null,CivicMapClickListener:null,MapSearchListener:null,Features:null,NearestGeocodedPlace:null,Bounds:null,RuralMapClickListener:null},mapMessages={DisplayedAddressSection:null,DisplayedAddress:null,InfoMessage:null,MapMessageSection:null,DetachmentName:null,ProceedButton:null},mapConfigs={DetachmentBoundaryId:null,IsRuralAddressingEnabled:!1,IsSearchingByDivision:null,ValidateLocationUsingOnlyServer:!1,LocationSelectionMode:null,IsMapLoaded:!1};isMobile=IsMobile();$("#clearIcon").on("click",function(){$("#mapSearchInput").val(null);$("#mapSearchInput").focus()});$("#searchIcon").on("click",function(){var n=document.getElementById("mapSearchInput");google.maps.event.trigger(n,"focus",{});google.maps.event.trigger(n,"keydown",{keyCode:13})});$("#mapSearchInput").keypress(function(n){if(n.which===13)return isMobile&&$(this).blur(),!1});$("#mapSearchInput").on("focus",function(){ScrollToElement($(this),500,0)});$("input[name='IsIncidentLocationKnown']").on("change",function(){mapConfigs.IsMapLoaded===!1&&$(".loading-icon").removeClass("visibility-hidden")})