!function(a){a.fn.simplyCountable=function(s){s=a.extend({counter:"#counter",countType:"characters",wordSeparator:" ",maxCount:140,strictMax:!1,countDirection:"down",safeClass:"safe",overClass:"over",thousandSeparator:",",onOverCount:function(){},onSafeCount:function(){},onMaxCount:function(){}},s);var t=this,o=a(s.counter);if(!o.length)return!1;regex=new RegExp("["+s.wordSeparator+"]+");var n=function(){var n,e,r,u=function(){return"up"===s.countDirection?e:n};if("words"===s.countType?(n=s.maxCount-a.trim(t.val()).split(regex).length,""===t.val()&&(n+=1)):n=s.maxCount-t.val().length,e=(r=n)-2*r+s.maxCount,s.strictMax&&n<=0){var l=t.val();(n<0||l.match(new RegExp("["+s.wordSeparator+"]$")))&&s.onMaxCount(u(),t,o),"words"===s.countType?t.val(l.split(regex).slice(0,s.maxCount).join(s.wordSeparator)):t.val(l.substring(0,s.maxCount)),n=0,e=s.maxCount}o.text(function(a){var t="";if(s.thousandSeparator){(a=a.toString()).match(/^-/)&&(a=a.substr(1),t="-");for(var o=a.length-3;o>0;o-=3)a=a.substr(0,o)+s.thousandSeparator+a.substr(o)}return t+a}(u())),o.hasClass(s.safeClass)||o.hasClass(s.overClass)?n<0&&o.hasClass(s.safeClass)?(o.removeClass(s.safeClass).addClass(s.overClass),s.onOverCount(u(),t,o)):n>=0&&o.hasClass(s.overClass)&&(o.removeClass(s.overClass).addClass(s.safeClass),s.onSafeCount(u(),t,o)):n<0?o.addClass(s.overClass):o.addClass(s.safeClass)};n(),t.keyup(n),t.bind("paste keyup blur change",(function(){setTimeout(n,5)}))}}(jQuery);