(function(a){a.fn.charCounter=function(b,c){function g(b,c){d&&(window.clearTimeout(d),d=null),b.animate({opacity:.1},100,function(){a(this).animate({opacity:1},100)}),c&&(d=window.setTimeout(function(){g(b)},200))}function f(f,h){f=a(f),f.val().length>b&&(f.val(f.val().substring(0,b)),c.pulse&&!d&&g(h,!0)),c.delay>0?(e&&window.clearTimeout(e),e=window.setTimeout(function(){h.html(c.format.replace(/%1/,b-f.val().length))},c.delay)):h.html(c.format.replace(/%1/,b-f.val().length))}b=b||100,c=a.extend({container:"<span></span>",classname:"charcounter",format:"(%1 characters remaining)",pulse:!0,delay:0},c);var d,e;return this.each(function(){var b;c.container.match(/^<.+>$/)?(a(this).next("."+c.classname).remove(),b=a(c.container).insertAfter(this).addClass(c.classname)):b=a(c.container),a(this).unbind(".charCounter").bind("keydown.charCounter",function(){f(this,b)}).bind("keypress.charCounter",function(){f(this,b)}).bind("keyup.charCounter",function(){f(this,b)}).bind("focus.charCounter",function(){f(this,b)}).bind("mouseover.charCounter",function(){f(this,b)}).bind("mouseout.charCounter",function(){f(this,b)}).bind("paste.charCounter",function(){var a=this;setTimeout(function(){f(a,b)},10)}),this.addEventListener&&this.addEventListener("input",function(){f(this,b)},!1),f(this,b)})}})(jQuery)
