﻿function countUp(h,g,c,a,b,e){var d=0;var i=["webkit","moz","ms","o"];for(var j=0;j<i.length&&!window.requestAnimationFrame;++j){window.requestAnimationFrame=window[i[j]+"RequestAnimationFrame"];window.cancelAnimationFrame=window[i[j]+"CancelAnimationFrame"]||window[i[j]+"CancelRequestAnimationFrame"]}if(!window.requestAnimationFrame){window.requestAnimationFrame=function(k,m){var l=new Date().getTime();var o=Math.max(0,16-(l-d));var n=window.setTimeout(function(){k(l+o)},o);d=l+o;return n}}if(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(k){clearTimeout(k)}}this.options=e||{useEasing:true,useGrouping:true,separator:",",decimal:".",};if(this.options.separator==""){this.options.useGrouping=false}if(this.options.prefix==null){this.options.prefix=""}if(this.options.suffix==null){this.options.suffix=""}var f=this;this.d=(typeof h==="string")?document.getElementById(h):h;this.startVal=Number(g);this.endVal=Number(c);this.countDown=(this.startVal>this.endVal)?true:false;this.startTime=null;this.timestamp=null;this.remaining=null;this.frameVal=this.startVal;this.rAF=null;this.decimals=Math.max(0,a||0);this.dec=Math.pow(10,this.decimals);this.duration=b*1000||2000;this.version=function(){return"1.3.2"};this.printValue=function(l){var k=(!isNaN(l))?f.formatNumber(l):"--";if(f.d.tagName=="INPUT"){this.d.value=k}else{if(f.d.tagName=="text"){this.d.textContent=k}else{this.d.innerHTML=k}}};this.easeOutExpo=function(n,k,l,m){return l*(-Math.pow(2,-10*n/m)+1)*1024/1023+k};this.count=function(m){if(f.startTime===null){f.startTime=m}f.timestamp=m;var l=m-f.startTime;f.remaining=f.duration-l;if(f.options.useEasing){if(f.countDown){var k=f.easeOutExpo(l,0,f.startVal-f.endVal,f.duration);f.frameVal=f.startVal-k}else{f.frameVal=f.easeOutExpo(l,f.startVal,f.endVal-f.startVal,f.duration)}}else{if(f.countDown){var k=(f.startVal-f.endVal)*(l/f.duration);f.frameVal=f.startVal-k}else{f.frameVal=f.startVal+(f.endVal-f.startVal)*(l/f.duration)}}if(f.countDown){f.frameVal=(f.frameVal<f.endVal)?f.endVal:f.frameVal}else{f.frameVal=(f.frameVal>f.endVal)?f.endVal:f.frameVal}f.frameVal=Math.round(f.frameVal*f.dec)/f.dec;f.printValue(f.frameVal);if(l<f.duration){f.rAF=requestAnimationFrame(f.count)}else{if(f.callback!=null){f.callback()}}};this.start=function(k){f.callback=k;if(!isNaN(f.endVal)&&!isNaN(f.startVal)){f.rAF=requestAnimationFrame(f.count)}else{console.log("countUp error: startVal or endVal is not a number");f.printValue()}return false};this.stop=function(){cancelAnimationFrame(f.rAF)};this.reset=function(){f.startTime=null;f.startVal=g;cancelAnimationFrame(f.rAF);f.printValue(f.startVal)};this.resume=function(){f.stop();f.startTime=null;f.duration=f.remaining;f.startVal=f.frameVal;requestAnimationFrame(f.count)};this.formatNumber=function(k){k=k.toFixed(f.decimals);k+="";var m,n,o,l;m=k.split(".");n=m[0];o=m.length>1?f.options.decimal+m[1]:"";l=/(\d+)(\d{3})/;if(f.options.useGrouping){while(l.test(n)){n=n.replace(l,"$1"+f.options.separator+"$2")}}return f.options.prefix+n+o+f.options.suffix};f.printValue(f.startVal)};