1/* 2# jCounter - a simple character counter 3# 4# @author Maximilian Mader 5# @copyright 2011 - 2013 Maximilian Mader 6# @license BSD 3-Clause License <http://opensource.org/licenses/BSD-3-Clause> 7# @package be.bastelstu.max.wcf.jCounter 8*/ 9!function(t){var r,o;return r=0,o=function(t,r,o){var e,s,a=this;return r||(r=250),s=0,e=null,function(){var n,i,l;return i=o||a,l=+new Date,n=arguments,s&&s+r>l?(clearTimeout(e),e=setTimeout(function(){return s=l,t.apply(i,n)},r)):(s=l,t.apply(i,n))}},t.scrollbarWidth=function(){var r,o,e,s,a;return r=t("<div>"),o=t("<div>").append(r),t("body").append(o),s=r.prop("offsetWidth"),o.css("overflow","scroll"),a=o.prop("clientWidth"),o.remove(),e=s-a,t.scrollbarWidth=function(){return e},e},t.fn.jCounter=function(e,s){var a,n,i,l,u,p,c=this;return this.length>1?this.each(function(r,o){return t(o).jCounter(e,s)}):!this.is("textarea, input[type=text], input[type=password], input[type=search], input[type=email], input[type=url]")||this.hasClass("jsDatePicker")?(console.log("[jCounter] Unsupported element "+("INPUT"===this.prop("tagName")?"INPUT type='"+this.attr("type")+"'":"type "+this.prop("tagName"))),this):this.parent().hasClass("jCounterContainer")?this:(s=t.extend({max:0,countUp:!1},s),(null==s.colors||s.colors.length<1)&&(s.colors=["blue","orange","red"]),s.max=null!=(u=this.attr("maxlength"))?u:s.max,0===s.max&&(s.countUp=!0),i=null!=e?"object"==typeof e?e:t(e):(n=null!=(p=this.attr("id"))?p:this.attr("id","jCounterID"+r++).attr("id"),this.addClass("jCounterInput").wrap('<div class="jCounterContainer"></div>').parent().append('<label for="'+n+'" class="jCounter badge '+s.colors[0]+'">'+(s.countUp?0:s.max)+"</label>"),t(this).parent().children(".jCounter").css({borderTopRightRadius:this.css("border-top-right-radius"),borderBottomRightRadius:this.css("border-bottom-right-radius"),borderBottomLeftRadius:this.css("border-bottom-left-radius"),borderTopLeftRadius:this.css("border-top-left-radius")})),a=1.5*s.max*(1/s.colors.length),l=(s.max-a)/(s.colors.length-1),this.on("input change",o(function(){var r,o,n;return n=c.val().length,r=s.max>0&&s.colors.length>0?a>n?s.colors[0]:(o=Math.floor((n-a)/l)+1,o<s.colors.length?s.colors[o]:s.colors[s.colors.length-1]):s.colors[0],i.text(s.countUp?n:s.max-n).removeClass(s.colors.join(" ")).addClass(r),null==e?(i.css("top",parseFloat(c.css("border-top-width"))+parseFloat(c.css("margin-top"))+1),i.css("bottom",parseFloat(c.css("border-bottom-width"))+parseFloat(c.css("margin-bottom"))+1),i.css("margin-left",-(i.outerWidth()+parseFloat(c.css("border-right-width"))+parseFloat(c.css("margin-right"))+1)-("textarea"===c[0].type?t.scrollbarWidth():0)),c.css("padding-right",3+i.outerWidth())):void 0},16)),this.trigger("change"))}}(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.