!function(n){if("function"==typeof define&&define.amd)define(["jquery"],n);else if("object"==typeof module&&module.exports){var t=require("jquery");n(t);module.exports=t}else n(jQuery)}(function(n){function t(n){this.init(n)}t.prototype={value:0,size:100,startAngle:-Math.PI,thickness:"auto",fill:{gradient:["#3aeabb","#fdd250"]},emptyFill:"rgba(0, 0, 0, .1)",animation:{duration:1200,easing:"circleProgressEasing"},animationStartValue:0,reverse:!1,lineCap:"butt",insertMode:"prepend",constructor:t,el:null,canvas:null,ctx:null,radius:0,arcFill:null,lastFrameValue:0,init:function(t){n.extend(this,t);this.radius=this.size/2;this.initWidget();this.initFill();this.draw();this.el.trigger("circle-inited")},initWidget:function(){var t,i;this.canvas||(this.canvas=n("<canvas>")["prepend"==this.insertMode?"prependTo":"appendTo"](this.el)[0]);t=this.canvas;(t.width=this.size,t.height=this.size,this.ctx=t.getContext("2d"),window.devicePixelRatio>1)&&(i=window.devicePixelRatio,t.style.width=t.style.height=this.size+"px",t.width=t.height=this.size*i,this.ctx.scale(i,i))},initFill:function(){function c(){var t=n("<canvas>")[0];t.width=r.size;t.height=r.size;t.getContext("2d").drawImage(e,0,0,u,u);r.arcFill=r.ctx.createPattern(t,"no-repeat");r.drawFrame(r.lastFrameValue)}var r=this,t=this.fill,l=this.ctx,u=this.size,i,f,h,e;if(!t)throw Error("The fill is not specified!");if("string"==typeof t&&(t={color:t}),t.color&&(this.arcFill=t.color),t.gradient)if(i=t.gradient,1==i.length)this.arcFill=i[0];else if(i.length>1){for(var o=t.gradientAngle||0,v=t.gradientDirection||[u/2*(1-Math.cos(o)),u/2*(1+Math.sin(o)),u/2*(1+Math.cos(o)),u/2*(1-Math.sin(o))],a=l.createLinearGradient.apply(l,v),s=0;s<i.length;s++)f=i[s],h=s/(i.length-1),n.isArray(f)&&(h=f[1],f=f[0]),a.addColorStop(h,f);this.arcFill=a}t.image&&(t.image instanceof Image?e=t.image:(e=new Image,e.src=t.image),e.complete?c():e.onload=c)},draw:function(){this.animation?this.drawAnimated(this.value):this.drawFrame(this.value)},drawFrame:function(n){this.lastFrameValue=n;this.ctx.clearRect(0,0,this.size,this.size);this.drawEmptyArc(n);this.drawArc(n)},drawArc:function(n){if(0!==n){var t=this.ctx,i=this.radius,u=this.getThickness(),r=this.startAngle;t.save();t.beginPath();this.reverse?t.arc(i,i,i-u/2,r-2*Math.PI*n,r):t.arc(i,i,i-u/2,r,r+2*Math.PI*n);t.lineWidth=u;t.lineCap=this.lineCap;t.strokeStyle=this.arcFill;t.stroke();t.restore()}},drawEmptyArc:function(n){var t=this.ctx,i=this.radius,r=this.getThickness(),u=this.startAngle;n<1&&(t.save(),t.beginPath(),n<=0?t.arc(i,i,i-r/2,0,2*Math.PI):this.reverse?t.arc(i,i,i-r/2,u,u-2*Math.PI*n):t.arc(i,i,i-r/2,u+2*Math.PI*n,u),t.lineWidth=r,t.strokeStyle=this.emptyFill,t.stroke(),t.restore())},drawAnimated:function(t){var r=this,i=this.el,u=n(this.canvas);u.stop(!0,!1);i.trigger("circle-animation-start");u.css({animationProgress:0}).animate({animationProgress:1},n.extend({},this.animation,{step:function(n){var u=r.animationStartValue*(1-n)+t*n;r.drawFrame(u);i.trigger("circle-animation-progress",[n,u])}})).promise().always(function(){i.trigger("circle-animation-end")})},getThickness:function(){return n.isNumeric(this.thickness)?this.thickness:this.size/14},getValue:function(){return this.value},setValue:function(n){this.animation&&(this.animationStartValue=this.lastFrameValue);this.value=n;this.draw()}};n.circleProgress={defaults:t.prototype};n.easing.circleProgressEasing=function(n){return n<.5?(n=2*n,.5*n*n*n):(n=2-2*n,1-.5*n*n*n)};n.fn.circleProgress=function(i,r){var u="circle-progress",f=this.data(u),e;if("widget"==i){if(!f)throw Error('Calling "widget" method on not initialized instance is forbidden');return f.canvas}if("value"==i){if(!f)throw Error('Calling "value" method on not initialized instance is forbidden');return"undefined"==typeof r?f.getValue():(e=arguments[1],this.each(function(){n(this).data(u).setValue(e)}))}return this.each(function(){var e=n(this),o=e.data(u),f=n.isPlainObject(i)?i:{},r;o?o.init(f):(r=n.extend({},e.data()),"string"==typeof r.fill&&(r.fill=JSON.parse(r.fill)),"string"==typeof r.animation&&(r.animation=JSON.parse(r.animation)),f=n.extend(r,f),f.el=e,o=new t(f),e.data(u,o))})}})