(function(n){"use strict";function o(){u=n(window);i={};f={};r={};n.each([i,f,r],function(n,t){t.add=function(n){n=n.split(" ");for(var i=0,r=n.length;i<r;i++)t[n[i]]=t.ddd(n[i])}});i.ddd=function(n){return"ddd-"+n};i.add("truncated keep");f.ddd=function(n){return"ddd-"+n};r.ddd=function(n){return n+".ddd"};r.add("resize");o=function(){}}var t="dotdotdot",e="3.2.2",i,f,r,u;n[t]&&n[t].version>e||(n[t]=function(n,i){this.$dot=n;this.api=["getInstance","truncate","restore","destroy","watch","unwatch"];this.opts=i;var r=this.$dot.data(t);return r&&r.destroy(),this.init(),this.truncate(),this.opts.watch&&this.watch(),this},n[t].version=e,n[t].uniqueId=0,n[t].defaults={ellipsis:"… ",callback:function(){},truncate:"word",tolerance:0,keep:null,watch:"window",height:null},n[t].prototype={init:function(){this.watchTimeout=null;this.watchInterval=null;this.uniqueId=n[t].uniqueId++;this.originalStyle=this.$dot.attr("style")||"";this.originalContent=this._getOriginalContent();this.$dot.css("word-wrap")!=="break-word"&&this.$dot.css("word-wrap","break-word");this.$dot.css("white-space")==="nowrap"&&this.$dot.css("white-space","normal");this.opts.height===null&&(this.opts.height=this._getMaxHeight());typeof this.opts.ellipsis=="string"&&(this.opts.ellipsis=document.createTextNode(this.opts.ellipsis))},getInstance:function(){return this},truncate:function(){var t=this,n;return this.$inner=this.$dot.wrapInner("<div />").children().css({display:"block",height:"auto",width:"auto",border:"none",padding:0,margin:0}),this.$inner.empty().append(this.originalContent.clone(!0)),this.maxHeight=this._getMaxHeight(),n=!1,this._fits()||(n=!0,this._truncateToNode(this.$inner[0])),this.$dot[n?"addClass":"removeClass"](i.truncated),this.$inner.replaceWith(this.$inner.contents()),this.$inner=null,this.opts.callback.call(this.$dot[0],n),n},restore:function(){this.unwatch();this.$dot.empty().append(this.originalContent).attr("style",this.originalStyle).removeClass(i.truncated)},destroy:function(){this.restore();this.$dot.data(t,null)},watch:function(){var n=this,t;if(this.unwatch(),t={},this.opts.watch=="window")u.on(r.resize+n.uniqueId,function(){n.watchTimeout&&clearTimeout(n.watchTimeout);n.watchTimeout=setTimeout(function(){t=n._watchSizes(t,u,"width","height")},100)});else this.watchInterval=setInterval(function(){t=n._watchSizes(t,n.$dot,"innerWidth","innerHeight")},500)},unwatch:function(){u.off(r.resize+this.uniqueId);this.watchInterval&&clearInterval(this.watchInterval);this.watchTimeout&&clearTimeout(this.watchTimeout)},_api:function(){var i=this,t={};return n.each(this.api,function(){var n=this;t[n]=function(){var r=i[n].apply(i,arguments);return typeof r=="undefined"?t:r}}),t},_truncateToNode:function(t){var c=this,o=[],u=[],r,h,s,f,e;if(n(t).contents().each(function(){var r=n(this),t;r.hasClass(i.keep)||(t=document.createComment(""),r.replaceWith(t),u.push(this),o.push(t))}),u.length){for(r=0;r<u.length;r++)if(n(o[r]).replaceWith(u[r]),n(u[r]).append(this.opts.ellipsis),h=this._fits(),n(this.opts.ellipsis,u[r]).remove(),!h){if(this.opts.truncate=="node"&&r>1){n(u[r-2]).remove();return}break}for(s=r;s<o.length;s++)n(o[s]).remove();f=u[Math.max(0,Math.min(r,u.length-1))];f.nodeType==1&&(e=n("<"+f.nodeName+" />"),e.append(this.opts.ellipsis),n(f).replaceWith(e),this._fits()?e.replaceWith(f):(e.remove(),f=u[Math.max(0,r-1)]));f.nodeType==1?this._truncateToNode(f):this._truncateToWord(f)}},_truncateToWord:function(n){for(var r=n,t=this,e=this.__getTextContent(r),u=e.indexOf(" ")!==-1?" ":"　",f=e.split(u),o="",i=f.length;i>=0;i--)if(o=f.slice(0,i).join(u),t.__setTextContent(r,t._addEllipsis(o)),t._fits()){t.opts.truncate=="letter"&&(t.__setTextContent(r,f.slice(0,i+1).join(u)),t._truncateToLetter(r));break}},_truncateToLetter:function(n){for(var i=this,f=this.__getTextContent(n),u=f.split(""),r="",t=u.length;t>=0;t--)if((r=u.slice(0,t).join(""),r.length)&&(i.__setTextContent(n,i._addEllipsis(r)),i._fits()))break},_fits:function(){return this.$inner.innerHeight()<=this.maxHeight+this.opts.tolerance},_addEllipsis:function(t){for(var i=[" ","　",",",";",".","!","?"];n.inArray(t.slice(-1),i)>-1;)t=t.slice(0,-1);return t+this.__getTextContent(this.opts.ellipsis)},_getOriginalContent:function(){var t=this;return this.$dot.find("script, style").addClass(i.keep),this.opts.keep&&this.$dot.find(this.opts.keep).addClass(i.keep),this.$dot.find("*").not("."+i.keep).add(this.$dot).contents().each(function(){var r=this,i=n(this);if(r.nodeType==3){if(n.trim(t.__getTextContent(r))==""){if(i.parent().is("table, thead, tbody, tfoot, tr, dl, ul, ol, video")){i.remove();return}if(i.prev().is("div, p, table, td, td, dt, dd, li")){i.remove();return}if(i.next().is("div, p, table, td, td, dt, dd, li")){i.remove();return}if(!i.prev().length){i.remove();return}if(!i.next().length){i.remove();return}}}else r.nodeType==8&&i.remove()}),this.$dot.contents()},_getMaxHeight:function(){var i,n,t,r;if(typeof this.opts.height=="number")return this.opts.height;for(n=["maxHeight","height"],i=0,t=0;t<n.length;t++)if(i=window.getComputedStyle(this.$dot[0])[n[t]],i.slice(-2)=="px"){i=parseFloat(i);break}n=[];switch(this.$dot.css("boxSizing")){case"border-box":n.push("borderTopWidth");n.push("borderBottomWidth");case"padding-box":n.push("paddingTop");n.push("paddingBottom")}for(t=0;t<n.length;t++)r=window.getComputedStyle(this.$dot[0])[n[t]],r.slice(-2)=="px"&&(i-=parseFloat(r));return Math.max(i,0)},_watchSizes:function(n,t,i,r){if(this.$dot.is(":visible")){var u={width:t[i](),height:t[r]()};return(n.width!=u.width||n.height!=u.height)&&this.truncate(),u}return n},__getTextContent:function(n){for(var i=["nodeValue","textContent","innerText"],t=0;t<i.length;t++)if(typeof n[i[t]]=="string")return n[i[t]];return""},__setTextContent:function(n,t){for(var r=["nodeValue","textContent","innerText"],i=0;i<r.length;i++)n[r[i]]=t}},n.fn[t]=function(i){return o(),i=n.extend(!0,{},n[t].defaults,i),this.each(function(){n(this).data(t,new n[t](n(this),i)._api())})})})(jQuery)