angular.module("app",["ngSanitize","ui.router","esri.map","ngMaterial","blockUI"]);angular.module("app").config(["mapConfig","mapQueryProvider",function(n,t){t.init(n.baseUrl,n.groupId)}]).config(["blockUIConfig",function(n){n.autoInjectBodyBlock=!1;n.template='<md-progress-circular md-mode="indeterminate" md-diameter="20"><\/md-progress-circular>'}]).run(["mapQuery",function(n){n.load()}]);angular.module("app").constant("searchConfig",{serviceUrl:"//api.canterburymaps.govt.nz/viewerwebservices/Search.ashx",coreLayerUrl:"//gis.ecan.govt.nz/arcgis/rest/services/Public/Region_Base/MapServer/6",urbanZoneLayerUrl:"//gis.ecan.govt.nz/arcgis/rest/services/Beta/PropertySearch/MapServer/10",maxResults:10,filterClasses:"VAL,PAR,FID",filterGeoTags:"",searchClasses:[],spatialReference:2193,geolocationTimeout:3e4,geolocationAccuracyThreshold:20}).constant("mapConfig",{baseUrl:"//www.arcgis.com/sharing/rest/",baseMapId:"17ea68e0628140da919d16e49e878e79",groupId:"936041e3d7504ceb9c980dea635da0d2",ruralTagName:"Rural",urbanTagName:"Urban",isInternal:!1,proxyUrl:"proxy.ashx",geometryServiceUrl:"//gis.ecan.govt.nz/arcgis/rest/services/Utilities/Geometry/GeometryServer",locationServiceUrl:"//gis.ecan.govt.nz/arcgis/rest/services/Locators/Canterbury_Composite_Locator/GeocodeServer/reverseGeocode",mapExportURLmobile:"//gis.ecan.govt.nz/arcgis/rest/services/Imagery/MapServer/export?bbox={xmin},{ymin},{xmax},{ymax}&bboxSR=&layers=&layerDefs=&size=400,200&imageSR=&format=png&transparent=false&dpi=&time=&layerTimeOptions=&dynamicLayers=&gdbVersion=&mapScale=&rotation=&f=image",layerGroups:[{groupName:"Land Zoning",layers:["Green Zone TC1","Green Zone TC2","Green Zone TC3","N/A - Port Hills & Banks Peninsula","N/A - Rural & Unmapped","N/A - Urban Nonresidential","Red Zone","District Plan","Clean Air Zone","CWMS"]},{groupName:"Schools",layers:["Schools","School Zones"]},{groupName:"Environmental",layers:["Rainfall","River Flow","Soils","Wetlands","Water quality"]},{groupName:"Consents",layers:["Resource Consents","Wells"]},{groupName:"Transport",layers:["Bus Stops","Bus Routes","Car Parks"]},{groupName:"Local Attractions",layers:["Parks","Museums","Art Galleries","Bike Tracks","Walking Tracks","Camp Sites"]},{groupName:"Council Services",layers:["Rubbish and Recycling","Service Centres","Libraries","Community Centres","Recreation Centres","Information Centres"]},{groupName:"Photos",layers:["Historic Aerials","Flood (ground)","Flood (oblique)","Flood (vertical)"]},{groupName:"Hazards",layers:["Tsunami Evacuation"]}],layersDisplaynoGeo:["//gis.ecan.govt.nz/arcgis/rest/services/Public/PlanningZones/MapServer/10","//gis.ecan.govt.nz/arcgis/rest/services/Public/Canterbury_Maps/MapServer/27","//gis.ecan.govt.nz/arcgis/rest/services/Beta/PropertySearch/MapServer/8","//gis.ecan.govt.nz/arcgis/rest/services/Beta/PropertySearch/MapServer/7","//gis.ecan.govt.nz/arcgis/rest/services/Public/Canterbury_Air_Regional_Plan/FeatureServer/1","//gis.ecan.govt.nz/arcgis/rest/services/Public/LURP/MapServer/8","//gis.ecan.govt.nz/arcgis/rest/services/Public/Canterbury_Maps/MapServer/27","//gis.ecan.govt.nz/arcgis/rest/services/Public/Geological_Hazards/MapServer/4"],layersQueryDistance:[{url:"//gis.ecan.govt.nz/arcgis/rest/services/Public/Canterbury_Maps/MapServer/26",distance:"close"},{url:"//gis.ecan.govt.nz/arcgis/rest/services/Public/Bus_Routes/MapServer/2",distance:"near"},{url:"//gis.ecan.govt.nz/arcgis/rest/services/Beta/PropertySearch/MapServer/2",distance:"near"},{url:"//gis.ecan.govt.nz/arcgis/rest/services/Public/Canterbury_Maps/MapServer/26",distance:"smlNegBuffer"},{url:"//gis.ecan.govt.nz/arcgis/rest/services/Public/Education/MapServer/2",distance:"far"},{url:"//gis1.ecan.govt.nz/arcgis/rest/services/Beta/PropertySearch/MapServer/3",distance:"far"},{url:"//gis.ecan.govt.nz/arcgis/rest/services/Public/Canterbury_Maps/MapServer/15",distance:"distant"},{url:"//gis.ecan.govt.nz/arcgis/rest/services/Public/Canterbury_Maps/MapServer/13",distance:"distant"},{url:"//arcgisprod03/arcgis/rest/services/Internal/Industry_Farms/FeatureServer/0",distance:"lgeNegBuffer"},{url:"//gis.ecan.govt.nz/arcgis/rest/services/Beta/PropertySearch/MapServer/8",distance:"_2mNegBuffer"}]}).constant("layerConstants",{queryDistance:{on:0,close:200,near:1e3,far:3e3,distant:5e3,lgeNegBuffer:-25,smlNegBuffer:-10,_2mNegBuffer:-2}});angular.module("app").controller("AppController",["$state",function(n){var t=this;t.$state=n}]);angular.module("app").config(["$urlRouterProvider",function(n){n.otherwise("/")}]).config(["$stateProvider",function(n){var t=function(){var n=!1;return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(n=!0)}(navigator.userAgent||navigator.vendor||window.opera),n}();n.state("root",{url:"/?propertyAddress",templateUrl:"/app/pages/root.page.html",controller:"RootPageController",controllerAs:"ctrl",params:{isMobile:t}}).state("root.property",{url:"property",params:{address:undefined,propertyAddress:undefined},views:{"@":{templateUrl:t?"/app/pages/mobile/propertyPage.html":"/app/pages/propertyPage.html",controller:"PropertyPageController",controllerAs:"ctrl"}}})}]);angular.module("app").component("coreInfoInternal",{templateUrl:"/app/components/coreInfo/core-info-internal.component.html",bindings:{property:"<"},controller:["$filter","mapConfig","$stateParams",function(n,t,i){function u(t){return n("hectares")(t)}function f(n){n.property&&r.property&&(r.icon=r.property.isRural?"filter_hdr":"business",r.iconText=r.property.isRural?"Rural":"Urban",e())}function e(){var n=t.mapExportURLmobile;n=n.replace("{xmin}",r.property.point.x-25);n=n.replace("{ymin}",r.property.point.y-25);n=n.replace("{xmax}",r.property.point.x+25);n=n.replace("{ymax}",r.property.point.y+25);r.mapImageSrc=n}var r=this;r.$onChanges=f;r.formatArea=u;r.showFeatures=!0;r.mapImageSrc=undefined;r.isMobile=i.isMobile;r.toggleShowFeatures=function(){r.showFeatures=!r.showFeatures}}]});angular.module("app").component("coreInfo",{templateUrl:"/app/components/coreInfo/core-info.component.html",bindings:{property:"<"},controller:["$filter","mapConfig","$stateParams",function(n,t,i){function u(t){return n("hectares")(t)}function f(n){n.property&&r.property&&(r.icon=r.property.isRural?"filter_hdr":"business",r.iconText=r.property.isRural?"Rural":"Urban",e())}function e(){var n=t.mapExportURLmobile;n=n.replace("{xmin}",r.property.point.x-25);n=n.replace("{ymin}",r.property.point.y-25);n=n.replace("{xmax}",r.property.point.x+25);n=n.replace("{ymax}",r.property.point.y+25);r.mapImageSrc=n}var r=this;r.$onChanges=f;r.formatArea=u;r.showFeatures=!0;r.mapImageSrc=undefined;r.isMobile=i.isMobile;r.toggleShowFeatures=function(){r.showFeatures=!r.showFeatures}}]});angular.module("app").component("displayAttribute",{templateUrl:"/app/components/displayAttribute/display-attribute.component.html",bindings:{feature:"<",label:"@?",attributeName:"@name",onFormat:"&?onFormat"},controller:[function(){function t(t){t.feature&&t.feature.currentValue&&(n.label=n.label||n.attributeName,n.value=t.feature.currentValue.attributes[n.attributeName],n.onFormat&&(n.value=n.onFormat({value:n.value})))}var n=this;n.label=undefined;n.value=undefined;n.$onChanges=t}]});angular.module("app").component("layerInfoAttribute",{templateUrl:"/app/components/layerInfo/layer-info-attribute.component.html",bindings:{layer:"<",feature:"<",onFeatureSelected:"&?"},controller:["featureSelectionEventHub",function(n){function r(){_deregisterFeatureSelectionEventHub=n.registerCallback(e)}function u(){_deregisterFeatureSelectionEventHub()}function f(){if(t.layer.noGeo!==!0){if(!t.onFeatureSelected)return;t.onFeatureSelected({feature:t.feature})}}function e(n){t.highlighted=t.feature.id===n.id}var i=4,t=this;t.highlightFeature=f;t.itemsToShow=i;t.highlighted=!1;t.$onInit=r;t.$onDestroy=u;t.showLess=function(){t.itemsToShow=i};t.showMore=function(){t.itemsToShow=999};t.showHideVisible=function(){return t.feature&&t.feature.displayFields.length>i}}]});angular.module("app").component("layerInfoAttributes",{templateUrl:"/app/components/layerInfo/layer-info-attributes.component.html",bindings:{layer:"<",features:"<",onFeatureSelected:"&?"},controller:["featureParser","esriTypes",function(n,t){function r(n){t.onReady(function(t){n.features&&n.features.currentValue!==n.features.previousValue&&(i.features=t.coreLang.clone(i.features),u(i.features))})}function u(t){i.parsedFeatures=n.parse(i.layer,t)}function f(n){if(i.onFeatureSelected)i.onFeatureSelected({feature:n})}var i=this;i.$onChanges=r;i.highlightFeature=f;i.itemsToShow=3}]});angular.module("app").component("layerInfoGrouping",{templateUrl:"/app/components/layerInfo/layer-info-grouping.component.html",bindings:{layers:"<",property:"<",isMobile:"<"},controller:["esriTypes",function(n){function r(r){n.onReady(function(n){r.property&&r.property.currentValue!==r.property.previousValue&&(i=[],t.featureCount=0,t.property=n.coreLang.clone(t.property),t.showFeatures=!1);r.layers&&r.layers.currentValue!==r.layers.previousValue&&u(t.layers)})}function u(n){n&&(t.title=n[0].$grouping);t.layers=n}function f(n,r){var u=_.find(i,{layerId:n});u?u.featureCount=r:i.push({layerId:n,featureCount:r});t.featureCount=0;_.each(i,function(n){t.featureCount+=n.featureCount})}function e(){return t.featureCount>9?"9+":t.featureCount}var t=this,i;t.title=undefined;t.$onChanges=r;t.showFeatures=!1;t.onFeatureCountUpdated=f;t.featureCount=0;t.featureCountDescription=e;i=[];t.toggleShowFeatures=function(){t.showFeatures=!t.showFeatures}}]});angular.module("app").component("layerInfoHtml",{templateUrl:"/app/components/layerInfo/layer-info-html.component.html",bindings:{layer:"<",features:"<",onFeatureSelected:"&?"},controller:["stringTemplateService",function(n){function r(n){n.layer&&u(n.layer.currentValue);n.features&&f(n.features.currentValue)}function u(t){var r=t.popupInfo?t.popupInfo.description:"";i=n.interpolate(r)}function f(n){t.parsedFeatures.length=0;t.parsedFeatures=_.map(n,function(n){return{id:n.uid,html:i(n.attributes)}})}function e(n){if(t.layer.noGeo!=!0){var i=_.find(t.features,{uid:n.id});if(!i||!t.onFeatureSelected)return;t.onFeatureSelected({feature:i})}}var t=this,i;t.parsedFeatures=[];t.highlightFeature=e;t.$onChanges=r}]});angular.module("app").component("layerInfo",{templateUrl:"/app/components/layerInfo/layer-info.component.html",bindings:{layer:"<",property:"<",isMobile:"<",onFeatureCountUpdated:"&"},controller:["$log","featureSelectionEventHub","blockUI","esriTypes",function(n,t,i,r){function y(){h=t.registerCallback(g)}function p(){h()}function w(n){r.onReady(function(t){n.property&&n.property.currentValue!==n.property.previousValue&&(u.property=t.coreLang.clone(u.property),b());n.layer&&n.layer.currentValue!==n.layer.previousValue&&k(u.layer)})}function b(){a();f.length=0;i.start();u.layer.queryFeaturesByGeometryAsync(u.property.coreFeature.geometry).then(function(n){f=n;u.hasFeatures=n&&n.length>0;u.hasFeatures&&(u.featureLengthDescription=n.length>9?"9+":n.length);u.onFeatureCountUpdated({layerId:u.layer.id,featureCount:n.length});s()}).catch(function(t){n.error(t)}).finally(function(){i.stop()})}function k(n){u.title=n.title;u.featureTemplateType=d(n);n.popupInfo&&n.popupInfo.mediaInfos&&n.popupInfo.mediaInfos.length>0&&(u.imageUrl=n.popupInfo.mediaInfos[0].value.sourceURL)}function d(n){return n.popupInfo?n.popupInfo.description?v:c:c}function l(){u.layer.showInMap=!0;u.showingLayer=!0}function a(){u.layer.showInMap=!1;u.showingLayer=!1}function g(){}function nt(n){l();t.notify(n,u.layer)}function s(){u.features=_.take(f,o)}var e=3,u=this;u.title=undefined;u.imageUrl=undefined;u.features=[];u.hasFeatures=!1;u.featureType=undefined;u.$onInit=y;u.$onDestoy=p;u.$onChanges=w;u.selectFeature=nt;u.showLayerInMap=l;u.hideLayerInMap=a;u.showingLayer=!1;u.showFeatures=!0;var h,v="html",c="attributeList",o=e,f=[];u.toggleShowFeatures=function(){u.showFeatures=!u.showFeatures};u.showLess=function(){o=e;s()};u.showMore=function(){o=999;s()};u.showHideVisible=function(){return u.hasFeatures&&f.length>e}}]});angular.module("app").component("map",{templateUrl:"/app/components/map/map.component.html",bindings:{property:"<",layers:"<"},controller:["$scope","$q","mapConfig","mapQuery","esriTypes","featureSelectionEventHub",function(n,t,i,r,u,f){function it(){u.onReady(function(n){e.map=new n.WebMap({portalItem:{id:i.baseMapId}});ot(e.map);et(e.map);ft(e.map);g=f.registerCallback(yt)})}function rt(n){n.property&&e.property&&ht();n.layers&&e.layers&&ct(n.layers.previousValue)}function ut(){g()}function ft(n){u.onReady(function(t){y=new t.PictureMarkerSymbol({url:"/content/img/icons/location-pin.png",width:"30px",height:"30px",yoffset:"15px"});c=new t.GraphicsLayer;n.add(c)})}function et(n){u.onReady(function(t){p=new t.SimpleFillSymbol({color:[255,0,0,0],style:"none",outline:{color:[255,0,0,.9],width:2,style:"solid"}});h=new t.GraphicsLayer;h.masScale=15e3;n.add(h)})}function ot(n){u.onReady(function(t){w=new t.SimpleMarkerSymbol({style:"circle",color:[255,255,0,.3],size:"50px",outline:{color:[255,255,0,.5],width:3}});b=new t.SimpleFillSymbol({color:[255,255,0,.3],style:"solid",outline:{color:[255,255,0,.5],width:2,style:"solid"}});k=new t.SimpleLineSymbol({color:[255,255,0,.4],width:"10px",style:"solid"});s=new t.GraphicsLayer({opacity:1});s.masScale=15e3;n.add(s)})}function st(){return v.promise}function ht(){st().then(function(){o.center=e.property.point;s.removeAll();at();vt()})}function ct(t){lt();_.forEach(t,function(n){tt(n,!1)});_.forEach(e.layers,function(t){var i=n.$watch(function(){return t.showInMap},function(n){tt(t,n)});a.push(i)})}function lt(){_.forEach(a,function(n){n()});a.length=0}function at(){u.onReady(function(n){c.removeAll();var t=new n.Graphic({geometry:e.property.point,symbol:y,attributes:{address:e.property.address}});c.add(t)})}function vt(){h.removeAll();var n=e.property.coreFeature;n.symbol=p;h.add(n);o.then(function(){o.extent=n.geometry.extent.clone().expand(2)})}function yt(n,t){u.onReady(function(i){if(nt(),n){d=n;l=t;var r=new i.Graphic({geometry:n.geometry,symbol:pt(t)});s.add(r)}})}function pt(n){switch(n.geometryType){case"esriGeometryPolygon":return b;case"esriGeometryPolyline":return k;default:return w}}function nt(){s.removeAll();d=undefined;l=undefined}function wt(n){o=n;o.popupManager.enabled=!1;v.resolve()}function tt(n,t){if(t){if(n.featureLayer.extent){var i=n.featureLayer.extent.union(e.property.coreFeature.geometry.extent).clone().expand(1.5);o.then(function(){o.goTo(i)})}e.map.then(function(){e.map.add(n.featureLayer,2)})}else n.showInMap=!1,e.map.then(function(){e.map.remove(n.featureLayer)}),l&&l.id===n.id&&nt()}var e=this,v,o,y,c,p,h,w,b,k,s,d,l,g,a;e.$onInit=it;e.$onChanges=rt;e.$onDestoy=ut;e.onViewCreated=wt;v=t.defer();a=[]}]});angular.module("app").component("search",{templateUrl:"/app/components/search/search.component.html",bindings:{onPropertySelected:"&?",currentProperty:"<?",isMobile:"<?"},controller:["$log","$q","$mdDialog","searchService","blockUI","locateMeService",function(n,t,i,r,u,f){function h(){}function c(n){n.currentProperty&&n.currentProperty.currentValue&&(e.searchText=e.currentProperty.address)}function o(n){return u.start(),r.searchAsync(n).finally(function(){u.stop()})}function l(n){return n.label}function s(n){if(n&&e.onPropertySelected)e.onPropertySelected({propertyAddress:n})}function a(n){return o(n.address.Street).then(function(n){n&&n.length!==0&&s(n[0])})}function v(){e.isLocatingMe||(e.isLocatingMe=!0,f.locateMeAsync().then(function(n){return a(n)}).catch(function(t){n.error(t);y(t)}).finally(function(){e.isLocatingMe=!1}))}function y(n){var t="Your location not available at this time.";if(n)switch(n){case"TIMEOUT":t="Your accurate location is not available at this time.";break;case"PERMISSION_DENIED":t="Permission is denied to access your current location.";break;case"POSITION_UNAVAILABLE":t="Your location is not available at this time.";break;default:t="The address for your current location is not available."}i.show(i.alert().clickOutsideToClose(!0).title("Location Unavailable").textContent(t).ok("OK"))}var e=this;e.$onInit=h;e.$onChanges=c;e.busy=!1;e.search=o;e.selectItem=s;e.getAddressText=l;e.locateMe=v;e.isLocatingMe=!1}]});angular.module("app").component("showHide",{templateUrl:"/app/components/showHide/show-hide.component.html",bindings:{onShowMore:"&onShowMore",onShowLess:"&onShowLess"},controller:[function(){var n=this;n.label="Show More";n.showMore=!0;n.onClick=function(){n.showMore?(n.label="Show Less",n.onShowMore(),n.showMore=!1):(n.label="Show More",n.onShowLess(),n.showMore=!0)}}]});angular.module("app").directive("autoFocus",[function(){return{restrict:"A",link:function(n,t){var i=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);i||window.setTimeout(function(){t[0].focus()},300)}}}]);angular.module("app").directive("scrollToTop",["$window",function(n){return{restict:"A",link:function(t){t.$on("scrollToTop",function(){n.document.body.scrollTop=0})}}}]);angular.module("app").directive("spinner",function(){return{restrict:"E",template:'<div ng-if="spinnerCtrl.isBusy" class="loading-overlay">                            <div class="spinner">                                <i class="zmdi zmdi-hc-3x zmdi-hc-spin zmdi-settings"><\/i>                            <\/div>                       <\/div>',scope:{isBusy:"="},bindToController:!0,controllerAs:"spinnerCtrl",controller:[function(){}]}});angular.module("app").filter("distance",["$filter",function(n){return function(t){if(!t)return undefined;var i=n("number");return t<1e3?i(t)+"m":i(t/1e3)+"km"}}]);angular.module("app").filter("hectares",["$filter",function(n){return function(t){return t?n("number")(t/1e4)+" ha":undefined}}]);angular.module("app").controller("PropertyPageController",["$scope","$state","$stateParams","$q","mapQuery","searchService","$location","blockUI","$log","$filter","mapConfig",function(n,t,i,r,u,f,e,o,s,h,c){function p(){i.propertyAddress&&y(i.propertyAddress)}function a(n){_.each(n,function(n){n.$grouping="Other";var t=h("filter")(c.layerGroups,{layers:n.title},!0);t.length>0&&(n.$grouping=t[0].groupName)});l.groupedLayers=_.groupBy(n,"$grouping")}function v(n){o.start();f.getPropertyAsync(n).then(function(n){l.property=n;l.currentAddress=n.address;t.go("root.property",{propertyAddress:n.address},{notify:!1,reload:!1,inherit:!0});l.property.isRural?u.getRuralLayersAsync().then(function(n){l.layers=n;a(n)}):u.getUrbanLayersAsync().then(function(n){l.layers=n;a(n)})}).catch(function(n){s.error(n)}).finally(function(){o.stop()})}function y(n){return f.searchAsync(n).then(function(n){v(n[0])})}var l=this;l.onPropertySelected=v;l.onPropertyLabelSet=y;l.currentAddress=undefined;l.isMobile=i.isMobile;l.isInternal=c.isInternal;p()}]);angular.module("app").controller("RootPageController",["$state","$stateParams",function(n,t){function r(){t.address&&(i.address=t.address)}function u(t){n.go("root.property",{propertyAddress:t.label},{inherit:!1})}var i=this;i.onPropertySelected=u;i.isMobile=t.isMobile;r()}]);String.prototype.startsWith||(String.prototype.startsWith=function(n,t){return t=t||0,this.substr(t,n.length)===n});String.prototype.endsWith||(String.prototype.endsWith=function(n,t){return t<this.length?t|=0:t=this.length,this.substr(t-n.length,n.length)===n});angular.module("app").factory("esriTypes",["$q","mapConfig","esriLoader",function(n,t,i){function u(n){return r.promise.then(n)}var r=n.defer();return i.require(["esri/tasks/QueryTask","esri/tasks/support/Query","esri/geometry/Point","esri/geometry/Polyline","esri/geometry/Polygon","esri/geometry/Extent","esri/WebMap","esri/Graphic","esri/layers/GraphicsLayer","esri/layers/FeatureLayer","esri/layers/GroupLayer","esri/symbols/Symbol","esri/symbols/PictureMarkerSymbol","esri/symbols/SimpleFillSymbol","esri/symbols/SimpleMarkerSymbol","esri/symbols/SimpleLineSymbol","esri/tasks/GeometryService","esri/tasks/support/BufferParameters","esri/config","esri/renderers/support/jsonUtils","esri/core/lang"],function(n,i,u,f,e,o,s,h,c,l,a,v,y,p,w,b,k,d,g,nt,tt){var it={};it.QueryTask=n;it.Query=i;it.Point=u;it.Polyline=f;it.Polygon=e;it.Extent=o;it.WebMap=s;it.Graphic=h;it.GraphicsLayer=c;it.Symbol=v;it.PictureMarkerSymbol=y;it.SimpleFillSymbol=p;it.SimpleMarkerSymbol=w;it.SimpleLineSymbol=b;it.FeatureLayer=l;it.GroupLayer=a;it.GeometryService=k;it.BufferParameters=d;it.jsonUtils=nt;it.coreLang=tt;it.config=g;it.config.geometryServiceUrl=t.geometryServiceUrl;it.config.request.proxyUrl=t.proxyUrl;r.resolve(it)}),{onReady:u}}]);angular.module("app").service("featureParser",["$filter",function(n){function r(n,t){return _.map(t,function(t){return t.displayFields=u(n,t),t})}function u(n,t){if(n.visibleFields.length===0)return[];var i=[];return _.forEach(n.visibleFields,function(n){var r=f(n)||{type:"default",label:n.label};i.push({field:n,value:e(n,t.attributes[n.fieldName]),displayType:r.type,label:r.label})}),i}function f(n){return t(n,"hyperlink")||t(n,"imagesrc")}function t(n,t){return n.label.toLowerCase().endsWith(" "+t.toLowerCase())?{type:t.toLowerCase(),label:n.label.substring(0,n.label.length-(t.length+1))}:null}function e(n,t){var i=n.format;return i?s(i)?h(i,t):o(i)?c(i,t):t:t}function o(n){return n&&n.hasOwnProperty("dateFormat")}function s(n){return n&&n.hasOwnProperty("places")}function h(t,i){var r=n("number")(i,t.places);return t.digitSeparator||(r=r.replace(/,/g,"")),r}function c(t,i){return n("date")(i)}var i=this;i.parse=r}]);angular.module("app").service("featureSelectionEventHub",[function(){function i(t){if(!angular.isFunction(t))throw"Callback should be a function";return n.push(t),function(){_.remove(n,function(n){return n===t})}}function r(){var t=arguments;_.forEach(n,function(n){n.apply(null,t)})}var t=this,n;t.registerCallback=i;t.notify=r;n=[]}]);angular.module("app").service("geolocationService",["$q","$window","searchConfig",function(n,t,i){function s(){var o=n.defer(),s;return t.navigator.geolocation?(s={enableHighAccuracy:!0,timeout:5e3,maximumAge:6e3},u=t.setTimeout(function(){f();o.reject(e())},i.geolocationTimeout),r=t.navigator.geolocation.watchPosition(function(n){n.coords.accuracy<=i.geolocationAccuracyThreshold&&(f(),o.resolve(n))},function(n){h(n)&&(f(),o.reject(e(n)))},s)):o.reject("Geolocation not supported."),o.promise}function f(){r&&t.navigator.geolocation.clearWatch(r);u&&t.clearTimeout(u)}function e(n){if(!n||!n.code)return"TIMEOUT";switch(n.code){case 1:return"PERMISSION_DENIED";case 2:return"POSITION_UNAVAILABLE";default:return"TIMEOUT"}}function h(n){return n&&n.code===1}var o=this,r,u;o.getCurrentPosition=s}]);angular.module("app").service("geometryUtils",["esriTypes",function(n){function i(n){return r(n).then(function(n){return u(n)})}function r(t){return n.onReady(function(n){return _.map(t,function(t){return t.extent?t.extent:new n.Extent({xmin:t.x,xmax:t.x,ymin:t.y,ymax:t.y,spatialReference:{wkid:t.spatialReference.wkid}})})})}function u(n){return _.reduce(_.tail(n),function(n,t){return n?n.union(t):n},_.head(n))}var t=this;t.unionAsync=i}]);angular.module("app").factory("layerFactory",["$log","$interpolate","$q","esriTypes","searchConfig","layerConstants","layerQueryService","geometryUtils","$filter","mapConfig",function(n,t,i,r,u,f,e,o,s,h){function c(n,t,i){return r.onReady(function(r){var u=angular.extend({},t,i);return u.noGeo=v(u),u.tags=n.tags,u.visibleFields=l(u),u.queryDistance=y(u),u.featureLayer=k(r,u),u.queryFeaturesByGeometryAsync=function(n){var t=a(u,n);return e.queryAsync(u.url,t).then(function(n){return p(u,n.features),n.features})},u})}function l(n){return!n.popupInfo||!n.popupInfo.fieldInfos?[]:_.chain(n.popupInfo.fieldInfos).filter({visible:!0}).value()}function a(n,t){var i={shape:t,shapetype:"esriGeometryPolygon"};return n.queryDistance&&(i.distance=n.queryDistance),n.layerDefinition&&n.layerDefinition.definitionExpression&&(i.where=n.layerDefinition.definitionExpression),i}function v(n){var t=s("filter")(h.layersDisplaynoGeo,n.url.replace(/.*?:\/\//g,""));return t.length>0?!0:!1}function y(n){var t="on",i=s("filter")(h.layersQueryDistance,{url:n.url.replace(/.*?:\/\//g,"")});return i.length>0&&(t=i[0].distance),f.queryDistance[t]}function p(n,t){w(n,t);b(n,t)}function w(n,t){var r=_.chain(t).map("attributes.OBJECTID").value(),i="";n.layerDefinition&&n.layerDefinition.definitionExpression&&(i="("+n.layerDefinition.definitionExpression+") AND ");i+="OBJECTID IN ("+r.join(",")+")";n.featureLayer.definitionExpression=i}function b(n,t){o.unionAsync(_.map(t,"geometry")).then(function(t){n.featureLayer.extent=t})}function k(n,t){var i={url:t.url,opacity:t.opacity,popupEnabled:!1};return t.layerDefinition&&(t.layerDefinition.drawingInfo&&t.layerDefinition.drawingInfo.renderer&&(i.renderer=n.jsonUtils.fromJSON(t.layerDefinition.drawingInfo.renderer)),t.layerDefinition.hasOwnProperty("maxScale")&&(i.maxScale=t.layerDefinition.maxScale),t.layerDefinition.hasOwnProperty("minScale")&&(i.minScale=t.layerDefinition.minScale)),new n.FeatureLayer(i)}return{createAsync:c}}]);angular.module("app").service("layerQueryService",["$q","esriTypes",function(n,t){function r(t,i){var r=u(t),e=f(i);return n.all([e,r]).then(function(n){var t=n[0],i=n[1];return i.execute(t)})}function u(n){return t.onReady(function(t){return new t.QueryTask({url:n})})}function f(n){return t.onReady(function(t){var i=angular.extend({},{outFields:["*"],returnGeometry:!0},n);return e(t,i),o(i),new t.Query(i)})}function e(n,t){if(t.shape&&t.shapetype){angular.isString(t.shape)&&(t.shape=angular.fromJson(t.shape));switch(t.shapetype){case"esriGeometryPoint":t.geometry=new n.Point(t.shape);break;case"esriGeometryPolyline":t.geometry=new n.Polyline(t.shape);break;default:t.geometry=new n.Polygon(t.shape)}}}function o(n){angular.isString(n.outFields)&&(n.outFields=n.outFields==="*"?["*"]:n.outFields.split(","))}var i=this;i.queryAsync=r}]);angular.module("app").service("locateMeService",["$http","$q","mapConfig","geolocationService",function(n,t,i,r){function e(){return r.getCurrentPosition().then(function(n){return o(n.coords)})}function o(r){var f=r.longitude+","+r.latitude;return n.get(i.locationServiceUrl,{params:{f:"json",location:f}}).then(function(n){return u(n)?t.reject(s(n)):n.data})}function u(n){return!n||!n.data?!0:n.data.hasOwnProperty("error")?!0:!1}function s(n){return u(n)?n.data.error.details&&n.data.error.details.length>0?n.data.error.details[0]:n.data.message:undefined}var f=this;f.locateMeAsync=e}]);angular.module("app").provider("mapQuery",[function(){function u(t,r){n=t;i=r}function r(n,t){return _.filter(n,function(n){return _.includes(n.tags,t)})}var t=this,n,i;t.init=u;t.$get=["$http","$interpolate","$q","mapConfig","layerFactory",function(t,u,f,e,o){function h(){return s.promise}function c(){return s.promise.then(function(n){return r(n,e.ruralTagName)})}function l(){return s.promise.then(function(n){return r(n,e.urbanTagName)})}function a(){v().then(function(n){s.resolve(n)})}function v(){var r=u("{{baseUrl}}/search?callback=JSON_CALLBACK&f=json&q=group:%22{{groupId}}%22%20AND%20type:%22Web%20Map%22&num=100")({baseUrl:n,groupId:i});return t.jsonp(r).then(function(n){var t=[];return _.forEach(n.data.results,function(n){t.push(y(n))}),f.all(t).then(function(n){return _.chain(n).flatten().uniqBy(function(n){return n.id}).value()})})}function y(i){var r=u("{{baseUrl}}/content/items/{{itemId}}/data/?callback=JSON_CALLBACK&f=json")({baseUrl:n,itemId:i.id});return t.jsonp(r).then(function(n){var t=_.map(n.data.operationalLayers,function(n){return p(n.url).then(function(t){return o.createAsync(i,t,n)})});return f.all(t)})}function p(n){return t.get(n+"?f=pjson").then(function(n){return n.data})}var s=f.defer();return{load:a,getLayersAsync:h,getRuralLayersAsync:c,getUrbanLayersAsync:l}}]}]);angular.module("app").service("searchService",["$http","$q","searchConfig","layerQueryService","esriTypes",function(n,t,i,r,u){function e(t){return n.jsonp(i.serviceUrl,{method:"POST",params:{searchclass:i.filterClasses,searchlimit:i.maxResults,searchterm:t,searchgeotag:i.filterGeoTags,f:"pjson",callback:"JSON_CALLBACK"},responseType:"json"}).then(function(n){return!n.data||!n.data.searchResults?[]:n.data.searchResults.length===1&&o(n.data.searchResults[0])?[]:n.data.searchResults})}function o(n){return n.value.keydescription==="No Matching Results"}function s(n){function f(n){return r.queryAsync(i.urbanZoneLayerUrl,{shape:n.point,shapetype:"esriGeometryPoint"}).then(function(t){return n.isRural=t.features.length===0,n})}function e(i){switch(n.value.searchclass){case"PAR":case"VAL":case"FID":return o(i);default:return t.when(i)}}function o(n){return r.queryAsync(i.coreLayerUrl,{shape:n.point,shapetype:"esriGeometryPoint"}).then(function(t){return n.coreFeature=t.features[0],n})}return u.onReady(function(r){var u={address:n.label,point:new r.Point({x:n.value.x,y:n.value.y,spatialReference:i.spatialReference})};return t.all([e(u),f(u)]).then(function(){return u})})}var f=this;f.searchAsync=e;f.getPropertyAsync=s}]);angular.module("app").service("stringTemplateService",[function(){function i(n){var t=u(n);return function(i){var u=n;return _.forEach(t,function(n){u=u.replace(n.variable,i[n.propertyName])}),r(u)}}function r(n){return n.replace("<a href='null' target='_blank'>null<br /><\/a>","")}function u(t){var r=[],i;do i=n.exec(t),i&&r.push({variable:i[0],propertyName:i[1]});while(i);return r}var t=this,n;t.interpolate=i;n=/\{([^\}]*)\}/g}])