// Backbone.Picky, v0.2.2 // Copyright (c)2013 Derick Bailey, Muted Solutions, LLC. // Copyright (c)2013 Boris Kozorovitzky. // Distributed under MIT license // http://github.com/BorisKozo/backbone.picky var Picky=function(e,t){var c={};e.Picky=c,c.SingleSelect=function(){},c.SingleSelect.mixInto=function(e,c){t.extend(e,l),c&&c.selectOnAdd&&e.on("add",function(e,t){t.select(e)}),c&&c.selectOnRemove?e.on("remove",function(e,l,s){var i=s.index,n=Math.max(i-1,0),o=Math.min(i,l.length-1);if(l.selected===e){if(t.isFunction(c.selectOnRemove))return c.selectOnRemove(e,l,s),void 0;if(0===l.length)return;if("prev"===c.selectOnRemove)return l.at(n).select(),void 0;if("next"===c.selectOnRemove)return l.at(o).select(),void 0}}):e.on("remove",function(e,t){t.selected===e&&delete t.selected}),e.on("reset",function(e){e.refreshSelection()}),o(e)};var l={select:function(e){e&&this.selected===e||this.some(function(t){return t===e})&&(this.deselect(),this.selected=e,this.selected.select(),this.trigger("collection:selected",e))},deselect:function(e){var t;this.selected&&(e=e||this.selected,this.selected===e&&(t=this.selected,delete this.selected,this.trigger("collection:deselected",t),t.deselect()))},refreshSelection:function(){o(this)}};c.MultiSelect=function(){},c.MultiSelect.mixInto=function(e,c){t.extend(e,s),e.selected={},c&&c.selectOnAdd&&e.on("add",function(e,t){t.select(e)}),e.on("remove",function(e,t){t.selected&&t.selected.hasOwnProperty(e.cid)&&(delete t.selected[e.cid],n(t))}),e.on("reset",function(e){e.refreshSelection()}),d(e)};var s={select:function(e){this.selected[e.cid]||this.some(function(t){return t===e})&&(this.selected[e.cid]=e,e.select(),n(this))},deselect:function(e){this.selected[e.cid]&&(delete this.selected[e.cid],e.deselect(),n(this))},selectAll:function(){this.each(function(e){e.select()}),n(this)},deselectAll:function(){0!==this.selectedLength&&(this.each(function(e){e.deselect()}),n(this))},toggleSelectAll:function(){this.selectedLength===this.length?this.deselectAll():this.selectAll()},refreshSelection:function(){d(this)},getSelected:function(){var e,t=[];for(e in this.selected)this.selected.hasOwnProperty(e)&&t.push(this.selected[e]);return t}};c.Selectable=function(){},c.Selectable.mixInto=function(e){t.extend(e,i)};var i={select:function(e){this.selected||(this.collection&&t.isFunction(this.collection.select)&&this.collection.select(this),this.selected=!0,e&&e.silent||this.trigger("model:selected"))},deselect:function(e){this.selected&&(this.collection&&t.isFunction(this.collection.deselect)&&this.collection.deselect(this),this.selected=!1,e&&e.silent||this.trigger("model:deselected"))},toggleSelected:function(e){this.selected?this.deselect(e):this.select(e)},changeSelected:function(e,t){e?this.select(t):this.deselect(t)}},n=function(e){e.selectedLength=t.size(e.selected);var c=e.selectedLength,l=e.length;return c===l?(e.trigger("collection:selected:all",e),void 0):0===c?(e.trigger("collection:selected:none",e),void 0):c>0&&l>c?(e.trigger("collection:selected:some",e),void 0):void 0},o=function(e){delete e.selected,e.each(function(t){t.selected&&(e.selected?t.deselect({silent:!0}):e.selected=t)}),e.selected&&e.trigger("collection:selected",e.selected)},d=function(e){e.selected={},e.each(function(t){t.selected&&(e.selected[t.cid]=t)}),n(e)};return c}(Backbone,_);