1 (
function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q={}.hasOwnProperty,r=
function(a,b){
function c(){this.constructor=a}
for(var d in b)q.call(b,d)&&(a[d]=b[d]);
return c.prototype=b.prototype,a.prototype=
new c,a.__super__=b.prototype,a};!
function(){var a,b,c,d,e,f,g;
for(g=[
"ms",
"moz",
"webkit",
"o"],c=0,e=g.length;e>c&&(f=g[c],!window.requestAnimationFrame);c++)window.requestAnimationFrame=window[f+
"RequestAnimationFrame"],window.cancelAnimationFrame=window[f+
"CancelAnimationFrame"]||window[f+
"CancelRequestAnimationFrame"];
return a=null,d=0,b={},requestAnimationFrame?window.cancelAnimationFrame?
void 0:(a=window.requestAnimationFrame,window.requestAnimationFrame=
function(c,e){var f;
return f=++d,a(
function(){
return b[f]?
void 0:c()},e),f},window.cancelAnimationFrame=
function(a){
return b[a]=!0}):(window.requestAnimationFrame=
function(a,b){var c,d,e,f;
return c=(
new Date).getTime(),f=Math.max(0,16-(c-e)),d=window.setTimeout(
function(){
return a(c+f)},f),e=c+f,d},window.cancelAnimationFrame=
function(a){
return clearTimeout(a)})}(),String.prototype.hashCode=
function(){var a,b,c,d,e;
if(b=0,0===this.length)
return b;
for(c=d=0,e=this.length;e>=0?e>d:d>e;c=e>=0?++d:--d)a=this.charCodeAt(c),b=(b<<5)-b+a,b&=b;
return b},o=
function(a){var b,c;
for(b=Math.floor(a/3600),c=Math.floor((a-3600*b)/60),a-=3600*b+60*c,a+=
"",c+=
"";c.length<2;)c=
"0"+c;
for(;a.length<2;)a=
"0"+a;
return b=b?b+
":":
"",b+c+
":"+a},m=
function(a){
return k(a.toFixed(0))},p=
function(a,b){var c,d;
for(c in b)q.call(b,c)&&(d=b[c],a[c]=d);
return a},n=
function(a,b){var c,d,e;d={};
for(c in a)q.call(a,c)&&(e=a[c],d[c]=e);
for(c in b)q.call(b,c)&&(e=b[c],d[c]=e);
return d},k=
function(a){var b,c,d,e;
for(a+=
"",c=a.split(
"."),d=c[0],e=
"",c.length>1&&(e=
"."+c[1]),b=/(\d+)(\d{3})/;b.test(d);)d=d.replace(b,
"$1,$2");
return d+e},l=
function(a){
return"#"===a.charAt(0)?a.substring(1,7):a},j=
function(){
function a(a,b){null==a&&(a=!0),this.clear=null!=b?b:!0,a&&AnimationUpdater.add(
this)}
return a.prototype.animationSpeed=32,a.prototype.update=
function(a){var b;
return null==a&&(a=!1),a||this.displayedValue!==this.value?(this.ctx&&this.clear&&this.ctx.clearRect(0,0,
this.canvas.width,
this.canvas.height),b=this.value-this.displayedValue,Math.abs(b/this.animationSpeed)<=.001?this.displayedValue=this.value:this.displayedValue=this.displayedValue+b/this.animationSpeed,this.render(),!0):!1},a}(),e=
function(a){
function b(){
return b.__super__.constructor.apply(
this,arguments)}
return r(b,a),b.prototype.displayScale=1,b.prototype.setTextField=
function(a){
return this.textField=a instanceof i?a:
new i(a)},b.prototype.setMinValue=
function(a,b){var c,d,e,f,g;
if(this.minValue=a,null==b&&(b=!0),b){
for(this.displayedValue=this.minValue,f=this.gp||[],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.displayedValue=
this.minValue);
return g}},b.prototype.setOptions=
function(a){
return null==a&&(a=null),this.options=n(this.options,a),this.textField&&(this.textField.el.style.fontSize=a.fontSize+
"px"),this.options.angle>.5&&(
this.gauge.options.angle=.5),this.configDisplayScale(),
this},b.prototype.configDisplayScale=
function(){var a,b,c,d,e;
return d=this.displayScale,this.options.highDpiSupport===!1?
delete this.displayScale:(b=window.devicePixelRatio||1,a=this.ctx.webkitBackingStorePixelRatio||this.ctx.mozBackingStorePixelRatio||this.ctx.msBackingStorePixelRatio||this.ctx.oBackingStorePixelRatio||this.ctx.backingStorePixelRatio||1,this.displayScale=b/a),this.displayScale!==d&&(e=this.canvas.G__width||
this.canvas.width,c=
this.canvas.G__height||
this.canvas.height,
this.canvas.width=e*
this.displayScale,
this.canvas.height=c*
this.displayScale,
this.canvas.style.width=e+
"px",
this.canvas.style.height=c+
"px",
this.canvas.G__width=e,
this.canvas.G__height=c),
this},b}(j),i=
function(){
function a(a){this.el=a}
return a.prototype.render=
function(a){
return this.el.innerHTML=m(a.displayedValue)},a}(),a=
function(a){
function b(a,b){this.elem=a,this.text=null!=b?b:!1,this.value=1*this.elem.innerHTML,this.text&&(this.value=0)}
return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.setVal=
function(a){
return this.value=1*a},b.prototype.render=
function(){var a;
return a=this.text?o(this.displayedValue.toFixed(0)):k(m(this.displayedValue)),this.elem.innerHTML=a},b}(j),b={create:
function(b){var c,d,e,f;
for(f=[],d=0,e=b.length;e>d;d++)c=b[d],f.push(
new a(c));
return f}},h=
function(a){
function b(a){this.gauge=a,this.ctx=this.gauge.ctx,this.canvas=this.gauge.canvas,b.__super__.constructor.call(
this,!1,!1),this.setOptions()}
return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.options={strokeWidth:.035,length:.1,color:
"#000000"},b.prototype.setOptions=
function(a){
return null==a&&(a=null),p(this.options,a),this.length=this.canvas.height*this.options.length,this.strokeWidth=this.canvas.height*this.options.strokeWidth,this.maxValue=this.gauge.maxValue,this.minValue=this.gauge.minValue,this.displayedValue=this.gauge.minValue,this.animationSpeed=this.gauge.animationSpeed,this.options.angle=this.gauge.options.angle},b.prototype.render=
function(){var a,b,c,d,e,f,g,h,i;
return a=this.gauge.getAngle.call(
this,this.displayedValue),b=this.canvas.width/2,c=.9*this.canvas.height,h=Math.round(b+this.length*Math.cos(a)),i=Math.round(c+
this.length*Math.sin(a)),f=Math.round(b+
this.strokeWidth*Math.cos(a-Math.PI/2)),g=Math.round(c+
this.strokeWidth*Math.sin(a-Math.PI/2)),d=Math.round(b+
this.strokeWidth*Math.cos(a+Math.PI/2)),e=Math.round(c+
this.strokeWidth*Math.sin(a+Math.PI/2)),this.ctx.fillStyle=
this.options.color,
this.ctx.beginPath(),this.ctx.arc(b,c,this.strokeWidth,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.beginPath(),this.ctx.moveTo(f,g),this.ctx.lineTo(h,i),this.ctx.lineTo(d,e),this.ctx.fill()},b}(j),c=
function(){
function a(a){this.elem=a}
return a.prototype.updateValues=
function(a){
return this.value=a[0],this.maxValue=a[1],this.avgValue=a[2],this.render()},a.prototype.render=
function(){var a,b;
return this.textField&&this.textField.text(m(this.value)),0===this.maxValue&&(this.maxValue=2*this.avgValue),b=this.value/this.maxValue*100,a=this.avgValue/this.maxValue*100,$(
".bar-value",this.elem).css({width:b+
"%"}),$(
".typical-value",this.elem).css({width:a+
"%"})},a}(),g=
function(a){
function b(a){this.canvas=a,b.__super__.constructor.call(
this),this.percentColors=null,
"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext(
"2d"),this.gp=[
new h(
this)],this.setOptions(),this.render()}
return r(b,a),b.prototype.elem=null,b.prototype.value=[20],b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.displayedAngle=0,b.prototype.displayedValue=0,b.prototype.lineWidth=40,b.prototype.paddingBottom=.1,b.prototype.percentColors=null,b.prototype.options={colorStart:
"#6fadcf",colorStop:
void 0,gradientType:0,strokeColor:
"#e0e0e0",pointer:{length:.8,strokeWidth:.035},angle:.15,lineWidth:.44,fontSize:40,limitMax:!1},b.prototype.setOptions=
function(a){var c,d,e,f;
for(null==a&&(a=null),b.__super__.setOptions.call(
this,a),this.configPercentColors(),this.lineWidth=this.canvas.height*(1-this.paddingBottom)*this.options.lineWidth,
this.radius=
this.canvas.height*(1-
this.paddingBottom)-this.lineWidth,this.ctx.clearRect(0,0,this.canvas.width,
this.canvas.height),this.render(),f=this.gp,d=0,e=f.length;e>d;d++)c=f[d],c.setOptions(
this.options.pointer),c.render();
return this},b.prototype.configPercentColors=
function(){var a,b,c,d,e,f,g;
if(this.percentColors=null,
void 0!==this.options.percentColors){
for(this.percentColors=
new Array,f=[],c=d=0,e=this.options.percentColors.length-1;e>=0?e>=d:d>=e;c=e>=0?++d:--d)g=parseInt(l(this.options.percentColors[c][1]).substring(0,2),16),b=parseInt(l(this.options.percentColors[c][1]).substring(2,4),16),a=parseInt(l(this.options.percentColors[c][1]).substring(4,6),16),f.push(
this.percentColors[c]={pct:
this.options.percentColors[c][0],color:{r:g,g:b,b:a}});
return f}},b.prototype.set=
function(a){var b,c,d,e,f,g,i;
if(this.displayedValue=this.minValue,a instanceof Array||(a=[a]),a.length>this.gp.length)
for(b=c=0,g=a.length-
this.gp.length;g>=0?g>c:c>g;b=g>=0?++c:--c)this.gp.push(
new h(
this));
for(b=0,f=!1,d=0,e=a.length;e>d;d++)i=a[d],i>this.maxValue&&(this.maxValue=1.1*this.value,f=!0),this.gp[b].value=i,this.gp[b++].setOptions({maxValue:this.maxValue,angle:this.options.angle});
return this.value=a[a.length-1],f&&this.options.limitMax?
void 0:AnimationUpdater.run()},b.prototype.getAngle=
function(a){
return(1+this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(1-2*this.options.angle)*Math.PI},b.prototype.getColorForPercentage=
function(a,b){var c,d,e,f,g,h,i;
if(0===a)c=this.percentColors[0].color;
else for(c=this.percentColors[this.percentColors.length-1].color,e=f=0,h=
this.percentColors.length-1;h>=0?h>=f:f>=h;e=h>=0?++f:--f)
if(a<=this.percentColors[e].pct){b===!0?(i=this.percentColors[e-1],d=this.percentColors[e],g=(a-i.pct)/(d.pct-i.pct),c={r:Math.floor(i.color.r*(1-g)+d.color.r*g),g:Math.floor(i.color.g*(1-g)+d.color.g*g),b:Math.floor(i.color.b*(1-g)+d.color.b*g)}):c=this.percentColors[e].color;
break}
return"rgb("+[c.r,c.g,c.b].join(
",")+
")"},b.prototype.getColorForValue=
function(a,b){var c;
return c=(a-this.minValue)/(this.maxValue-this.minValue),this.getColorForPercentage(c,b)},b.prototype.render=
function(){var a,b,c,d,e,f,g,h,i;
for(i=this.canvas.width/2,d=
this.canvas.height*(1-
this.paddingBottom),a=this.getAngle(this.displayedValue),this.textField&&this.textField.render(
this),this.ctx.lineCap=
"butt",
void 0!==this.options.customFillStyle?b=this.options.customFillStyle(
this):null!==this.percentColors?b=this.getColorForValue(this.displayedValue,!0):void 0!==this.options.colorStop?(b=0===this.options.gradientType?this.ctx.createRadialGradient(i,d,9,i,d,70):this.ctx.createLinearGradient(0,0,i,0),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop)):b=this.options.colorStart,this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,(1+this.options.angle)*Math.PI,a,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.stroke(),this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,a,(2-this.options.angle)*Math.PI,!1),this.ctx.stroke(),g=this.gp,h=[],e=0,f=g.length;f>e;e++)c=g[e],h.push(c.update(!0));
return h},b}(e),d=
function(a){
function b(a){this.canvas=a,b.__super__.constructor.call(
this),
"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext(
"2d"),this.setOptions(),this.render()}
return r(b,a),b.prototype.lineWidth=15,b.prototype.displayedValue=0,b.prototype.value=33,b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.options={lineWidth:.1,colorStart:
"#6f6ea0",colorStop:
"#c0c0db",strokeColor:
"#eeeeee",shadowColor:
"#d5d5d5",angle:.35},b.prototype.getAngle=
function(a){
return(1-this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(2+this.options.angle-(1-this.options.angle))*Math.PI},b.prototype.setOptions=
function(a){
return null==a&&(a=null),b.__super__.setOptions.call(
this,a),this.lineWidth=this.canvas.height*this.options.lineWidth,this.radius=this.canvas.height/2-this.lineWidth/2,
this},b.prototype.set=
function(a){
return this.value=a,this.value>this.maxValue&&(this.maxValue=1.1*this.value),AnimationUpdater.run()},b.prototype.render=
function(){var a,b,c,d,e,f;
return a=this.getAngle(this.displayedValue),f=this.canvas.width/2,c=this.canvas.height/2,this.textField&&this.textField.render(
this),b=this.ctx.createRadialGradient(f,c,39,f,c,70),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop),d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,(2+
this.options.angle)*Math.PI,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.lineCap=
"round",this.ctx.stroke(),this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,a,!1),this.ctx.stroke()},b}(e),f=
function(a){
function b(){
return b.__super__.constructor.apply(
this,arguments)}
return r(b,a),b.prototype.strokeGradient=
function(a,b,c,d){var e;
return e=this.ctx.createRadialGradient(a,b,c,a,b,d),e.addColorStop(0,this.options.shadowColor),e.addColorStop(.12,this.options._orgStrokeColor),e.addColorStop(.88,this.options._orgStrokeColor),e.addColorStop(1,this.options.shadowColor),e},b.prototype.setOptions=
function(a){var c,d,e,f;
return null==a&&(a=null),b.__super__.setOptions.call(
this,a),f=this.canvas.width/2,c=this.canvas.height/2,d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.options._orgStrokeColor=this.options.strokeColor,this.options.strokeColor=this.strokeGradient(f,c,d,e),
this},b}(d),window.AnimationUpdater={elements:[],animId:null,addAll:
function(a){var b,c,d,e;
for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(AnimationUpdater.elements.push(b));
return e},add:
function(a){
return AnimationUpdater.elements.push(a)},run:
function(){var a,b,c,d,e;
for(a=!0,e=AnimationUpdater.elements,c=0,d=e.length;d>c;c++)b=e[c],b.update()&&(a=!1);
return a?cancelAnimationFrame(AnimationUpdater.animId):AnimationUpdater.animId=requestAnimationFrame(AnimationUpdater.run)}},
"function"==typeof window.define&&null!=window.define.amd?define(function(){
return{Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}}):
"undefined"!=typeof module&&null!=module.exports?module.exports={Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}:(window.Gauge=g,window.Donut=f,window.BaseDonut=d,window.TextRenderer=i)}).call(
this);