!function(n){"use strict";function i(t,i){this.itemsArray=[];this.$element=n(t);this.$element.hide();this.isSelect="SELECT"===t.tagName;this.multiple=this.isSelect&&t.hasAttribute("multiple");this.objectItems=i&&i.itemValue;this.placeholderText=t.hasAttribute("placeholder")?this.$element.attr("placeholder"):"";this.inputSize=Math.max(1,this.placeholderText.length);this.$container=n('<div class="bootstrap-tagsinput"><\/div>');this.$input=n('<input type="text" placeholder="'+this.placeholderText+'"/>').appendTo(this.$container);this.$element.before(this.$container);this.build(i)}function r(n,t){if("function"!=typeof n[t]){var i=n[t];n[t]=function(n){return n[i]}}}function u(n,t){if("function"!=typeof n[t]){var i=n[t];n[t]=function(){return i}}}function t(n){return n?o.text(n).html():""}function f(n){var t=0,i;return document.selection?(n.focus(),i=document.selection.createRange(),i.moveStart("character",-n.value.length),t=i.text.length):(n.selectionStart||"0"==n.selectionStart)&&(t=n.selectionStart),t}function s(t,i){var r=!1;return n.each(i,function(n,i){if("number"==typeof i&&t.which===i)return r=!0,!1;if(t.which===i.which){var u=!i.hasOwnProperty("altKey")||t.altKey===i.altKey,f=!i.hasOwnProperty("shiftKey")||t.shiftKey===i.shiftKey,e=!i.hasOwnProperty("ctrlKey")||t.ctrlKey===i.ctrlKey;if(u&&f&&e)return r=!0,!1}}),r}var e={tagClass:function(){return"label label-info"},itemValue:function(n){return n?n.toString():n},itemText:function(n){return this.itemValue(n)},itemTitle:function(){return null},freeInput:!0,addOnBlur:!0,maxTags:void 0,maxChars:void 0,confirmKeys:[13,44],delimiter:",",delimiterRegex:null,cancelConfirmKeysOnEmpty:!0,onTagExists:function(n,t){t.hide().fadeIn()},trimValue:!1,allowDuplicates:!1},o;i.prototype={constructor:i,add:function(i,r,u){var f=this,a,e,o,l,s,h,w;if(!(f.options.maxTags&&f.itemsArray.length>=f.options.maxTags)&&(i===!1||i)){if("string"==typeof i&&f.options.trimValue&&(i=n.trim(i)),"object"==typeof i&&!f.objectItems)throw"Can't add objects when itemValue option is not set";if(!i.toString().match(/^\s*$/)){if((f.isSelect&&!f.multiple&&f.itemsArray.length>0&&f.remove(f.itemsArray[0]),"string"==typeof i&&"INPUT"===this.$element[0].tagName)&&(a=f.options.delimiterRegex?f.options.delimiterRegex:f.options.delimiter,e=i.split(a),e.length>1)){for(o=0;o<e.length;o++)this.add(e[o],!0);return void(r||f.pushVal())}var c=f.options.itemValue(i),v=f.options.itemText(i),b=f.options.tagClass(i),y=f.options.itemTitle(i),p=n.grep(f.itemsArray,function(n){return f.options.itemValue(n)===c})[0];if(!p||f.options.allowDuplicates)f.items().toString().length+i.length+1>f.options.maxInputLength||(l=n.Event("beforeItemAdd",{item:i,cancel:!1,options:u}),(f.$element.trigger(l),l.cancel)||(f.itemsArray.push(i),s=n('<span class="tag '+t(b)+(null!==y?'" title="'+y:"")+'">'+t(v)+'<span data-role="remove"><\/span><\/span>'),(s.data("item",i),f.findInputWrapper().before(s),s.after(" "),f.isSelect&&!n('option[value="'+encodeURIComponent(c)+'"]',f.$element)[0])&&(h=n("<option selected>"+t(v)+"<\/option>"),h.data("item",i),h.attr("value",c),f.$element.append(h)),r||f.pushVal(),(f.options.maxTags===f.itemsArray.length||f.items().toString().length===f.options.maxInputLength)&&f.$container.addClass("bootstrap-tagsinput-max"),f.$element.trigger(n.Event("itemAdded",{item:i,options:u}))));else if(f.options.onTagExists){w=n(".tag",f.$container).filter(function(){return n(this).data("item")===p});f.options.onTagExists(i,w)}}}},remove:function(t,i,r){var u=this,f;if(u.objectItems&&(t="object"==typeof t?n.grep(u.itemsArray,function(n){return u.options.itemValue(n)==u.options.itemValue(t)}):n.grep(u.itemsArray,function(n){return u.options.itemValue(n)==t}),t=t[t.length-1]),t){if(f=n.Event("beforeItemRemove",{item:t,cancel:!1,options:r}),u.$element.trigger(f),f.cancel)return;n(".tag",u.$container).filter(function(){return n(this).data("item")===t}).remove();n("option",u.$element).filter(function(){return n(this).data("item")===t}).remove();-1!==n.inArray(t,u.itemsArray)&&u.itemsArray.splice(n.inArray(t,u.itemsArray),1)}i||u.pushVal();u.options.maxTags>u.itemsArray.length&&u.$container.removeClass("bootstrap-tagsinput-max");u.$element.trigger(n.Event("itemRemoved",{item:t,options:r}))},removeAll:function(){var t=this;for(n(".tag",t.$container).remove(),n("option",t.$element).remove();t.itemsArray.length>0;)t.itemsArray.pop();t.pushVal()},refresh:function(){var i=this;n(".tag",i.$container).each(function(){var r=n(this),u=r.data("item"),e=i.options.itemValue(u),o=i.options.itemText(u),s=i.options.tagClass(u),f;(r.attr("class",null),r.addClass("tag "+t(s)),r.contents().filter(function(){return 3==this.nodeType})[0].nodeValue=t(o),i.isSelect)&&(f=n("option",i.$element).filter(function(){return n(this).data("item")===u}),f.attr("value",e))})},items:function(){return this.itemsArray},pushVal:function(){var t=this,i=n.map(t.items(),function(n){return t.options.itemValue(n).toString()});t.$element.val(i,!0).trigger("change")},build:function(t){var i=this,h;if((i.options=n.extend({},e,t),i.objectItems&&(i.options.freeInput=!1),r(i.options,"itemValue"),r(i.options,"itemText"),u(i.options,"tagClass"),i.options.typeahead)&&(h=i.options.typeahead||{},u(h,"source"),i.$input.typeahead(n.extend({},h,{source:function(t,r){function f(n){for(var f,u=[],t=0;t<n.length;t++)f=i.options.itemText(n[t]),e[f]=n[t],u.push(f);r(u)}this.map={};var e=this.map,u=h.source(t);n.isFunction(u.success)?u.success(f):n.isFunction(u.then)?u.then(f):n.when(u).then(f)},updater:function(n){return i.add(this.map[n]),this.map[n]},matcher:function(n){return-1!==n.toLowerCase().indexOf(this.query.trim().toLowerCase())},sorter:function(n){return n.sort()},highlighter:function(n){var t=new RegExp("("+this.query+")","gi");return n.replace(t,"<strong>$1<\/strong>")}}))),i.options.typeaheadjs){var l=null,o={},c=i.options.typeaheadjs;n.isArray(c)?(l=c[0],o=c[1]):o=c;i.$input.typeahead(l,o).on("typeahead:selected",n.proxy(function(n,t){o.valueKey?i.add(t[o.valueKey]):i.add(t);i.$input.typeahead("val","")},i))}i.$container.on("click",n.proxy(function(){i.$element.attr("disabled")||i.$input.removeAttr("disabled");i.$input.focus()},i));i.options.addOnBlur&&i.options.freeInput&&i.$input.on("focusout",n.proxy(function(){0===n(".typeahead, .twitter-typeahead",i.$container).length&&(i.add(i.$input.val()),i.$input.val(""))},i));i.$container.on("keydown","input",n.proxy(function(t){var r=n(t.target),u=i.findInputWrapper(),e,o,s,h,c;if(i.$element.attr("disabled"))return void i.$input.attr("disabled","disabled");switch(t.which){case 8:0===f(r[0])&&(e=u.prev(),e.length&&i.remove(e.data("item")));break;case 46:0===f(r[0])&&(o=u.next(),o.length&&i.remove(o.data("item")));break;case 37:s=u.prev();0===r.val().length&&s[0]&&(s.before(u),r.focus());break;case 39:h=u.next();0===r.val().length&&h[0]&&(h.after(u),r.focus())}c=r.val().length;Math.ceil(c/5);r.attr("size",Math.max(this.inputSize,r.val().length))},i));i.$container.on("keypress","input",n.proxy(function(t){var r=n(t.target),u,f,e;if(i.$element.attr("disabled"))return void i.$input.attr("disabled","disabled");u=r.val();f=i.options.maxChars&&u.length>=i.options.maxChars;i.options.freeInput&&(s(t,i.options.confirmKeys)||f)&&(0!==u.length&&(i.add(f?u.substr(0,i.options.maxChars):u),r.val("")),i.options.cancelConfirmKeysOnEmpty===!1&&t.preventDefault());e=r.val().length;Math.ceil(e/5);r.attr("size",Math.max(this.inputSize,r.val().length))},i));i.$container.on("click","[data-role=remove]",n.proxy(function(t){i.$element.attr("disabled")||i.remove(n(t.target).closest(".tag").data("item"))},i));i.options.itemValue===e.itemValue&&("INPUT"===i.$element[0].tagName?i.add(i.$element.val()):n("option",i.$element).each(function(){i.add(n(this).attr("value"),!0)}))},destroy:function(){var n=this;n.$container.off("keypress","input");n.$container.off("click","[role=remove]");n.$container.remove();n.$element.removeData("tagsinput");n.$element.show()},focus:function(){this.$input.focus()},input:function(){return this.$input},findInputWrapper:function(){for(var t=this.$input[0],i=this.$container[0];t&&t.parentNode!==i;)t=t.parentNode;return n(t)}};n.fn.tagsinput=function(t,r,u){var f=[];return this.each(function(){var e=n(this).data("tagsinput"),o;e?t||r?void 0!==e[t]&&(o=3===e[t].length&&void 0!==u?e[t](r,null,u):e[t](r),void 0!==o&&f.push(o)):f.push(e):(e=new i(this,t),n(this).data("tagsinput",e),f.push(e),"SELECT"===this.tagName&&n("option",n(this)).attr("selected","selected"),n(this).val(n(this).val()))}),"string"==typeof t?f.length>1?f:f[0]:f};n.fn.tagsinput.Constructor=i;o=n("<div />");n(function(){n("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput()})}(window.jQuery)