jQuery.fn.textOverflow=function(options){settings=jQuery.extend({lines:1,ellipsis:"...",wrap:"word",link:"",titleAttr:false},options);return this.each(function(){$('head').append($('<style>.tExTOvErFLoW {margin-right: -10000px;}</style>'));$(this).addClass("tExTOvErFLoW");var boxWidth=$(this).width()-10000;var content=$(this).html()+' ';var newContent="";var testLine="";var tempLine="";var contentPos=0;var tempPos=0;var lastChar="";var lineNr=1;while(lineNr<=settings.lines&&contentPos<content.length){testLine=content.substr(contentPos,content.substr(contentPos,content.length-contentPos).indexOf(' '));contentPos=contentPos+content.substr(contentPos,content.length-contentPos).indexOf(' ')+1;if(lineNr!=settings.lines){$(this).html('<span>'+testLine+'</span>')}else{$(this).html('<span>'+testLine+settings.ellipsis+' '+settings.link+'</span>')}while(contentPos<content.length&&$(this).children().width()<=boxWidth){tempLine=testLine;tempPos=contentPos;testLine+=' '+content.substr(contentPos,content.substr(contentPos,content.length-contentPos).indexOf(' '));contentPos=contentPos+content.substr(contentPos,content.length-contentPos).indexOf(' ')+1;if(lineNr!=settings.lines){$(this).html('<span>'+testLine+'</span>')}else{$(this).html('<span>'+testLine+settings.ellipsis+' '+settings.link+'</span>')}}if($(this).children().width()>boxWidth){if(lineNr<settings.lines||settings.wrap=='word'){testLine=tempLine;contentPos=tempPos}else{while($(this).children().width()>boxWidth){testLine=testLine.substr(0,testLine.length-1);$(this).html('<span>'+testLine+settings.ellipsis+' '+settings.link+'</span>')}}}if(lineNr<settings.lines){newContent+=testLine+' '}else{newContent+=testLine+settings.ellipsis+' '+settings.link}lineNr++;lastChar=""}$(this).removeClass("tExTOvErFLoW");if(settings.titleAttr){$(this).attr("title",content)}$(this).html(newContent)})}
