(function(e){e(function(){function l(b,a){window.getComputedStyle?(styles=window.getComputedStyle(b[0],null),e.each(styles,function(c,b){a.css(b,styles.getPropertyValue(b))})):(styles=b[0].currentStyle,e.each(styles,function(b,d){a.css(b,d)}))}function q(){var b=this,a=[function(c){var a=e.Deferred();c.animate({top:b._position.bottom,opacity:"hide"},a.resolve);return a.promise()},function(b){var a=e.Deferred();b.fadeOut(1E3,a.resolve);return a.promise()}];return a[Math.floor(Math.random()*a.length)]} function m(b){var a=this,c="random"===this.options.effect?e.fn.textualizer.effects[g[Math.floor(Math.random()*g.length)]]:e.fn.textualizer.effects[this.options.effect],d=e.Deferred(),f=[];e.each(b.chars,function(b,d){if(!d.inserted){d.domNode.css({left:d.pos.left,top:d.pos.top});var k=e.Deferred();setTimeout(function(){c.call(a,d,k)},Math.random()*r);f.push(k)}});e.when.apply(null,f).done(function(){d.resolve()});return d.promise()}var r=2E3;e.fn.textualizer=function(b,a){var c=arguments,d,f=this.data("textualizer"); if(!f){f=[];if(1===c.length&&c[0]instanceof Array)f=c[0];else if(1===c.length&&"object"===typeof c[0])d=c[0];else if(2===c.length)f=c[0],d=c[1];else throw"textualizer: invalid argument(s)";d=e.extend({},e.fn.textualizer.defaults,d);f=new i(this,f,d);this.data("textualizer",f)}d=f;"string"===typeof c[0]&&d[c[0]]&&d[c[0]].apply(d,Array.prototype.slice.call(c,1));return this};e.fn.textualizer.defaults={effect:"random",duration:2E3,rearrangeDuration:1E3};e.fn.textualizer.effects={none:function(b){this.container.append(b.domNode.show())}, fadeIn:function(b,a){this.container.append(b.domNode.fadeIn(2E3,a.resolve));return a.promise()},slideLeft:function(b,a){b.domNode.appendTo(this.container).css({left:-1E3}).show().animate({left:b.pos.left},2E3,a.resolve);return a.promise()},slideTop:function(b,a){b.domNode.appendTo(this.container).css({top:-1E3}).show().animate({top:b.pos.top},2E3,a.resolve);return a.promise()}};var g=[];e.each(e.fn.textualizer.effects,function(b){"none"!==b&&g.push(b)});var n=function(){this.str="";this.chars=[]}; n.prototype={use:function(b){for(var a=0,c=this.chars.length;a<c;a++){var d=this.chars[a];if(d.ch===b&&!d.used)return d.used=!0,d}return null},reset:function(){e.each(this.chars,function(b,a){a.inserted=!1;a.used=!1})}};var s=function(){this.pos=this.domNode=this.ch=null;this.visited=this.inserted=this.used=!1},i=function(b,a,c){this.options=c;c=b.clone().removeAttr("id").appendTo(document.body);l(b,c);c.css({position:"absolute",top:"-1000px"});this.phantomContainer=e("<div />").css({position:"relative", visibility:"hidden"}).appendTo(c);b.css("overflow","hidden");this.elementHeight=b.height();this.container=e("<div />").css("position","relative").appendTo(b);this._previous=null;this._position={};this._position.bottom=b.height();this.blurbs=[];a&&a instanceof Array&&this.data(a)};i.prototype={data:function(b){this.stop();this.list=b;this.blurbs=[]},start:function(){function b(c){a._pause||a._rotate(c).done(function(){setTimeout(function(){c===a.list.length-1&&(c=-1,e.each(a.blurbs,function(b,c){c.reset()})); c++;a._index=c;b(c)},a.options.duration)})}if(this.list&&0!==this.list.length){var a=this,c=this._index||0;this._pause=!1;b(c)}},stop:function(){this.pause();this._previous=null;this._index=0;this.container.empty();this.phantomContainer.empty()},pause:function(){this._pause=!0},_rotate:function(b){var a=e.Deferred(),c=this.blurbs[b];if(!c){var d=[],f,j,h,c=new n;c.str=this.list[b];this.blurbs.push(c);for(b=0,f=c.str.length;b<f;b++)j=c.str.charAt(b),""===j?this.phantomContainer.append(" "):(h=new s, h.ch=j,h.domNode=e("<span/>").text(j),this.phantomContainer.append(h.domNode),d.push(h));var k=this.options.centered?(this.elementHeight-this.phantomContainer.height())/2:0;e.each(d,function(b,a){a.pos=a.domNode.position();a.domNode=a.domNode.clone();a.pos.top+=k;a.domNode.css({left:a.pos.left,top:a.pos.top,position:"absolute"});c.chars.push(a)});this.phantomContainer.html("")}if(this._previous){var g=this,i=[],o=[],p=[],l=q.call(this);e.each(this._previous.chars,function(a,b){var d=c.use(b.ch);if(d)d.domNode= b.domNode,d.inserted=!0,i.push(d);else{var f=e.Deferred();o.push(f);l(b.domNode.delay(2E3*Math.random())).done(function(){b.domNode.remove();f.resolve()})}});e.when.apply(null,o).done(function(){setTimeout(function(){e.each(i,function(b,a){var c=e.Deferred();a.domNode.animate({left:a.pos.left,top:a.pos.top},g.options.rearrangeDuration,c.resolve);p.push(c.promise())});e.when.apply(null,p).done(function(){setTimeout(function(){m.call(g,c).done(function(){a.resolve()})},500)})},1E3)})}else m.call(this, c).done(function(){a.resolve()});this._previous=c;return a.promise()},destroy:function(){this.container.parent().removeData("textualizer").end().remove();this.phantomContainer.remove()}}})})(jQuery);
