1(function($){$.widget('ui.tagit',{options:{itemName:'item',fieldName:'tags',availableTags:[],tagSource:null,removeConfirmation:false,caseSensitive:true,allowSpaces:false,animate:true,singleField:false,singleFieldDelimiter:',',singleFieldNode:null,tabIndex:null,onTagAdded:null,onTagRemoved:null,onTagClicked:null},_create:function(){var that=this;if(this.element.is('input')){this.tagList=$('<ul></ul>').insertAfter(this.element);this.options.singleField=true;this.options.singleFieldNode=this.element;this.element.css('display','none');}else{this.tagList=this.element.find('ul, ol').andSelf().last();} 2this._tagInput=$('<input type="text" />').addClass('ui-widget-content');if(this.options.tabIndex){this._tagInput.attr('tabindex',this.options.tabIndex);} 3this.options.tagSource=this.options.tagSource||function(search,showChoices){var filter=search.term.toLowerCase();var choices=$.grep(this.options.availableTags,function(element){return(element.toLowerCase().indexOf(filter)===0);});showChoices(this._subtractArray(choices,this.assignedTags()));};if($.isFunction(this.options.tagSource)){this.options.tagSource=$.proxy(this.options.tagSource,this);} 4this.tagList.addClass('tagit').addClass('ui-widget ui-widget-content ui-corner-all').append($('<li class="tagit-new"></li>').append(this._tagInput)).click(function(e){var target=$(e.target);if(target.hasClass('tagit-label')){that._trigger('onTagClicked',e,target.closest('.tagit-choice'));}else{that._tagInput.focus();}});this.tagList.children('li').each(function(){if(!$(this).hasClass('tagit-new')){that.createTag($(this).html(),$(this).attr('class'));$(this).remove();}});if(this.options.singleField){if(this.options.singleFieldNode){var node=$(this.options.singleFieldNode);var tags=node.val().split(this.options.singleFieldDelimiter);node.val('');$.each(tags,function(index,tag){that.createTag(tag);});}else{this.options.singleFieldNode=this.tagList.after('<input type="hidden" style="display:none;" value="" name="'+this.options.fieldName+'" />');}} 5this._tagInput.keydown(function(event){if(event.which==$.ui.keyCode.BACKSPACE&&that._tagInput.val()===''){var tag=that._lastTag();if(!that.options.removeConfirmation||tag.hasClass('remove')){that.removeTag(tag);}else if(that.options.removeConfirmation){tag.addClass('remove ui-state-highlight');}}else if(that.options.removeConfirmation){that._lastTag().removeClass('remove ui-state-highlight');} 6if(event.which==$.ui.keyCode.COMMA||event.which==$.ui.keyCode.ENTER||(event.which==$.ui.keyCode.TAB&&that._tagInput.val()!=='')||(event.which==$.ui.keyCode.SPACE&&that.options.allowSpaces!==true&&($.trim(that._tagInput.val()).replace(/^s*/,'').charAt(0)!='"'||($.trim(that._tagInput.val()).charAt(0)=='"'&&$.trim(that._tagInput.val()).charAt($.trim(that._tagInput.val()).length-1)=='"'&&$.trim(that._tagInput.val()).length-1!==0)))){event.preventDefault();that.createTag(that._cleanedInput());that._tagInput.autocomplete('close');}}).blur(function(e){that.createTag(that._cleanedInput());});if(this.options.availableTags||this.options.tagSource){this._tagInput.autocomplete({source:this.options.tagSource,select:function(event,ui){if(that._tagInput.val()===''){that.removeTag(that._lastTag(),false);} 7that.createTag(ui.item.value);return false;}});}},_cleanedInput:function(){return $.trim(this._tagInput.val().replace(/^"(.*)"$/,'$1'));},_lastTag:function(){return this.tagList.children('.tagit-choice:last');},assignedTags:function(){var that=this;var tags=[];if(this.options.singleField){tags=$(this.options.singleFieldNode).val().split(this.options.singleFieldDelimiter);if(tags[0]===''){tags=[];}}else{this.tagList.children('.tagit-choice').each(function(){tags.push(that.tagLabel(this));});} 8return tags;},_updateSingleTagsField:function(tags){$(this.options.singleFieldNode).val(tags.join(this.options.singleFieldDelimiter));},_subtractArray:function(a1,a2){var result=[];for(var i=0;i<a1.length;i++){if($.inArray(a1[i],a2)==-1){result.push(a1[i]);}} 9return result;},tagLabel:function(tag){if(this.options.singleField){return $(tag).children('.tagit-label').text();}else{return $(tag).children('input').val();}},_isNew:function(value){var that=this;var isNew=true;this.tagList.children('.tagit-choice').each(function(i){if(that._formatStr(value)==that._formatStr(that.tagLabel(this))){isNew=false;return false;}});return isNew;},_formatStr:function(str){if(this.options.caseSensitive){return str;} 10return $.trim(str.toLowerCase());},createTag:function(value,additionalClass){var that=this;value=$.trim(value);if(!this._isNew(value)||value===''){return false;} 11var label=$(this.options.onTagClicked?'<a class="tagit-label"></a>':'<span class="tagit-label"></span>').text(value);var tag=$('<li></li>').addClass('tagit-choice ui-widget-content ui-state-default ui-corner-all').addClass(additionalClass).append(label);var removeTagIcon=$('<span></span>').addClass('ui-icon ui-icon-close');var removeTag=$('<a><span class="text-icon">\xd7</span></a>').addClass('tagit-close').append(removeTagIcon).click(function(e){that.removeTag(tag);});tag.append(removeTag);if(this.options.singleField){var tags=this.assignedTags();tags.push(value);this._updateSingleTagsField(tags);}else{var escapedValue=label.html();tag.append('<input type="hidden" style="display:none;" value="'+escapedValue+'" name="'+this.options.itemName+'['+this.options.fieldName+'][]" />');} 12this._trigger('onTagAdded',null,tag);this._tagInput.val('');this._tagInput.parent().before(tag);},removeTag:function(tag,animate){animate=animate||this.options.animate;
12tag=$(tag);this._trigger('onTagRemoved',null,tag);if(this.options.singleField){var tags=this.assignedTags();var removedTagLabel=this.tagLabel(tag);tags=$.grep(tags,function(el){return el!=removedTagLabel;});this._updateSingleTagsField(tags);} 13if(animate){tag.fadeOut('fast').hide('blind',{direction:'horizontal'},'fast',function(){tag.remove();}).dequeue();}else{tag.remove();}},removeAll:function(){var that=this;this.tagList.children('.tagit-choice').each(function(index,tag){that.removeTag(tag,false);});}});})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.