(function ($){
"use strict";
var pluginName="Morphext",
defaults={
animation: "bounceIn",
separator: ",",
speed: 2000,
activeClass: 'active',
loop: 10,
complete: $.noop
};
function Plugin (element, options){
this.element=$(element);
this.settings=$.extend({}, defaults, options);
this._defaults=defaults;
this._init();
}
Plugin.prototype={
_init: function (){
var $that=this;
this.position=0;
this.loops=0;
this.phrases=[];
this.element.addClass("morphext");
$.each(this.element.text().split(this.settings.separator), function (key, value){
$that.phrases.push($.trim(value));
});
this.loops=this.settings.loop * this.phrases.length;
this.index=-1;
this.animate();
this.start();
},
animate: function (){
this.position++;
this.index=++this.index % this.phrases.length;
this.element[0].innerHTML="<span class=\"animated " + this.settings.animation + "\">" + this.phrases[this.index] + "</span>";
this.element[0].classList.add(this.settings.activeClass);
if(this.position==this.loops){
this.stop();
}
if($.isFunction(this.settings.complete)){
this.settings.complete.call(this);
}},
start: function (){
var $that=this;
this._interval=setInterval(function (){
$that.animate();
}, this.settings.speed);
},
stop: function (){
this._interval=clearInterval(this._interval);
}};
$.fn[pluginName]=function (options){
return this.each(function(){
if(!$.data(this, "plugin_" + pluginName)){
$.data(this, "plugin_" + pluginName, new Plugin(this, options));
}});
};})(jQuery);