(function(n,t){var i=nspace("kidscount.vizControls");i.Control=Backbone.View.extend({setUp:function(){t.bindAll(this,"changeHandler"),n(this).trigger("initialize:before"),this.modelHasValue()?(n(this).trigger("initialize:setfrommodel:before"),this.setControlFromModel(),n(this).trigger("initialize:setfrommodel:after")):(n(this).trigger("initialize:setdefaults:before"),this.setControlDefaults(),this.updateModel(!0),n(this).trigger("initialize:setdefaults:after")),this.setChangeListener(this.changeHandler),n(this).trigger("initialize:after")},changeHandler:function(t){this.model.trigger("user:updating"),n(this).trigger("changed:before",t),this.updateModel(!1),n(this).trigger("changed:after",t),this.model.trigger("user:updated")},modelHasValue:function(){throw"This method must be implemented.";},setControlFromModel:function(){throw"This method must be implemented.";},setControlDefaults:function(){throw"This method must be implemented.";},updateModel:function(){throw"This method must be implemented.";},setChangeListener:function(){throw"This method must be implemented.";},getDataSummary:function(){throw"This method must be implemented.";}})})(jQuery,_),function(n){var t=nspace("kidscount.vizControls");t.CharacteristicMultipleControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("characteristicIds");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("characteristicIds");n("input[data-name='ch']",this.$el).prop("checked",!1),n.each(t,function(t,i){n.each(i,function(t,i){n("input[data-name='ch'][value='"+i+"']").prop("checked",!0)})}),this.updateModel(!0)},setControlDefaults:function(){var i=n("div.viz-characteristic-single").first(),t=i.find("input"),r;!this.options.maxSelected||(t=t.slice(0,this.options.maxSelected)),t.prop("checked",!0),r=i.siblings(),r.each(function(){n(this).find("input").first().prop("checked",!0)})},updateModel:function(t){var r=this,u=n.map(n("input[data-name='ch']",this.$el),function(t){return n(t).val()}),i=[],f=this.$el.find("ul.ch-selector");n.each(f,function(){var t=n(this).find("input:checked",r.$el).map(function(){return n(this).val()});i.push(t.toArray())}),this.model.set({characteristicIds:i,allCharacteristicIds:u},{silent:t})},setChangeListener:function(n){this.$el.on("change","input[data-name='ch']",function(){n(this)})},getDataSummary:function(t){var i=[];return n(".viz-characteristic-cb-selector .viz-characteristic-single",this.$el).each(function(){var r="";t||(r=n("h2",n(this)).text()+": "),i.push(r+kidscount.vizUtil.getSummaryForCheckboxes(n("input:checkbox[data-name='ch']",n(this))))}),n("input:radio[data-name='ch']:checked",this.$el).each(function(){var r="";t||(r=n("h2",n(this).closest(".viz-characteristic-single")).text()+": "),i.push(r+n.trim(n(this).closest("label").text()))}),i.join(" | ")},distroCount:function(){return n(".viz-characteristic-cb-selector .viz-characteristic-single",this.$el).length+n(".viz-characteristic-rb-selector .viz-characteristic-single",this.$el).length}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.CharacteristicSingleControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("characteristicIds");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("characteristicIds");n.each(t,function(t,i){n("input:radio[data-name='ch'][value='"+i[0]+"']",this.$el).prop("checked",!0)}),this.updateModel(!0)},setControlDefaults:function(){for(var r=n("input:radio[data-name='ch']",this.$el),u=null,i,t=0;t<r.length;t++)i=n(r[t]),u!=i.attr("name")&&(u=i.attr("name"),i.prop("checked",!0))},updateModel:function(t){var r=n.map(n("input:radio[data-name='ch']",this.$el),function(t){return n(t).val()}),i=[];n("input:radio[data-name='ch']:checked",this.$el).each(function(){i.push([n(this).val()])}),this.model.set({characteristicIds:i,allCharacteristicIds:r},{silent:t})},setChangeListener:function(n){this.$el.on("change","input:radio[data-name='ch']",function(){n()})},getDataSummary:function(t){var i=[];return n("input:radio[data-name='ch']:checked",this.$el).each(function(){var r="";t||(r=n("h2",n(this).closest(".viz-characteristic-single")).text()+": "),i.push(r+n.trim(n(this).closest("label").text()))}),i.join(" | ")},distroCount:function(){return n(".viz-characteristic-single",this.$el).length}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.CompareLocationControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("isCompared");return n!=null&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("isCompared");n("input.inccmploc",this.$el).prop("checked",t)},setControlDefaults:function(){this.options.enabledByDefault&&n("input.inccmploc",this.$el).prop("checked",!0)},updateModel:function(t){this.model.set({isCompared:n("input.inccmploc",this.$el).is(":checked")},{silent:t})},setChangeListener:function(n){this.$el.on("change","input.inccmploc",function(){n()})},getDataSummary:function(){return""}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.ConstantsControl=t.Control.extend({modelHasValue:function(){return!1},setControlFromModel:function(){},setControlDefaults:function(){},updateModel:function(t){var i=n("input[name='cmploc']",this.$el).val(),r=n("input[name='cmploctype']",this.$el).val(),u=n("input[name='cmplocname']",this.$el).val(),f=n("input[name='ind']",this.$el).val(),e=n("input[name='is-ranking']",this.$el).val()==="true",o=n("input[name='ranking-sort']",this.$el).val(),s=n('input[name="is-grantee-indicator"]').val()==="true";this.model.set({currentLocationId:i,currentLocationName:u,currentLocationTypeId:r,indicatorId:f,isRanking:e,sortOrder:o,isGranteeIndicator:s},{silent:t})},setChangeListener:function(){},getDataSummary:function(){return""}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.DataTypeMultipleControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("dataTypeIds");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("dataTypeIds");n("input[name='fmt']",this.$el).prop("checked",!1),n.each(t,function(t,i){n("input[name='fmt'][value='"+i+"']").prop("checked",!0)}),this.updateModel(!0)},setControlDefaults:function(){n("input[name='fmt']",this.$el).prop("checked",!0)},updateModel:function(t){var i=n.map(n("input[name='fmt']",this.$el),function(t){return n(t).val()}),r=n.map(n("input:checkbox[name='fmt']:checked",this.$el),function(t){return n(t).val()});this.model.set({allDataTypeIds:i,dataTypeIds:r},{silent:t})},setChangeListener:function(n){this.$el.on("change","input:checkbox[name='fmt']",function(){n()})},getDataSummary:function(t){var i="";return t||(i=n("h2",this.$el).text()+": "),i+kidscount.vizUtil.getSummaryForCheckboxes(n("input:checkbox[name='fmt']",this.$el))}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.DataTypeSingleControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("dataTypeId");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("dataTypeId");triggerRadioButtonClick(n("input:radio[name='fmt'][value='"+t+"']",this.$el)),this.updateModel(!0)},setControlDefaults:function(){var t=n("input:radio[name='fmt'][data-default='true']:first",this.$el);t.length==0&&(t=n("input:radio[name='fmt']:first",this.$el)),triggerRadioButtonClick(t)},updateModel:function(t){var r=n.map(n("input[name='fmt']",this.$el),function(t){return n(t).val()}),i=n("input:radio[name='fmt']:checked",this.$el),u=i.attr("data-primitive");this.model.set({allDataTypeIds:r,dataTypeId:i.val(),dataTypePrimitive:u},{silent:t})},setChangeListener:function(n){this.$el.on("change","input:radio[name='fmt']",function(){n()})},getDataSummary:function(t){var i="";return t||(i=n("h2",this.$el).text()+": "),i+n.trim(n("input:radio[name='fmt']:checked",this.$el).closest("label").text())}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.LocationControl=t.Control.extend({initialize:function(){this.options.maxSelected&&kidscount.vizControls.util.setUpMaximumOptionSelection(this.$el,this.options.maxSelected,"input[name='loc']","location"),this.options.hideCheckAll&&n(".check_all",this.$el).hide().removeClass("check_all")},modelHasValue:function(){var n=this.model.get("locationTypeId"),t=this.model.get("locationIds");return n&&n!=kidscount.vizUtil.nullUrlValue&&t&&t!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this,f=this.model.get("locationTypeId"),u=this.model.get("locationIds"),i,r;triggerRadioButtonClick(n("input:radio[name='loct'][value='"+f+"']",this.$el)),i=this.getCurrentCheckboxContainer(),r=this.getOtherCheckboxContainers(),n.each(u,function(t,r){n("input:checkbox[value='"+r+"']",i).prop("checked",!0)}),t.options.maxSelected?(u.length>=t.options.maxSelected&&n("input:checkbox:not(:checked)",i).attr("disabled",!0),r.each(function(){n("input.featureCity",n(this)).length<1?n("input:checkbox:not(:disabled):lt("+t.options.maxSelected+")",n(this)).prop("checked",!0):n("input.featureCity:lt("+t.options.maxSelected+")",n(this)).prop("checked",!0)})):r.each(function(){n("input.featureCity",n(this)).length<1?n("input:checkbox",n(this)).prop("checked",!0):n("input.featureCity").prop("checked",!0)}),this.model.set("yearsToShow",this.getCurrentAvailableYears(),{silent:!0}),this.updateModel(!0)},setControlDefaults:function(){var i=this,t=this.model.get("locationTypeId");t&&t!=kidscount.vizUtil.nullUrlValue?triggerRadioButtonClick(n("input:radio[name='loct'][value='"+t+"']",this.$el)):triggerRadioButtonClick(n("input:radio[name='loct']:first",this.$el)),this.model.set("yearsToShow",this.getCurrentAvailableYears(),{silent:!0}),this.resetLocationDefaults()},updateModel:function(t){var i=n("input:radio[name='loct']:checked",this.$el),u=this.getCurrentCheckboxContainer(),o=n.map(n("input:checkbox",u),function(t){return n(t).val()}),r=n("input:radio:checked~.form_toggle_div input:checkbox:checked"),f=[],e=r.length;typeof this.options.maxSelected!="undefined"&&r.length>this.options.maxSelected&&(e=this.options.maxSelected),r.slice(0,e).each(function(t,i){var r=n(i).val();n("input:checkbox[value='"+r+"']",u).prop("checked",!0),f.push(r)}),this.model.set({locationTypeId:i.val(),comparisonLocationId:i.attr("data-comparisonLocId"),comparisonLocationName:i.attr("data-comparisonLocName"),allLocationIds:o,locationIds:f},{silent:t})},setChangeListener:function(n){var t=this;this.$el.on("change","input:radio[name='loct']",function(){n()});this.$el.on("change","input:radio:checked~.form_toggle_div input:checkbox",_.debounce(function(){n()},50))},resetLocationDefaults:function(){var t=this,i=t.getCurrentCheckboxContainer(),r=t.getOtherCheckboxContainers(),u=t.model.get("isGranteeIndicator");u||t.model.get("currentLocationId")==="1"||t.model.get("locationTypeId")!=="2"?t.options.maxSelected?(n("input.featureCity",i).length<1&&(n("input:checkbox:lt("+t.options.maxSelected+")",i).prop("checked",!0),n("input:checkbox:not(:checked)",i).attr("disabled",!0)),r.each(function(){n("input:checkbox",n(this)).prop("checked",!1),n("input.featureCity",n(this)).length<1&&(n("input:checkbox:lt("+t.options.maxSelected+")",n(this)).prop("checked",!0),n("input:checkbox:not(:checked)",n(this)).prop("disabled",!0))}),n(".featureCity:lt("+t.options.maxSelected+")").prop("checked",!0).prop("disabled",!1),n(".uncheck_all",t.$el).show()):(n("input.featureCity",i).length<1&&n("input:checkbox",i).prop("checked",!0),r.each(function(){n("input.featureCity",n(this)).length<1&&n("input:checkbox",r).prop("checked",!0)}),n(".featureCity").prop("checked",!0),n(".uncheck_all",t.$el).show(),n(".check_all",t.$el).hide()):(n("input:checkbox",i).prop("checked",!1),n("input:checkbox[name='loc'][value='"+t.model.get("currentLocationId")+"']").prop("checked",!0),n(".check_all",t.$el).show(),n(".uncheck_all",t.$el).show())},getCurrentCheckboxContainer:function(){return n("input:radio:checked~.form_toggle_div",this.$el)},getOtherCheckboxContainers:function(){return n("input:radio:not(:checked)~.form_toggle_div",this.$el)},getDataSummary:function(){return""},getCurrentRadioButton:function(){return n("input:radio[name='loct']:checked",this.$el)},getCurrentAvailableYears:function(){var n=this.getCurrentRadioButton();return n!=null?n.attr("data-years"):""}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.LocationTypeControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("locationTypeId");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("locationTypeId");triggerRadioButtonClick(n("input:radio[name='loct'][value='"+t+"']",this.$el)),this.model.set("yearsToShow",this.getCurrentAvailableYears(),{silent:!0}),this.updateModel(!0)},setControlDefaults:function(){triggerRadioButtonClick(n("input:radio[name='loct']:first",this.$el)),this.model.set("yearsToShow",this.getCurrentAvailableYears(),{silent:!0})},updateModel:function(t){var i=n("input:radio[name='loct']:checked",this.$el),r=i.attr("data-comparisonLocId");r==="null"&&(r=null),this.model.set({locationTypeId:i.val(),comparisonLocationId:r,comparisonLocationName:i.attr("data-comparisonLocName")},{silent:t})},setChangeListener:function(n){this.$el.on("change","input:radio[name='loct']",function(){n()})},getDataSummary:function(){return""},getCurrentRadioButton:function(){return n("input:radio[name='loct']:checked",this.$el)},getCurrentAvailableYears:function(){var n=this.getCurrentRadioButton();return n!=null?n.attr("data-years"):""}})}(jQuery),function(n){var t=nspace("kidscount.vizControls");t.TimeFrameDirectionControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("timeFrameDirection");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("timeFrameDirection");triggerRadioButtonClick(n("input:radio[name='tf-direction'][value='"+t+"']",this.$el))},setControlDefaults:function(){triggerRadioButtonClick(n("input:radio[name='tf-direction']:first",this.$el))},updateModel:function(t){var i=n("input:radio[name='tf-direction']:checked",this.$el);this.model.set({timeFrameDirection:i.val()},{silent:t})},setChangeListener:function(n){this.$el.on("change","input:radio[name='tf-direction']",function(){n()})},getDataSummary:function(){return""}})}(jQuery),function(n,t){var i=nspace("kidscount.vizControls");i.TimeFrameMultipleControl=i.Control.extend({initialize:function(){this.showYears(this.options.yearsToShow),this.model.get("timeFrameIds")!=null&&this.model.set({timeFrameIds:this.model.get("timeFrameIds").slice(0,this.options.maxSelected)}),this.options.maxSelected&&this.setupChangeHandlers(this.$el,this.options.maxSelected,"input[name='tf']","year")},setupChangeHandlers:function(t,i,r,u){var f=this;if(i){n(r,t).closest("li").prepend('<div class="checkboxOverlay" style="position: absolute; left: 0; right: 0; top: 0; bottom: 0; background: url(/images/transparent.png) repeat;"><\/div>'),n(".table_select",t).html("Choose up to "+i+" "+u+"s:");t.on("click",".checkboxOverlay",function(){var t=n(this).siblings("label"),r=t.find("input");f.model.get("timeFrameIds").length!=f.options.maxSelected||r.prop("checked")?(triggerRadioButtonClick(n('input[type="checkbox"]',t)),r.trigger("change")):alert("Sorry, only "+i+" "+u+"s can be selected concurrently.")});n(this).on("changed:after",function(){f.setTimeFrameControls()})}},modelHasValue:function(){var n=this.model.get("timeFrameIds");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){this.setTimeFrameControls()},setControlDefaults:function(){this.setTimeFrameControls(this.model.get("allTimeFrameIds"))},updateModel:function(t){var r=this,u=n("input[name='tf']",this.$el),e=u.map(function(){return n(this).val()}).get(),f=u.filter(":checked"),o=f.map(function(){return n(this).val()}).filter(function(t){return r.isValidLocationId(n(f[t]).val())}).get();this.model.set({allTimeFrameIds:e,timeFrameIds:o.slice(0,r.options.maxSelected)},{silent:t})},setChangeListener:function(t){this.$el.on("change","input[name='tf']",function(){var i=n(this).prop("checked");n(this).prop("checked",!i),t(n(this)[0])})},getDataSummary:function(t){var i="";return t||(i="Year(s): "),i+kidscount.vizUtil.getSummaryForCheckboxes(n("input:checkbox[name='tf']",this.$el))},getYearsArray:function(n){return typeof n=="string"&&n.length>0?n.split(","):n instanceof Array?n:this.model.get("timeFrameIds")},isValidLocationId:function(t){var i=this.getYearsArray(this.options.yearsToShow);return n.inArray(t,i)!=-1},setTimeFrameControls:function(t){var i=this.getYearsArray(t),f=i==null||i.length==0,r=this,u=0;f?n("input:checkbox[name='tf']",this.$el).slice(0,r.options.maxSelected).each(function(){var t=n(this);t.prop("checked",!0),t.prop("disabled",!1)}):(n("input:checkbox[name='tf']",this.$el).each(function(){var t=n(this),f=t.val(),e=n.inArray(f,i)!=-1;t.removeAttr("disabled"),t.attr("data-unavailable")||u<r.options.maxSelected&&e&&(t.prop("checked",!0),u++)}),u>=r.options.maxSelected&&n("input:checkbox[name='tf']",this.$el).each(function(){n(this).prop("checked")||n(this).attr("disabled","disabled")}))},showYears:function(t){var i=this.getYearsArray(t);n("input:checkbox[name='tf']",this.$el).each(function(){var t=n(this),r=t.val(),u=n.inArray(r,i)!=-1;u?(t.removeAttr("data-unavailable"),t.attr("disabled",!1),t.parent().show()):(t.attr("disabled","disabled"),t.prop("checked",!1),t.attr("data-unavailable",!0),t.parent().hide())}),this.model.trigger("change")},resetYears:function(n){var i=this.getYearsArray(n);t.any(this.model.get("timeFrameIds"),function(n){return i.indexOf(n)<0})&&(this.model.set("timeFrameIds",i.slice(0,this.options.maxSelected)),this.setControlFromModel())}})}(jQuery,_),function(n){var t=nspace("kidscount.vizControls");t.TimeFrameSingleControl=t.Control.extend({modelHasValue:function(){var n=this.model.get("timeFrameId");return n&&n!=kidscount.vizUtil.nullUrlValue},setControlFromModel:function(){var t=this.model.get("timeFrameId");this.showYears(this.model.get("yearsToShow")),triggerRadioButtonClick(n("input:radio[name='tf'][value='"+t+"']",this.$el))},setControlDefaults:function(){this.showYears(this.model.get("yearsToShow")),triggerRadioButtonClick(n("input:radio[name='tf']:first",this.$el))},updateModel:function(t){var i=n("input:radio[name='tf']:checked",this.$el);this.model.set({timeFrameId:i.val()},{silent:t})},setChangeListener:function(n){this.$el.on("change","input:radio[name='tf']",function(){n()})},getDataSummary:function(t){var i="";return t||(i="Year(s): "),i+n.trim(n("input:radio[name='tf']:checked",this.$el).closest("label").text())},showYears:function(t){var r=t.split(","),i=!1;n("input:radio[name='tf']",this.$el).each(function(){var t=n(this),u=t.val(),f=n.inArray(u,r)!=-1;f?(t.removeAttr("disabled"),t.removeAttr("data-unavailable"),i||(i=!0,t.prop("checked",!0))):(t.attr("disabled","disabled"),t.attr("data-unavailable",!0),t.prop("checked",!1))})},resetYears:function(n){var t=this.getYearsArray(n);t.indexOf(this.model.get("timeFrameId"))<0&&(this.model.set("timeFrameId",t[0]),this.setControlFromModel())},getYearsArray:function(n){return typeof n=="string"&&n.length>0?n.split(","):n instanceof Array?n:this.model.get("allTimeFrameIds")}})}(jQuery),function(n){var i=nspace("kidscount.vizControls.util");i.updateLocationTypeUrls=function(t){var r=n("#change-indicator"),i;r&&r.length!=0&&(i=r.attr("href"),i=i.substr(0,i.lastIndexOf("/")+1)+t,n("#change-indicator").attr("href",i),n(".tab_sub_nav li a").each(function(){var i=n(this).attr("href");i=i.replace(/loct=[0-9]+/i,"loct="+t),n(this).attr("href",i)}))},i.setUpMaximumOptionSelection=function(t,i,r,u){if(i){n(r,t).closest("li").prepend('<div class="checkboxOverlay" style="position: absolute; left: 0; right: 0; top: 0; bottom: 0; background: url(/images/transparent.png) repeat;"><\/div>'),n(".table_select",t).html("Choose up to "+i+" "+u+"s:");t.on("click",".checkboxOverlay",function(){var t=n(this).siblings("label");t.has("input:disabled").length>0?alert("Sorry, only "+i+" "+u+"s can be selected concurrently."):triggerRadioButtonClick(n('input[type="checkbox"]',t))});n(r,t).change(function(){var t=n(this).closest(".form_toggle_div"),f=t.find(r+":checked"),u=t.find(r+":not(:checked)");n(f).length>=i?u.attr("disabled",!0):u.removeAttr("disabled")})}}}(jQuery,_)