jQuery.fn.truncate=function(j,k){k=jQuery.extend({chars:/\s/,trail:["...",""]},k);var l={};var m=$.browser.msie;return this.each(function(){var a=jQuery(this);var b=a.html().replace(/\r\n/gim,"");var d=b;var e=/<\/?[^<>]*\/?>/gim;var f;var g={};var h=$("*").index(this);while((f=e.exec(d))!=null){g[f.index]=f[0]}d=jQuery.trim(d.split(e).join(""));if(d.length>j){var c;while(j<d.length){c=d.charAt(j);if(c.match(k.chars)){d=d.substring(0,j);break}j--}if(b.search(e)!=-1){var i=0;for(eachEl in g){d=[d.substring(0,eachEl),g[eachEl],d.substring(eachEl,d.length)].join("");if(eachEl<d.length){i=d.length}}a.html([d.substring(0,i),d.substring(i,d.length).replace(/<(\w+)[^>]*>.*<\/\1>/gim,"").replace(/<(br|hr|img|input)[^<>]*\/?>/gim,"")].join(""))}else{a.html(d)}l[h]=b;if(jQuery.isFunction(k.trail[0])){a.wrapInner('<div class="truncate_less"></div>');k.trail[0](a.children())}else{a.html(['<div class="truncate_less">',a.html(),k.trail[0],'</div>'].join(''))}a.find('.truncate_show',this).click(function(){if(a.find('.truncate_more').length==0){a.append(['<div class="truncate_more" style="display: none;">',l[h],k.trail[1],'</div>'].join('')).find('.truncate_hide').click(function(){a.find('.truncate_more').hide();a.find('.truncate_less').show();return false})}a.find('.truncate_less').hide();a.find('.truncate_more').show();jQuery('.truncate_show',a).click(function(){a.find('.truncate_less').hide();a.find('.truncate_more').show();return false});return false})}})};