/*
 * Shorten, a jQuery plugin to automatically shorten text to fit in a block or a pre-set width and configure how the text ends.
 * Copyright (C) 2009-2010  Marc Diethelm
 * License: (GPL 3, http://www.gnu.org/licenses/gpl-3.0.txt) see license.txt
 */

(function(a){a.fn.shorten=function(){var b={},c=arguments,e=c.callee;if(c.length)if(c[0].constructor==Object)b=c[0];else if(c[0]=="options")return a(this).eq(0).data("options-truncate");else b={width:parseInt(c[0]),tail:c[1]};this.css("visibility","hidden");var k=a.extend({},e.defaults,b);return this.each(function(){var l=a(this);l.data("options-truncate",k);if(e._native){var f=a("<span>"+k.tail+"</span>").text();if(f.length==1&&f.charCodeAt(0)==8230){this.style[e._native]="ellipsis";this.style.visibility= "visible";return true}}f=k.width||l.parent().width();var d=l.text(),n=d.length,g,h,i=a("<span/>").html(k.tail).text();if(e._supportsCanvas){g=e.measureText_initCanvas.call(this);h=e.measureText_canvas}else{g=e.measureText_initTable.call(this);h=e.measureText_table}var j=h.call(this,d,g);if(j<f){l.text(d);this.style.visibility="visible";return true}i=h.call(this,i,g);f-=i;i=f*1.15;if(j-i>0){j=d.substring(0,Math.ceil(n*(i/j)));if(h.call(this,j,g)>f){d=j;n=d.length}}do{n--;d=d.substring(0,n)}while(h.call(this, d,g)>=f);l.html(a.trim(a("<span/>").text(d).html())+k.tail);this.style.visibility="visible";return true})};var m=document.documentElement.style,p=false;if("textOverflow"in m)p="textOverflow";else if("OTextOverflow"in m)p="OTextOverflow";else{m=document.createElement("canvas");var o=m.getContext("2d");a.fn.shorten._supportsCanvas=o?true:false;delete m}a.fn.shorten._native=p;a.fn.shorten.measureText_initCanvas=function(){var b=a(this),c=document.createElement("canvas");o=c.getContext("2d");b.html(c); o.font=Math.ceil(parseFloat(b.css("font-size")))+"px "+b.css("font-family")+" "+b.css("font-weight")+" "+b.css("font-style");return o};a.fn.shorten.measureText_canvas=function(b,c){return c.measureText(b).width};a.fn.shorten.measureText_initTable=function(){var b=a('<table style="padding:0; margin:0; border:none; font:inherit;width:auto;zoom:1;position:absolute;"><tr style="padding:0; margin:0; border:none; font:inherit;"><td style="padding:0; margin:0; border:none; font:inherit;white-space:nowrap;"></td></tr></table>'); $td=a("td",b);a(this).html(b);return $td};a.fn.shorten.measureText_table=function(b,c){c.text(b);return c.width()};a.fn.shorten.defaults={tail:"&hellip;",tooltip:true}})(jQuery);

