;(function(factory){'use strict';if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else if(typeof exports==='object'){factory(require('jquery'));}else{if(typeof jQuery==='undefined'){throw 'jquery-numerator requires jQuery to be loaded first';} factory(jQuery);}}(function($){var pluginName="numerator",defaults={easing:'swing',duration:500,delimiter:undefined,rounding:0,toValue:undefined,fromValue:undefined,queue:false,onStart:function(){},onStep:function(){},onProgress:function(){},onComplete:function(){}};function Plugin(element,options){this.element=element;this.settings=$.extend({},defaults,options);this._defaults=defaults;this._name=pluginName;this.init();} Plugin.prototype={init:function(){this.parseElement();this.setValue();},parseElement:function(){var elText=$.trim($(this.element).text());this.settings.fromValue=this.settings.fromValue||this.format(elText);},setValue:function(){var self=this;$({value:self.settings.fromValue}).animate({value:self.settings.toValue},{duration:parseInt(self.settings.duration,10),easing:self.settings.easing,start:self.settings.onStart,step:function(now,fx){$(self.element).text(self.format(now));self.settings.onStep(now,fx);},progress:self.settings.onProgress,complete:self.settings.onComplete});},format:function(value){var self=this;if(parseInt(this.settings.rounding)<1){value=parseInt(value,10);}else{value=parseFloat(value).toFixed(parseInt(this.settings.rounding));} if(self.settings.delimiter){return this.delimit(value)}else{return value;}},delimit:function(value){var self=this;value=value.toString();if(self.settings.rounding&&parseInt(self.settings.rounding,10)>0){var decimals=value.substring((value.length-(self.settings.rounding+1)),value.length),wholeValue=value.substring(0,(value.length-(self.settings.rounding+1)));return self.addDelimiter(wholeValue)+decimals;}else{return self.addDelimiter(value);}},addDelimiter:function(value){return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.settings.delimiter);}};$.fn[pluginName]=function(options){return this.each(function(){if($.data(this,"plugin_"+pluginName)){$.data(this,'plugin_'+pluginName,null);} $.data(this,"plugin_"+pluginName,new Plugin(this,options));});};}));