function getColor(e,t,i,o,n){var a,l,r,u,c,m,f,g,s,d,p,h,v,x,o=o||n.length>0;if(n.length>0)for(var b=0;b<n.length;b++)if(e>n[b].lo&&e<=n[b].hi)return n[b].color;if(a=i.length,1===a)return i[0];for(l=o?1/a:1/(a-1),r=[],b=0;b<i.length;b++)u=o?l*(b+1):l*b,c=parseInt(cutHex(i[b]).substring(0,2),16),m=parseInt(cutHex(i[b]).substring(2,4),16),f=parseInt(cutHex(i[b]).substring(4,6),16),r[b]={pct:u,color:{r:c,g:m,b:f}};if(0===t)return"rgb("+[r[0].color.r,r[0].color.g,r[0].color.b].join(",")+")";for(var y=0;y<r.length;y++)if(t<=r[y].pct)return o?"rgb("+[r[y].color.r,r[y].color.g,r[y].color.b].join(",")+")":(g=r[y-1],s=r[y],d=s.pct-g.pct,p=(t-g.pct)/d,h=1-p,v=p,x={r:Math.floor(g.color.r*h+s.color.r*v),g:Math.floor(g.color.g*h+s.color.g*v),b:Math.floor(g.color.b*h+s.color.b*v)},"rgb("+[x.r,x.g,x.b].join(",")+")")}function setDy(e,t,i){(!ie||ie>9)&&e.node.firstChild.attributes.dy&&(e.node.firstChild.attributes.dy.value=0)}function getRandomInt(e,t){return Math.floor(Math.random()*(t-e+1))+e}function cutHex(e){return"#"==e.charAt(0)?e.substring(1,7):e}function humanFriendlyNumber(e,t){var i,o,n,a;for(i=Math.pow,o=i(10,t),n=7;n;)a=i(10,3*n--),e>=a&&(e=Math.round(e*o/a)/o+"KMGTPE"[n]);return e}function formatNumber(e){var t=e.toString().split(".");return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),t.join(".")}function getStyle(e,t){var i="";return document.defaultView&&document.defaultView.getComputedStyle?i=document.defaultView.getComputedStyle(e,"").getPropertyValue(t):e.currentStyle&&(t=t.replace(/\-(\w)/g,function(e,t){return t.toUpperCase()}),i=e.currentStyle[t]),i}function onCreateElementNsReady(e){void 0!==document.createElementNS?e():setTimeout(function(){onCreateElementNsReady(e)},100)}JustGage=function(e){var t=this;if(null===e||void 0===e)return console.log("* justgage: Make sure to pass options to the constructor!"),!1;var i;if(null!==e.id&&void 0!==e.id){if(i=document.getElementById(e.id),!i)return console.log("* justgage: No element with id : %s found",e.id),!1}else{if(null===e.parentNode||void 0===e.parentNode)return console.log("* justgage: Make sure to pass the existing element id or parentNode to the constructor."),!1;i=e.parentNode}var o=i.dataset?i.dataset:{};t.config={id:e.id,parentNode:t.kvLookup("parentNode",e,o,null),width:t.kvLookup("width",e,o,null),height:t.kvLookup("height",e,o,null),title:t.kvLookup("title",e,o,""),titleFontColor:t.kvLookup("titleFontColor",e,o,"#999999"),value:t.kvLookup("value",e,o,0,"float"),valueFontColor:t.kvLookup("valueFontColor",e,o,"#010101"),symbol:t.kvLookup("symbol",e,o,""),min:t.kvLookup("min",e,o,0,"float"),max:t.kvLookup("max",e,o,100,"float"),humanFriendlyDecimal:t.kvLookup("humanFriendlyDecimal",e,o,0),textRenderer:t.kvLookup("textRenderer",e,o,null),gaugeWidthScale:t.kvLookup("gaugeWidthScale",e,o,1),gaugeColor:t.kvLookup("gaugeColor",e,o,"#edebeb"),label:t.kvLookup("label",e,o,""),labelFontColor:t.kvLookup("labelFontColor",e,o,"#b3b3b3"),shadowOpacity:t.kvLookup("shadowOpacity",e,o,.2),shadowSize:t.kvLookup("shadowSize",e,o,5),shadowVerticalOffset:t.kvLookup("shadowVerticalOffset",e,o,3),levelColors:t.kvLookup("levelColors",e,o,["#a9d70b","#f9c802","#ff0000"],"array",","),startAnimationTime:t.kvLookup("startAnimationTime",e,o,700),startAnimationType:t.kvLookup("startAnimationType",e,o,">"),refreshAnimationTime:t.kvLookup("refreshAnimationTime",e,o,700),refreshAnimationType:t.kvLookup("refreshAnimationType",e,o,">"),donutStartAngle:t.kvLookup("donutStartAngle",e,o,90),valueMinFontSize:t.kvLookup("valueMinFontSize",e,o,16),titleMinFontSize:t.kvLookup("titleMinFontSize",e,o,10),labelMinFontSize:t.kvLookup("labelMinFontSize",e,o,10),minLabelMinFontSize:t.kvLookup("minLabelMinFontSize",e,o,10),maxLabelMinFontSize:t.kvLookup("maxLabelMinFontSize",e,o,10),hideValue:t.kvLookup("hideValue",e,o,!1),hideMinMax:t.kvLookup("hideMinMax",e,o,!1),hideInnerShadow:t.kvLookup("hideInnerShadow",e,o,!1),humanFriendly:t.kvLookup("humanFriendly",e,o,!1),noGradient:t.kvLookup("noGradient",e,o,!1),donut:t.kvLookup("donut",e,o,!1),relativeGaugeSize:t.kvLookup("relativeGaugeSize",e,o,!1),counter:t.kvLookup("counter",e,o,!1),decimals:t.kvLookup("decimals",e,o,0),customSectors:t.kvLookup("customSectors",e,o,[]),formatNumber:t.kvLookup("formatNumber",e,o,!1)};var n,a,l,r,u,c,m,f,g,s,d,p,h,v,x,b,y,k,S,F,M,L;t.config.value>t.config.max&&(t.config.value=t.config.max),t.config.value<t.config.min&&(t.config.value=t.config.min),t.originalValue=t.kvLookup("value",e,o,-1,"float"),null!==t.config.id&&null!==document.getElementById(t.config.id)?t.canvas=Raphael(t.config.id,"100%","100%"):null!==t.config.parentNode&&(t.canvas=Raphael(t.config.parentNode,"100%","100%")),t.config.relativeGaugeSize===!0&&t.canvas.setViewBox(0,0,200,150,!0),t.config.relativeGaugeSize===!0?(n=200,a=150):null!==t.config.width&&null!==t.config.height?(n=t.config.width,a=t.config.height):null!==t.config.parentNode?(t.canvas.setViewBox(0,0,200,150,!0),n=200,a=150):(n=1*getStyle(document.getElementById(t.config.id),"width").slice(0,-2),a=1*getStyle(document.getElementById(t.config.id),"height").slice(0,-2)),t.config.donut===!0?(n>a?(r=a,l=r):a>n?(l=n,r=l,r>a&&(u=r/a,r/=u,l=r/u)):(l=n,r=l),c=(n-l)/2,m=(a-r)/2,f=r/8>10?r/10:10,g=c+l/2,s=m+r/11,d=r/6.4>16?r/5.4:18,p=c+l/2,h=""!==t.config.label?m+r/1.85:m+r/1.7,v=r/16>10?r/16:10,x=c+l/2,b=h+v,y=r/16>10?r/16:10,k=c+l/10+l/6.666666666666667*t.config.gaugeWidthScale/2,S=b,F=r/16>10?r/16:10,M=c+l-l/10-l/6.666666666666667*t.config.gaugeWidthScale/2,L=b):(n>a?(r=a,l=1.25*r,l>n&&(u=l/n,l/=u,r/=u)):a>n?(l=n,r=l/1.25,r>a&&(u=r/a,r/=u,l=r/u)):(l=n,r=.75*l),c=(n-l)/2,m=(a-r)/2,f=r/8>t.config.titleMinFontSize?r/10:t.config.titleMinFontSize,g=c+l/2,s=m+r/6.4,d=r/6.5>t.config.valueMinFontSize?r/6.5:t.config.valueMinFontSize,p=c+l/2,h=m+r/1.275,v=r/16>t.config.labelMinFontSize?r/16:t.config.labelMinFontSize,x=c+l/2,b=h+d/2+5,y=r/16>t.config.minLabelMinFontSize?r/16:t.config.minLabelMinFontSize,k=c+l/10+l/6.666666666666667*t.config.gaugeWidthScale/2,S=b,F=r/16>t.config.maxLabelMinFontSize?r/16:t.config.maxLabelMinFontSize,M=c+l-l/10-l/6.666666666666667*t.config.gaugeWidthScale/2,L=b),t.params={canvasW:n,canvasH:a,widgetW:l,widgetH:r,dx:c,dy:m,titleFontSize:f,titleX:g,titleY:s,valueFontSize:d,valueX:p,valueY:h,labelFontSize:v,labelX:x,labelY:b,minFontSize:y,minX:k,minY:S,maxFontSize:F,maxX:M,maxY:L},L=null,t.canvas.customAttributes.pki=function(e,t,i,o,n,a,l,r,u){var c,m,f,g,s,d,p,h,v,x;return u?(c=(1-2*(e-t)/(i-t))*Math.PI,m=o/2-o/7,f=m-o/6.666666666666667*r,g=o/2+a,s=n/1.95+l,d=o/2+a+m*Math.cos(c),p=n-(n-s)-m*Math.sin(c),h=o/2+a+f*Math.cos(c),v=n-(n-s)-f*Math.sin(c),x="M"+(g-f)+","+s+" ",x+="L"+(g-m)+","+s+" ",e>(i-t)/2&&(x+="A"+m+","+m+" 0 0 1 "+(g+m)+","+s+" "),x+="A"+m+","+m+" 0 0 1 "+d+","+p+" ",x+="L"+h+","+v+" ",e>(i-t)/2&&(x+="A"+f+","+f+" 0 0 0 "+(g+f)+","+s+" "),x+="A"+f+","+f+" 0 0 0 "+(g-f)+","+s+" ",x+="Z ",{path:x}):(c=(1-(e-t)/(i-t))*Math.PI,m=o/2-o/10,f=m-o/6.666666666666667*r,g=o/2+a,s=n/1.25+l,d=o/2+a+m*Math.cos(c),p=n-(n-s)-m*Math.sin(c),h=o/2+a+f*Math.cos(c),v=n-(n-s)-f*Math.sin(c),x="M"+(g-f)+","+s+" ",x+="L"+(g-m)+","+s+" ",x+="A"+m+","+m+" 0 0 1 "+d+","+p+" ",x+="L"+h+","+v+" ",x+="A"+f+","+f+" 0 0 0 "+(g-f)+","+s+" ",x+="Z ",{path:x})},t.gauge=t.canvas.path().attr({stroke:"none",fill:t.config.gaugeColor,pki:[t.config.max,t.config.min,t.config.max,t.params.widgetW,t.params.widgetH,t.params.dx,t.params.dy,t.config.gaugeWidthScale,t.config.donut]}),t.level=t.canvas.path().attr({stroke:"none",fill:getColor(t.config.value,(t.config.value-t.config.min)/(t.config.max-t.config.min),t.config.levelColors,t.config.noGradient,t.config.customSectors),pki:[t.config.min,t.config.min,t.config.max,t.params.widgetW,t.params.widgetH,t.params.dx,t.params.dy,t.config.gaugeWidthScale,t.config.donut]}),t.config.donut&&t.level.transform("r"+t.config.donutStartAngle+", "+(t.params.widgetW/2+t.params.dx)+", "+(t.params.widgetH/1.95+t.params.dy)),t.txtTitle=t.canvas.text(t.params.titleX,t.params.titleY,t.config.title),t.txtTitle.attr({"font-size":t.params.titleFontSize,"font-weight":"bold","font-family":"Arial",fill:t.config.titleFontColor,"fill-opacity":"1"}),setDy(t.txtTitle,t.params.titleFontSize,t.params.titleY),t.txtValue=t.canvas.text(t.params.valueX,t.params.valueY,0),t.txtValue.attr({"font-size":t.params.valueFontSize,"font-weight":"bold","font-family":"Arial",fill:t.config.valueFontColor,"fill-opacity":"0"}),setDy(t.txtValue,t.params.valueFontSize,t.params.valueY),t.txtLabel=t.canvas.text(t.params.labelX,t.params.labelY,t.config.label),t.txtLabel.attr({"font-size":t.params.labelFontSize,"font-weight":"normal","font-family":"Arial",fill:t.config.labelFontColor,"fill-opacity":"0"}),setDy(t.txtLabel,t.params.labelFontSize,t.params.labelY),t.txtMinimum=t.config.min,t.config.humanFriendly?t.txtMinimum=humanFriendlyNumber(t.config.min,t.config.humanFriendlyDecimal):t.config.formatNumber&&(t.txtMinimum=formatNumber(t.config.min)),t.txtMin=t.canvas.text(t.params.minX,t.params.minY,t.txtMinimum),t.txtMin.attr({"font-size":t.params.minFontSize,"font-weight":"normal","font-family":"Arial",fill:t.config.labelFontColor,"fill-opacity":t.config.hideMinMax||t.config.donut?"0":"1"}),setDy(t.txtMin,t.params.minFontSize,t.params.minY),t.txtMaximum=t.config.max,t.config.formatNumber?t.txtMaximum=formatNumber(t.txtMaximum):t.config.humanFriendly&&(t.txtMaximum=humanFriendlyNumber(t.config.max,t.config.humanFriendlyDecimal)),t.txtMax=t.canvas.text(t.params.maxX,t.params.maxY,t.txtMaximum),t.txtMax.attr({"font-size":t.params.maxFontSize,"font-weight":"normal","font-family":"Arial",fill:t.config.labelFontColor,"fill-opacity":t.config.hideMinMax||t.config.donut?"0":"1"}),setDy(t.txtMax,t.params.maxFontSize,t.params.maxY);var w=t.canvas.canvas.childNodes[1],A="http://www.w3.org/2000/svg";"undefined"!==ie&&9>ie||("undefined"!==ie?onCreateElementNsReady(function(){t.generateShadow(A,w)}):t.generateShadow(A,w)),A=null,t.config.textRenderer?t.originalValue=t.config.textRenderer(t.originalValue):t.config.humanFriendly?t.originalValue=humanFriendlyNumber(t.originalValue,t.config.humanFriendlyDecimal)+t.config.symbol:t.config.formatNumber?t.originalValue=formatNumber(t.originalValue)+t.config.symbol:t.originalValue=(1*t.originalValue).toFixed(t.config.decimals)+t.config.symbol,t.config.counter===!0?(eve.on("raphael.anim.frame."+t.level.id,function(){var e=t.level.attr("pki");t.config.textRenderer?t.txtValue.attr("text",t.config.textRenderer(Math.floor(e[0]))):t.config.humanFriendly?t.txtValue.attr("text",humanFriendlyNumber(Math.floor(e[0]),t.config.humanFriendlyDecimal)+t.config.symbol):t.config.formatNumber?t.txtValue.attr("text",formatNumber(Math.floor(e[0]))+t.config.symbol):t.txtValue.attr("text",(1*e[0]).toFixed(t.config.decimals)+t.config.symbol),setDy(t.txtValue,t.params.valueFontSize,t.params.valueY),e=null}),eve.on("raphael.anim.finish."+t.level.id,function(){t.txtValue.attr({text:t.originalValue}),setDy(t.txtValue,t.params.valueFontSize,t.params.valueY)})):eve.on("raphael.anim.start."+t.level.id,function(){t.txtValue.attr({text:t.originalValue}),setDy(t.txtValue,t.params.valueFontSize,t.params.valueY)}),t.level.animate({pki:[t.config.value,t.config.min,t.config.max,t.params.widgetW,t.params.widgetH,t.params.dx,t.params.dy,t.config.gaugeWidthScale,t.config.donut]},t.config.startAnimationTime,t.config.startAnimationType),t.txtValue.animate({"fill-opacity":t.config.hideValue?"0":"1"},t.config.startAnimationTime,t.config.startAnimationType),t.txtLabel.animate({"fill-opacity":"1"},t.config.startAnimationTime,t.config.startAnimationType)},JustGage.prototype.kvLookup=function(e,t,i,o,n,a){var l=o,r=!1;if(null!==e&&void 0!==e&&(null!==i&&void 0!==i&&"object"==typeof i&&e in i?(l=i[e],r=!0):null!==t&&void 0!==t&&"object"==typeof t&&e in t?(l=t[e],r=!0):l=o,r===!0&&null!==n&&void 0!==n))switch(n){case"int":l=parseInt(l,10);break;case"float":l=parseFloat(l)}return l},JustGage.prototype.refresh=function(e,t){var i,o,n=this,t=t||null;null!==t&&(n.config.max=t,n.txtMaximum=n.config.max,n.config.humanFriendly?n.txtMaximum=humanFriendlyNumber(n.config.max,n.config.humanFriendlyDecimal):n.config.formatNumber&&(n.txtMaximum=formatNumber(n.config.max)),n.txtMax.attr({text:n.txtMaximum}),setDy(n.txtMax,n.params.maxFontSize,n.params.maxY)),i=e,1*e>1*n.config.max&&(e=1*n.config.max),1*e<1*n.config.min&&(e=1*n.config.min),o=getColor(e,(e-n.config.min)/(n.config.max-n.config.min),n.config.levelColors,n.config.noGradient,n.config.customSectors),i=n.config.textRenderer?n.config.textRenderer(i):n.config.humanFriendly?humanFriendlyNumber(i,n.config.humanFriendlyDecimal)+n.config.symbol:n.config.formatNumber?formatNumber((1*i).toFixed(n.config.decimals))+n.config.symbol:(1*i).toFixed(n.config.decimals)+n.config.symbol,n.originalValue=i,n.config.value=1*e,n.config.counter||(n.txtValue.attr({text:i}),setDy(n.txtValue,n.params.valueFontSize,n.params.valueY)),n.level.animate({pki:[n.config.value,n.config.min,n.config.max,n.params.widgetW,n.params.widgetH,n.params.dx,n.params.dy,n.config.gaugeWidthScale,n.config.donut],fill:o},n.config.refreshAnimationTime,n.config.refreshAnimationType),t=null},JustGage.prototype.generateShadow=function(e,t){var i,o,n,a,l,r,u,c=this;i=document.createElementNS(e,"filter"),i.setAttribute("id","inner-shadow"),t.appendChild(i),o=document.createElementNS(e,"feOffset"),o.setAttribute("dx",0),o.setAttribute("dy",c.config.shadowVerticalOffset),i.appendChild(o),n=document.createElementNS(e,"feGaussianBlur"),n.setAttribute("result","offset-blur"),n.setAttribute("stdDeviation",c.config.shadowSize),i.appendChild(n),a=document.createElementNS(e,"feComposite"),a.setAttribute("operator","out"),a.setAttribute("in","SourceGraphic"),a.setAttribute("in2","offset-blur"),a.setAttribute("result","inverse"),i.appendChild(a),l=document.createElementNS(e,"feFlood"),l.setAttribute("flood-color","black"),l.setAttribute("flood-opacity",c.config.shadowOpacity),l.setAttribute("result","color"),i.appendChild(l),r=document.createElementNS(e,"feComposite"),r.setAttribute("operator","in"),r.setAttribute("in","color"),r.setAttribute("in2","inverse"),r.setAttribute("result","shadow"),i.appendChild(r),u=document.createElementNS(e,"feComposite"),u.setAttribute("operator","over"),u.setAttribute("in","shadow"),u.setAttribute("in2","SourceGraphic"),i.appendChild(u),c.config.hideInnerShadow||(c.canvas.canvas.childNodes[2].setAttribute("filter","url(#inner-shadow)"),c.canvas.canvas.childNodes[3].setAttribute("filter","url(#inner-shadow)")),u=null};var ie=function(){for(var e,t=3,i=document.createElement("div"),o=i.getElementsByTagName("i");i.innerHTML="<!--[if gt IE "+ ++t+"]><i></i><![endif]-->",o[0];);return t>4?t:e}();