jQuery.fn.textlimit=function(thelimit, counter_el , speed) {
     var charDelSpeed = speed || 15;
     var toggleCharDel = speed != -1;
     var toggleTrim = true;
     
     var that = this[0];
     updateCounter();
     
     function updateCounter(){
         if(counter_el)
             jQuery(counter_el).text(thelimit - that.value.length);
     };
     
     this.keypress (function(e){ if( this.value.length >= thelimit && e.charCode != '0' ) e.preventDefault() })
     .keyup (function(e){
         updateCounter();
         if( this.value.length >= thelimit && toggleTrim ){
             if(toggleCharDel){
                 // first, trim the text a bit so the char trimming won't take forever
                 that.value = that.value.substr(0,thelimit+100);
                 var init = setInterval
                     ( 
                         function(){ 
                             if( that.value.length <= thelimit) { 
                             	init = clearInterval(init); updateCounter() 
                             }
                             else { 

                             	that.value = that.value.substring(0,that.value.length-1);
                             	if(counter_el)
                             		jQuery(counter_el).text(''+(thelimit - that.value.length)); 
                             };
                         } ,charDelSpeed 
                     );
             }
             else this.value = that.value.substr(0,thelimit);
         }
     });
 };