(function(n,t){var i=nspace("kidscount.map.MapUtil");i.isPositionParameter=function(n){return n&&n.indexOf(",")>=0},i.listenForInitComplete=function(i,r){function c(){var t=n("#map-wrap").find("iframe");t.length>0&&t.each(function(){n(this).attr("title","interactive google map")})}var u=0,f=0,s=0,o=0,e=0,h=0;t.each(i,function(i){var l;i.polygonLayer?(l=i.baseMap,n(i.polygonLayer).bind("processingPolygons:start",function(){e++}),n(i.polygonLayer).bind("processingPolygons:end",function(){e--,h++,e==0&&s>0&&u==0&&o>0&&f==0&&n(r).trigger("loading:all:finished")})):l=i,t.each(l.layers,function(t){t.name=="KidsCount Google Base Layer"?(f++,google.maps.event.addListener(t.mapObject,"tilesloaded",function(){f--,o++,c(),f==0&&u==0&&e==0&&n(r).trigger("loading:all:finished")})):(t.events.register("loadstart",t,function(){u++}),t.events.register("loadend",t,function(){u--,s++,c(),u==0&&o>0&&f==0&&h>0&&e==0&&n(r).trigger("loading:all:finished")}))})})}})(jQuery,_),function(n,t){var i=nspace("kidscount.map");i.SingleMapView=Backbone.View.extend({initialize:function(){var i,f,e,u,r;t.bindAll(this,"updateMap","positionChanged");n(window).on("resize",t.bind(this.onResize,this));this.model.on("data:updated",this.updateMap);i=this,f=n(i.el),this.googleBaseLayer=new kidscount.map.layers.GoogleBaseLayer,this.choroplethLayer=new kidscount.map.layers.ChoroplethLayer,this.polygonLayer=new kidscount.map.layers.PolygonLayer,this.hoverControl=new kidscount.map.controls.Hover,this.dragControl=new kidscount.map.controls.Drag,this.infoBoxManager=new kidscount.map.ui.InfoBoxManager(f.parent(),i.model.getMapColors()),i.infoBoxManager.setColors(i.model.getMapColors());this.model.on("change:activeColorPalette",function(){i.infoBoxManager.setColors(i.model.getMapColors())});for(this.options.isInlay&&(e=[]),this.baseMap=new OpenLayers.Map(f.attr("id"),{projection:"EPSG:3857",layers:[i.googleBaseLayer,i.choroplethLayer,i.polygonLayer],eventListeners:{moveend:this.positionChanged,zoomend:this.positionChanged},controls:e}),navControls=this.baseMap.getControlsByClass("OpenLayers.Control.Navigation"),u=0;u<navControls.length;u++)navControls[u].disableZoomWheel&&navControls[u].disableZoomWheel();r=this.options.mapSettings,r&&r.length==5?this.baseMap.setCenter(new OpenLayers.LonLat(r[0],r[1]),r[2],!1,!1):(this.baseMap.zoomToExtent(this.options.boundingBox),this.options.defaultZoom&&this.options.defaultZoom!="dynamic"&&this.baseMap.zoomTo(this.options.defaultZoom)),this.baseMap.addControl(this.hoverControl),this.baseMap.addControl(this.dragControl);n(this.choroplethLayer).on("busy",function(){n(i).trigger("choropleth:busy")});n(this.choroplethLayer).on("idle",function(){n(i).trigger("choropleth:idle")});n(this.dragControl).bind("drag:start",function(){i.infoBoxManager.hideInfoBox(),i.hoverControl.deactivate()}),n(this.dragControl).bind("drag:end",function(){i.hoverControl.activate()}),n(this.hoverControl).bind("mouseenter",function(n,t,r){i.polygonLayer.drawPolygon(t.data.id),i.infoBoxManager.showInfoBox(t.data.id,r)}),n(this.hoverControl).bind("mousemove",function(n,t,r){i.infoBoxManager.updateBoxPosition(r)}),n(this.hoverControl).bind("mouseleave",function(n,t){i.polygonLayer.hidePolygon(t.data.id),i.infoBoxManager.hideInfoBox()}),this.googleBaseLayer.styleMap(),n(this.polygonLayer).bind("processingPolygons:end",function(){var t=i.model.get("isGranteeIndicator"),n=i.model.get("currentLocationId");t||n==1||i.polygonLayer.highlightPolygon(n)})},updateMap:function(){this.polygonLayer.hideAllPolygons(),this.infoBoxManager.hideInfoBox(),this.choroplethLayer.update(this.model.getFilterString(),this.model.get("breakCount"),this.model.get("breakType"),this.model.get("activeColorPalette"),this.model.getMapColors(),this.model.get("currentLocationId"),this.model.get("comparisonLocationId")),this.infoBoxManager.setData(this.model.get("mapData")),this.polygonLayer.setPolygonData(this.model.get("mapPolygons"),this.model.get("isLabeled")),this.hoverControl.update(this.polygonLayer.polygons),this.dragControl.activate(),this.hoverControl.activate()},recenterMap:function(n){this.baseMap.zoomToExtent(n)},positionChanged:function(){n(this).trigger("mapPositionChanged",[this.baseMap.getCenter(),this.baseMap.getZoom()])},onResize:function(){this.baseMap.updateSize()}})}(jQuery,_),function(n,t){var i=nspace("kidscount.map");i.FullMapView=Backbone.View.extend({initialize:function(){var r,u,e,o,s,f,h,c;t.bindAll(this,"updateFullMap");this.model.on("data:updated",this.updateFullMap);r=this,u=n(r.el),u.empty(),u.append("\t\t\t<div id='map-container'><\/div> \t\t\t\t\t\t\t\t\t\t\t\t\t\t<div id='map-legend'><\/div> \t\t\t\t\t\t\t\t\t\t\t"),n("#map-container").css({width:"100%","z-index":"100"}),this.loadingIndicator=new kidscount.map.ui.LoadingIndicator("map-wrap"),this.loadingIndicator.addTask("init","Initializing map..."),this.model.get("breakType")==="Quantile"?this.model.get("breakCount")===4?(e="quartiles",o="Quartile: data are divided into 4 equally sized groups."):this.model.get("breakCount")===5&&(e="quintiles",o="Quintile: data are divided into 5 equally sized groups."):this.model.get("breakType")==="Natural"&&(e="natural",o="Natural: data are divided into classes based on natural groups present in the data distribution."),this._legend=new kidscount.map.ui.Legend(n("#map-legend"),e,o),s=this.model.get("mapPosition"),s&&this._legend.setPosition(s[3],s[4]),n(this._legend).bind("legendMoved",function(n,t){r.model.updateMapPosition(r.baseMapView.baseMap.getCenter(),r.baseMapView.baseMap.getZoom(),t)}),f=this.model.get("mapPosition"),f&&f.length==5||(f=undefined),this._allMaps=[],this.baseMapView=new i.SingleMapView({model:r.model,el:"#map-container",boundingBox:this.getBoundingBoxFromCoords(n.parseJSON(this.model.get("boundingBox"))),defaultZoom:this.model.get("defaultZoom"),mapSettings:f}),this._allMaps.push(this.baseMapView),this.hookUpLoadingEvents(this.baseMapView,"base"),n(this.baseMapView).bind("mapPositionChanged",function(n,t,i){r.model.updateMapPosition(t,i,r._legend.getPosition())}),h=n.parseJSON(this.model.get("inlayBoundingBoxes")),c=0,h&&h.length>0&&t.each(h,function(t,f){var s="map-inlay-"+f,a=Math.ceil(u.height()*t.sizeY),h=Math.ceil(u.width()*t.sizeX),l=n("<div />").addClass("map-inlay").css({position:"absolute",bottom:0,left:c,width:h,height:a,zIndex:"5000"}).appendTo(u),e,o;n("<div id='"+s+"'><\/div>").css({width:"100%",height:"100%"}).appendTo(l),c+=h+1,e=r.getBoundingBoxFromCoords(t.bbox),o=new i.SingleMapView({model:r.model,el:"#"+s,boundingBox:e,isInlay:!0}),r._allMaps.push(o),l.click(function(){r.baseMapView.recenterMap(e)}),r.hookUpLoadingEvents(o,"inlay-"+f)});this.model.on("loading:polygons",function(){r.loadingIndicator.addTask("loadingpolygons","Loading shapes...")});this.model.on("loading:polygons:finished",function(){r.loadingIndicator.endTask("loadingpolygons")});this.model.on("loading:data",function(){r.loadingIndicator.addTask("loadingdata","Loading data...")});this.model.on("loading:data:finished",function(){r.loadingIndicator.endTask("loadingdata")});kidscount.map.MapUtil.listenForInitComplete(this._allMaps,this);n(this).on("loading:all:finished",function(){n(".infomsg").css("display","none")});this.loadingIndicator.endTask("init")},getBoundingBoxFromCoords:function(n){return new OpenLayers.Bounds(n[0],n[1],n[2],n[3])},updateFullMap:function(){this._legend.update(this.model.get("mapData"),this.model.get("isCompared"),this.model.get("comparisonLocationId"),this.model.get("timeFrameId"),this.model.getMapColors());var n=this.model.get("mapPosition");n&&n.length==5&&this._legend.setPosition(n[3],n[4])},hookUpLoadingEvents:function(t,i){var r=this;n(t).on("choropleth:busy",function(){r.loadingIndicator.addTask("loadingchoropleth-"+i,"Loading map...")});n(t).on("choropleth:idle",function(){r.loadingIndicator.endTask("loadingchoropleth-"+i)});n(t.polygonLayer).bind("processingPolygons:start",function(){r.loadingIndicator.addTask("processingPolygons-"+i,"Processing shapes...")}),n(t.polygonLayer).bind("processingPolygons:end",function(){r.loadingIndicator.endTask("processingPolygons-"+i),kidscount.vizUtil.imageDownload.fireDataReady()})},viewType:"Full"})}(jQuery,_),function(){var n=nspace("kidscount.map.colors");n.generateSequentialColorScheme=function(n,t){var u,r,i;for(!0&&(n=chroma.interpolate.bezier(n)),u=chroma.scale(n).domain([0,t-1]).mode("lab").correctLightness(!0),r=[],i=0;i<t;i++)r.push(u(i).hex());return r}}(jQuery),function(n,t){var i=nspace("kidscount.map"),r=nspace("kidscount.vizUtil");i.MapModel=Backbone.Model.extend({dataServicePath:"/api/reports/mapdata",polygonServiceUrl:"/LocationPolygonService.axd",initialize:function(){t.bindAll(this,"syncFromServer","getMapData","getMapPolygons"),this.isActive=!1;this.on("change",this.syncFromServer)},nationalSupportedLocationTypes:[2,4],granteeSupportedLocationTypes:[2,4,5,6,10,11,12,18,21,30,113,115],defaults:{locationTypeId:null,locationIds:null,isCompared:null,isLabeled:null,timeFrameId:null,characteristicIds:null,dataTypeId:null,dataTypePrimitive:null,indicatorId:null,currentLocationId:null,comparisonLocationId:null,comparisonLocationName:null,currentLocationTypeId:null,boundingBox:null,defaultZoom:null,inlayBoundingBoxes:null,breakType:null,breakCount:null,activeColorPalette:null,mapData:null,mapPolygons:null,mapPosition:null,isGranteeIndicator:null},getFilterString:function(){var t=function(n,t,i){i&&i!==r.nullUrlValue&&n.add(t,i)},n=new velir.collections.NameValueCollection,i=this.get("characteristicIds")||"";return t(n,"ind",this.get("indicatorId")),t(n,"loct",this.get("locationTypeId")),t(n,"tf",this.get("timeFrameId")),t(n,"ch",i.join(",")),t(n,"fmt",this.get("dataTypeId")),n.toQueryStringReplaceCommas()},checkDefaultColor:function(){var n,r=this.get("dataTypePrimitive"),u=this.get("activeColorPalette");n=r&&r==="Text"?Object.keys(i.config.qualitativeColorPalettes):Object.keys(i.config.sequentialColorPalettes),u&&t.contains(n,u)||this.set("activeColorPalette",n[0],{silent:!0}),this.setColorValuesForEmbed()},getMapColors:function(){var n,t,u,r;return this.checkDefaultColor(),n=this.get("dataTypePrimitive"),t=this.get("activeColorPalette"),n&&n==="Text"?i.config.qualitativeColorPalettes[t]:(u=i.config.sequentialColorPalettes[t],r=this.get("breakCount"),this.get("isolateZeroes")&&(r+=1),i.colors.generateSequentialColorScheme(u,r))},setColorValuesForEmbed:function(){var u=this.get("dataTypePrimitive"),r;n("input[name='active-color-palette']").val(this.get("activeColorPalette")),u&&u==="Text"?n("input[name='color-palette-options']").val(JSON.stringify(i.config.qualitativeColorPalettes)):(r={},t.forEach(i.config.sequentialColorPalettes,function(n,t){r[t]=i.colors.generateSequentialColorScheme(n,4)}),n("input[name='color-palette-options']").val(JSON.stringify(r)))},syncFromServer:t.debounce(function(){var t=this;n.when(this.getMapData(),this.getMapPolygons()).done(function(){t.trigger("data:updated")})},25),getMapData:function(){var t=this,u=this.getFilterString(),i={filterString:u,breakCount:this.get("breakCount"),breakType:this.get("breakType"),currentLocId:this.get("currentLocationId")},r=this.get("comparisonLocationId");return r&&r!="null"&&(i.cmploc=this.get("comparisonLocationId")),t.trigger("loading:data"),n.ajax({type:"GET",url:t.dataServicePath,data:i}).done(function(n){t.set("mapData",n,{silent:!0})}).always(function(){t.trigger("loading:data:finished")})},getMapPolygons:function(){var t=this,i;if(this.get("mapPolygons")&&!this.hasChanged("locationTypeId")&&!this.hasChanged("timeFrameId"))return i=n.Deferred().resolve(),i.promise();var r=this.get("currentLocationId"),u=this.get("timeFrameId"),f=this.get("locationTypeId"),e=this.get("indicatorId"),o={loct:f,tf:u,currentLocId:r,ind:e};return this.trigger("loading:polygons"),n.ajax({type:"GET",url:t.polygonServiceUrl,data:o}).done(function(n){t.set("mapPolygons",n,{silent:!0})}).always(function(){t.trigger("loading:polygons:finished")})},getDetailedTableResponse:function(n){this.trigger("loading:table");var t=this,i={ind:this.get("indicatorId"),loc:this.get("currentLocationId"),loct:this.get("locationTypeId"),tf:this.get("timeFrameId"),fmt:this.get("dataTypeId"),ch:this.get("characteristicIds").join(","),cmploc:this.get("currentLocationId"),inccmploc:this.get("isCompared"),shwmplbl:this.get("isLabeled"),includeAllLocations:!0};return r.fetchDetailedTable(i,function(){t.trigger("loading:table:finished")},function(t){n&&n(t)})},locationTypeIsSupported:function(){var t=this.get("locationTypeId"),i=this.get("comparisonLocationId"),r=this.get("currentLocationId");return i&&parseInt(i)===1?n.inArray(parseInt(t),this.nationalSupportedLocationTypes)!==-1:parseInt(t)===3&&parseInt(r)===10?!0:n.inArray(parseInt(t),this.granteeSupportedLocationTypes)!==-1},updateMapPosition:function(n,t,i){if(!n||!t)throw"Both LonLat and Zoom must be supplied";this.set("mapPosition",[n.lon,n.lat,t,i.top,i.left],{silent:!0}),this.trigger("mapPositionChange")}})}(jQuery,_),function(n){var t=nspace("kidscount.map");t.MapSelectorsView=Backbone.View.extend({initialize:function(){function c(i){return n("input:radio[name='loct'][value='"+i+"']",t.$optionsContainer).attr("data-years")}function r(){i();var n=c(t.model.get("locationTypeId"));t.timeFrameSelector.resetYears(n),t.timeFrameSelector.showYears(n),kidscount.vizControls.util.updateLocationTypeUrls(t.model.get("locationTypeId"))}var t=this,i;this.$optionsContainer=n("#map_options"),this.constants=new kidscount.vizControls.ConstantsControl({el:this.$optionsContainer,model:this.model}),this.constants.setUp();var u=this.$optionsContainer.find("input[name='bbox']").val(),f=this.$optionsContainer.find("input[name='defaultZoom']").val(),e=this.$optionsContainer.find("input[name='inlay-bboxes']").val(),o=this.$optionsContainer.find("input[name='break-type']").val(),s=this.$optionsContainer.find("input[name='break-count']").val(),h=this.$optionsContainer.find("input[name='isolate-zeroes']").val();this.model.set({boundingBox:u,defaultZoom:f,inlayBoundingBoxes:e,breakType:o,breakCount:+s,isolateZeroes:h},{silent:!0}),this.locationTypeSelector=new kidscount.vizControls.LocationTypeControl({el:n(".viz-location-type-selector",this.$optionsContainer),model:this.model}),i=function(){n(".refine_search div.comparison_checkbox",this.$optionsContainer).toggle(!!t.model.get("comparisonLocationName")),n("div.comparison_checkbox span.comparison_location",this.$optionsContainer).text(t.model.get("comparisonLocationName"))},this.locationTypeSelector.setUp(),this.compareSelector=new kidscount.vizControls.CompareLocationControl({el:n(".viz-compare-location-selector",this.$optionsContainer),model:this.model,enabledByDefault:!0}),this.compareSelector.setUp(),this.mapLabelCheckbox=new kidscount.vizControls.MapLabelsControl({el:n(".viz-show-map-labels-checkbox",".ind_detail_table"),model:this.model,enabledByDefault:!0}),this.mapLabelCheckbox.setUp(),this.timeFrameSelector=new kidscount.vizControls.TimeFrameSingleControl({el:n(".viz-timeframe-rb-selector",this.$optionsContainer),model:this.model}),this.timeFrameSelector.setUp(),this.characteristicSelector=new kidscount.vizControls.CharacteristicSingleControl({el:n(".viz-characteristic-rb-selector",this.$optionsContainer),model:this.model}),this.characteristicSelector.setUp(),this.dataTypeSelector=new kidscount.vizControls.DataTypeSingleControl({el:n(".viz-datatype-rb-selector",this.$optionsContainer),model:this.model}),this.dataTypeSelector.setUp();this.model.on("change:locationTypeId",r);r()},getDataSummary:function(){var n=[],t,i;for(n.push(this.timeFrameSelector.getDataSummary()),n.push(this.characteristicSelector.getDataSummary()),n.push(this.dataTypeSelector.getDataSummary()),t=[],i=0;i<n.length;i++)t[t.length]='<li class="selections__item">'+n[i]+"<\/li>";return t},getCleanDataSummary:function(){var n=[];return n.push(this.characteristicSelector.getDataSummary(!0)),n.push(this.dataTypeSelector.getDataSummary(!0)),n.push(this.timeFrameSelector.getDataSummary(!0)),n}})}(jQuery,_),function(n,t){var i=nspace("kidscount.map");i.CleanMapRouter=Backbone.Router.extend({initialize:function(){t.bindAll(this,"setMapViewType")},routes:{"":"initializeViews",":locationTypeId/:locationIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId":"initializeViews",":locationTypeId/:locationIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/":"initializeViews",":locationTypeId/:locationsIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/:activeColorPalette":"initializeViews",":locationTypeId/:locationsIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/:activeColorPalette/":"initializeViews",":locationTypeId/:locationsIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/:activeColorPalette/:mapPosition":"initializeViews"},initializeViews:function(t,r,u,f,e,o,s,h,c){var l=this;t=t||kidscount.vizUtil.getParam("loct"),i.MapUtil.isPositionParameter(h)&&(c=h,h=kidscount.vizUtil.nullUrlValue),this.model=new i.MapModel,this.model.set({locationTypeId:t,locationIds:kidscount.vizUtil.parseArrayValue(r),isCompared:u?u==="true":undefined,isLabeled:f?f==="true":undefined,timeFrameId:e,characteristicIds:kidscount.vizUtil.parseChIds(o),dataTypeId:s,mapPosition:kidscount.vizUtil.parseArrayValue(c),activeColorPalette:h},{silent:!0}),this.selectorsView=new i.MapSelectorsView({model:l.model,el:".selectors"}),this.cleanVizDetailsView=new kidscount.vizUtil.CleanVizDetailsView({el:n(".viz-details"),model:this.model,getCleanDataSummary:function(){return l.selectorsView.getCleanDataSummary()}}),this.setMapViewType(),this.model.trigger("change")},setMapViewType:function(){this.model.locationTypeIsSupported()&&(!this.mapView||this.mapView.viewType=="Unsupported")?this.mapView=new i.FullMapView({model:this.model,el:"#map-wrap"}):this.model.locationTypeIsSupported()||this.mapView&&this.mapView.viewType!="Full"||(this.mapView=new i.UnsupportedLocationView({model:this.model,el:"#map-wrap"}))}})}(jQuery,_),function(){var n=nspace("kidscount.map");n.config={themeColorAlpha:"0.9",noDataColor:"#ffffff",sequentialColorPalettes:{Orange:["#FEE391","#FEC44F","#FE9929","#DA5521"],Blue:["#f5e7ce","#aabab9","#84a7b2","#4a7889","#114d60"],Green:["#f5eaba","#bbbc80","#868f51","#424e1b"],Purple:["#f4e0ca","#c3afbc","#9181a3","#796c92","#4c446c"],Red:["#fed5bc","#ed9d90","#cd6968","#a23c45","#8a2935"],Gray:["#f0f0f0","#d9d9d9","#969696","#525252","#252525"]},qualitativeColorPalettes:{Primary:["#306274","#d87c2c","#878f54","#7a6c91","#b1b1b1","#a13e45"],Secondary:["#7bb3ce","#f6be3f","#94ae4a","#924089","#d9b3b4","#f17a62"]},colorChipUrl:"/colorchip.axd",getColorChipUrl:function(n){return n=n.replace(/[#]/g,""),this.colorChipUrl+"?c="+n}}}(),function(){var n=nspace("kidscount.map");n.MapApp=function(t,i){this.router=t||i?new n.CleanMapRouter:new n.MapRouter},function(n){n.start=function(){Backbone.history.start()}}(n.MapApp.prototype)}(jQuery),function(n,t){var r=nspace("kidscount.map"),i=nspace("kidscount");r.MapRouter=Backbone.Router.extend({initialize:function(){t.bindAll(this,"updateUrl","setMapViewType")},routes:{"":"initializeViews",":locationTypeId/:locationIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId":"initializeViews",":locationTypeId/:locationIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/":"initializeViews",":locationTypeId/:locationIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/:activeColorPalette":"initializeViews",":locationTypeId/:locationIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/:activeColorPalette/":"initializeViews",":locationTypeId/:locationIds/:isCompared/:isLabeled/:timeFrameId/:characteristicIds/:dataTypeId/:activeColorPalette/:mapPosition":"initializeViews"},initializeViews:function(t,u,f,e,o,s,h,c,l){var a=this,v,y;t=t||i.vizUtil.getParam("loct"),r.MapUtil.isPositionParameter(c)&&(l=c,c=i.vizUtil.nullUrlValue),this.model=new r.MapModel,v=n("input[name='tf']",this.$el),y=v.map(function(){return n(this).val()}).get(),this.model.set({locationTypeId:t,locationIds:i.vizUtil.parseArrayValue(u),isCompared:f?f==="true":undefined,isLabeled:e?e==="true":undefined,timeFrameId:o,allTimeFrameIds:y,characteristicIds:i.vizUtil.parseChIds(s),dataTypeId:h,mapPosition:i.vizUtil.parseArrayValue(l),activeColorPalette:c},{silent:!0});this.model.on("change",this.updateUrl);this.model.on("mapPositionChange",this.updateUrl);this.model.on("change:locationTypeId",this.setMapViewType);this.selectorsView=new r.MapSelectorsView({model:a.model,el:".refine_search"}),selectorsView=this.selectorsView,this.setMapViewType(),this.embedTableView=new i.vizUtil.CompanionTableView({model:a.model,el:"#detailed-table"}),this.dataSummaryView=new i.vizUtil.DataSummaryView({el:n(".selections__group"),model:this.model,getDataSummary:function(){return a.selectorsView.getDataSummary()}}),this.navTabsView=new i.nav.VisualizationTab({el:".tab_sub_nav",model:this.model,vizType:"map"}),this.shareLinkView=new i.vizUtil.DynamicImageShareView({el:".addthis_button_compact",model:this.model}),this.cleanVizDetailsView=new i.vizUtil.CleanVizDetailsView({el:n(".viz-details"),model:this.model,getCleanDataSummary:function(){return a.selectorsView.getCleanDataSummary()}}),this.model.trigger("hydration:complete"),this.model.trigger("change")},setMapViewType:function(){this.model.locationTypeIsSupported()&&(!this.mapView||this.mapView.viewType=="Unsupported")?this.mapView=new r.FullMapView({model:this.model,el:"#map-wrap"}):this.model.locationTypeIsSupported()||this.mapView&&this.mapView.viewType!="Full"||(this.mapView=new r.UnsupportedLocationView({model:this.model,el:"#map-wrap"}))},updateUrl:function(){var n=new i.routes.RouteSerializer,t=n.serialize("map",this.model);this.navigate(t,{replace:!0}),i.vizUtil.updateSharing(!1)}})}(jQuery,_),$(document).ready(function(){function r(){var n=kidscount.vizUtil.addParamToUrl(window.location.href,"saveImage","true");n=t.generateVizUrlWithColor(n),window.history.pushState({},document.title,n),window.location.reload()}function u(){$(".olControlZoom").hide(),$(".viz-details-hidden").show()}function f(){$(".olControlZoom").show(),$(".viz-details-hidden").hide()}function i(){var t,r;getDataIsReady()===!1?setTimeout(i,500):($("#save_image_modal #save-img").remove(),$(".loading-indicators").show(),u(),t=$(".image-container")[0],e()?domtoimage.toPng(t).then(n).catch(function(n){console.error("oops, something went wrong!",n)}):(r=domtoimage.toCanvas(t),r?n(r.toDataURL()):$.ajax({url:"/api/image/generate?url="+encodeURIComponent(window.location.href)+"&cleanView=true&wait=true",success:function(t){n(t)},error:function(){n(null)}})))}function n(n){if($("#save_image_modal #save-img").length<1){$(".loading-indicators").hide();var t;n?(t=new Image,t.src=n):(t=document.createElement("div"),t.textContent="Please try again on a different browser."),t.setAttribute("id","save-img"),$("#save_image_modal .modal__body").prepend(t),f()}}function e(){return!!document.createElementNS&&/SVGForeignObject/.test(document.createElementNS("http://www.w3.org/2000/svg","foreignObject").toString())}var t;window.location.search.indexOf("saveImage=true")>-1&&$("#save_image").click(),t=kidscount.tools.colorPicker($("#img_color_palette_link"),$("#img_color_palette_change"),function(){r()}),$("#save_image").click(function(n){n.preventDefault(),t.update(),kidscount.lightbox.openLightBox($("#save_image_modal")),i()})}),function(n){var t=nspace("kidscount.map");t.UnsupportedLocationView=Backbone.View.extend({initialize:function(){var t=this,i=n(t.el);i.empty(),i.append("<div id='map-container'><\/div><div class='unavailable-overlay'><\/div><div class='unavailable-message'>Data for this location type is not available for display on a map. However, it may be viewed in a table or chart.<\/div>"),n("#map-container").css("z-index","100"),this._googleBaseLayer=new kidscount.map.layers.GoogleBaseLayer,this._baseMap=new OpenLayers.Map("map-container",{projection:"EPSG:3857",layers:[t._googleBaseLayer]}),this._baseMap.zoomToExtent(new OpenLayers.Bounds(-13883304,2319800,-7454942,5839047)),this._googleBaseLayer.styleMap(),kidscount.map.MapUtil.listenForInitComplete([this._baseMap],this);n(this).on("loading:all:finished",function(){kidscount.vizUtil.imageDownload.fireDataReady()})},viewType:"Unsupported"})}(jQuery,_),function(n){var t=nspace("kidscount.map.controls");t.Drag=OpenLayers.Class(OpenLayers.Control,{defaultHandlerOptions:{delay:50,pixelTolerance:null,stopDown:!1},initialize:function(){this.handlerOptions=OpenLayers.Util.extend({},this.defaultHandlerOptions),OpenLayers.Control.prototype.initialize.apply(this,arguments),this.handler=new OpenLayers.Handler.Drag(this,{down:this.dragStart,up:this.dragEnd,out:this.dragEnd},this.handlerOptions)},dragStart:function(){n(this).trigger("drag:start")},dragEnd:function(){n(this).trigger("drag:end")}})}(jQuery,_),function(n){var t=nspace("kidscount.map.controls");t.Hover=OpenLayers.Class(OpenLayers.Control,{defaultHandlerOptions:{delay:50,pixelTolerance:null,stopMove:!1},initialize:function(){this.handlerOptions=OpenLayers.Util.extend({},this.defaultHandlerOptions),OpenLayers.Control.prototype.initialize.apply(this,arguments),this.handler=new OpenLayers.Handler.Hover(this,{move:this.onMove},this.handlerOptions)},onMove:function(t){var i=this,u,f,e,r;if(t.type==="mouseout"){i._activePolygon&&n(i).trigger("mouseleave",i._activePolygon),i._activePolygon=null;return}u=this.map.getLonLatFromViewPortPx(t.xy),f=i._polygonSet;for(e in f)if(f.hasOwnProperty(e)&&(r=f[e],r.data.hoverEnabled)&&r.atPoint(u)&&r.geometry.intersects(new OpenLayers.Geometry.Point(u.lon,u.lat))){if(i.isSamePolygon(i._activePolygon,r)){n(i).trigger("mousemove",[i._activePolygon,t.xy]);return}i._activePolygon&&n(i).trigger("mouseleave",i._activePolygon),i._activePolygon=r,n(i).trigger("mouseenter",[r,t.xy]);return}i._activePolygon&&n(i).trigger("mouseleave",i._activePolygon),i._activePolygon=null},isSamePolygon:function(n,t){return n&&t&&n.data.id===t.data.id},update:function(n){this._polygonSet=n}})}(jQuery,_),function(n){var t=nspace("kidscount.map.layers");t.ChoroplethLayer=OpenLayers.Class(OpenLayers.Layer.WMS,{serviceUrl:"/ThematicMapService.axd",DEFAULT_PARAMS:{request:"GetMap",service:"WMS",version:"1.3.0",layers:"default",format:"image/png",transparent:!0,styles:"default",crs:"EPSG:3857",width:256,height:256},initialize:function(){OpenLayers.Layer.WMS.prototype.initialize.apply(this,["KidsCount Choropleth Overlay",this.serviceUrl,this.DEFAULT_PARAMS]),this.visibility=!1,this.events.register("loadstart",this,this.onLoadStart),this.events.register("loadend",this,this.onLoadEnd)},update:function(n,t,i,r,u,f,e){this.visibility=!0;var s=kidscount.map.config.themeColorAlpha+"|"+kidscount.map.config.noDataColor+","+u.join(),o={fs:n,currentLocId:f,breakCount:t,breakType:i,theme:s,paletteName:r};o.cmploc=e?e:"",this.mergeNewParams(o)},onLoadStart:function(){n(this).trigger("busy")},onLoadEnd:function(){n(this).trigger("idle")}})}(jQuery),function(){var n=nspace("kidscount.map.layers");n.GoogleBaseLayer=OpenLayers.Class(OpenLayers.Layer.Google,{mapStyles:[{featureType:"poi",stylers:[{visibility:"off"}]},{featureType:"administrative",elementType:"labels",stylers:[{visibility:"off"}]},{featureType:"road",stylers:[{visibility:"off"}]},{featureType:"transit",stylers:[{visibility:"off"}]},{featureType:"landscape",stylers:[{hue:"#EFEFEF"},{saturation:-100}]},{featureType:"landscape.natural.terrain",stylers:[{visibility:"off"}]},{featureType:"landscape.natural.landcover",stylers:[{visibility:"off"}]},{featureType:"water",stylers:[{hue:"#D0CFD5"},{lightness:20},{saturation:-90}]}],minZoom:1,maxZoom:11,initialize:function(){var n=this;OpenLayers.Layer.Google.prototype.initialize.apply(this,["KidsCount Google Base Layer",{type:"custom",minZoomLevel:n.minZoom,maxZoomLevel:n.maxZoom}])},styleMap:function(){var n=new google.maps.StyledMapType(this.mapStyles,{name:"Styled gmap"});this.mapObject.mapTypes.set("custom",n),this.mapObject.setMapTypeId("custom")}})}(jQuery),function(n){var t=nspace("kidscount.map.layers");t.PolygonLayer=OpenLayers.Class(OpenLayers.Layer.Vector,{polygonStyle:{strokeWidth:2,strokeColor:"#7d7d7d",fillColor:"#7d7d7d",fillOpacity:.3},initialize:function(){this._wkt=new OpenLayers.Format.WKT,OpenLayers.Layer.Vector.prototype.initialize.apply(this,["Polygon Layer",{projection:new OpenLayers.Projection("EPSG:4326"),style:this.polygonStyle}])},setPolygonData:function(t,i){var r=this,u;n(r).trigger("processingPolygons:start"),this.polygons={},u=0,function(){for(var f,e,o,s;u<t.length;){f=t[u],e=r.processLocationData(f),r.polygons[f.id]=e,i&&(o=e.geometry.getCentroid(),s=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(o.x,o.y)),r.showLabel(s,f)),u++,window.setTimeout(arguments.callee),u===t.length&&n(r).trigger("processingPolygons:end");break}}()},processLocationData:function(n){var t=this._wkt.read(n.geometry);if(t.constructor==Array)throw"Multiple feature WKT strings are not supported.";return t.bounds=new OpenLayers.Bounds(n.sw[1],n.sw[0],n.ne[1],n.ne[0]),t.data.id=n.id,t.data.name=n.name,t.data.hoverEnabled=n.hoverEnabled,t},drawPolygon:function(n){this.addFeatures(this.polygons[n])},hidePolygon:function(n){this.removeFeatures(this.polygons[n])},hideAllPolygons:function(){this.removeAllFeatures()},highlightPolygon:function(n){var t,i;if(this.glowPolygon=this.polygons[n],!this.glowPolygon){console.log("LocationId: "+n+" does not exist in the polygon set.");return}for(t=3;t>=0;t--)i=this.glowPolygon.clone(),i.style={strokeColor:"#000",strokeOpacity:.1*t+.1,strokeWidth:t+1,fillOpacity:0},this.addFeatures(i)},showLabel:function(n,t){n.style={fontFamily:"arial",fontSize:11,fontColor:"black",fontOpacity:1,label:t.name},this.addFeatures(n)}})}(jQuery,_),function(n){var t=nspace("kidscount.map.ui");t.InfoBoxManager=function(t,i){this._data=null,this._colors=i,this._$tooltip=n("<div />").addClass("infoBoxWrap").append(n("<div/>").addClass("infoBox")).append(n("<div/>").addClass("infoBoxTip")).hide().appendTo(t),this.offset={x:0,y:3}},function(t){t.setData=function(n){this._data=n},t.setColors=function(n){this._colors=n},t.showInfoBox=function(n,t){var i=this._$tooltip.find(".infoBox");this._data&&(i.empty(),i.append(this.contentForInfoBox(n)),this.updateBoxPosition(t))},t.updateBoxPosition=function(n){n.x-=this._$tooltip.outerWidth()/2+this.offset.x,n.y-=this._$tooltip.outerHeight()+this.offset.y,this._$tooltip.css("left",n.x+"px").css("top",n.y+"px").show()},t.hideInfoBox=function(){this._$tooltip.hide()},t.contentForInfoBox=function(t){var i=this._data.locations[t],e=i.name,r=i.displayValue,u,f;return r||(r="No Data"),u=kidscount.map.config.getColorChipUrl(kidscount.map.config.noDataColor),isNaN(i.rangeIndex)||(u=kidscount.map.config.getColorChipUrl(this._colors[i.rangeIndex])),f=n("<div/>").append(n("<h3/>").html(e)).append(n("<p/>").append(n("<img/>").addClass("map-legend-range-chip").attr("src",u)).append(r)),f.html()}}(t.InfoBoxManager.prototype)}(jQuery),function(n,t){function r(t,i){return i==="0 to 0"&&(i="0"),n("<li/>").append(n("<img/>").attr("src",kidscount.map.config.getColorChipUrl(t))).append(n("<span/>").html(i))}var i=nspace("kidscount.map.ui");i.Legend=function(t,i,r){var u=this,f,s,e,o;this.$el=t,f=!1,s="<span>LEGEND<\/span>",i&&(s+=' <span class="subtitle">('+i+")<\/span>"),this.$el.append("<div class='inner'> \t\t\t\t\t<div class='legend-title open'>"+s+"<\/div> \t\t\t\t\t<div class='legend-main'> \t\t\t\t\t\t<ul><\/ul> \t\t\t\t\t<\/div> \t\t\t\t<\/div>"),i&&this.$el.find(".subtitle").qtip({content:r,show:{delay:200,effect:{length:0}},style:{classes:"ui-tooltip-kidscount-small"},position:{my:"bottom center",at:"top center",target:"mouse",adjust:{x:0,y:-5}}}),this.$el.draggable({containment:this.$el.parent(),handle:this.$el.find(".legend-title"),stop:function(){f=!0,n(u).trigger("legendMoved",u.getPosition())}}),this.$el.find(".legend-title").click(function(){var i=n(".legend-compare").length>0,r=n("#map-container").offset().top+n("#map-container").outerHeight(),t;if(f==!0){f=!1;return}i?o||(o=u.$el.find(".legend-main").outerHeight()):e||(e=u.$el.find(".legend-main").outerHeight()),n(this).hasClass("open")?u.$el.find(".legend-main").slideUp(500):(t=u.$el.offset().top+u.$el.outerHeight()-r,t+=i?o:e,t>0&&u.$el.animate({top:"-="+t+"px"},500,function(){n(u).trigger("legendMoved",u.getPosition())}),u.$el.find(".legend-main").slideDown(500),setTimeout(function(){i?o=u.$el.find(".legend-main").outerHeight():e=u.$el.find(".legend-main").outerHeight();var t=u.$el.offset().top+u.$el.outerHeight()-r;t>0&&u.$el.animate({top:"-="+t+"px"},500,function(){n(u).trigger("legendMoved",u.getPosition())})},500)),n(this).toggleClass("open")})},function(i){i.update=function(t,i,r,u,f){this.updateRanges(t,f),i&&r?this.updateComparisonLocation(t.locations[r],r,u):n(".legend-compare",this.$el).remove(),this.resetLegendPosition()},i.resetLegendPosition=function(n){var t=this.$el.parent();(!this.position||n)&&(this.position={top:t.outerHeight()-this.$el.outerHeight()-5,left:t.outerWidth()-this.$el.outerWidth()-5}),this.$el.show(),this.$el.css("top",this.position.top+"px"),this.$el.css("left",this.position.left+"px")},i.setPosition=function(t,i){var r=this;this.position={top:t,left:i},this.positionOverrode=!0,this.$el.css("top",t+"px"),this.$el.css("left",i+"px");var u=n("#map-legend"),f=n("#map-container").offset().top+n("#map-container").outerHeight(),e=u.offset().top+u.outerHeight()-f;e>0&&r.$el.animate({top:"-="+e+"px"},500,function(){n(r).trigger("legendMoved",r.getPosition());var t=u.offset().top+u.outerHeight()-f;t>0&&r.$el.animate({top:"-="+t+"px"},500,function(){n(r).trigger("legendMoved",r.getPosition())})})};n(window).on("load, resize",function(){var t=n("#map-legend"),i=n("#map-container").outerHeight(),r=n("#map-container").width(),u=i-t.outerHeight(),f=r-t.width();t.css({left:f,top:u})});i.getPosition=function(){return this.$el.position()},i.updateRanges=function(n,i){var f=this.$el.find("ul"),u,e;for(f.empty(),u=0;u<n.mapBreaks.length;u++)e=r(i[u],n.mapBreaks[u].name),e.appendTo(f);t.filter(n.locations,function(n){return!n.value&&n.value!=0}).length>0&&r(kidscount.map.config.noDataColor,"No Data").appendTo(f)},i.updateComparisonLocation=function(t,i,r){var o=this,s="/locationimage.axd?width=40&loc="+i+"&tf="+r,u=n(".legend-compare",this.$el),e,f;u.length===0&&(u=n("<div />").addClass("legend-compare"),n(".legend-main",this.$el).append(u)),u.empty(),e=t?t:"No Data",f=n("<table><tr><td class='legend-compare-image'><\/td><td class='legend-compare-value'><\/td><\/tr><\/table>"),u.append(f),n("td:first",f).append(n("<img/>").on("load",function(){o.positionOverrode||o.resetLegendPosition(!0)}).attr("src",s).qtip({content:e.name,show:{delay:200,effect:{length:0}},style:{classes:"ui-tooltip-kidscount"},position:{my:"bottom center",at:"top center",target:"mouse",adjust:{x:0,y:-5}}})),n("td:last",f).html(e.displayValue)}}(i.Legend.prototype)}(jQuery,_),function(n){var t=nspace("kidscount.map.ui");t.LoadingIndicator=function(t){this._loadingTasks=[],this.$container=n("<div/>").addClass("loading-indicator").hide(),this.$spinner=n("<img/>").attr("src","/images/loading-spinner-small-gray.gif").attr("alt","Loading..."),this.$text=n("<span/>"),this.$container.append(this.$spinner),this.$container.append(this.$text),t&&n("#"+t).append(this.$container)},function(n){n.addTask=function(n,t){typeof t=="undefined"&&(t="Loading..."),this._loadingTasks.push({name:n,text:t}),this.refresh()},n.endTask=function(n){for(var t=0;t<this._loadingTasks.length;t++)if(this._loadingTasks[t].name===n)break;t<this._loadingTasks.length&&this._loadingTasks.splice(t,1),this.refresh()},n.endAllTasks=function(n){for(var t=0;t<this._loadingTasks.length;t++)this._loadingTasks[t].name===n&&(this._loadingTasks.splice(t,1),t--);this.refresh()},n.refresh=function(){this._loadingTasks.length>0?(this.$text.text(this._loadingTasks[0].text),this.$container.show()):this.$container.hide()}}(t.LoadingIndicator.prototype)}(jQuery)