
typeof defaultRegistry!='undefined'?defaultRegistry.addEntry({fileName:'jquery.cdb.textrestrain.js',url:'/ccf/plugins/js/jquery.cdb.textrestrain.js',plugins:[{"name":"textrestrain","alias":"textrestrain"}]}):true;jQuery.fn.textrestrain=function(options){defaults={counter_el:'',speed:15,limit:100,offset:0,maxBacklog:100,trimOutput:'trimming...'};var opts=jQuery.extend(defaults,options);var limitInternal=opts.limit;var lineArray;function updateCounter(_this,someText){var trimText;someText?trimText=someText:trimText='';jQuery(opts.counter_el).text(trimText+(limitInternal-_this.value.length));};function computeLimitInternal(text){limitInternal=opts.limit+(text.split("\r\n").length-1);if(opts.offset){text.split("\r\n").length>1?lineArray=text.split("\r\n"):lineArray=text.split("\n");limitInternal+=(lineArray.length-1);for(var i=0;i<lineArray.length-1;i++){var tillOffset;(lineArray[i].length!=0)&&(lineArray[i].length%opts.offset==0)?tillOffset=0:tillOffset=(opts.offset-(lineArray[i].length%opts.offset));limitInternal-=tillOffset;}lineArray[lineArray.length-1].length==0&&limitInternal-text.length==0?limitInternal--:true;}};function doTrim(_this){var init=setInterval(trimAsync,opts.speed);function trimAsync(){computeLimitInternal(_this.value);if(limitInternal<_this.value.length){var trimQuantity=1;_this.value=_this.value.substr(0,stripText()+opts.maxBacklog);_this.value.lastIndexOf("\r\n")==_this.value.length-2?trimQuantity=2:true;_this.value=_this.value.substring(0,_this.value.length-trimQuantity);_this.value.length==limitInternal&&jQuery.browser.mozilla?FFBrowserJumpBackFix(_this):true;updateCounter(_this,opts.trimOutput);}else{updateCounter(_this);init=clearInterval(init);}}function stripText(){if(_this.value.length>20000){_this.value=_this.value.substring(0,20000);}var valueString=_this.value.substring(0,opts.limit+(_this.value.split('\r\n').length)+1);while(limitInternal+1<valueString.length){computeLimitInternal(valueString);var trimQuantity=1;valueString.lastIndexOf("\r\n")==valueString.length-2?trimQuantity=2:true;valueString=valueString.substring(0,valueString.length-trimQuantity);}return valueString.length;}};function FFBrowserJumpBackFix(_this){var evtSpace=document.createEvent("KeyboardEvent");evtSpace.initKeyEvent("keypress",true,true,null,false,false,false,false,0,32);_this.dispatchEvent(evtSpace);var evtBackSpace=document.createEvent("KeyboardEvent");evtBackSpace.initKeyEvent("keypress",true,true,null,false,false,false,false,8,0);_this.dispatchEvent(evtBackSpace);}function limiterDispatcher(event){computeLimitInternal(this.value);doTrim(this);}return this.each(function(){var _this=this;jQuery(this).bind('keyup focus change',opts,limiterDispatcher);jQuery(this).trigger('change');if(defaultRegistry.getTimesDomChanged()==0){setInterval(function(){jQuery(_this).trigger('change');},1500);}});};
