(function(){(function(a,b){var c,d,e;return e=b(),c=typeof define=="function"&&define.amd,d=typeof module!="undefined"&&module.exports,c?define(e):d?module.exports=e:(this.jQuery||this.ender||this.$||this)[a]=e})("selectr",function(){var a,b,c,d,e,f,g,h,i,j,k,l,m=this;return l={},h=function(a,b){var c;return l[a]?$.each(l[a],function(){return this.apply($,b||[])}):(c=new Error("Nothing listening for the topic "+a),console.log(c),!0)},j=function(a,b){return l[a]||(l[a]=[]),l[a].push(b),[a,b]},i=function(a,b){var c;return c=a[b],c&&a.splice(b,1),c},k=function(a,b){return l[a]||(l[a]=[]),l[a].length===1&&i(l[a],0),l[a].push(b),[a,b]},e=function(a,b,c,d){var e,f,g,h;return c==null&&(c=!1),e=$("<span/>"),e.css({marginLeft:"-999999px"}),d&&e.css(d),$("body").append(e),g=e.width(),h="",f=function(){var c,d,g,i;g=a.split(""),i=[];for(c=0,d=g.length;c<d;c++){f=g[c],e.html(h),h+=f;if(e.width()>b){h=h.substring(0,h.length-1);break}i.push(void 0)}return i}(),e.remove(),c&&h.length<a.length&&(h=h.substring(0,h.length-3),h+="..."),h},d=function(a,b,c,d){var f;return c==null&&(c=!1),f=$(b).width(),e(a,f,c,d)},g=function(a){return $("<div/>").text(a).html()},f=function(a){return $("<div/>").html(a).text()},this.parts={},this.isSelectedCache=[],this.stylesAttached=!1,this.init=function(b){var c,d,e,f,g,i,j,l,n,o;return m.setDefaults(),f={start:"build/menu",built:"menu/built",hover:"item/hover",selectItem:"item/selected",menuClick:"menu/clicked",addedItem:"added/item",removedItem:"removed/item",newItem:"new/item"},o=b.width,g=b.height,e=b.element,d=b.customStyle||"",n=o||"100%",i=g||150,c=$(e),l=c.find("option"),j=c.find("option:selected"),j.length&&m.isSelectedCache.push(j.text()),k(f.built,function(){return m.toggle(),m.hintText("div.selectrInputHolder input.newItem"),$("ul.selectrList").delegate("li.selectrItem label","click",function(a){return a.stopPropagation(),a.preventDefault(),h(f.selectItem,[this])}),$("div.selectrInputHolder").click(function(a){return a.stopPropagation()}),$("div.selectrInputHolder a.addNewItem").click(function(b){return b.preventDefault(),a(f.newItem)}),$("div.selectrInputHolder input.newItem").keypress(function(b){if(b.which===13)return b.preventDefault(),a(f.newItem)})}),k(f.addedItem,function(a,b,c){return m.addedItem(a,b,c)}),k(f.removedItem,function(a,b,c){return m.removedItem(a,b,c)}),k(f.newItem,function(a){return m.newItemAdded(a,f.selectItem)}),k(f.selectItem,function(a){return m.select(a,f.addedItem,f.removedItem)}),k(f.start,function(){return m.stylesAttached===!1&&m.attachStyles(),m.buildList(e,l),m.buildDropdown(),m.buildCreateInput(),m.render(e,m.parts,null,n,i,d),m.hover("li.selectrItem")}),h(f.start)},this.setDefaults=function(){return this.isOpen=!0,this.items=[]},this.attachStyles=function(){return $("head").eq(0).append('<link href="/static/js/css/selectr.css" rel="stylesheet" />'),m.stylesAttached=!0},this.buildList=function(a,c){var d,e,g;return d=$(a),g=document.createElement("ul"),e=document.createDocumentFragment(),$.each(c,function(a,c){var d,g,h,i;return d=$(c),g=d.data("isSelected"),i=f(this.innerHTML),h=b(g,i),e.appendChild(h)}),g.className+=" selectrList",g.appendChild(e),m.parts.list=g},b=function(a,b){var c,d,e,f;return e=document.createElement("li"),d=document.createElement("label"),c=document.createElement("input"),f=b.replace(/^\s+|\s+$/g,""),c.type="checkbox",c.name="collection",c.value=b,c.id=f,d.htmlFor=f,c.className+=" selectrCheckbox",e.className+=" selectrItem",d.appendChild(c),d.appendChild(document.createTextNode(b)),a&&(e.className+=" selected"),e.appendChild(d),e},this.buildDropdown=function(){var a,b,c,d;return a=$("<a></a>"),c=$("<span></span>"),d=$("<span></span>"),b=$("<b></b>"),c.addClass("selectrLabel"),c.html("Select Collection"),a.addClass("selectrDropdown"),a.attr("href","#"),d.addClass("selectrArrow"),b.addClass("arrow"),d.append(b),a.append(c),a.append(d),m.parts.anchor=a},this.buildCreateInput=function(){var a,b,c,d;return b=document.createElement("div"),d=document.createElement("input"),a=document.createElement("a"),c=document.createDocumentFragment(),b.className+=" selectrInputHolder",d.setAttribute("type","text"),d.value="Create New Collection",d.className+=" newItem",a.setAttribute("href","#addCollection"),a.innerHTML="Create",a.className+=" addNewItem",b.appendChild(d),b.appendChild(a),c.appendChild(b),m.parts.input=c},this.render=function(a,b,c,d,e,f){var g,i,j,k,l,m,n,o,p;return k=$('<div class="selectrHolder" />'),p=$('<div class="selectrMenu" />'),o=b.list,n=b.input,i=b.anchor,j=/^css(\w.*)$/,k.addClass(f),jQuery.browser.msie===!0&&k.addClass("ie"),g=$(a),$(o).css({height:e,overflowY:"auto",overflowX:"hidden"}),k.css({position:"relative",width:d}),p.hide(),p.append(o,n),k.append(i),k.append(p),g.replaceWith(k),l=k.height(),m=k.width(),p.css({position:"absolute",top:25,zIndex:999999,width:m-2}),$("li.selectrItem label").css({cursor:"pointer"}),h(c)},this.toggle=function(){var a,b;return a=$(".selectrDropdown"),b=".selectrMenu",$(".selectrDropdown").click(function(a){var c,d;return d=$(this),c=$(b).is(":visible"),$("html").one("click",function(a){return $(".selectrMenu").hide(),$(".selectrDropdown").removeClass("selectrOpen"),a.stopPropagation()}),c?(d.parent().find(b).hide(),d.removeClass("selectrOpen")):(d.parent().find(b).show(),d.addClass("selectrOpen")),a.stopImmediatePropagation(),!1})},this.hover=function(a){var b;return b=$(a),b.hover(function(){var a,b;return b=this,a=$(b),a.addClass("selectrHover")},function(){var a,b;return b=this,a=$(b),a.removeClass("selectrHover")})},this.select=function(a,b,c){var d,e,f,g,i,j;return d=$(a),i=d.parent(),j=d.text(),f=d.find("input"),e=m.isSelectedCache[j],g=f.is(":checked"),e?!1:g?h(c,[j,f,i]):h(b,[j,f,i])},this.addedItem=function(a,b,d){var e,f;return e=$("a.selectrDropdown span.selectrLabel"),b.attr("checked",!0),d.addClass(" selected"),m.items.push(a),f=c($("a.selectrDropdown")),e.html(f)},this.removedItem=function(a,b,d){var e,f;return e=$("a.selectrDropdown span.selectrLabel"),b.attr("checked",!1),d.removeClass(" selected"),Array.prototype.remove=function(a){var b,c;if((b=this.indexOf(a))>-1)return[].splice.apply(this,[b,b-b+1].concat(c=[])),c},m.items.remove(a),m.items.length===0?e.text("Select Collection"):(f=c($("a.selectrDropdown")),e.html(f))},c=function(a){var b,c;return c="Added to "+this.items[0],this.items.length>1&&(b=this.items.length-1===1?" other":" others",c+=" and "+(this.items.length-1)+b),d(c,a,!0)},this.newItemAdded=function(a,c){var d,e,f,g,h;return e=$("div.selectrMenu ul.selectrList"),g=!0,h=b(g,a),d=$(h),f=d.find("input"),m.addedItem(a,f,d),e.prepend(h),m.hover("li.selectrItem")},this.hintText=function(a){var b,c;return b=$(a),c=b.val(),$(a).focus(function(){return $(this).val("")}),$(a).blur(function(){if($(this).val()==="")return $(this).val(c)})},a=function(a){var b,c;b=$("div.selectrInputHolder input.newItem"),c=b.val();if(c!==""&&c!=="Create New Collection"&&/\S/.test(c))return h(a,[c]),b.val(""),b.focus()},{build:this.init}})}).call(this)
