(function(){var n=nspace("kd.viz.map");n.Constants={legislativeDistricts:{4:4,14:14,15:15},layerNames:{google:"Map",satellite:"Satellite",terrain:"Terrain",choropleth:"Location Tiles",polygon:"Polygon Layer"}}})(),function(n,t){var i=nspace("kd.viz.map.MapUtil"),r=nspace("kd.viz.map").Constants;i.listenForInitComplete=function(i,u){var f=0,e=0,o=0,s=0,h=function(){setTimeout(function(){n(u).trigger("loading:all:finished")},500)};t.each(i,function(n){t.each(n.layers,function(n){n.name==r.layerNames.google?(e++,google.maps.event.addListener(n.mapObject,"tilesloaded",function(){e--,s++,e<=0&&o>0&&h()})):(n.events.register("loadstart",n,function(){f++}),n.events.register("loadend",n,function(){f--,o++,f==0&&s>0&&h()}))})})}}(jQuery,_),function(n,t,i){var f=nspace("kd.viz.map.controls"),r=nspace("kd.viz").UrlParams,u=nspace("kd.viz.map").Constants;f.Hover=i.Class(i.Control,{defaultHandlerOptions:{delay:50,pixelTolerance:null,stopMove:!1,name:"hover"},initialize:function(){this.handlerOptions=i.Util.extend({},this.defaultHandlerOptions),i.Control.prototype.initialize.apply(this,arguments),this.handler=new i.Handler.Hover(this,{move:this.onMove},this.handlerOptions)},onMove:function(t){var f=this,o,s,h,e;if(n(t.target||t.srcElement).hasClass("olButton")){f._activePolygon&&n(f).trigger("mouseleave",f._activePolygon);return}if(t.type==="mouseout"){f._activePolygon&&n(f).trigger("mouseleave",f._activePolygon),f._activePolygon=null;return}o=this.map.getLonLatFromViewPortPx(t.xy),s=f._polygonSet;for(h in s)if(s.hasOwnProperty(h)&&(e=s[h],(f._allPolygonsAreLegislativeDistricts||!u.legislativeDistricts[+e.data[r.locationType]])&&e.atPoint(o)&&e.geometry.intersects(new i.Geometry.Point(o.lon,o.lat)))){if(f.isSamePolygon(f._activePolygon,e)){n(f).trigger("mousemove",[f._activePolygon,t.xy]);return}f._activePolygon&&n(f).trigger("mouseleave",f._activePolygon),f._activePolygon=e,n(f).trigger("mouseenter",[e,t.xy]);return}n(f).trigger("mouseleave",f._activePolygon),f._activePolygon=null},isSamePolygon:function(n,t){return n&&t&&n.data.id===t.data.id},update:function(n){var i=this;i._polygonSet=n,i._allPolygonsAreLegislativeDistricts=t.all(i._polygonSet,function(n){return u.legislativeDistricts[+n.data[r.locationType]]})}})}(jQuery,_,OpenLayers),function(){var n=window.nspace("kd.viz.map.controls"),t=window.nspace("kd.events").EventNames;n.LayerSwitcher=function(n){this.map=n,_.bindAll(this)},function(n){n.initialize=function(n){var t=this;t.map||(t.map=n),t.style()},n.style=function(){this.$chosenSelect=$(".layer-switcher");this.$chosenSelect.chosen({disable_search:!0,height:"16px"}).on("change",this.changeLayer);this.$chosenDiv=this.$chosenSelect.next(),this.$chosenDiv.find(".chzn-drop").attr("style","left: -9000px; width: 88px !important; top: 37px;")},n.changeLayer=function(n){var i=$(n.currentTarget).val(),t;t=_.filter(this.map.layers,function(n){return n.name===i})[0],t&&this.map.setBaseLayer(t)}}(n.LayerSwitcher.prototype)}(),function(n){"use strict";var r,i,t,u;r=window.nspace("kd.viz.map.events"),i=window.nspace("kd.viz").UrlParams,t=window.nspace("kd.events").EventNames,u=nspace("kd.events").EventNames.route.hydrate.name,r.EventManager=function(t){n.bindAll(this),this.view=t},function(r){r.start=function(){this.setUpModelSelectorEvents(),this.setUpModelDataEvents(),this.setUpLoadingOverlay(),this.setUpHoverControlEvents(),this.setUpUiEvents(),this.setUpMapAPIEvents()},r.setUpModelSelectorEvents=function(){var t=this,r;r=[i.locationType,i.distribution,i.dataFormat,i.timeFrame],n.each(r,function(n){t.view.model.on("change:"+n,t.view.model.mapModel.syncFromServer)});t.view.model.on("change:"+i.location,t.view.locationDrilldown);t.view.model.on("change:"+i.legislativeDistrict,t.view.drawLegislativeBoundaries);t.view.model.on(u,t.view.model.mapModel.syncFromServer)},r.setUpModelDataEvents=function(){var n=this;n.view.model.mapModel.on(t.data.updated.name,n.view.updateMap);n.view.model.mapModel.once(t.data.updated.name,function(){n.view.model.mapModel.on(t.data.updated.name,function(){n.view.model.get(i.location).length===1&&n.view.locationDrilldown(null,null,{shouldNotZoom:!0})});n.view.locationDrilldown(null,null,{shouldNotZoom:!0})});n.view.model.mapModel.once(t.loading.polygons.finished.name,n.view.drawLegislativeBoundaries)},r.setUpLoadingOverlay=function(){var n=this,r,i;r={object:n.view.$el,loadStartEvent:t.choropleth.loading.name,loadEndEvent:t.choropleth.loading.finished.name,message:"Loading…"},n.view.loadingOverlay.add(r),i={object:n.view.model.mapModel,loadStartEvent:t.data.loading.name,loadEndEvent:t.data.updated.name,message:"Loading…"},n.view.loadingOverlay.add(i),n.view.loadingOverlay.remove(i)},r.setUpHoverControlEvents=function(){var n=this;$(n.view.hoverControl).on("mouseenter mousemove",function(t,i,r){n.view.showLocationDataPoint(i.data,r)});$(n.view.hoverControl).on("mouseleave",function(t,i){i&&i.data&&n.view.polygonLayer.hidePolygon(i.data.id),n.view.infoBoxManager.hide()})},r.setUpUiEvents=function(){var n=this;$(".toggle-chart-sidebar").on(t.sidebar.toggled.name,function(){var t;(n.view.baseMap.updateSize(),n.view.infoBoxManager.$tooltipEl)&&(t=+n.view.infoBoxManager.$tooltipEl.css("left").replace("px",""),$(this).find("a").text()==="(hide)"?n.view.infoBoxManager.$tooltipEl.css("left",t-125+"px"):n.view.infoBoxManager.$tooltipEl.css("left",t+125+"px"))});n.view.$homeButton=$('<a href="#" class="olControlHome olButton" style="display: none;"><\/a>'),n.view.$el.find(".olControlZoom").append(n.view.$homeButton),n.view.$homeButton.click(function(){n.view.centerMap()})},r.setUpMapAPIEvents=function(){var u,n,r;u=this,n=u.view;n.$el.on(t.choropleth.loading.finished.name,function(){n.polygonLayer.hideAllPolygons(n.polygonLayer.polygonStyle)});r=u.view.baseMap,r.events.register("zoomend",undefined,function(){var t=typeof n.options.homeZoomLevel=="undefined"?1:n.options.homeZoomLevel;r.zoom===t?n.$homeButton.css("display","none"):n.$homeButton.css("display","")}),r.events.register("moveend",null,function(){var u,t;u=r.getCenter(),t={},t[i.center]=[u.lon,u.lat],t[i.zoom]=[r.zoom],n.model.set(t)})}}(r.EventManager.prototype)}(_),function(n,t){"use strict";var i=t("kd.viz.map.config");i.MapConfig={minZoom:5,maxZoom:14,serviceUrl:"/ChoroplethOverlayService.axd",polygonServiceUrl:"/LocationPolygonService.axd",mapDataUrl:"/Api/Map/Data",initialBoundingBox:new n.Bounds(-14132273.911966,3722647.2455606,-12517923.874808,5295415.5393374),themeColors:"0.7|#FFFFFF|#D4E5F7,#A8CCF0,#5299E0,#096096",dataColors:[{data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAABJJREFUKFNj+I8XjEpjAf//AwD6HirkbHwpzQAAAABJRU5ErkJggg==",stateData:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAA3CAYAAACYV8NnAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAB9ElEQVRoQ+3Yu27CMBiGYUTvgqlcHNfAXFSQysbGpTB0ZUZIDGwMiAGEiALlMACuvsSOXMjR/m1iNa+UKlar30+jNEqpMQdzF93pfJAdNorQFFXolKJ7mmLDCp1SdU9X6JRqt9vNPbTnee6h8cVJ9OFwINnQKho5iUa6m1bolCq0k2hkA/4HjVyAP6FR2eGxaEQFx7sNdUbRCHMulwtf0ZSKFvBGo/ETnCiGOfv9nq/0S0Rjk/P5zNrtNnur17UvFeDr9Zqv9EpEbzYbdjqdWLf7GWzYbL5/828phzmLxYKv1EtEi3zfj24TijBrNpvxlVqZaESJRpinMzMXejKZkMOR6sxcaIR7vCzw3GhkAo2Kzi0FGhWZXRo0yju/EBr1+18ePzVSHnhhNLJxxe/3O189p4Sez+cvhSuh0XQ6tQKPe7VVRiPTaIQ9rtcrX4Vpoak+mcrq8YproZENNJL3+Z9o8QdpAy/20EYj8WgSeFO/AObudjsatIx9PCgT80jQ4rVVPvBkwaNKrHWTZ5Cgs9put9p46+jhcMhWq1Xw+Ycq3Dh6MBjws7DRaMR6vV70IlEUjp+X30OMoJfLJT8Li/vvuwgcP2v8Sj/WarXYeDzmqzCVqy2ygj4ej8HzVS4LLa6ufIisoJOKg4kjrZeiVXMQzdgvcjOYOPZfzoUAAAAASUVORK5CYII=",defaultText:"No Data",defaultStyle:"border:1px solid #c1c1c2;height:inherit;width:inherit;display:inline;"},{data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAABVJREFUKFNjuPL0O0E0qmgQKnr6HQCbrYMQF7MYJgAAAABJRU5ErkJggg==",stateData:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAA3CAYAAACYV8NnAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAACAUlEQVRoQ+3Yu4rCQBgFYHHfwmp9OJ/BemUV1s7OR7HY1loECzsLSaGIIbqaFOosJ5kJ2Ti5zCVjhs2BIwryz+cQw2iLWBh70YPBh7aaSIxeOb5yG3RO4mtaB7xB56S5pht0Tlr3+90+tOu69qHxYCX6fD5rgRtFI1aiEVV4g85Jg7YSjZqA/0EjNsCf0Ejd4Vw0oguOs43uVIpGMScIAjpVT3LRDN7pdH7SGJFizul0opPVk4nGIr7vk36/T97a7YCHESngu92OTldLJnq/35Pr9UqGw89wwW73/ZuHESnmbDYbuoJ8MtEsnufFl4mOhrNWKzpdLoVoRCcaxTxUNqXQi8VCOxyVhZdCI7jG6wIvjUaqQKOi8FqgURF4bdBoWbgQGhmPv1zegrpaBi6MRkzs+OPxoKs9Rwq9Xq9fCpdCI8vl0gicd7SVRiNVo1Gscbvd6IpRlNC6/pkqanrHldCICTSKdVj+J5p9IU3gGVwZjbBbE8NX9QEw93g86kEnsenyFpct5iFa0OzYmizuLLhVsdc8hEgxg0ULuiiHw0EZbxw9nU6J4zjh/x+y8MrRk8mEPosym83IaDSKDxKicLw/eQ6pBL3dbumzKLxf3yJwvLfynU6n1+uR+XxOX0WR2W0WI+jL5RLeX5MpQrPdTZbFCDorPBhrXl6Klo2FaEJ+AbNGkxXeknt5AAAAAElFTkSuQmCC",defaultText:"7.1% to 9.9%"},{data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAABVJREFUKFNjWHHmA0E0qmgQKjrzAQByMlhQVJU51QAAAABJRU5ErkJggg==",stateData:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAA3CAYAAACYV8NnAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAACBElEQVRoQ+3Yu2oCQRgFYDFvYRUfzmewjkQhdnY+Qh7BIq1dQAQLOwuxUMT1EnULdcJxZ5bNOnuZqztkDxxRkH8+h3UZrRAH4y661XrTVhsJ0Z/fW+WW6JSE17QOeIlOSXlNl+iUVK7Xq3toz/PcQ+PBSfThcNACt4pGnEQjqvASnZIS7SQatQH/g0ZcgD+gkaLDuWhEFxxnG90xikYxx/d9OlVPUtEMXqvVfuIYkWLOfr+nk9WTiMYi5/OZNJtN8lKt+jyMSAFfLpd0uloS0avVipxOJ9Juv98XrNdfv3gYkWLObDajK8gnEc2y2+3Cy0RHMWsymdDpcslEIzrRKOahssmFHo1G2uGoLDwXGsE1XhR4bjRiAo2KwguBRkXghUGjeeFCaKTb/fB4C+pqHrgwGrGx47fbja72GCn0dDp9KlwKjYzHYytw3tFWGo2YRqNY43K50BWDKKF1/TOV1fiOK6ERG2gU67D8TzT7QtrAM7gyGmG3JoY39QEwd7PZ6EFHsfHyFpct5iFa0OzYGi3uLLhVsdc8hEgxg0ULOivr9VoZbx3d7/fJYrG4//8hCzeO7vV69FmQwWBAOp1OeJAQheP90XOIEfR8PqfPgvB+fYvA8V7jOx1Po9Egw+GQvgois9ssVtDH4/F+f40mC812N1oWK+ik8GCsaXkqWjYOogn5BUT8kVY6rvFDAAAAAElFTkSuQmCC",defaultText:"10.0% to 13.3%"},{data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAABVJREFUKFNjCJr5gCAaVTQIFc18AACkjQJAghspiwAAAABJRU5ErkJggg==",stateData:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAA3CAYAAACYV8NnAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAACA0lEQVRoQ+3YPWoCQRwFcDG3sIpXyh08g3UkCrGzMzexSGstgoWdAbFQxEWNuoU64bkzy2ad/ZhPd3AfPFGQ//wc1mW0QhyMu+hW611bbSREv339KLdEpyS8pnXAS3RKymu6RKekcrlc3EN7nuceGg9Oovf7vRa4VTTiJBpRhZfolJRoJ9GoDfg/NOIC/A6NFB3ORSO64Djb6I5RNIo5vu/TqXqSimbwWq32G8eIFHN2ux2drJ5ENBY5nU6k2WySl2rV52FECvhyuaTT1ZKIXq1W5Hg8knb747Zgvf76zcOIFHNmsxldQT6JaJbtdhteJjqKWZPJhE6XSyYa0YlGMQ+VTS70aDTSDkdl4bnQCK7xosBzoxETaFQUXgg0KgIvDBrNCxdCI93up8dbUFfzwIXRiI0dv16vdLX7SKGn0+lD4VJoZDweW4HzjrbSaMQ0GsUa5/OZrhhECa3rn6msxndcCY3YQKNYh+U50ewLaQPP4MpohN2aGN7UB8DczWajBx3FxstbXLaYh2hBs2NrtLiz4FbFXvMQIsUMFi3orKzXa2W8dXS/3yeLxeL2/4cs3Di61+vRZ0EGgwHpdDrhQUIUjvdHzyFG0PP5nD4Lwvv1LQLHe43vdDyNRoMMh0P6KojMbrNYQR8Oh9v9NZosNNvdaFmsoJPCg7Gm5aFo2TiIJuQPHo2KdC3nuwMAAAAASUVORK5CYII=",defaultText:"13.4% to 16.3%"},{data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAABVJREFUKFNj4EyYRhCNKhqEihKmAQAc0I9xa4CjvAAAAABJRU5ErkJggg==",stateData:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAA3CAYAAACYV8NnAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAACBElEQVRoQ+3Yu2oCQRgFYDFVXsEqvlkan8E6EgXtbIKPYpHWWgQLOwuxUMRFjbqFOuG4M8tmnb3M1R2yB44oyD+fw7qMVoiDcRfdan1oq42E6Nf3L+WW6JSE17QOeIlOSXlNl+iUVK7Xq3toz/PcQ+PBSfThcNACt4pGnEQjqvASnZIS7SQatQH/g0ZcgD+gkaLDuWhEFxxnG90xikYxx/d9OlVPUtEMXqvVfuIYkWLOfr+nk9WTiMYi5/OZNJtN8lKt+jyMSAFfrVZ0uloS0ev1mpxOJ9Juf94XrNffvnkYkWLOfD6nK8gnEc2y2+3Cy0RHMWs6ndLpcslEIzrRKOahssmFHo/H2uGoLDwXGsE1XhR4bjRiAo2KwguBRkXghUGjeeFCaKTX63q8BXU1D1wYjdjY8dvtRld7jBR6Nps9FS6FRiaTiRU472grjUZMo1Gscblc6IpBlNC6/pnKanzHldCIDTSKdVj+J5p9IW3gGVwZjbBbE8Ob+gCYu91u9aCj2Hh5i8sW8xAtaHZsjRZ3Ftyq2GseQqSYwaIFnZXNZqOMt44eDAZkuVze//+QhRtH9/t9+izIcDgknU4nPEiIwvH+6DnECHqxWNBnQXi/vkXgeK/xnY6n0WiQ0WhEXwWR2W0WK+jj8Xi/v0aThWa7Gy2LFXRSeDDWtDwVLRsH0YT8AoCH1peB5i8YAAAAAElFTkSuQmCC",defaultText:"16.4% to 21.2%"}],getNumBreaks:function(){return this.getThemeColors().length},getThemeColors:function(){return this.getColorConfig().themeColors},getColorConfig:function(){var n=this.themeColors.split("|");return{alpha:n[0],noDataColor:n[1],themeColors:n[2].split(",")}},sharedKeysWithJump:"jump,legt,leg,loct,fmt,loc,tf,dist,center,zoom",sharedKeys:"legt,leg,loct,fmt,loc,tf,dist,center,zoom",keysToUpdateSilently:{center:!0,zoom:!0,loc:!0}}}(OpenLayers,nspace),function(n){"use strict";var i=nspace("kd.viz.map.layers"),t=nspace("kd.events").EventNames,r=nspace("kd.viz.map").Constants;i.ChoroplethLayer=OpenLayers.Class(OpenLayers.Layer.WMS,{serviceUrl:kd.viz.map.config.MapConfig.serviceUrl,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,theme:kd.viz.map.config.MapConfig.themeColors},initialize:function(i){OpenLayers.Layer.WMS.prototype.initialize.apply(this,[r.layerNames.choropleth,i.serviceUrl||this.serviceUrl,_.extend(this.DEFAULT_PARAMS,i),{displayInLayerSwitcher:!1,eventListeners:{loadend:function(i){n(this.div).parents(".map.olMap:first").trigger(t.choropleth.loading.finished.name),i.object.map.updateSize()},loadstart:function(){n(this.div).parents(".map.olMap:first").trigger(t.choropleth.loading.name)}}}]),this.visibility=!0},update:function(n,t){this.visibility=!0;var i={fs:n,currentLocId:t};this.mergeNewParams(i)}})}(jQuery),function(n,t){"use strict";var r=window.nspace("kd.viz.map.layers"),u=window.nspace("kd.viz.map").Constants,i=window.nspace("kd.viz.map.config").MapConfig;r.GoogleBaseLayer=n.Class(n.Layer.Google,{mapStyles:[{featureType:"all",stylers:[{saturation:-80}]}],initialize:function(){var t=this;n.Layer.Google.prototype.initialize.apply(t,[u.layerNames.google,{type:"custom",minZoomLevel:i.minZoom,maxZoomLevel:i.maxZoom,eventListeners:{added:t.styleMap}}])},styleMap:function(){var n=new t.maps.StyledMapType(this.mapStyles,{name:"Styled gmap"});this.mapObject.mapTypes.set("custom",n),this.mapObject.setMapTypeId("custom")}}),r.GoogleTerrainLayer=function(){return new n.Layer.Google(u.layerNames.terrain,{type:t.maps.MapTypeId.TERRAIN,minZoomLevel:i.minZoom})},r.GoogleHybridLayer=function(){return new n.Layer.Google(u.layerNames.satellite,{type:t.maps.MapTypeId.HYBRID,minZoomLevel:i.minZoom})}}(OpenLayers,google),function(n,t,i){"use strict";var r=nspace("kd.viz.map.layers"),u=nspace("kd.viz.map").Constants;r.PolygonLayer=i.Class(i.Layer.Vector,{polygonStyle:{strokeWidth:2,strokeColor:"#7d7d7d",fillColor:"#7d7d7d",fillOpacity:.3},legislativeHighlightPolygonStyle:{strokeColor:"#404040",strokeOpacity:1,strokeWidth:3,fillOpacity:0},locationHighlightPolygonStyle:{strokeColor:"#eba53e",strokeOpacity:1,strokeWidth:2,fillOpacity:0},initialize:function(){this._wkt=new i.Format.WKT,i.Layer.Vector.prototype.initialize.apply(this,[u.layerNames.polygon,{projection:new i.Projection("EPSG:3857"),style:this.polygonStyle,displayInLayerSwitcher:!1}])},setPolygonData:function(n){var t,i,r;if(this.polygons={},n)for(t=0;t<n.length;t++)i=n[t],this.polygons[i.id]||(r=this.processLocationData(i),this.polygons[i.id]=r)},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 i.Bounds(n.sw[1],n.sw[0],n.ne[1],n.ne[0]),t.data.id=n.id,t.data.dcId=n.dcId,t.data.name=n.name,t.data.loct=n.loct,t},drawPolygon:function(n){this.addFeatures(this.polygons[n])},hidePolygon:function(n){this.removeFeatures(this.polygons[n])},hideAllPolygons:function(n){var t=this,i;if(n)for(i=t.features.length-1;i>=0;i--)t.areStylesEquivalent(t.features[i].style,n)&&t.removeFeatures(t.features[i]);else t.removeAllFeatures()},highlightPolygon:function(n,t){if(this.glowPolygon=this.polygons[n],!this.glowPolygon){console.warn("LocationId: "+n+" does not exist in the polygon set.");return}var i=this.glowPolygon.clone();i.style=t||this.locationHighlightPolygonStyle,this.addFeatures(i)},areStylesEquivalent:function(n,t){return n.strokeColor===t.strokeColor&&n.strokeOpacity===t.strokeOpacity&&n.strokeWidth===t.strokeWidth&&n.fillOpacity===t.fillOpacity}})}(jQuery,_,OpenLayers),function(n,t){"use strict";var f,i,r,u;f=window.nspace("kd.viz.map.models"),i=window.nspace("kd.events").EventNames,r=window.nspace("kd.viz.map.config"),u=window.nspace("kd.viz").UrlParams,f.MapModel=n.Model.extend({initialize:function(){t.bindAll(this)},defaults:{mapPolygons:[],legislativePolygons:[]},getMapData:function(){var n=this,t=this.queryStringCollection().toQueryString(),u={filterString:t,numBreaks:r.MapConfig.getNumBreaks()};return n.trigger(i.loading.data.name),$.ajax({type:"GET",url:r.MapConfig.mapDataUrl,data:u}).done(function(t){n.set("mapData",t,{silent:!0})}).always(function(){n.trigger(i.loading.data.finished.name)})},syncFromServer:function(){var n=this;n.trigger(i.data.loading.name),$.when(this.getMapData(),this.getMapPolygons(),this.getLegislativePolygons()).done(function(){n.trigger(i.data.updated.name)})},syncLegislativePolygons:function(){var n=this;$.when(this.getLegislativePolygons()).done(function(){n.trigger(i.loading.legislativePolygons.finished.name)})},getMapPolygons:function(){var n=this,t=this.queryStringCollection().toQueryString()+"&numBreaks="+r.MapConfig.getThemeColors().length;return this.trigger(i.loading.polygons.name),$.ajax({type:"GET",url:r.MapConfig.polygonServiceUrl,data:t}).done(function(t){n.set("mapPolygons",t,{silent:!0})}).always(function(){n.trigger(i.loading.polygons.finished.name)})},getLegislativePolygons:function(){var o,f,s,n,h,e;return(o=this,e=o.get("legislativePolygons"),f=this.queryStringCollection(),n=f._collection[u.legislativeType],!n||!(n instanceof Array)||n.length===0||n[0]instanceof Array)?$.Deferred().resolve():(f.setValue(u.locationType,n),s=f.toQueryString()+"&numBreaks="+r.MapConfig.getThemeColors().length,h=t.any(e,function(t){return t[u.locationType]===+n[0]}),h)?$.Deferred().resolve():(this.trigger(i.loading.legislativePolygons.name),$.ajax({type:"GET",url:r.MapConfig.polygonServiceUrl,data:s}).done(function(n){t.each(n,function(n){e.push(n)}),o.set("legislativePolygons",e,{silent:!0})}))},getLocationIndex:function(n){var r,t,u,f,i,e,o;if(t=this.get("mapData").legendData.ranges,u=parseFloat(t[0].minValue,10),f=parseFloat(t[t.length-1].maxValue,10),r=parseFloat(n,10),r<u)return-1;if(r>f)return t.length-1;for(i=0;i<t.length;i++)if(e=parseFloat(t[i].minValue,10),o=parseFloat(t[i].maxValue,10),r>=e&&r<=o)return i;return-1}})}(Backbone,_),function(){"use strict";var n=nspace("kd.viz.map.ui");n.InfoBoxManager=function(n){var t=this;_.each(n,function(n,i){t[i]=n}),t.top=15,t.maxWidth=300,t.isIE=document.all?!0:!1,t.offset=t.offset||{},_.bindAll(t)},function(n){n.show=function(n){this.$tooltipEl||this.initializeTooltip(),this.$tooltipEl.css("display","block"),this.$tooltipContainer.html(n.htmlString),this.$tooltipEl.width("auto"),this.isIE&&(this.$tooltipTop.css("display","none"),this.$tooltipBottom.css("display","none"),this.$tooltipEl.css("width",this.$tooltipEl[0].offsetWidth),this.$tooltipTop.css("display","block"),this.$tooltipBottom.css("display","block")),this.$tooltipEl[0].offsetWidth>this.maxWidth&&this.$tooltipEl.width(this.maxWidth+"px"),this.tooltipHeight=this.$tooltipEl.height()+this.top,this.fade(1)},n.initializeTooltip=function(){this.$tooltipEl=$("<div><\/div>"),this.$tooltipEl.addClass("custom-tooltip"),this.$tooltipTop=$("<div><\/div>"),this.$tooltipTop.addClass("border"),this.$tooltipContainer=$("<div><\/div>"),this.$tooltipContainer.addClass("content"),this.$tooltipBottom=$("<div><\/div>"),this.$tooltipBottom.addClass("border"),this.$tooltipEl.append(this.$tooltipContainer),(this.$insertBeforeEl||this.$el).before(this.$tooltipEl),this.$el.mousemove(this.pos),this.$tooltipEl.mousemove(this.pos)},n.pos=function(n){var i,t,r,u;this.$tooltipEl&&(i=n.currentTarget||n.delegateTarget,t=i.getBoundingClientRect(),u=n.clientX-t.left,r=n.clientY-t.top,this.$tooltipEl.css("top",r-this.tooltipHeight-(this.offset.top||0)+"px"),this.$tooltipEl.css("left",u+-(this.$tooltipEl.width()/2)-(this.offset.left||0)+"px"))},n.fade=function(n){n===-1&&this.$tooltipEl&&this.$tooltipEl.css("display","none")},n.hide=function(){this.$tooltipEl&&(clearInterval(this.$tooltipEl.timer),this.fade(-1))}}(n.InfoBoxManager.prototype)}(),function(){var n=nspace("kd.viz.map.ui"),t=nspace("kd.viz.map.config").MapConfig;n.KidsdataInfoboxManager=_.clone(n.InfoBoxManager),function(n){n.showCaption=function(n){var r,u,f,o,e,i,s;this.validateCaption(n),r=$('<h6 class="infobox-display-location"><\/h6>'),n.fallbackLocationName?(u=$('<div class="infobox-actual-location"><\/div>'),u.text(n.locationName+"; data for:"),r.text(n.fallbackLocationName)):r.text(n.locationName),n.legislativeDistrictName&&(f=$("<h6 class='legislative-district'><\/h6>"),f.text(n.legislativeDistrictName)),n.dataValue?(o=$("<div class='data-content'><\/div>"),s=t.dataColors[n.dataColor+1],e=$("<img class='swatch' alt='' />").attr("style",s.defaultStyle).attr("src",s.data)):r.css("padding","0px"),i=$("<div><\/div>"),u&&i.append(u),i.append(r),f&&i.append(f),i.append("<h6 class='time-frame'>("+n.timeframe+")<\/h6>"),o&&e&&(i=i.append(o.append(e)),e.after(n.dataValue)),this.show({htmlString:i[0].innerHTML})},n.validateCaption=function(n){if(n.locationName==null)throw"locationName is required.";if(n.dataValue==null)throw"dataValue is required.";if(n.timeframe==null)throw"dataValue is required.";}}(n.KidsdataInfoboxManager.prototype)}(),function(){var n=window.nspace("kd.viz.map.ui");n.LoadingOverlay=function(n,t,i){var r=this;if(r.$el=n,r.$messageEl=t,r.eventMessages=[],!$.isArray(i))throw"options has to be an array of events to listen to and corresponding loading messages";_.each(i,function(n){r.add(n)}),r.eventMessages[0]&&r.showFirstMessage(),_.bindAll(this)},function(n){n.add=function(n){this.validate(n),this.eventMessages.push(n),this.addEventHandler(n),this.showFirstMessage()},n.validate=function(n){if(n.object&&n.loadStartEvent&&n.loadEndEvent&&n.message){if(!n.object.on)throw"each object must implement the on method (standard with jQuery objects)";}else throw"each object in the array must expose the following properties: object, loadStartEvent, loadEndEvent, message";},n.showMessage=function(n){var t=this;t.$messageEl.text(n),t.$el.fadeIn()},n.showFirstMessage=function(){this.showMessage(this.eventMessages[0].message)},n.remove=function(n){var t=this;t.eventMessages=_.reject(t.eventMessages,function(t){return t.object==n.object&&t.loadStartEvent===n.loadStartEvent}),t.eventMessages.length>0?t.showFirstMessage():t.$el.fadeOut()},n.addEventHandler=function(n){var t=this;n.object.on(n.loadStartEvent,function(){_.any(t.eventMessages,function(t){return t.object==n.object&&t.loadStartEvent===n.loadStartEvent})?t.showFirstMessage():t.add(n)});n.object.on(n.loadEndEvent,function(){t.remove(n)})}}(n.LoadingOverlay.prototype)}(),function(){"use strict";var n=window.nspace("kd.viz.map.views"),t=window.nspace("kd.viz").UrlParams;n.BaseMapView=Backbone.View.extend({isLocationTypeValid:function(){var n=this.model.get(t.locationType);return n.length===0||!n[0]?!1:!0}})}(),function(n){"use strict";var t,r,i;t=window.nspace("kd.viz.map.views"),r=window.nspace("kd.events").EventNames,i=window.nspace("kd.viz").UrlParams,t.GetUrlView=t.BaseMapView.extend({initialize:function(){var t,u;if(t=this,u=t.$el.find("div.get-url"),t.isLocationTypeValid()){n.bindAll(t);t.model.on(r.route.hydrate.name,t.hydrateView);t.$el.find("button.get-url").click(function(n){var f,e,o,r;f=u.find("input"),e=t.model.mapModel.get("baseMap"),o=e.getCenter(),r={},r[i.center]=[o.lon,o.lat],r[i.zoom]=[e.zoom],t.model.set(r),f.val(document.location.protocol+"//"+document.location.hostname+document.location.pathname+"#"+t.model.queryStringCollection().toQueryString()),u.show(),f[0].select(),n.stopPropagation()});u.find("button").on("click",function(){u.hide()});$("body").click(function(){u.hide()}),u.click(function(n){n.stopPropagation()})}},hydrateView:function(){this.$el.show()}})}(_),function(n,t){"use strict";var r=window.nspace("kd.viz.map.views"),i=window.nspace("kd.viz.map"),u=window.nspace("kd.events").EventNames,f=window.nspace("kd.viz").UrlParams;r.LegendView=r.BaseMapView.extend({initialize:function(t){var i=this;if(i.$chartContainer=$(t.mapEl||"#gmap-container"),n.bindAll(this),i.isLocationTypeValid()){i.model||(i.model=t.model),i.$insertEl=t.$insertEl,i.offset=t.offset,i.createLegend();i.model.mapModel.on(u.loading.data.finished.name,i.render);i.$el.draggable({containment:i.$chartContainer.selector});i.$el.find(".button-collapse").on("click",{viewRef:i},i.toggleCollapse);$(".toggle-chart-sidebar").on(u.sidebar.toggled.name,i.toggleSidebar)}},render:function(){var n,u,t,r,f,e;n=this,u=n.$el.find(".swatch:not(.state-wide)"),t=n.model.mapModel.get("mapData").legendData,r=n.$el.find(".state-wide"),u.each(function(n){var r=$(this),i=t.ranges[n-1];n!==0&&(i?(r.parent().show(),e=i.minDisplayValue===i.maxDisplayValue?i.minDisplayValue:i.minDisplayValue+" to "+i.maxDisplayValue,r.next().html(e)):r.parent().hide())}),r.find("div > img").attr("src",t.stateIndex>-1?i.config.MapConfig.dataColors[t.stateIndex+1].stateData:i.config.MapConfig.dataColors[0].stateData),r.find("div + div > div + div").html(t.stateData||"No Data"),f=n.getDataFormat(t.dataFormats),n.$el.find("h6").text(f),this.$el.show()},toggleCollapse:function(n){var r,t,i,u,f,e;r=$(n.currentTarget),t=n.data.viewRef,i=t.$el.find(".legend-section"),u=+t.$chartContainer.outerHeight(),e=t.$el.position();switch(i.css("display")){case"none":case"hidden":i.css("display",""),r.css("background-position","");break;default:r.css("background-position","19px 0"),i.css("display","none")}f=t.$el.outerHeight(),f+ +e.top>u&&t.$el.css("top",u-f)},toggleSidebar:function(n,t){var i=this,u=+i.$el.width(),r=+i.$chartContainer.width(),f=+i.$el.position().left,o,e;if(i.$el.css("left")!=="auto"){if(o=f<t/2,o){f>r-u&&i.$el.css("left","8px");return}if(e=r-(t-f),e+u>r){i.$el.css("left",r-u-8+"px");return}i.$el.css("left",e+"px")}},getDataFormat:function(t){var i;if(n.size(t)===1)return n.values(t)[0];if(i=this.model.get(f.dataFormat),i)return t[i[0]];throw"There needs to be a data format defined for the legend to be populated (Number, Rate Per 1000, Percent, etc.)";},createLegend:function(){var r,u,n;n={dataColors:i.config.MapConfig.dataColors},r=$.ajax({type:"GET",url:"/js/kidsdata/viz/map/templates/legend.html",async:!1}).responseText,n.name=$("body div:first").hasClass("compact")?":":"",u=t.render(r,n),this.$insertEl.after(u),this.$el=$(this.$el.selector)}})}(_,Mustache),function(n){"use strict";var i=window.nspace("kd.viz.map.ui"),t=window.nspace("kd.viz.map"),r=window.nspace("kd.viz").UrlParams;i.MapFactory={create:function(r,u,f){var s,h,c,l,e,a,o;return s=new t.layers.GoogleBaseLayer,h=new t.layers.GoogleHybridLayer,c=new t.layers.GoogleTerrainLayer,l=new t.layers.ChoroplethLayer({fs:u}),e=new t.layers.PolygonLayer,a=new t.controls.Hover,o=new n.Map(r,{layers:[s,h,c,l,e],units:"m",projection:new n.Projection("EPSG:3857"),controls:[a,new n.Control.Zoom,new n.Control.Navigation({zoomWheelEnabled:!1,dragPanOptions:{enableKinetic:!0}})]}),f.model&&f.selectEnabled&&i.MapFactory.addSelectControl(o,e,f),o},addSelectControl:function(t,i,u){var f;f=new n.Control.SelectFeature([i]),f.handlers.feature.stopDown=!1;i.events.on({featureselected:function(n){i.hideAllPolygons(i.locationHighlightPolygonStyle),i.highlightPolygon(n.feature.data.id,i.locationHighlightPolygonStyle),u.model.set(r.location,[n.feature.data.dcId],{shouldDrilldownLocation:!1})}});t.addControl(f),f.activate()}}}(OpenLayers),function(n,t,i){"use strict";var r,e,s,u,f,o;r=window.nspace("kd.viz.map"),e=window.nspace("kd.viz.map.views"),s=window.nspace("kd.events"),u=window.nspace("kd.events").EventNames,f=window.nspace("kd.viz").UrlParams,o=window.nspace("kd.viz.map").Constants,e.SingleMapView=e.BaseMapView.extend({initialize:function(n){var t=this;i.each(n,function(n,i){t[i]=n}),i.bindAll(t);t.model.once(u.route.hydrate.name,t.initializeMap);this.model.on(u.route.hydrate.name,t.updateMap,t);this.model.on(u.route.hydrate.name,t.drawLegislativeBoundaries);this.model.on(u.route.hydrate.name,t.locationDrilldown)},renderCompletePromise:$.Deferred(),getRenderCompletePromise:function(){return this.renderCompletePromise},initializeMap:function(){var n,t;if(n=this,n.$loading=$(".loading"),!n.isLocationTypeValid()){n.$loading.fadeOut(),n.$el.html("<strong>No map data is available for this indicator.<\/strong>");return}n.model.mapModel.syncFromServer(),n.constructMapObject(),n.model.mapModel.set("baseMap",n.baseMap),n.constructMapUiHelpers(),t=new r.events.EventManager(n),t.start(),n.centerMap(!0),r.MapUtil.listenForInitComplete([n.baseMap],this);$(this).on("loading:all:finished",function(){window.location.href.indexOf("/img")===-1&&n.detectIe(),$(".infomsg").css("display","none"),s.fireDataReady(n)});n.trigger(u.render.complete.name)},detectIe:function(){var n=window.navigator.userAgent,i=n.indexOf("MSIE "),r=n.indexOf("Trident/"),u=n.indexOf("Edge/"),t;(i>0||u>0)&&this.checkIeCookie(),r>0&&(t=n.indexOf("rv:"),t>0&&this.checkIeCookie())},checkIeCookie:function(){for(var i="kidsdata_ie=",r=document.cookie.split(";"),n,u,t=0;t<r.length;t++){for(n=r[t];n.charAt(0)==" ";)n=n.substring(1);n.indexOf(i)==0&&(seeMsgValue=n.substring(i.length,n.length))}!0&&$(".map").each(function(){$(this).addClass("ie-map"),$(this).append('<div class="ie-map-message-wrapper"><div class="ie-map-message"><a href="#" class="ie-map-message-close">x<\/a><div class="ie-map-message-dialog"><h3>Maps work best in other browsers<\/h3><p>Please be aware that some map features may not be accessible in Internet Explorer.<\/p><p>We recommend using <a href="https://www.google.com/chrome/" target="_blank" title="Get Chrome">Google Chrome<\/a> or <a href="https://www.mozilla.org/en-US/firefox/new/" target="_blank" title="Get Firefox">Mozilla Firefox<\/a> instead.<\/p><\/div><img src="/images/data-guy-2.png" alt="kids data guy" class="image ie-map-message-data-guy"><\/div><\/div><\/div>')}),u=1;$(".ie-map-message-close").on("click",function(n){var t=new Date;return $(".ie-map-message-wrapper").hide(),t.setTime(t.getTime()+n*36e5),document.cookie="kidsdata_ie=dismissed; expires="+t.toUTCString()+"; path=/"})},constructMapObject:function(){var n=this;n.baseMap=r.ui.MapFactory.create(n.$el[0],n.model.queryStringCollection().toQueryString(),{model:n.model,selectEnabled:n.selectEnabled}),n.choroplethLayer=i.filter(n.baseMap.layers,function(n){return n.name===o.layerNames.choropleth})[0],n.polygonLayer=i.filter(n.baseMap.layers,function(n){return n.name===o.layerNames.polygon})[0],n.hoverControl=i.filter(n.baseMap.controls,function(n){return!!n.handlerOptions&&n.handlerOptions.name==="hover"})[0]},constructMapUiHelpers:function(){this.layerSwitcher=new r.controls.LayerSwitcher,this.layerSwitcher.initialize(this.baseMap),this.infoBoxManager=new r.ui.KidsdataInfoboxManager({$el:this.$el,$insertBeforeEl:this.$insertBeforeEl||this.$el}),this.loadingOverlay=new r.ui.LoadingOverlay(this.$loading,this.$loading.find("span"),[])},getLegislativeDistrict:function(t){var r,u;return r=this,i.find(r.model.get(f.legislativeDistrict),function(f){var s,e,o;return(s=i(r.model.mapModel.get("legislativePolygons")).filter(function(n){return n.dcId===f}).first().id,e=r.baseMap.getLonLatFromViewPortPx(t),o=r.polygonLayer.polygons[s],o.atPoint(e)&&o.geometry.intersects(new n.Geometry.Point(e.lon,e.lat)))?(u=o.data.name,!0):!1}),u},centerMap:function(n){var t,i;if(t=this.model.get(f.center),i=this.model.get(f.zoom),n===!0&&t&&i&&t.length===2&&i.length===1){this.baseMap.setCenter(t,i[0]);return}this.baseMap.zoomToExtent(this.initialBoundingBox||r.config.MapConfig.initialBoundingBox)},updateMap:function(){var n=this;n.choroplethLayer.update(n.model.queryStringCollection().toQueryString(),n.model.get("currentLocationId"),n.model.get("comparisonLocationId")),n.polygonLayer.setPolygonData(n.model.mapModel.get("mapPolygons").concat(n.model.mapModel.get("legislativePolygons"))),n.hoverControl.update(n.polygonLayer.polygons),n.hoverControl.activate()},showLocationDataPoint:function(n,t){var i,u,f,r;i=this,u=i.model.mapModel.get("mapData").dataByFips,i.dataPoint="N/A",i.dataValue=null,i.fallbackLocationName=null,i.polygonLayer.drawPolygon(n.id),u&&(r=u[n.id],r&&(i.dataPoint=r.displayValue,i.dataValue=r.value,i.fallbackLocationName=r.fallbackLocationName)),f=i.getLegislativeDistrict(t),i.infoBoxManager.showCaption({locationName:n.name,fallbackLocationName:i.fallbackLocationName,dataValue:i.dataPoint,dataColor:i.model.mapModel.getLocationIndex(i.dataValue),legislativeDistrictName:f,timeframe:i.getTimeFrameText()})},locationDrilldown:function(t,r,u){var l,v,s,o,h,c,e,a;if(l=this.model.get(f.location)[0],!u||u.shouldDrilldownLocation!==!1){if(this.polygonLayer.hideAllPolygons(this.polygonLayer.locationHighlightPolygonStyle),this.infoBoxManager.hide(),!l){this.centerMap(!1);return}(v=this.model.mapModel.get("mapPolygons"),s=i.filter(v,function(n){return n.dcId===l})[0],s)&&(o=this.polygonLayer.processLocationData(s),this.polygonLayer.highlightPolygon(s.id,this.polygonLayer.locationHighlightPolygonStyle),u&&u.shouldNotZoom==null&&this.baseMap.zoomToExtent(o.bounds.scale(4,new n.LonLat((o.bounds.left+o.bounds.right)/2,(o.bounds.top+o.bounds.bottom)/2))),c=o.geometry.getCentroid(),e=this.baseMap.getExtent(),e.contains(c.x,c.y))&&(a={x:(c.x-e.left)/(e.right-e.left),y:1-(c.y-e.bottom)/(e.top-e.bottom)},this.showLocationDataPoint(s,{x:this.$el.width()/2,y:this.$el.height()/2}),h=this.$el.offset(),h.left+=this.$el.width()*a.x-$(document).scrollLeft(),h.top+=this.$el.height()*a.y-$(document).scrollTop(),this.infoBoxManager.pos({clientY:h.top,clientX:h.left,currentTarget:this.$el[0]}))}},drawLegislativeBoundaries:function(){var n=this;n.polygonLayer.hideAllPolygons(n.polygonLayer.legislativeHighlightPolygonStyle);n.model.mapModel.once(u.loading.legislativePolygons.finished.name,function(){var r,t;r=n.model.mapModel.get("mapPolygons"),t=n.model.mapModel.get("legislativePolygons"),n.polygonLayer.setPolygonData(r.concat(t)),i.each(t,function(t){i.any(n.model.get(f.legislativeDistrict),function(n){return n===t.dcId})&&n.polygonLayer.highlightPolygon(t.id,n.polygonLayer.legislativeHighlightPolygonStyle)}),n.model.mapModel.trigger(u.loading.legislativePolygons.drawn.name)});n.model.mapModel.syncLegislativePolygons(n.model.get(f.legislativeType))},getTimeFrameText:function(){return(this.$timeFrame||(this.$timeFrame=$("select").has("option[data-entity=tf]").first(),this.optionalSelector="option:checked"),this.optionalSelector)?this.$timeFrame.find(this.optionalSelector).text():this.$timeFrame.text()}})}(OpenLayers,google,_)