!function(){function t(t,i){t.prototype=e(i.prototype),t.prototype.constructor=t,t.base=i.prototype}function e(t){function e(){}return e.prototype=t,new e}function a(t,e,i){return"millisecond"===i?t.setMilliseconds(t.getMilliseconds()+1*e):"second"===i?t.setSeconds(t.getSeconds()+1*e):"minute"===i?t.setMinutes(t.getMinutes()+1*e):"hour"===i?t.setHours(t.getHours()+1*e):"day"===i?t.setDate(t.getDate()+1*e):"week"===i?t.setDate(t.getDate()+7*e):"month"===i?t.setMonth(t.getMonth()+1*e):"year"===i&&t.setFullYear(t.getFullYear()+1*e),t}function n(t,e){return G[e+"Duration"]*t}function s(t,e){var i=!1;for(t<0&&(i=!0,t*=-1),t=""+t,e=e?e:1;t.length0&&this.stroke()}}function l(t,e){return t-e}function h(t,e){return t.x-e.x}function d(t){var e=((16711680&t)>>16).toString(16),i=((65280&t)>>8).toString(16),a=((255&t)>>0).toString(16);return e=e.length<2?"0"+e:e,i=i.length<2?"0"+i:i,a=a.length<2?"0"+a:a,"#"+e+i+a}function c(t,e,i){var a=t<<16|e<<8|i;return a}function x(t){var e=this.length>>>0,i=Number(arguments[1])||0;for(i=i<0?Math.ceil(i):Math.floor(i),i<0&&(i+=e);i
Please right click on the image and save it to your device
"),m.document.close()}}}function M(t,e,i){e.getAttribute("state")!==i&&(e.setAttribute("state",i),e.setAttribute("type","button"),e.style.position="relative",e.style.margin="0px 0px 0px 0px",e.style.padding="3px 4px 0px 4px",e.style.cssFloat="left",e.setAttribute("title",t._cultureInfo[i+"Text"]),e.innerHTML=""+t._cultureInfo[i+"Text"]+"")}function k(){for(var t=null,e=0;e0?this._container.clientWidth:this.width,s=this._options.height?this.height:this._container.clientHeight>0?this._container.clientHeight:this.height,this.width=n,this.height=s,this.x1=this.y1=0,this.x2=this.width,this.y2=this.height,this._selectedColorSet="undefined"!=typeof N[this.colorSet]?N[this.colorSet]:N.colorSet1,this._canvasJSContainer=document.createElement("div"),this._canvasJSContainer.setAttribute("class","canvasjs-chart-container"),this._canvasJSContainer.style.position="relative",this._canvasJSContainer.style.textAlign="left",this._canvasJSContainer.style.cursor="auto",R||(this._canvasJSContainer.style.height="0px"),this._container.appendChild(this._canvasJSContainer),this.canvas=T(n,s),this.canvas.style.position="absolute",this.canvas.getContext&&(this._canvasJSContainer.appendChild(this.canvas),this.ctx=this.canvas.getContext("2d"),this.ctx.textBaseline="top",r(this.ctx),R?this.plotArea.ctx=this.ctx:(this.plotArea.canvas=T(n,s),this.plotArea.canvas.style.position="absolute",this.plotArea.canvas.setAttribute("class","plotAreaCanvas"),this._canvasJSContainer.appendChild(this.plotArea.canvas),this.plotArea.ctx=this.plotArea.canvas.getContext("2d")),this.overlaidCanvas=T(n,s),this.overlaidCanvas.style.position="absolute",this._canvasJSContainer.appendChild(this.overlaidCanvas),this.overlaidCanvasCtx=this.overlaidCanvas.getContext("2d"),this.overlaidCanvasCtx.textBaseline="top",this._eventManager=new E(this),g(window,"resize",function(){a._updateSize()&&a.render()}),this._toolBar=document.createElement("div"),this._toolBar.setAttribute("class","canvasjs-chart-toolbar"),this._toolBar.style.cssText="position: absolute; right: 1px; top: 1px;",this._canvasJSContainer.appendChild(this._toolBar),this.bounds={x1:0,y1:0,x2:this.width,y2:this.height},g(this.overlaidCanvas,"click",function(t){a._mouseEventHandler(t)}),g(this.overlaidCanvas,"mousemove",function(t){a._mouseEventHandler(t)}),g(this.overlaidCanvas,"mouseup",function(t){a._mouseEventHandler(t)}),g(this.overlaidCanvas,"mousedown",function(t){a._mouseEventHandler(t),S(a._dropdownMenu)}),g(this.overlaidCanvas,"mouseout",function(t){a._mouseEventHandler(t)}),g(this.overlaidCanvas,window.navigator.msPointerEnabled?"MSPointerDown":"touchstart",function(t){a._touchEventHandler(t)}),g(this.overlaidCanvas,window.navigator.msPointerEnabled?"MSPointerMove":"touchmove",function(t){a._touchEventHandler(t)}),g(this.overlaidCanvas,window.navigator.msPointerEnabled?"MSPointerUp":"touchend",function(t){a._touchEventHandler(t)}),g(this.overlaidCanvas,window.navigator.msPointerEnabled?"MSPointerCancel":"touchcancel",function(t){a._touchEventHandler(t)}),this._creditLink||(this._creditLink=document.createElement("a"),this._creditLink.setAttribute("class","canvasjs-chart-credit"),this._creditLink.setAttribute("style","outline:none;margin:0px;position:absolute;right:3px;top:"+(this.height-14)+"px;color:dimgrey;text-decoration:none;font-size:10px;font-family:Lucida Grande, Lucida Sans Unicode, Arial, sans-serif"),this._creditLink.setAttribute("tabIndex",-1),this._creditLink.setAttribute("target","_blank")),this._toolTip=new W(this,this._options.toolTip,this.theme),this.data=null,this.axisX=null,this.axisY=null,this.axisY2=null,this.sessionVariables={axisX:{internalMinimum:null,internalMaximum:null},axisY:{internalMinimum:null,internalMaximum:null},axisY2:{internalMinimum:null,internalMaximum:null}})}function _(t,e){for(var i=[],a=0;a90&&this.labelAngle<=270?this.labelAngle-=180:this.labelAngle>180&&this.labelAngle<=270?this.labelAngle-=180:this.labelAngle>270&&this.labelAngle<=360&&(this.labelAngle-=360),this._options.stripLines&&this._options.stripLines.length>0){this.stripLines=[];for(var n=0;n0?"-":"+")+Math.floor(Math.abs(C)/60);case"zz":return(C>0?"-":"+")+s(Math.floor(Math.abs(C)/60),2);case"zzz":return(C>0?"-":"+")+s(Math.floor(Math.abs(C)/60),2)+s(Math.abs(C)%60,2);default:return t.slice(1,t.length-1)}})}}(),Z=function(t,e,i){if(null===t)return"";t=Number(t);var a=t<0;a&&(t*=-1);var n=i?i.decimalSeparator:".",o=i?i.digitGroupSeparator:",",r="";e=String(e);var l=1,h="",d="",c=-1,x=[],p=[],m=0,u=0,g=0,y=!1,v=0;d=e.match(/"[^"]*"|'[^']*'|[eE][+-]*[0]+|[,]+[.]|‰|./g);for(var b=null,f=0;d&&f0;)if(b=x.pop(),"#"===b||"0"===b)if(S++,S===m){var L=M;if(M=[],"0"===b)for(var I=m-C-(L?L.length:0);I>0;)L.unshift("0"),I--;for(;L.length>0;)h=L.pop()+h,w++,w%_===0&&A===g&&L.length>0&&(h=o+h);a&&(h="-"+h)}else M.length>0?(h=M.pop()+h,C++,w++):"0"===b&&(h="0"+h,C++,w++),w%_===0&&A===g&&M.length>0&&(h=o+h);else"E"!==b[0]&&"e"!==b[0]||"0"!==b[b.length-1]||!/[eE][+-]*[0]+/.test(b)?","===b?(A++,_=w,w=0,M.length>0&&(h=o+h)):h=b.length>1&&('"'===b[0]&&'"'===b[b.length-1]||"'"===b[0]&&"'"===b[b.length-1])?b.slice(1,b.length-1)+h:b+h:(b=v<0?b.replace("+","").replace("-",""):b.replace("-",""),h+=b.replace(/[0]+/,function(t){return s(v,t.length)}));for(var B="",F=!1;p.length>0;)b=p.shift(),"#"===b||"0"===b?k.length>0&&0!==Number(k.join(""))?(B+=k.shift(),F=!0):"0"===b&&(B+="0",F=!0):b.length>1&&('"'===b[0]&&'"'===b[b.length-1]||"'"===b[0]&&"'"===b[b.length-1])?B+=b.slice(1,b.length-1):"E"!==b[0]&&"e"!==b[0]||"0"!==b[b.length-1]||!/[eE][+-]*[0]+/.test(b)?B+=b:(b=v<0?b.replace("+","").replace("-",""):b.replace("-",""),B+=b.replace(/[0]+/,function(t){return s(v,t.length)}));return h+=(F?n:"")+B},$=function(t){var e=0,i=0;return t=t||window.event,t.offsetX||0===t.offsetX?(e=t.offsetX,i=t.offsetY):t.layerX||0==t.layerX?(e=t.layerX,i=t.layerY):(e=t.pageX-t.target.offsetLeft,i=t.pageY-t.target.offsetTop),{x:e,y:i}},tt=!0,et=window.devicePixelRatio||1,it=1,at=tt?et/it:1,nt={reset:{image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAcCAYAAAAAwr0iAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAKRSURBVEiJrdY/iF1FFMfxzwnZrGISUSR/JLGIhoh/QiRNBLWxMLIWEkwbgiAoFgoW2mhlY6dgpY2IlRBRxBSKhSAKIklWJRYuMZKAhiyopAiaTY7FvRtmZ+/ed9/zHRjezLw5v/O9d86cuZGZpmURAfdn5o9DfdZNLXpjz+LziPgyIl6MiG0jPTJzZBuyDrP4BVm0P/AKbljTb4ToY/gGewYA7KyCl+1b3DUYANvwbiHw0gCAGRzBOzjTAXEOu0cC4Ch+r5x/HrpdrcZmvIDFSucMtnYCYC++6HmNDw8FKDT34ETrf639/azOr5vwRk/g5fbeuABtgC04XWk9VQLciMP4EH/3AFzErRNC7MXlQmsesSoHsGPE23hmEoBW+61K66HMXFmIMvN8myilXS36R01ub+KfYvw43ZXwYDX+AHP4BAci4pFJomfmr/ihmNofESsBImJGk7mlncrM45n5JPbhz0kAWpsv+juxaX21YIPmVJS2uNzJMS6ZNexC0d+I7fUWXLFyz2kSZlpWPvASlmqAf/FXNXf3FAF2F/1LuFifAlionB6dRuSI2IwHi6lzmXmp6xR8XY0fiIh7psAwh+3FuDkRHQVjl+a8lkXjo0kLUKH7XaV5oO86PmZ1FTzyP4K/XGl9v/zwfbW7BriiuETGCP5ch9bc9f97HF/vcFzCa5gdEPgWq+t/4v0V63oE1uF4h0DiFJ7HnSWMppDdh1dxtsPvJ2wcBNAKbsJXa0Ck5opdaBPsRNu/usba09i1KsaAVzmLt3sghrRjuK1Tf4xkegInxwy8gKf7dKMVH2QRsV5zXR/Cftyu+aKaKbbkQrsdH+PTzLzcqzkOQAVzM+7FHdiqqe2/YT4zF/t8S/sPmawyvC974vcAAAAASUVORK5CYII="},pan:{image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAJVSURBVFiFvZe7a1RBGMV/x2hWI4JpfKCIiSBKOoOCkID/wP4BFqIIFkE02ChIiC8QDKlSiI3YqRBsBVGwUNAUdiIEUgjiAzQIIsuKJsfizsXr5t7d+8jmwLDfzHz3nLOzc7+ZxTZlGyDgZiWOCuJ9wH2gCUyuqQFgF/AGcKJNrYkBYBj40CIet+muGQi/96kM4WS7C/Tm5VUg7whJg8BkEGkCR4BDYfodsADUgP6wErO5iCtswsuJb32hdbXy8qzL5TIdmzJinHdZoZIBZcSFkGlAKs1Z3YCketZcBtouuaQNkrblMiBpBrhme7mAgU4wMCvpcFsDkq4C54DFVRTH9h+i6vlE0r5UA5ImgCuh28jB28iIs7BIVCOeStoZD64P4uPAjUTygKSx2FsK2TIwkugfk9Qkfd/E+yMWHQCeSRqx/R3gOp3LazfaS2C4B5gHDgD7U9x3E3uAH7KNpC3AHHAwTL4FHgM9GQ8vAaPA0dB/Abxqk2/gBLA9MXba9r1k/d4LfA3JtwueBeM58ucS+edXnAW23wP10N3advEi9CXizTnyN4bPS7Zn4sH/dq3t18AY4e1YLYSy3g/csj2VnFshZPuOpOeSKHCodUINuGj7YetE6je1PV9QoNPJ9StNHKodx7nRbiWrGHBGXAi5DUiqtQwtpcWK0Jubt8CltA5MEV1IfwO7+VffPwGfia5m34CT4bXujIIX0Qna1/cGMNqV/wUJE2czxD8CQ4X5Sl7Jz7SILwCDpbjKPBRMHAd+EtX4HWV5Spdc2w8kDQGPbH8py/MXMygM69/FKz4AAAAASUVORK5CYII="},zoom:{image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK6wAACusBgosNWgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAMqSURBVFiFvdfbj91TFMDxz57U6GUEMS1aYzyMtCSSDhWjCZMInpAI3khE/QHtgzdRkXgSCS8SES9epKLi0oRKNETjRahREq2KS1stdRujtDPtbA97n5zdn9+5zJxTK9k5v3POXmt991p7r71+IcaoGwkhTOIebMRqzOBTvIG3Y4zTXRmqSoyx5cAKbMJOHMFJnMZ8/jyFaXyMR7G6nb1aH22cP4BvcBxziG3GKfyTIR9D6BYg1KUghPBCDveFlb/24Av8iuUYw41YVsz5G7uxKcZ4aMEpwGt5NY3V/YbHsQ6rcAHOw/kYxigewr5CZw4fYGxBKcCLOFEYehXrMdRhr5yLETxVScsOLOkKAPfn1TYMPIvLFrShUlS2FDZm8XRHACzFAWl3R2xbqPMCYhmeLCAOYEMngAczbcTvuHYxzguIy/FesR9e6gSwU/OoPYHBHgHgviIKX2Flq7k34KhmcVnbi/PC8JX4MgMcxb118wZwdz5aISscqx7VRcox7MrPQ7i+btIAJrAkf9+bI9EPmZY2IAxiTSuAldLq4Y9+AcSUh78KP0tbAcwU35cXMD1JCIFUoGiehlqAz6TNB1f1C0DK+0h+nsNPrQC2a4bqGmlD9kOGcWt+Po6pVgDvSxfJaSkFd4UQBvoAsBYbCoB3a2flM7slA0R8iyt6rAFDeDPbm8eOTpVwGD9qVq7nLbIaZnmksPU1JtsCZMXNmpdRxFasWITzh6Xj3LCzra1OxcD2QjHiGVzdpfORnMqZio2PcF23ABdJF1Np4BPptlyPi6WzPYBzpJZtHe7A6xW9cnyP8TqA//SEIYRL8Bxul7rihvwgtVn78WcGGZXa9HGd5TDujDHuOePXNiHdKjWgZX/YbsxLx/ktqbjVzTlcjUSnvI5JrdlUVp6WesZZ6R1hRrpq9+EVTGS9jTjYAuKIouGpbcurEkIYxC051KNSamazsc+xK8b4S0VnEi/j0hqTP+M27O258egQwZuzs7pI7Mf4WQXIEDc5s9sux+5+1Py2EmP8UOq6GvWhIScxfdYjUERiAt9Jd84J6a16zf8JEKT3yCm8g1UxRv8CC4pyRhzR1uUAAAAASUVORK5CYII="},menu:{image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAgCAYAAAAbifjMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK6wAACusBgosNWgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDcvMTUvMTTPsvU0AAAAP0lEQVRIie2SMQoAIBDDUvH/X667g8sJJ9KOhYYOkW0qGaU1MPdC0vGSbV19EACo3YMPAFH5BUBUjsqfAPpVXtNgGDfxEDCtAAAAAElFTkSuQmCC"}};C.prototype.setOptions=function(t,e){if(H[this._defaultsKey]){var i=H[this._defaultsKey];for(var a in i)t&&a in t?this[a]=t[a]:e&&a in e?this[a]=e[a]:this[a]=i[a]}else U&&window.console},C.prototype.updateOption=function(t){ !H[this._defaultsKey]&&U&&window.console;var e=H[this._defaultsKey],i=this._options.theme?this._options.theme:this.chart&&this.chart._options.theme?this.chart._options.theme:"theme1",a={},n=this[t];return i&&K[i]&&K[i][this._defaultsKey]&&(a=K[i][this._defaultsKey]),t in e&&(n=t in this._options?this._options[t]:a&&t in a?a[t]:e[t]),n!==this[t]&&(this[t]=n,!0)},C.prototype.trackChanges=function(t){this._options._oldOptions||(this._options._oldOptions={}),this._options._oldOptions[t]=this._options[t]},C.prototype.isBeingTracked=function(t){return this._options._oldOptions||(this._options._oldOptions={}),!!this._options._oldOptions[t]},C.prototype.hasOptionChanged=function(t){this._options._oldOptions||(this._options._oldOptions={});var e=!(this._options._oldOptions[t]===this._options[t]);return e},C.prototype.addEventListener=function(t,e,i){t&&e&&(i=i||this,this._eventListeners[t]=this._eventListeners[t]||[],this._eventListeners[t].push({context:i,eventHandler:e}))},C.prototype.removeEventListener=function(t,e){if(t&&e&&this._eventListeners[t])for(var i=this._eventListeners[t],a=0;a0?this._container.clientWidth:this.width,this._options.height?e=this.height:this.height=e=this._container.clientHeight>0?this._container.clientHeight:this.height,(this.canvas.width!==t*at||this.canvas.height!==e*at)&&(f(this.canvas,t,e),f(this.overlaidCanvas,t,e),f(this._eventManager.ghostCanvas,t,e),!0)},A.prototype._initialize=function(){this._animator?this._animator.cancelAllAnimations():this._animator=new V(this),this.removeAllEventListeners(),this.disableToolTip=!1,this.pieDoughnutClickHandler=null,this.animationRequestId&&this.cancelRequestAnimFrame.call(window,this.animationRequestId),this._updateOptions(),this.animatedRender=R&&this.animationEnabled&&0===this.renderCount,this._updateSize(),this.clearCanvas(),this.ctx.beginPath(),this.axisX=null,this.axisY=null,this.axisY2=null,this._indexLabels=[],this._dataInRenderedOrder=[],this._events=[],this._eventManager&&this._eventManager.reset(),this.plotInfo={axisPlacement:null,axisXValueType:null,plotTypes:[]},this.layoutManager=new w(0,0,this.width,this.height,2),this.plotArea.layoutManager&&this.plotArea.layoutManager.reset(),this.data=[];for(var t=0,e=0;e=0){var i=new z(this,this._options.data[e],this.theme,t-1,++this._eventManager.lastObjectId);null===i.name&&(i.name="DataSeries "+t),null===i.color?this._options.data.length>1?(i._colorSet=[this._selectedColorSet[i.index%this._selectedColorSet.length]],i.color=this._selectedColorSet[i.index%this._selectedColorSet.length]):"line"===i.type||"stepLine"===i.type||"spline"===i.type||"area"===i.type||"stepArea"===i.type||"splineArea"===i.type||"stackedArea"===i.type||"stackedArea100"===i.type||"rangeArea"===i.type||"rangeSplineArea"===i.type||"candlestick"===i.type||"ohlc"===i.type?i._colorSet=[this._selectedColorSet[0]]:i._colorSet=this._selectedColorSet:i._colorSet=[i.color],null===i.markerSize&&(("line"===i.type||"stepLine"===i.type||"spline"===i.type)&&i.dataPoints&&i.dataPoints.length0){var p=T(this.width,this.height),m=p.getContext("2d");s.push(this.renderIndexLabels(m))}var u=this;if(s.length>0?(u.disableToolTip=!0,u._animator.animate(200,u.animationDuration,function(t){u.ctx.clearRect(0,0,u.width,u.height),u.ctx.drawImage(o,0,0,Math.floor(u.width*at),Math.floor(u.height*at),0,0,u.width,u.height);for(var e=0;e=c.startTimePercent&&c.animationCallback(c.easingFunction(t-c.startTimePercent,0,1,1-c.startTimePercent),c):c.animationCallback(c.easingFunction(t,0,1,1),c);u.dispatchEvent("dataAnimationIterationEnd",{chart:u})},function(){s=[];for(var t=0;t0&&u.renderIndexLabels(),u.dispatchEvent("dataAnimationIterationEnd",{chart:u})),this.attachPlotAreaEventHandlers(),this.zoomEnabled||this.panEnabled||!this._zoomButton||"none"===this._zoomButton.style.display||S(this._zoomButton,this._resetButton),this._toolTip._updateToolTip(),this.renderCount++,U){var u=this;setTimeout(function(){var t=document.getElementById("ghostCanvasCopy");if(t){f(t,u.width,u.height);var e=t.getContext("2d");e.drawImage(u._eventManager.ghostCanvas,0,0)}},2e3)}},A.prototype.attachPlotAreaEventHandlers=function(){this.attachEvent({context:this,chart:this,mousedown:this._plotAreaMouseDown,mouseup:this._plotAreaMouseUp,mousemove:this._plotAreaMouseMove,cursor:this.zoomEnabled?"col-resize":"move",cursor:this.panEnabled?"move":"default",capture:!0,bounds:this.plotArea})},A.prototype.categoriseDataSeries=function(){for(var t="",e=0;e=0){for(var i=null,a=!1,n=null,s=!1,o=0;on.max&&(n.max=e),ia.max&&(a.max=i),l>0){var p=e-r.dataPoints[l-1].x;p<0&&(p*=-1),n.minDiff>p&&0!==p&&(n.minDiff=p)}if(!(e0))l-=2;else{if(e>x&&!d)d=!0;else if(e>x&&d)continue;r.dataPoints[l].label&&(t.axisX.labels[e]=r.dataPoints[l].label),en.viewPortMax&&(n.viewPortMax=e),null!==i&&(ia.viewPortMax&&(a.viewPortMax=i))}}this.plotInfo.axisXValueType=r.xValueType=s?"dateTime":"number"}},A.prototype._processStackedPlotUnit=function(t){if(t.dataSeriesIndexes&&!(t.dataSeriesIndexes.length<1)){for(var e,i,a=t.axisY.dataInfo,n=t.axisX.dataInfo,s=!1,o=[],r=[],l=0;ln.max&&(n.max=e),d>0){var u=e-h.dataPoints[d-1].x;u<0&&(u*=-1),n.minDiff>u&&0!==u&&(n.minDiff=u)}if(!(e0))d-=2;else{if(e>m&&!x)x=!0;else if(e>m&&x)continue;h.dataPoints[d].label&&(t.axisX.labels[e]=h.dataPoints[d].label),en.viewPortMax&&(n.viewPortMax=e),null!==i&&(t.yTotals[e]=(t.yTotals[e]?t.yTotals[e]:0)+Math.abs(i),i>=0?o[e]?o[e]+=i:o[e]=i:r[e]?r[e]+=i:r[e]=i)}}this.plotInfo.axisXValueType=h.xValueType=s?"dateTime":"number"}for(d in o)if(!isNaN(d)){var g=o[d];ga.max&&(a.max=g),dn.viewPortMax||(ga.viewPortMax&&(a.viewPortMax=g))}for(d in r)if(!isNaN(d)){var g=r[d];ga.max&&(a.max=g),dn.viewPortMax||(ga.viewPortMax&&(a.viewPortMax=g))}}},A.prototype._processStacked100PlotUnit=function(t){if(t.dataSeriesIndexes&&!(t.dataSeriesIndexes.length<1)){for(var e,i,a=t.axisY.dataInfo,n=t.axisX.dataInfo,s=!1,o=!1,r=!1,l=[],h=0;hn.max&&(n.max=e),c>0){var g=e-d.dataPoints[c-1].x;g<0&&(g*=-1),n.minDiff>g&&0!==g&&(n.minDiff=g)}if(!(e0))c-=2;else{if(e>u&&!p)p=!0;else if(e>u&&p)continue;d.dataPoints[c].label&&(t.axisX.labels[e]=d.dataPoints[c].label),en.viewPortMax&&(n.viewPortMax=e),null!==i&&(t.yTotals[e]=(t.yTotals[e]?t.yTotals[e]:0)+Math.abs(i),i>=0?o=!0:r=!0,l[e]?l[e]+=Math.abs(i):l[e]=Math.abs(i))}}this.plotInfo.axisXValueType=d.xValueType=s?"dateTime":"number"}o&&!r?(a.max=99,a.min=1):o&&r?(a.max=99,a.min=-99):!o&&r&&(a.max=-1,a.min=-99),a.viewPortMin=a.min,a.viewPortMax=a.max,t.dataPointYSums=l}},A.prototype._processMultiYPlotUnit=function(t){if(t.dataSeriesIndexes&&!(t.dataSeriesIndexes.length<1))for(var e,i,a,n,s=t.axisY.dataInfo,o=t.axisX.dataInfo,r=!1,l=0;lo.max&&(o.max=e),as.max&&(s.max=n),d>0){var u=e-h.dataPoints[d-1].x;u<0&&(u*=-1),o.minDiff>u&&0!==u&&(o.minDiff=u)}if(!(e0))d-=2;else{if(e>m&&!x)x=!0;else if(e>m&&x)continue;h.dataPoints[d].label&&(t.axisX.labels[e]=h.dataPoints[d].label),eo.viewPortMax&&(o.viewPortMax=e),null!==i&&(as.viewPortMax&&(s.viewPortMax=n))}}this.plotInfo.axisXValueType=h.xValueType=r?"dateTime":"number"}},A.prototype.getDataPointAtXY=function(t,e,i){i=i||!1;for(var a=[],n=this._dataInRenderedOrder.length-1;n>=0;n--){var s=this._dataInRenderedOrder[n],o=null;o=s.getDataPointAtXY(t,e,i),o&&a.push(o)}for(var r=null,l=!1,h=0;h=o.x1&&t<=o.x2&&e>=o.y1&&e<=o.y2&&(a=o.id)}return a},A.prototype.getAutoFontSize=function(t,e,i){e=e||this.width,i=i||this.height;var a=t/400;return Math.round(Math.min(this.width,this.height)*a)},A.prototype.resetOverlayedCanvas=function(){this.overlaidCanvasCtx.clearRect(0,0,this.width,this.height)},A.prototype.clearCanvas=function(){this.ctx.clearRect(0,0,this.width,this.height),this.backgroundColor&&(this.ctx.fillStyle=this.backgroundColor,this.ctx.fillRect(0,0,this.width,this.height))},A.prototype.attachEvent=function(t){this._events.push(t)},A.prototype._touchEventHandler=function(t){if(t.changedTouches&&this.interactivityEnabled){var e=[],i=t.changedTouches,a=i?i[0]:t,n=null;switch(t.type){case"touchstart":case"MSPointerDown":e=["mousemove","mousedown"],this._lastTouchData=$(a),this._lastTouchData.time=new Date;break;case"touchmove":case"MSPointerMove":e=["mousemove"];break;case"touchend":case"MSPointerUp":e="touchstart"===this._lastTouchEventType||"MSPointerDown"===this._lastTouchEventType?["mouseup","click"]:["mouseup"];break;default:return}if(!(i&&i.length>1)){n=$(a),n.time=new Date;try{var s=n.y-this._lastTouchData.y,o=(n.x-this._lastTouchData.x,n.time-this._lastTouchData.time);if(Math.abs(s)>15&&(this._lastTouchData.scroll||o<200)){this._lastTouchData.scroll=!0;var r=window.parent||window;r&&r.scrollBy&&r.scrollBy(0,-s)}}catch(t){}if(this._lastTouchEventType=t.type,this._lastTouchData.scroll&&this.zoomEnabled)return this.isDrag&&this.resetOverlayedCanvas(),void(this.isDrag=!1);for(var l=0;l=o.x1&&a.x<=o.x2&&a.y>=o.y1&&a.y<=o.y2){e[n].call(e.context,a.x,a.y),"mousedown"===n&&e.capture===!0?(A.capturedEventParam=e,this.overlaidCanvas.setCapture?this.overlaidCanvas.setCapture():document.body.addEventListener("mouseup",this._mouseEventHandler,!1)):"mouseup"===n&&(e.chart.overlaidCanvas.releaseCapture?e.chart.overlaidCanvas.releaseCapture():document.body.removeEventListener("mouseup",this._mouseEventHandler,!1));break}e=null}e&&e.cursor?t.target.style.cursor=e.cursor:t.target.style.cursor=this._defaultCursor}if(this._toolTip&&this._toolTip.enabled){var r=this.plotArea;(a.xr.x2||a.yr.y2)&&this._toolTip.hide()}this.isDrag&&this.zoomEnabled||!this._eventManager||this._eventManager.mouseEventHandler(t)}}},A.prototype._plotAreaMouseDown=function(t,e){this.isDrag=!0,"none"!==this.plotInfo.axisPlacement?this.dragStartPoint={x:t,y:e,xMinimum:this.axisX.minimum,xMaximum:this.axisX.maximum}:this.dragStartPoint={x:t,y:e}},A.prototype._plotAreaMouseUp=function(t,e){if(("normal"===this.plotInfo.axisPlacement||"xySwapped"===this.plotInfo.axisPlacement)&&this.isDrag){var i=0,a=0,n=this.axisX.lineCoordinates;if("xySwapped"===this.plotInfo.axisPlacement?(i=e-this.dragStartPoint.y,a=Math.abs(this.axisX.maximum-this.axisX.minimum)/n.height*i):(i=this.dragStartPoint.x-t,a=Math.abs(this.axisX.maximum-this.axisX.minimum)/n.width*i),Math.abs(i)>2){if(this.panEnabled){var s=!1,o=0;this.axisX.sessionVariables.internalMinimumthis.axisX._absoluteMaximum&&(o=this.axisX.sessionVariables.internalMaximum-this.axisX._absoluteMaximum,this.axisX.sessionVariables.internalMaximum-=o,this.axisX.sessionVariables.internalMinimum-=o,s=!0),s&&this.render()}else if(this.zoomEnabled){if(this.resetOverlayedCanvas(),!this.dragStartPoint)return;if("xySwapped"===this.plotInfo.axisPlacement){var r={y1:Math.min(this.dragStartPoint.y,e),y2:Math.max(this.dragStartPoint.y,e)};if(Math.abs(r.y1-r.y2)>1){var n=this.axisX.lineCoordinates,l=this.axisX.maximum-(this.axisX.maximum-this.axisX.minimum)/n.height*(r.y2-n.y1),h=this.axisX.maximum-(this.axisX.maximum-this.axisX.minimum)/n.height*(r.y1-n.y1);l=Math.max(l,this.axisX.dataInfo.min),h=Math.min(h,this.axisX.dataInfo.max),Math.abs(h-l)>2*Math.abs(this.axisX.dataInfo.minDiff)&&(this.axisX.sessionVariables.internalMinimum=l,this.axisX.sessionVariables.internalMaximum=h,this.render())}}else if("normal"===this.plotInfo.axisPlacement){var r={x1:Math.min(this.dragStartPoint.x,t),x2:Math.max(this.dragStartPoint.x,t)};if(Math.abs(r.x1-r.x2)>1){var n=this.axisX.lineCoordinates,l=(this.axisX.maximum-this.axisX.minimum)/n.width*(r.x1-n.x1)+this.axisX.minimum,h=(this.axisX.maximum-this.axisX.minimum)/n.width*(r.x2-n.x1)+this.axisX.minimum;l=Math.max(l,this.axisX.dataInfo.min),h=Math.min(h,this.axisX.dataInfo.max),Math.abs(h-l)>2*Math.abs(this.axisX.dataInfo.minDiff)&&(this.axisX.sessionVariables.internalMinimum=l,this.axisX.sessionVariables.internalMaximum=h,this.render())}}}this._ignoreNextEvent=!0,this.zoomEnabled&&"none"===this._zoomButton.style.display&&(k(this._zoomButton,this._resetButton),M(this,this._zoomButton,"pan"),M(this,this._resetButton,"reset"))}}this.isDrag=!1},A.prototype._plotAreaMouseMove=function(t,e){if(this.isDrag&&"none"!==this.plotInfo.axisPlacement){var i=0,a=0,s=this.axisX.lineCoordinates;if("xySwapped"===this.plotInfo.axisPlacement?(i=e-this.dragStartPoint.y,a=Math.abs(this.axisX.maximum-this.axisX.minimum)/s.height*i):(i=this.dragStartPoint.x-t,a=Math.abs(this.axisX.maximum-this.axisX.minimum)/s.width*i),Math.abs(i)>2&&Math.abs(i)<8&&(this.panEnabled||this.zoomEnabled)?this._toolTip.hide():this.panEnabled||this.zoomEnabled||this._toolTip.mouseMoveHandler(t,e),Math.abs(i)>2&&(this.panEnabled||this.zoomEnabled))if(this.panEnabled){this.axisX.sessionVariables.internalMinimum=this.dragStartPoint.xMinimum+a,this.axisX.sessionVariables.internalMaximum=this.dragStartPoint.xMaximum+a;var o=0;this.axisX.sessionVariables.internalMinimumthis.axisX._absoluteMaximum+n(this.axisX.interval,this.axisX.intervalType)&&(o=this.axisX.sessionVariables.internalMaximum-(this.axisX._absoluteMaximum+n(this.axisX.interval,this.axisX.intervalType)),this.axisX.sessionVariables.internalMaximum-=o,this.axisX.sessionVariables.internalMinimum-=o);var r=this;clearTimeout(this._panTimerId),this._panTimerId=setTimeout(function(){r.render()},0)}else if(this.zoomEnabled){var l=this.plotArea;this.resetOverlayedCanvas();var h=this.overlaidCanvasCtx.globalAlpha;this.overlaidCanvasCtx.globalAlpha=.7,this.overlaidCanvasCtx.fillStyle="#A0ABB8","xySwapped"===this.plotInfo.axisPlacement?this.overlaidCanvasCtx.fillRect(l.x1,this.dragStartPoint.y,l.x2-l.x1,e-this.dragStartPoint.y):"normal"===this.plotInfo.axisPlacement&&this.overlaidCanvasCtx.fillRect(this.dragStartPoint.x,l.y1,t-this.dragStartPoint.x,l.y2-l.y1),this.overlaidCanvasCtx.globalAlpha=h}}else this._toolTip.mouseMoveHandler(t,e)},A.prototype.preparePlotArea=function(){var t=this.plotArea,e=this.axisY?this.axisY:this.axisY2;if(!R&&(t.x1>0||t.y1>0)&&t.ctx.translate(t.x1,t.y1),this.axisX&&e)t.x1=this.axisX.lineCoordinates.x1e.lineCoordinates.x2?this.axisX.lineCoordinates.x2:e.lineCoordinates.x2,t.y2=this.axisX.lineCoordinates.y2>this.axisX.lineCoordinates.y1?this.axisX.lineCoordinates.y2:e.lineCoordinates.y2,t.width=t.x2-t.x1,t.height=t.y2-t.y1;else{var i=this.layoutManager.getFreeSpace();t.x1=i.x1,t.x2=i.x2,t.y1=i.y1,t.y2=i.y2,t.width=i.width,t.height=i.height}R||(t.canvas.width=t.width,t.canvas.height=t.height,t.canvas.style.left=t.x1+"px",t.canvas.style.top=t.y1+"px",(t.x1>0||t.y1>0)&&t.ctx.translate(-t.x1,-t.y1)),t.layoutManager=new w(t.x1,t.y1,t.x2,t.y2,2)},A.prototype.getPixelCoordinatesOnPlotArea=function(t,e){return{x:this.axisX.getPixelCoordinatesOnAxis(t).x,y:this.axisY.getPixelCoordinatesOnAxis(e).y}},A.prototype.renderIndexLabels=function(t){for(var e=t||this.plotArea.ctx,i=this.plotArea,a=0,n=0,s=0,o=0,r=0,l=0,h=0,d=0,c=0,x=0;x=0||"pie"===u.dataSeries.type||"doughnut"===u.dataSeries.type)&&(C=this.getPercentAndTotal(u.dataSeries,u.dataPoint)),(u.dataSeries.indexLabelFormatter||u.dataPoint.indexLabelFormatter)&&(A={chart:this._options,dataSeries:u.dataSeries,dataPoint:u.dataPoint,index:u.indexKeyword,total:C.total,percent:C.percent});var _=u.dataPoint.indexLabelFormatter?u.dataPoint.indexLabelFormatter(A):u.dataPoint.indexLabel?this.replaceKeywordsWithValue(u.dataPoint.indexLabel,u.dataPoint,u.dataSeries,null,u.indexKeyword):u.dataSeries.indexLabelFormatter?u.dataSeries.indexLabelFormatter(A):u.dataSeries.indexLabel?this.replaceKeywordsWithValue(u.dataSeries.indexLabel,u.dataPoint,u.dataSeries,null,u.indexKeyword):null;if(null!==_&&""!==_){var w=b("indexLabelPlacement",u.dataPoint,u.dataSeries),I=b("indexLabelOrientation",u.dataPoint,u.dataSeries),B=u.direction,F=u.dataSeries.axisX,X=u.dataSeries.axisY,z=new L(e,{x:0,y:0,maxWidth:k?k:.5*this.width,maxHeight:S?5*v:1.5*v,angle:"horizontal"===I?0:-90,text:_,padding:0,backgroundColor:M,horizontalAlign:"left",fontSize:v,fontFamily:f,fontWeight:P,fontColor:y,fontStyle:T,textBaseline:"top"});z.measureText();if(g.indexOf("line")>=0||g.indexOf("area")>=0||g.indexOf("bubble")>=0||g.indexOf("scatter")>=0){if(u.dataPoint.xF.maximum||u.dataPoint.yX.maximum)continue}else if(u.dataPoint.xF.maximum)continue;if(h=2,l=2,"horizontal"===I?(d=z.width,c=z.height):(c=z.width,d=z.height),"normal"===this.plotInfo.axisPlacement)g.indexOf("line")>=0||g.indexOf("area")>=0?(w="auto",h=4):g.indexOf("stacked")>=0?"auto"===w&&(w="inside"):"bubble"!==g&&"scatter"!==g||(w="inside"),p=u.point.x-d/2,"inside"!==w?(n=i.y1,s=i.y2,B>0?(m=u.point.y-c-h,ms-c-h&&(m="auto"===w?Math.min(u.point.y,s)-c-h:s-c-h))):(n=Math.max(u.bounds.y1,i.y1),s=Math.min(u.bounds.y2,i.y2),a=g.indexOf("range")>=0?B>0?Math.max(u.bounds.y1,i.y1)+c/2+h:Math.min(u.bounds.y2,i.y2)-c/2-h:(Math.max(u.bounds.y1,i.y1)+Math.min(u.bounds.y2,i.y2))/2,B>0?(m=Math.max(u.point.y,a)-c/2,ms-c-h&&("bubble"===g||"scatter"===g)&&(m=Math.min(u.point.y+h,i.y2-c-h))));else if(g.indexOf("line")>=0||g.indexOf("area")>=0||g.indexOf("scatter")>=0?(w="auto",l=4):g.indexOf("stacked")>=0?"auto"===w&&(w="inside"):"bubble"===g&&(w="inside"),m=u.point.y-c/2,"inside"!==w)o=i.x1,r=i.x2,B<0?(p=u.point.x-d-l,pr-d-l&&(p="auto"===w?Math.min(u.point.x,r)-d-l:r-d-l));else{if(o=Math.max(u.bounds.x1,i.x1),r=Math.min(u.bounds.x2,i.x2),g.indexOf("range")>=0)a=B<0?Math.max(u.bounds.x1,i.x1)+d/2+l:Math.min(u.bounds.x2,i.x2)-d/2-l;else var a=(Math.max(u.bounds.x1,i.x1)+Math.min(u.bounds.x2,i.x2))/2;p=B<0?Math.max(u.point.x,a)-d/2:Math.min(u.point.x,a)-d/2}"vertical"===I&&(m+=c),z.x=p,z.y=m,z.render(!0)}}var D={source:e,dest:this.plotArea.ctx,animationCallback:rt.fadeInAnimation,easingFunction:rt.easing.easeInQuad,animationBase:0,startTimePercent:.7};return D},A.prototype.renderLine=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a=this._eventManager.ghostCtx;e.save();var n=this.plotArea;e.beginPath(),e.rect(n.x1,n.y1,n.width,n.height),e.clip();for(var s=[],o=0;o0?Math.max(l.lineThickness,4):0;var p=l._colorSet,m=p[0];e.strokeStyle=m;var g,y,v,b=!0,f=0;if(e.beginPath(),h.length>0){var T=!1;for(f=0;ft.axisX.dataInfo.viewPortMax))if("number"==typeof h[f].y){g=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(v-t.axisX.conversionParameters.minimum)+.5<<0,y=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(h[f].y-t.axisY.conversionParameters.minimum)+.5<<0;var P=l.dataPointIds[f];if(this._eventManager.objectMap[P]={id:P,objectType:"dataPoint",dataSeriesIndex:r,dataPointIndex:f,x1:g,y1:y},b||T?(e.beginPath(),e.moveTo(g,y),R&&(a.beginPath(),a.moveTo(g,y)),b=!1,T=!1):(e.lineTo(g,y),R&&a.lineTo(g,y),f%500==0&&(e.stroke(),e.beginPath(),e.moveTo(g,y),R&&(a.stroke(),a.beginPath(),a.moveTo(g,y)))),h[f].markerSize>0||l.markerSize>0){var M=l.getMarkerProperties(f,g,y,e);s.push(M);var k=d(P);R&&s.push({x:g,y:y,ctx:a,type:M.type,size:M.size,color:k,borderColor:k,borderThickness:M.borderThickness})}(h[f].indexLabel||l.indexLabel||h[f].indexLabelFormatter||l.indexLabelFormatter)&&this._indexLabels.push({chartType:"line",dataPoint:h[f],dataSeries:l,point:{x:g,y:y},direction:h[f].y>=0?1:-1,color:m})}else f>0&&(e.stroke(),R&&a.stroke()),T=!0;e.stroke(),R&&a.stroke()}}lt.drawMarkers(s),e.restore(),e.beginPath(),R&&a.beginPath();var S={source:e,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return S}},A.prototype.renderStepLine=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a=this._eventManager.ghostCtx;e.save();var n=this.plotArea;e.beginPath(),e.rect(n.x1,n.y1,n.width,n.height),e.clip();for(var s=[],o=0;o0?Math.max(l.lineThickness,4):0;var p=l._colorSet,m=p[0];e.strokeStyle=m;var g,y,v,b=!0,f=0;if(e.beginPath(),h.length>0){var T=!1;for(f=0;ft.axisX.dataInfo.viewPortMax))if("number"==typeof h[f].y){var P=y;g=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(v-t.axisX.conversionParameters.minimum)+.5<<0,y=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(h[f].y-t.axisY.conversionParameters.minimum)+.5<<0;var M=l.dataPointIds[f];if(this._eventManager.objectMap[M]={id:M,objectType:"dataPoint",dataSeriesIndex:r,dataPointIndex:f,x1:g,y1:y},b||T?(e.beginPath(),e.moveTo(g,y),R&&(a.beginPath(),a.moveTo(g,y)),b=!1,T=!1):(e.lineTo(g,P),R&&a.lineTo(g,P),e.lineTo(g,y),R&&a.lineTo(g,y),f%500==0&&(e.stroke(),e.beginPath(),e.moveTo(g,y),R&&(a.stroke(),a.beginPath(),a.moveTo(g,y)))),h[f].markerSize>0||l.markerSize>0){var k=l.getMarkerProperties(f,g,y,e);s.push(k);var S=d(M);R&&s.push({x:g,y:y,ctx:a,type:k.type,size:k.size,color:S,borderColor:S,borderThickness:k.borderThickness})}(h[f].indexLabel||l.indexLabel||h[f].indexLabelFormatter||l.indexLabelFormatter)&&this._indexLabels.push({chartType:"stepLine",dataPoint:h[f],dataSeries:l,point:{x:g,y:y},direction:h[f].y>=0?1:-1,color:m})}else f>0&&(e.stroke(),R&&a.stroke()),T=!0;e.stroke(),R&&a.stroke()}}lt.drawMarkers(s),e.restore(),e.beginPath(),R&&a.beginPath();var C={source:e,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return C}},A.prototype.renderSpline=function(t){function e(t){var e=_(t,2);if(e.length>0){i.beginPath(),R&&n.beginPath(),i.moveTo(e[0].x,e[0].y),R&&n.moveTo(e[0].x,e[0].y);for(var a=0;a0&&a%3e3===0&&(i.stroke(),i.beginPath(),i.moveTo(e[a+3].x,e[a+3].y),R&&(n.stroke(),n.beginPath(),n.moveTo(e[a+3].x,e[a+3].y)));i.stroke(),R&&n.stroke()}}var i=t.targetCanvasCtx||this.plotArea.ctx,a=t.dataSeriesIndexes.length;if(!(a<=0)){var n=this._eventManager.ghostCtx;i.save();var s=this.plotArea;i.beginPath(),i.rect(s.x1,s.y1,s.width,s.height),i.clip();for(var o=[],r=0;r0?Math.max(h.lineThickness,4):0;var m=h._colorSet,g=m[0];i.strokeStyle=g;var y,v,b,f=0,T=[];if(i.beginPath(),c.length>0)for(f=0;ft.axisX.dataInfo.viewPortMax))if("number"==typeof c[f].y){y=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(b-t.axisX.conversionParameters.minimum)+.5<<0,v=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(c[f].y-t.axisY.conversionParameters.minimum)+.5<<0;var P=h.dataPointIds[f];if(this._eventManager.objectMap[P]={id:P,objectType:"dataPoint",dataSeriesIndex:l,dataPointIndex:f,x1:y,y1:v},T[T.length]={x:y,y:v},c[f].markerSize>0||h.markerSize>0){var M=h.getMarkerProperties(f,y,v,i);o.push(M);var k=d(P);R&&o.push({x:y,y:v,ctx:n,type:M.type,size:M.size,color:k,borderColor:k,borderThickness:M.borderThickness})}(c[f].indexLabel||h.indexLabel||c[f].indexLabelFormatter||h.indexLabelFormatter)&&this._indexLabels.push({chartType:"spline",dataPoint:c[f],dataSeries:h,point:{x:y,y:v},direction:c[f].y>=0?1:-1,color:g})}else f>0&&(e(T),T=[]);e(T)}lt.drawMarkers(o),i.restore(),i.beginPath(),R&&n.beginPath();var S={source:i,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return S}};var st=function(t,e,i,a,n,s,o,r,l,h,d,c,x){"undefined"==typeof x&&(x=1),o=o||0,r=r||"black";var p=e,m=a,u=i,g=n;if(a-e>15&&n-i>15)var y=8;else var y=.35*Math.min(a-e,n-i);var v="rgba(255, 255, 255, .4)",b="rgba(255, 255, 255, 0.1)",f=s;if(t.beginPath(),t.moveTo(e,i),t.save(),t.fillStyle=f,t.globalAlpha=x,t.fillRect(e,i,a-e,n-i),t.globalAlpha=1,o>0){var T=o%2===0?0:.5;t.beginPath(),t.lineWidth=o,t.strokeStyle=r,t.moveTo(e,i),t.rect(e-T,i-T,a-e+2*T,n-i+2*T),t.stroke()}if(t.restore(),l===!0){t.save(),t.beginPath(),t.moveTo(e,i),t.lineTo(e+y,i+y),t.lineTo(a-y,i+y),t.lineTo(a,i),t.closePath();var P=t.createLinearGradient((a+e)/2,u+y,(a+e)/2,u);P.addColorStop(0,f),P.addColorStop(1,v),t.fillStyle=P,t.fill(),t.restore()}if(h===!0){t.save(),t.beginPath(),t.moveTo(e,n),t.lineTo(e+y,n-y),t.lineTo(a-y,n-y),t.lineTo(a,n),t.closePath();var P=t.createLinearGradient((a+e)/2,g-y,(a+e)/2,g);P.addColorStop(0,f),P.addColorStop(1,v),t.fillStyle=P,t.fill(),t.restore()}if(d===!0){t.save(),t.beginPath(),t.moveTo(e,i),t.lineTo(e+y,i+y),t.lineTo(e+y,n-y),t.lineTo(e,n),t.closePath();var P=t.createLinearGradient(p+y,(n+i)/2,p,(n+i)/2);P.addColorStop(0,f),P.addColorStop(1,b),t.fillStyle=P,t.fill(),t.restore()}if(c===!0){t.save(),t.beginPath(),t.moveTo(a,i),t.lineTo(a-y,i+y),t.lineTo(a-y,n-y),t.lineTo(a,n);var P=t.createLinearGradient(m-y,(n+i)/2,m,(n+i)/2);P.addColorStop(0,f),P.addColorStop(1,b),t.fillStyle=P,P.addColorStop(0,f),P.addColorStop(1,b),t.fillStyle=P,t.fill(),t.closePath(),t.restore()}};A.prototype.renderColumn=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=0,h=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,c=this.dataPointMaxWidth?this.dataPointMaxWidth:Math.min(.15*this.width,this.plotArea.width/t.plotType.totalDataSeries*.9)<<0,x=t.axisX.dataInfo.minDiff,p=r.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(x)/t.plotType.totalDataSeries*.9<<0;p>c?p=c:x===1/0?p=c/t.plotType.totalDataSeries*.9:p<1&&(p=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var m=0;m0){var v=!!(p>5&&g.bevelEnabled);for(l=0;lt.axisX.dataInfo.viewPortMax)&&"number"==typeof y[l].y){a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(y[l].y-t.axisY.conversionParameters.minimum)+.5<<0;var b,f,T=a-t.plotType.totalDataSeries*p/2+(t.previousDataSeriesCount+m)*p<<0,P=T+p<<0;if(y[l].y>=0){if(b=n,f=h,b>f){b=f,f=b}}else if(f=n,b=h,b>f){b=f,f=b}o=y[l].color?y[l].color:g._colorSet[l%g._colorSet.length],st(e,T,b,P,f,o,0,null,v&&y[l].y>=0,y[l].y<0&&v,!1,!1,g.fillOpacity);var M=g.dataPointIds[l];this._eventManager.objectMap[M]={id:M,objectType:"dataPoint",dataSeriesIndex:u,dataPointIndex:l,x1:T,y1:b,x2:P,y2:f},o=d(M),R&&st(this._eventManager.ghostCtx,T,b,P,f,o,0,null,!1,!1,!1,!1),(y[l].indexLabel||g.indexLabel||y[l].indexLabelFormatter||g.indexLabelFormatter)&&this._indexLabels.push({chartType:"column",dataPoint:y[l],dataSeries:g,point:{x:T+(P-T)/2,y:y[l].y>=0?b:f},direction:y[l].y>=0?1:-1,bounds:{x1:T,y1:Math.min(b,f),x2:P,y2:Math.max(b,f)},color:o})}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var k=Math.min(h,t.axisY.boundingRect.y2),S={source:e,dest:this.plotArea.ctx,animationCallback:rt.yScaleAnimation,easingFunction:rt.easing.easeOutQuart,animationBase:k};return S}},A.prototype.renderStackedColumn=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=[],h=[],c=0,x=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,p=this.dataPointMaxWidth?this.dataPointMaxWidth:.15*this.width<<0,m=t.axisX.dataInfo.minDiff,u=r.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(m)/t.plotType.plotUnits.length*.9<<0;u>p?u=p:m===1/0?u=p:u<1&&(u=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var g=0;g0){var f=!!(u>5&&v.bevelEnabled);for(e.strokeStyle="#4572A7 ",c=0;ct.axisX.dataInfo.viewPortMax)&&"number"==typeof b[c].y){a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(b[c].y-t.axisY.conversionParameters.minimum);var T,P,M=a-t.plotType.plotUnits.length*u/2+t.index*u<<0,k=M+u<<0;if(b[c].y>=0){var S=l[s]?l[s]:0;T=n-S,P=x-S,l[s]=S+(P-T)}else{var S=h[s]?h[s]:0;P=n+S,T=x+S,h[s]=S+(P-T)}o=b[c].color?b[c].color:v._colorSet[c%v._colorSet.length],st(e,M,T,k,P,o,0,null,f&&b[c].y>=0,b[c].y<0&&f,!1,!1,v.fillOpacity);var C=v.dataPointIds[c];this._eventManager.objectMap[C]={id:C,objectType:"dataPoint",dataSeriesIndex:y,dataPointIndex:c,x1:M,y1:T,x2:k,y2:P},o=d(C),R&&st(this._eventManager.ghostCtx,M,T,k,P,o,0,null,!1,!1,!1,!1),(b[c].indexLabel||v.indexLabel||b[c].indexLabelFormatter||v.indexLabelFormatter)&&this._indexLabels.push({chartType:"stackedColumn",dataPoint:b[c],dataSeries:v,point:{x:a,y:b[c].y>=0?T:P},direction:b[c].y>=0?1:-1,bounds:{x1:M,y1:Math.min(T,P),x2:k,y2:Math.max(T,P)},color:o})}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var A=Math.min(x,t.axisY.boundingRect.y2),_={source:e,dest:this.plotArea.ctx,animationCallback:rt.yScaleAnimation,easingFunction:rt.easing.easeOutQuart,animationBase:A};return _}},A.prototype.renderStackedColumn100=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=[],h=[],c=0,x=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,p=this.dataPointMaxWidth?this.dataPointMaxWidth:.15*this.width<<0,m=t.axisX.dataInfo.minDiff,u=r.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(m)/t.plotType.plotUnits.length*.9<<0;u>p?u=p:m===1/0?u=p:u<1&&(u=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var g=0;g0){var f=!!(u>5&&v.bevelEnabled);for(c=0;ct.axisX.dataInfo.viewPortMax)&&"number"==typeof b[c].y){a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0;var T;T=0!==t.dataPointYSums[s]?b[c].y/t.dataPointYSums[s]*100:0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(T-t.axisY.conversionParameters.minimum);var P,M,k=a-t.plotType.plotUnits.length*u/2+t.index*u<<0,S=k+u<<0;if(b[c].y>=0){var C=l[s]?l[s]:0;P=n-C,M=x-C,l[s]=C+(M-P)}else{var C=h[s]?h[s]:0;M=n+C,P=x+C,h[s]=C+(M-P)}o=b[c].color?b[c].color:v._colorSet[c%v._colorSet.length],st(e,k,P,S,M,o,0,null,f&&b[c].y>=0,b[c].y<0&&f,!1,!1,v.fillOpacity);var A=v.dataPointIds[c];this._eventManager.objectMap[A]={id:A,objectType:"dataPoint",dataSeriesIndex:y,dataPointIndex:c,x1:k,y1:P,x2:S,y2:M},o=d(A),R&&st(this._eventManager.ghostCtx,k,P,S,M,o,0,null,!1,!1,!1,!1),(b[c].indexLabel||v.indexLabel||b[c].indexLabelFormatter||v.indexLabelFormatter)&&this._indexLabels.push({chartType:"stackedColumn100",dataPoint:b[c],dataSeries:v,point:{x:a,y:b[c].y>=0?P:M},direction:b[c].y>=0?1:-1,bounds:{x1:k,y1:Math.min(P,M),x2:S,y2:Math.max(P,M)},color:o})}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var _=Math.min(x,t.axisY.boundingRect.y2),w={source:e,dest:this.plotArea.ctx,animationCallback:rt.yScaleAnimation,easingFunction:rt.easing.easeOutQuart,animationBase:_};return w}},A.prototype.renderBar=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=0,h=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,c=this.dataPointMaxWidth?this.dataPointMaxWidth:Math.min(.15*this.height,this.plotArea.height/t.plotType.totalDataSeries*.9)<<0,x=t.axisX.dataInfo.minDiff,p=r.height/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(x)/t.plotType.totalDataSeries*.9<<0;p>c?p=c:x===1/0?p=c/t.plotType.totalDataSeries*.9:p<1&&(p=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var m=0;m0){var v=!!(p>5&&g.bevelEnabled);for(e.strokeStyle="#4572A7 ",l=0;lt.axisX.dataInfo.viewPortMax)&&"number"==typeof y[l].y){n=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,a=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(y[l].y-t.axisY.conversionParameters.minimum)+.5<<0;var b,f,T=n-t.plotType.totalDataSeries*p/2+(t.previousDataSeriesCount+m)*p<<0,P=T+p<<0;y[l].y>=0?(b=h,f=a):(b=a,f=h),o=y[l].color?y[l].color:g._colorSet[l%g._colorSet.length],st(e,b,T,f,P,o,0,null,v,!1,!1,!1,g.fillOpacity);var M=g.dataPointIds[l];this._eventManager.objectMap[M]={id:M,objectType:"dataPoint",dataSeriesIndex:u,dataPointIndex:l,x1:b,y1:T,x2:f,y2:P},o=d(M),R&&st(this._eventManager.ghostCtx,b,T,f,P,o,0,null,!1,!1,!1,!1),(y[l].indexLabel||g.indexLabel||y[l].indexLabelFormatter||g.indexLabelFormatter)&&this._indexLabels.push({chartType:"bar",dataPoint:y[l],dataSeries:g,point:{x:y[l].y>=0?f:b,y:T+(P-T)/2},direction:y[l].y>=0?1:-1,bounds:{x1:Math.min(b,f),y1:T,x2:Math.max(b,f),y2:P},color:o})}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var k=Math.max(h,t.axisX.boundingRect.x2),S={source:e,dest:this.plotArea.ctx,animationCallback:rt.xScaleAnimation,easingFunction:rt.easing.easeOutQuart,animationBase:k};return S}},A.prototype.renderStackedBar=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=[],h=[],c=0,x=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,p=this.dataPointMaxWidth?this.dataPointMaxWidth:.15*this.height<<0,m=t.axisX.dataInfo.minDiff,u=r.height/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(m)/t.plotType.plotUnits.length*.9<<0;u>p?u=p:m===1/0?u=p:u<1&&(u=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var g=0;g0){var f=!!(u>5&&v.bevelEnabled);for(e.strokeStyle="#4572A7 ",c=0;ct.axisX.dataInfo.viewPortMax)&&"number"==typeof b[c].y){n=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,a=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(b[c].y-t.axisY.conversionParameters.minimum);var T,P,M=n-t.plotType.plotUnits.length*u/2+t.index*u<<0,k=M+u<<0;if(b[c].y>=0){var S=l[s]?l[s]:0;T=x+S,P=a+S,l[s]=S+(P-T)}else{var S=h[s]?h[s]:0;T=a-S,P=x-S,h[s]=S+(P-T)}o=b[c].color?b[c].color:v._colorSet[c%v._colorSet.length],st(e,T,M,P,k,o,0,null,f,!1,!1,!1,v.fillOpacity);var C=v.dataPointIds[c];this._eventManager.objectMap[C]={id:C,objectType:"dataPoint",dataSeriesIndex:y,dataPointIndex:c,x1:T,y1:M,x2:P,y2:k},o=d(C),R&&st(this._eventManager.ghostCtx,T,M,P,k,o,0,null,!1,!1,!1,!1),(b[c].indexLabel||v.indexLabel||b[c].indexLabelFormatter||v.indexLabelFormatter)&&this._indexLabels.push({chartType:"stackedBar",dataPoint:b[c],dataSeries:v,point:{x:b[c].y>=0?P:T,y:n},direction:b[c].y>=0?1:-1,bounds:{x1:Math.min(T,P),y1:M,x2:Math.max(T,P),y2:k},color:o})}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var A=Math.max(x,t.axisX.boundingRect.x2),_={source:e,dest:this.plotArea.ctx,animationCallback:rt.xScaleAnimation,easingFunction:rt.easing.easeOutQuart,animationBase:A};return _}},A.prototype.renderStackedBar100=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=[],h=[],c=0,x=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,p=this.dataPointMaxWidth?this.dataPointMaxWidth:.15*this.height<<0,m=t.axisX.dataInfo.minDiff,u=r.height/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(m)/t.plotType.plotUnits.length*.9<<0;u>p?u=p:m===1/0?u=p:u<1&&(u=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var g=0;g0){var f=!!(u>5&&v.bevelEnabled);for(e.strokeStyle="#4572A7 ",c=0;ct.axisX.dataInfo.viewPortMax)&&"number"==typeof b[c].y){n=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0;var T;T=0!==t.dataPointYSums[s]?b[c].y/t.dataPointYSums[s]*100:0,a=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(T-t.axisY.conversionParameters.minimum);var P,M,k=n-t.plotType.plotUnits.length*u/2+t.index*u<<0,S=k+u<<0;if(b[c].y>=0){var C=l[s]?l[s]:0;P=x+C,M=a+C,l[s]=C+(M-P)}else{var C=h[s]?h[s]:0;P=a-C,M=x-C,h[s]=C+(M-P)}o=b[c].color?b[c].color:v._colorSet[c%v._colorSet.length],st(e,P,k,M,S,o,0,null,f,!1,!1,!1,v.fillOpacity);var A=v.dataPointIds[c];this._eventManager.objectMap[A]={id:A,objectType:"dataPoint",dataSeriesIndex:y,dataPointIndex:c,x1:P,y1:k,x2:M,y2:S},o=d(A),R&&st(this._eventManager.ghostCtx,P,k,M,S,o,0,null,!1,!1,!1,!1),(b[c].indexLabel||v.indexLabel||b[c].indexLabelFormatter||v.indexLabelFormatter)&&this._indexLabels.push({chartType:"stackedBar100",dataPoint:b[c],dataSeries:v,point:{x:b[c].y>=0?M:P,y:n},direction:b[c].y>=0?1:-1,bounds:{x1:Math.min(P,M),y1:k,x2:Math.max(P,M),y2:S},color:o})}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var _=Math.max(x,t.axisX.boundingRect.x2),w={source:e,dest:this.plotArea.ctx,animationCallback:rt.xScaleAnimation,easingFunction:rt.easing.easeOutQuart,animationBase:_};return w}},A.prototype.renderArea=function(t){function e(){k&&(x.lineThickness>0&&i.stroke(),t.axisY.minimum<=0&&t.axisY.maximum>=0?f=M:t.axisY.maximum<0?f=o.y1:t.axisY.minimum>0&&(f=s.y2),i.lineTo(y,f),i.lineTo(k.x,f),i.closePath(),i.globalAlpha=x.fillOpacity,i.fill(),i.globalAlpha=1,R&&(n.lineTo(y,f),n.lineTo(k.x,f),n.closePath(),n.fill()),i.beginPath(),i.moveTo(y,v),n.beginPath(),n.moveTo(y,v),k={x:y,y:v})}var i=t.targetCanvasCtx||this.plotArea.ctx,a=t.dataSeriesIndexes.length;if(!(a<=0)){var n=this._eventManager.ghostCtx,s=t.axisX.lineCoordinates,o=t.axisY.lineCoordinates,r=[],l=this.plotArea;i.save(),R&&n.save(),i.beginPath(),i.rect(l.x1,l.y1,l.width,l.height),i.clip(),R&&(n.beginPath(),n.rect(l.x1,l.y1,l.width,l.height),n.clip());for(var h=0;h0){var S=x._colorSet[P%x._colorSet.length];i.fillStyle=S,i.strokeStyle=S,i.lineWidth=x.lineThickness,i.setLineDash&&i.setLineDash(u(x.lineDashType,x.lineThickness));for(var C=!0;Pt.axisX.dataInfo.viewPortMax))if("number"==typeof p[P].y){y=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(b-t.axisX.conversionParameters.minimum)+.5<<0,v=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(p[P].y-t.axisY.conversionParameters.minimum)+.5<<0,T||C?(i.beginPath(),i.moveTo(y,v),k={x:y,y:v},R&&(n.beginPath(),n.moveTo(y,v)),T=!1,C=!1):(i.lineTo(y,v),R&&n.lineTo(y,v),P%250==0&&e());var A=x.dataPointIds[P];if(this._eventManager.objectMap[A]={id:A,objectType:"dataPoint",dataSeriesIndex:c,dataPointIndex:P,x1:y,y1:v},0!==p[P].markerSize&&(p[P].markerSize>0||x.markerSize>0)){var _=x.getMarkerProperties(P,y,v,i);r.push(_);var w=d(A);R&&r.push({x:y,y:v,ctx:n,type:_.type,size:_.size,color:w,borderColor:w,borderThickness:_.borderThickness})}(p[P].indexLabel||x.indexLabel||p[P].indexLabelFormatter||x.indexLabelFormatter)&&this._indexLabels.push({chartType:"area",dataPoint:p[P],dataSeries:x,point:{x:y,y:v},direction:p[P].y>=0?1:-1,color:S})}else e(),C=!0;e(),lt.drawMarkers(r)}}i.restore(),R&&this._eventManager.ghostCtx.restore();var L={source:i,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return L}},A.prototype.renderSplineArea=function(t){function e(){var e=_(k,2);if(e.length>0){i.beginPath(),i.moveTo(e[0].x,e[0].y),R&&(n.beginPath(),n.moveTo(e[0].x,e[0].y));for(var a=0;a0&&i.stroke(),t.axisY.minimum<=0&&t.axisY.maximum>=0?f=P:t.axisY.maximum<0?f=o.y1:t.axisY.minimum>0&&(f=s.y2),M={x:e[0].x,y:e[0].y},i.lineTo(e[e.length-1].x,f),i.lineTo(M.x,f),i.closePath(),i.globalAlpha=x.fillOpacity,i.fill(),i.globalAlpha=1,R&&(n.lineTo(e[e.length-1].x,f),n.lineTo(M.x,f),n.closePath(),n.fill())}}var i=t.targetCanvasCtx||this.plotArea.ctx,a=t.dataSeriesIndexes.length;if(!(a<=0)){var n=this._eventManager.ghostCtx,s=t.axisX.lineCoordinates,o=t.axisY.lineCoordinates,r=[],l=this.plotArea;i.save(),R&&n.save(),i.beginPath(),i.rect(l.x1,l.y1,l.width,l.height),i.clip(),R&&(n.beginPath(),n.rect(l.x1,l.y1,l.width,l.height),n.clip()); for(var h=0;h0){for(color=x._colorSet[T%x._colorSet.length],i.fillStyle=color,i.strokeStyle=color,i.lineWidth=x.lineThickness,i.setLineDash&&i.setLineDash(u(x.lineDashType,x.lineThickness));Tt.axisX.dataInfo.viewPortMax))if("number"==typeof p[T].y){y=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(b-t.axisX.conversionParameters.minimum)+.5<<0,v=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(p[T].y-t.axisY.conversionParameters.minimum)+.5<<0;var S=x.dataPointIds[T];if(this._eventManager.objectMap[S]={id:S,objectType:"dataPoint",dataSeriesIndex:c,dataPointIndex:T,x1:y,y1:v},k[k.length]={x:y,y:v},0!==p[T].markerSize&&(p[T].markerSize>0||x.markerSize>0)){var C=x.getMarkerProperties(T,y,v,i);r.push(C);var A=d(S);R&&r.push({x:y,y:v,ctx:n,type:C.type,size:C.size,color:A,borderColor:A,borderThickness:C.borderThickness})}(p[T].indexLabel||x.indexLabel||p[T].indexLabelFormatter||x.indexLabelFormatter)&&this._indexLabels.push({chartType:"splineArea",dataPoint:p[T],dataSeries:x,point:{x:y,y:v},direction:p[T].y>=0?1:-1,color:color})}else T>0&&(e(),k=[]);e(),lt.drawMarkers(r)}}i.restore(),R&&this._eventManager.ghostCtx.restore();var w={source:i,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return w}},A.prototype.renderStepArea=function(t){function e(){k&&(x.lineThickness>0&&i.stroke(),t.axisY.minimum<=0&&t.axisY.maximum>=0?f=M:t.axisY.maximum<0?f=o.y1:t.axisY.minimum>0&&(f=s.y2),i.lineTo(y,f),i.lineTo(k.x,f),i.closePath(),i.globalAlpha=x.fillOpacity,i.fill(),i.globalAlpha=1,R&&(n.lineTo(y,f),n.lineTo(k.x,f),n.closePath(),n.fill()),i.beginPath(),i.moveTo(y,v),n.beginPath(),n.moveTo(y,v),k={x:y,y:v})}var i=t.targetCanvasCtx||this.plotArea.ctx,a=t.dataSeriesIndexes.length;if(!(a<=0)){var n=this._eventManager.ghostCtx,s=t.axisX.lineCoordinates,o=t.axisY.lineCoordinates,r=[],l=this.plotArea;i.save(),R&&n.save(),i.beginPath(),i.rect(l.x1,l.y1,l.width,l.height),i.clip(),R&&(n.beginPath(),n.rect(l.x1,l.y1,l.width,l.height),n.clip());for(var h=0;h0){var C=x._colorSet[P%x._colorSet.length];for(i.fillStyle=C,i.strokeStyle=C,i.lineWidth=x.lineThickness,i.setLineDash&&i.setLineDash(u(x.lineDashType,x.lineThickness));Pt.axisX.dataInfo.viewPortMax)){var A=v;if("number"==typeof p[P].y){y=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(b-t.axisX.conversionParameters.minimum)+.5<<0,v=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(p[P].y-t.axisY.conversionParameters.minimum)+.5<<0,T||S?(i.beginPath(),i.moveTo(y,v),k={x:y,y:v},R&&(n.beginPath(),n.moveTo(y,v)),T=!1,S=!1):(i.lineTo(y,A),R&&n.lineTo(y,A),i.lineTo(y,v),R&&n.lineTo(y,v),P%250==0&&e());var _=x.dataPointIds[P];if(this._eventManager.objectMap[_]={id:_,objectType:"dataPoint",dataSeriesIndex:c,dataPointIndex:P,x1:y,y1:v},0!==p[P].markerSize&&(p[P].markerSize>0||x.markerSize>0)){var w=x.getMarkerProperties(P,y,v,i);r.push(w);var L=d(_);R&&r.push({x:y,y:v,ctx:n,type:w.type,size:w.size,color:L,borderColor:L,borderThickness:w.borderThickness})}(p[P].indexLabel||x.indexLabel||p[P].indexLabelFormatter||x.indexLabelFormatter)&&this._indexLabels.push({chartType:"stepArea",dataPoint:p[P],dataSeries:x,point:{x:y,y:v},direction:p[P].y>=0?1:-1,color:C})}else e(),S=!0}e(),lt.drawMarkers(r)}}i.restore(),R&&this._eventManager.ghostCtx.restore();var I={source:i,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return I}},A.prototype.renderStackedArea=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=[],h=this.plotArea,c=[],x=[],p=0,m=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,g=(t.axisX.dataInfo.minDiff,this._eventManager.ghostCtx);R&&g.beginPath(),e.save(),R&&g.save(),e.beginPath(),e.rect(h.x1,h.y1,h.width,h.height),e.clip(),R&&(g.beginPath(),g.rect(h.x1,h.y1,h.width,h.height),g.clip()),xValuePresent=[];for(var y=0;y0){for(o=f._colorSet[0],e.fillStyle=o,e.strokeStyle=o,e.lineWidth=f.lineThickness,e.setLineDash&&e.setLineDash(u(f.lineDashType,f.lineThickness)),p=0;p=0?T[f.dataPointIndexes[s]]:{x:s,y:0},!(st.axisX.dataInfo.viewPortMax)&&"number"==typeof C.y){var a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(C.y-t.axisY.conversionParameters.minimum),A=c[s]?c[s]:0;if(n-=A,M.push({x:a,y:m-A}),c[s]=m-n,P)e.beginPath(),e.moveTo(a,n),R&&(g.beginPath(),g.moveTo(a,n)),P=!1;else if(e.lineTo(a,n),R&&g.lineTo(a,n),p%250==0){for(f.lineThickness>0&&e.stroke();M.length>0;){var _=M.pop();e.lineTo(_.x,_.y),R&&g.lineTo(_.x,_.y)}e.closePath(),e.globalAlpha=f.fillOpacity,e.fill(),e.globalAlpha=1,e.beginPath(),e.moveTo(a,n),R&&(g.closePath(),g.fill(),g.beginPath(),g.moveTo(a,n)),M.push({x:a,y:m-A})}if(f.dataPointIndexes[s]>=0){var w=f.dataPointIds[f.dataPointIndexes[s]];this._eventManager.objectMap[w]={id:w,objectType:"dataPoint",dataSeriesIndex:b,dataPointIndex:f.dataPointIndexes[s],x1:a,y1:n}}if(f.dataPointIndexes[s]>=0&&0!==C.markerSize&&(C.markerSize>0||f.markerSize>0)){var L=f.getMarkerProperties(p,a,n,e);r.push(L),markerColor=d(w),R&&r.push({x:a,y:n,ctx:g,type:L.type,size:L.size,color:markerColor,borderColor:markerColor,borderThickness:L.borderThickness})}(C.indexLabel||f.indexLabel||C.indexLabelFormatter||f.indexLabelFormatter)&&this._indexLabels.push({chartType:"stackedArea",dataPoint:C,dataSeries:f,point:{x:a,y:n},direction:T[p].y>=0?1:-1,color:o})}}for(f.lineThickness>0&&e.stroke();M.length>0;){var _=M.pop();e.lineTo(_.x,_.y),R&&g.lineTo(_.x,_.y)}e.closePath(),e.globalAlpha=f.fillOpacity,e.fill(),e.globalAlpha=1,e.beginPath(),e.moveTo(a,n),R&&(g.closePath(),g.fill(),g.beginPath(),g.moveTo(a,n))}delete f.dataPointIndexes}lt.drawMarkers(r),e.restore(),R&&g.restore();var I={source:e,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return I}},A.prototype.renderStackedArea100=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,h=[],c=[],x=[],p=0,m=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,g=this.dataPointMaxWidth?this.dataPointMaxWidth:.15*this.width<<0,y=t.axisX.dataInfo.minDiff,v=r.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(y)*.9<<0,b=this._eventManager.ghostCtx;e.save(),R&&b.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(b.beginPath(),b.rect(r.x1,r.y1,r.width,r.height),b.clip()),xValuePresent=[];for(var f=0;fg&&(v=g);var _=[];if(x.length>0){o=M._colorSet[p%M._colorSet.length],e.fillStyle=o,e.strokeStyle=o,e.lineWidth=M.lineThickness,e.setLineDash&&e.setLineDash(u(M.lineDashType,M.lineThickness));for(p=0;p=0?k[M.dataPointIndexes[s]]:{x:s,y:0},!(st.axisX.dataInfo.viewPortMax)&&"number"==typeof w.y){var L;L=0!==t.dataPointYSums[s]?w.y/t.dataPointYSums[s]*100:0;var a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(L-t.axisY.conversionParameters.minimum),I=c[s]?c[s]:0;if(n-=I,_.push({x:a,y:m-I}),c[s]=m-n,S)e.beginPath(),e.moveTo(a,n),R&&(b.beginPath(),b.moveTo(a,n)),S=!1;else if(e.lineTo(a,n),R&&b.lineTo(a,n),p%250==0){for(M.lineThickness>0&&e.stroke();_.length>0;){var B=_.pop();e.lineTo(B.x,B.y),R&&b.lineTo(B.x,B.y)}e.closePath(),e.globalAlpha=M.fillOpacity,e.fill(),e.globalAlpha=1,e.beginPath(),e.moveTo(a,n),R&&(b.closePath(),b.fill(),b.beginPath(),b.moveTo(a,n)),_.push({x:a,y:m-I})}if(M.dataPointIndexes[s]>=0){var F=M.dataPointIds[M.dataPointIndexes[s]];this._eventManager.objectMap[F]={id:F,objectType:"dataPoint",dataSeriesIndex:P,dataPointIndex:M.dataPointIndexes[s],x1:a,y1:n}}if(M.dataPointIndexes[s]>=0&&0!==w.markerSize&&(w.markerSize>0||M.markerSize>0)){var X=M.getMarkerProperties(p,a,n,e);h.push(X),markerColor=d(F),R&&h.push({x:a,y:n,ctx:b,type:X.type,size:X.size,color:markerColor,borderColor:markerColor,borderThickness:X.borderThickness})}(w.indexLabel||M.indexLabel||w.indexLabelFormatter||M.indexLabelFormatter)&&this._indexLabels.push({chartType:"stackedArea100",dataPoint:w,dataSeries:M,point:{x:a,y:n},direction:k[p].y>=0?1:-1,color:o})}}for(M.lineThickness>0&&e.stroke();_.length>0;){var B=_.pop();e.lineTo(B.x,B.y),R&&b.lineTo(B.x,B.y)}e.closePath(),e.globalAlpha=M.fillOpacity,e.fill(),e.globalAlpha=1,e.beginPath(),e.moveTo(a,n),R&&(b.closePath(),b.fill(),b.beginPath(),b.moveTo(a,n))}delete M.dataPointIndexes}lt.drawMarkers(h),e.restore(),R&&b.restore();var z={source:e,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return z}},A.prototype.renderBubble=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=0,h=(t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,this.dataPointMaxWidth?this.dataPointMaxWidth:.15*this.width<<0),c=t.axisX.dataInfo.minDiff,x=r.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(c)/i*.9<<0;e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var p=-(1/0),m=1/0,u=0;ut.axisX.dataInfo.viewPortMax||"undefined"!=typeof v[l].z&&(b=v[l].z,b>p&&(p=b),bh&&(x=h),v.length>0){e.strokeStyle="#4572A7 ";for(var l=0;lt.axisX.dataInfo.viewPortMax)&&"number"==typeof v[l].y){a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(v[l].y-t.axisY.conversionParameters.minimum)+.5<<0;var b=v[l].z,P=p===m?T/2:f+(T-f)/(p-m)*(b-m),M=Math.max(Math.sqrt(P/Math.PI)<<0,1),k=2*M,S=y.getMarkerProperties(l,e);S.size=k,e.globalAlpha=y.fillOpacity,lt.drawMarker(a,n,e,S.type,S.size,S.color,S.borderColor,S.borderThickness),e.globalAlpha=1;var C=y.dataPointIds[l];this._eventManager.objectMap[C]={id:C,objectType:"dataPoint",dataSeriesIndex:g,dataPointIndex:l,x1:a,y1:n,size:k};var A=d(C);R&<.drawMarker(a,n,this._eventManager.ghostCtx,S.type,S.size,A,A,S.borderThickness),(v[l].indexLabel||y.indexLabel||v[l].indexLabelFormatter||y.indexLabelFormatter)&&this._indexLabels.push({chartType:"bubble",dataPoint:v[l],dataSeries:y,point:{x:a,y:n},direction:1,bounds:{x1:a-S.size/2,y1:n-S.size/2,x2:a+S.size/2,y2:n+S.size/2},color:o})}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var _={source:e,dest:this.plotArea.ctx,animationCallback:rt.fadeInAnimation,easingFunction:rt.easing.easeInQuad,animationBase:0};return _}},A.prototype.renderScatter=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o=null,r=this.plotArea,l=0,h=(t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,this.dataPointMaxWidth?this.dataPointMaxWidth:.15*this.width<<0),c=t.axisX.dataInfo.minDiff,x=r.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(c)/i*.9<<0;e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(r.x1,r.y1,r.width,r.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(r.x1,r.y1,r.width,r.height),this._eventManager.ghostCtx.clip());for(var p=0;ph&&(x=h),g.length>0){e.strokeStyle="#4572A7 ";for(var y=(Math.pow(.3*Math.min(r.height,r.width)/2,2)*Math.PI,0),v=0,l=0;lt.axisX.dataInfo.viewPortMax)&&"number"==typeof g[l].y){a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(s-t.axisX.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(g[l].y-t.axisY.conversionParameters.minimum)+.5<<0;var b=u.getMarkerProperties(l,a,n,e);if(e.globalAlpha=u.fillOpacity,lt.drawMarker(b.x,b.y,b.ctx,b.type,b.size,b.color,b.borderColor,b.borderThickness),e.globalAlpha=1,!(Math.sqrt((y-a)*(y-a)+(v-n)*(v-n))Math.min(this.plotArea.width,this.plotArea.height))){var f=u.dataPointIds[l];this._eventManager.objectMap[f]={id:f,objectType:"dataPoint",dataSeriesIndex:m,dataPointIndex:l,x1:a,y1:n};var T=d(f);R&<.drawMarker(b.x,b.y,this._eventManager.ghostCtx,b.type,b.size,T,T,b.borderThickness),(g[l].indexLabel||u.indexLabel||g[l].indexLabelFormatter||u.indexLabelFormatter)&&this._indexLabels.push({chartType:"scatter",dataPoint:g[l],dataSeries:u,point:{x:a,y:n},direction:1,bounds:{x1:a-b.size/2,y1:n-b.size/2,x2:a+b.size/2,y2:n+b.size/2},color:o}),y=a,v=n}}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var P={source:e,dest:this.plotArea.ctx,animationCallback:rt.fadeInAnimation,easingFunction:rt.easing.easeInQuad,animationBase:0};return P}},A.prototype.renderCandlestick=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=this._eventManager.ghostCtx,a=t.dataSeriesIndexes.length;if(!(a<=0)){var n,s,o,r,l,h,c=null,x=this.plotArea,p=0,m=(t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,this.dataPointMaxWidth?this.dataPointMaxWidth:.015*this.width),u=t.axisX.dataInfo.minDiff,g=x.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(u)*.7<<0;g>m?g=m:u===1/0?g=m:g<1&&(g=1),e.save(),R&&i.save(),e.beginPath(),e.rect(x.x1,x.y1,x.width,x.height),e.clip(),R&&(i.rect(x.x1,x.y1,x.width,x.height),i.clip());for(var y=0;y0){var T=!!(g>5&&b.bevelEnabled);for(p=0;pt.axisX.dataInfo.viewPortMax)&&null!==f[p].y&&f[p].y.length&&"number"==typeof f[p].y[0]&&"number"==typeof f[p].y[1]&&"number"==typeof f[p].y[2]&&"number"==typeof f[p].y[3]){n=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(h-t.axisX.conversionParameters.minimum)+.5<<0,s=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(f[p].y[0]-t.axisY.conversionParameters.minimum)+.5<<0,o=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(f[p].y[1]-t.axisY.conversionParameters.minimum)+.5<<0,r=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(f[p].y[2]-t.axisY.conversionParameters.minimum)+.5<<0,l=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(f[p].y[3]-t.axisY.conversionParameters.minimum)+.5<<0;var P=n-g/2<<0,M=P+g<<0;c=f[p].color?f[p].color:b._colorSet[0];var k=Math.round(Math.max(1,.15*g)),S=k%2===0?0:.5,C=b.dataPointIds[p];this._eventManager.objectMap[C]={id:C,objectType:"dataPoint",dataSeriesIndex:v,dataPointIndex:p,x1:P,y1:s,x2:M,y2:o,x3:n,y3:r,x4:n,y4:l,borderThickness:k,color:c},e.strokeStyle=c,e.beginPath(),e.lineWidth=k,i.lineWidth=Math.max(k,4),"candlestick"===b.type?(e.moveTo(n-S,o),e.lineTo(n-S,Math.min(s,l)),e.stroke(),e.moveTo(n-S,Math.max(s,l)),e.lineTo(n-S,r),e.stroke(),st(e,P,Math.min(s,l),M,Math.max(s,l),f[p].y[0]<=f[p].y[3]?b.risingColor:c,k,c,T,T,!1,!1,b.fillOpacity),R&&(c=d(C),i.strokeStyle=c,i.moveTo(n-S,o),i.lineTo(n-S,Math.min(s,l)),i.stroke(),i.moveTo(n-S,Math.max(s,l)),i.lineTo(n-S,r),i.stroke(),st(i,P,Math.min(s,l),M,Math.max(s,l),c,0,null,!1,!1,!1,!1))):"ohlc"===b.type&&(e.moveTo(n-S,o),e.lineTo(n-S,r),e.stroke(),e.beginPath(),e.moveTo(n,s),e.lineTo(P,s),e.stroke(),e.beginPath(),e.moveTo(n,l),e.lineTo(M,l),e.stroke(),R&&(c=d(C),i.strokeStyle=c,i.moveTo(n-S,o),i.lineTo(n-S,r),i.stroke(),i.beginPath(),i.moveTo(n,s),i.lineTo(P,s),i.stroke(),i.beginPath(),i.moveTo(n,l),i.lineTo(M,l),i.stroke())),(f[p].indexLabel||b.indexLabel||f[p].indexLabelFormatter||b.indexLabelFormatter)&&this._indexLabels.push({chartType:b.type,dataPoint:f[p],dataSeries:b,point:{x:P+(M-P)/2,y:o},direction:1,bounds:{x1:P,y1:Math.min(o,r),x2:M,y2:Math.max(o,r)},color:c})}}}e.restore(),R&&i.restore();var A={source:e,dest:this.plotArea.ctx,animationCallback:rt.fadeInAnimation,easingFunction:rt.easing.easeInQuad,animationBase:0};return A}},A.prototype.renderRangeColumn=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o,r=null,l=this.plotArea,h=0,c=(t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,this.dataPointMaxWidth?this.dataPointMaxWidth:.03*this.width),x=t.axisX.dataInfo.minDiff,p=l.width/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(x)/t.plotType.totalDataSeries*.9<<0;p>c?p=c:x===1/0?p=c/t.plotType.totalDataSeries*.9:p<1&&(p=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(l.x1,l.y1,l.width,l.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(l.x1,l.y1,l.width,l.height),this._eventManager.ghostCtx.clip());for(var m=0;m0){var v=!!(p>5&&g.bevelEnabled);for(h=0;ht.axisX.dataInfo.viewPortMax)&&null!==y[h].y&&y[h].y.length&&"number"==typeof y[h].y[0]&&"number"==typeof y[h].y[1]){a=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(o-t.axisX.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(y[h].y[0]-t.axisY.conversionParameters.minimum)+.5<<0,s=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(y[h].y[1]-t.axisY.conversionParameters.minimum)+.5<<0;var n,s,b=a-t.plotType.totalDataSeries*p/2+(t.previousDataSeriesCount+m)*p<<0,f=b+p<<0;if(r=y[h].color?y[h].color:g._colorSet[h%g._colorSet.length],n>s){var T=n;n=s,s=T}var P=g.dataPointIds[h];this._eventManager.objectMap[P]={id:P,objectType:"dataPoint",dataSeriesIndex:u,dataPointIndex:h,x1:b,y1:n,x2:f,y2:s};var M=0;st(e,b,n,f,s,r,M,r,v,v,!1,!1,g.fillOpacity),r=d(P),R&&st(this._eventManager.ghostCtx,b,n,f,s,r,0,null,!1,!1,!1,!1),(y[h].indexLabel||g.indexLabel||y[h].indexLabelFormatter||g.indexLabelFormatter)&&(this._indexLabels.push({chartType:"rangeColumn",dataPoint:y[h],dataSeries:g,indexKeyword:0,point:{x:b+(f-b)/2,y:y[h].y[1]>=y[h].y[0]?s:n},direction:y[h].y[1]>=y[h].y[0]?-1:1,bounds:{x1:b,y1:Math.min(n,s),x2:f,y2:Math.max(n,s)},color:r}),this._indexLabels.push({chartType:"rangeColumn",dataPoint:y[h],dataSeries:g,indexKeyword:1,point:{x:b+(f-b)/2,y:y[h].y[1]>=y[h].y[0]?n:s},direction:y[h].y[1]>=y[h].y[0]?1:-1,bounds:{x1:b,y1:Math.min(n,s),x2:f,y2:Math.max(n,s)},color:r}))}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var k={source:e,dest:this.plotArea.ctx,animationCallback:rt.fadeInAnimation,easingFunction:rt.easing.easeInQuad,animationBase:0};return k}},A.prototype.renderRangeBar=function(t){var e=t.targetCanvasCtx||this.plotArea.ctx,i=t.dataSeriesIndexes.length;if(!(i<=0)){var a,n,s,o,r=null,l=this.plotArea,h=0,c=(t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(0-t.axisY.conversionParameters.minimum)<<0,this.dataPointMaxWidth?this.dataPointMaxWidth:Math.min(.15*this.height,this.plotArea.height/t.plotType.totalDataSeries*.9)<<0),x=t.axisX.dataInfo.minDiff,p=l.height/Math.abs(t.axisX.maximum-t.axisX.minimum)*Math.abs(x)/t.plotType.totalDataSeries*.9<<0;p>c?p=c:x===1/0?p=c/t.plotType.totalDataSeries*.9:p<1&&(p=1),e.save(),R&&this._eventManager.ghostCtx.save(),e.beginPath(),e.rect(l.x1,l.y1,l.width,l.height),e.clip(),R&&(this._eventManager.ghostCtx.rect(l.x1,l.y1,l.width,l.height),this._eventManager.ghostCtx.clip());for(var m=0;m0){var v=!!(p>5&&g.bevelEnabled);for(e.strokeStyle="#4572A7 ",h=0;ht.axisX.dataInfo.viewPortMax)&&null!==y[h].y&&y[h].y.length&&"number"==typeof y[h].y[0]&&"number"==typeof y[h].y[1]){a=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(y[h].y[0]-t.axisY.conversionParameters.minimum)+.5<<0,n=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(y[h].y[1]-t.axisY.conversionParameters.minimum)+.5<<0,s=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(o-t.axisX.conversionParameters.minimum)+.5<<0;var b=s-t.plotType.totalDataSeries*p/2+(t.previousDataSeriesCount+m)*p<<0,f=b+p<<0;if(a>n){var T=a;a=n,n=T}r=y[h].color?y[h].color:g._colorSet[h%g._colorSet.length],st(e,a,b,n,f,r,0,null,v,!1,!1,!1,g.fillOpacity);var P=g.dataPointIds[h];this._eventManager.objectMap[P]={id:P,objectType:"dataPoint",dataSeriesIndex:u,dataPointIndex:h,x1:a,y1:b,x2:n,y2:f},r=d(P),R&&st(this._eventManager.ghostCtx,a,b,n,f,r,0,null,!1,!1,!1,!1),(y[h].indexLabel||g.indexLabel||y[h].indexLabelFormatter||g.indexLabelFormatter)&&(this._indexLabels.push({chartType:"rangeBar",dataPoint:y[h],dataSeries:g,indexKeyword:0,point:{x:y[h].y[1]>=y[h].y[0]?a:n,y:b+(f-b)/2},direction:y[h].y[1]>=y[h].y[0]?-1:1,bounds:{x1:Math.min(a,n),y1:b,x2:Math.max(a,n),y2:f},color:r}),this._indexLabels.push({chartType:"rangeBar",dataPoint:y[h],dataSeries:g,indexKeyword:1,point:{x:y[h].y[1]>=y[h].y[0]?n:a,y:b+(f-b)/2},direction:y[h].y[1]>=y[h].y[0]?1:-1,bounds:{x1:Math.min(a,n),y1:b,x2:Math.max(a,n),y2:f},color:r}))}}}e.restore(),R&&this._eventManager.ghostCtx.restore();var M={source:e,dest:this.plotArea.ctx,animationCallback:rt.fadeInAnimation,easingFunction:rt.easing.easeInQuad,animationBase:0};return M}},A.prototype.renderRangeArea=function(t){function e(){if(P){var t=null;c.lineThickness>0&&i.stroke();for(var e=l.length-1;e>=0;e--)t=l[e],i.lineTo(t.x,t.y),n.lineTo(t.x,t.y);if(i.closePath(),i.globalAlpha=c.fillOpacity,i.fill(),i.globalAlpha=1,n.fill(),c.lineThickness>0){i.beginPath(),i.moveTo(t.x,t.y);for(var e=0;e0){var M=c._colorSet[T%c._colorSet.length];i.fillStyle=M,i.strokeStyle=M,i.lineWidth=c.lineThickness,i.setLineDash&&i.setLineDash(u(c.lineDashType,c.lineThickness));for(var k=!0;Tt.axisX.dataInfo.viewPortMax))if(null!==x[T].y&&x[T].y.length&&"number"==typeof x[T].y[0]&&"number"==typeof x[T].y[1]){g=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(b-t.axisX.conversionParameters.minimum)+.5<<0,y=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(x[T].y[0]-t.axisY.conversionParameters.minimum)+.5<<0,v=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(x[T].y[1]-t.axisY.conversionParameters.minimum)+.5<<0,f||k?(i.beginPath(),i.moveTo(g,y),P={x:g,y:y},l=[],l.push({x:g,y:v}),R&&(n.beginPath(),n.moveTo(g,y)),f=!1,k=!1):(i.lineTo(g,y),l.push({x:g,y:v}),R&&n.lineTo(g,y),T%250==0&&e());var S=c.dataPointIds[T];if(this._eventManager.objectMap[S]={id:S,objectType:"dataPoint",dataSeriesIndex:h,dataPointIndex:T,x1:g,y1:y,y2:v},0!==x[T].markerSize&&(x[T].markerSize>0||c.markerSize>0)){var C=c.getMarkerProperties(T,g,v,i);s.push(C);var A=d(S);R&&s.push({x:g,y:v,ctx:n,type:C.type,size:C.size,color:A,borderColor:A,borderThickness:C.borderThickness}),C=c.getMarkerProperties(T,g,y,i),s.push(C);var A=d(S);R&&s.push({x:g,y:y,ctx:n,type:C.type,size:C.size,color:A,borderColor:A,borderThickness:C.borderThickness})}(x[T].indexLabel||c.indexLabel||x[T].indexLabelFormatter||c.indexLabelFormatter)&&(this._indexLabels.push({chartType:"rangeArea",dataPoint:x[T],dataSeries:c,indexKeyword:0,point:{x:g,y:y},direction:x[T].y[0]<=x[T].y[1]?-1:1,color:M}),this._indexLabels.push({chartType:"rangeArea",dataPoint:x[T],dataSeries:c,indexKeyword:1,point:{x:g,y:v},direction:x[T].y[0]<=x[T].y[1]?1:-1,color:M}))}else e(),k=!0;e(),lt.drawMarkers(s)}}i.restore(),R&&this._eventManager.ghostCtx.restore();var _={source:i,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return _}},A.prototype.renderRangeSplineArea=function(t){function e(){var t=_(f,2);if(t.length>0){i.beginPath(),i.moveTo(t[0].x,t[0].y),R&&(n.beginPath(),n.moveTo(t[0].x,t[0].y));for(var e=0;e0&&i.stroke(),t=_(T,2),i.lineTo(T[T.length-1].x,T[T.length-1].y);for(var e=t.length-1;e>2;e-=3)i.bezierCurveTo(t[e-1].x,t[e-1].y,t[e-2].x,t[e-2].y,t[e-3].x,t[e-3].y),R&&n.bezierCurveTo(t[e-1].x,t[e-1].y,t[e-2].x,t[e-2].y,t[e-3].x,t[e-3].y);if(i.closePath(),i.globalAlpha=h.fillOpacity,i.fill(),i.globalAlpha=1,h.lineThickness>0){i.beginPath(),i.moveTo(T[T.length-1].x,T[T.length-1].y);for(var e=t.length-1;e>2;e-=3)i.bezierCurveTo(t[e-1].x,t[e-1].y,t[e-2].x,t[e-2].y,t[e-3].x,t[e-3].y),R&&n.bezierCurveTo(t[e-1].x,t[e-1].y,t[e-2].x,t[e-2].y,t[e-3].x,t[e-3].y);i.stroke()}i.beginPath(),R&&(n.closePath(),n.fill())}}var i=t.targetCanvasCtx||this.plotArea.ctx,a=t.dataSeriesIndexes.length;if(!(a<=0)){var n=this._eventManager.ghostCtx,s=(t.axisX.lineCoordinates,t.axisY.lineCoordinates,[]),o=this.plotArea;i.save(),R&&n.save(),i.beginPath(),i.rect(o.x1,o.y1,o.width,o.height),i.clip(),R&&(n.beginPath(),n.rect(o.x1,o.y1,o.width,o.height),n.clip());for(var r=0;r0){for(color=h._colorSet[b%h._colorSet.length],i.fillStyle=color,i.strokeStyle=color,i.lineWidth=h.lineThickness,i.setLineDash&&i.setLineDash(u(h.lineDashType,h.lineThickness));bt.axisX.dataInfo.viewPortMax))if(null!==c[b].y&&c[b].y.length&&"number"==typeof c[b].y[0]&&"number"==typeof c[b].y[1]){m=t.axisX.conversionParameters.reference+t.axisX.conversionParameters.pixelPerUnit*(v-t.axisX.conversionParameters.minimum)+.5<<0,g=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(c[b].y[0]-t.axisY.conversionParameters.minimum)+.5<<0,y=t.axisY.conversionParameters.reference+t.axisY.conversionParameters.pixelPerUnit*(c[b].y[1]-t.axisY.conversionParameters.minimum)+.5<<0;var P=h.dataPointIds[b];if(this._eventManager.objectMap[P]={id:P,objectType:"dataPoint",dataSeriesIndex:l,dataPointIndex:b,x1:m,y1:g,y2:y},f[f.length]={x:m,y:g},T[T.length]={x:m,y:y},0!==c[b].markerSize&&(c[b].markerSize>0||h.markerSize>0)){var M=h.getMarkerProperties(b,m,g,i);s.push(M);var k=d(P);R&&s.push({x:m,y:g,ctx:n,type:M.type,size:M.size,color:k,borderColor:k,borderThickness:M.borderThickness});var M=h.getMarkerProperties(b,m,y,i);s.push(M);var k=d(P);R&&s.push({x:m,y:y,ctx:n,type:M.type,size:M.size,color:k,borderColor:k,borderThickness:M.borderThickness})}(c[b].indexLabel||h.indexLabel||c[b].indexLabelFormatter||h.indexLabelFormatter)&&(this._indexLabels.push({chartType:"splineArea",dataPoint:c[b],dataSeries:h,indexKeyword:0,point:{x:m,y:g},direction:c[b].y[0]<=c[b].y[1]?-1:1,color:color}),this._indexLabels.push({chartType:"splineArea",dataPoint:c[b],dataSeries:h,indexKeyword:1,point:{x:m,y:y},direction:c[b].y[0]<=c[b].y[1]?1:-1,color:color}))}else b>0&&(e(),f=[],T=[]);e(),lt.drawMarkers(s)}}i.restore(),R&&this._eventManager.ghostCtx.restore();var S={source:i,dest:this.plotArea.ctx,animationCallback:rt.xClipAnimation,easingFunction:rt.easing.linear,animationBase:0};return S}};var ot=function(t,e,i,a,n,s,o,r){if("undefined"==typeof r&&(r=1),!R){var l=Number((o%(2*Math.PI)).toFixed(8)),h=Number((s%(2*Math.PI)).toFixed(8)); h===l&&(o-=1e-4)}if(t.save(),t.globalAlpha=r,"pie"===n)t.beginPath(),t.moveTo(e.x,e.y),t.arc(e.x,e.y,i,s,o,!1),t.fillStyle=a,t.strokeStyle="white",t.lineWidth=2,t.closePath(),t.fill();else if("doughnut"===n){var d=.6;t.beginPath(),t.arc(e.x,e.y,i,s,o,!1),t.arc(e.x,e.y,d*i,o,s,!0),t.closePath(),t.fillStyle=a,t.strokeStyle="white",t.lineWidth=2,t.fill()}t.globalAlpha=1,t.restore()};A.prototype.renderPie=function(t){function e(){if(g&&y){var t=0,e=0,i=0,a=0;for(B=0;BMath.PI/2-S&&o.midAngleo.midAngle)&&(i=B),t++):o.midAngle>3*Math.PI/2-S&&o.midAngle<3*Math.PI/2+S&&((0===e||P[a].midAngle>o.midAngle)&&(a=B),e++),d>Math.PI/2&&d<=3*Math.PI/2?o.hemisphere="left":o.hemisphere="right",o.indexLabelTextBlock=new L(x.plotArea.ctx,{fontSize:o.indexLabelFontSize,fontFamily:o.indexLabelFontFamily,fontColor:o.indexLabelFontColor,fontStyle:o.indexLabelFontStyle,fontWeight:o.indexLabelFontWeight,horizontalAlign:"left",backgroundColor:o.indexLabelBackgroundColor,maxWidth:o.indexLabelMaxWidth,maxHeight:o.indexLabelWrap?5*o.indexLabelFontSize:1.5*o.indexLabelFontSize,text:o.indexLabelText,padding:0,textBaseline:"top"}),o.indexLabelTextBlock.measureText()}var c=0,p=0,m=!1;for(B=0;B1&&o.midAngle>Math.PI/2-S&&o.midAngle1&&o.midAngle>3*Math.PI/2-S&&o.midAngle<3*Math.PI/2+S&&(p<=e/2&&!m?(o.hemisphere="left",p++):(o.hemisphere="right",m=!0))}}}function i(){var t=x.plotArea.ctx;t.fillStyle="black",t.strokeStyle="grey";t.textBaseline="middle",t.lineJoin="round";var e=0;for(e=0;ei&&(s=i,o=!0);var r=y[a].color?y[a].color:g._colorSet[a%g._colorSet.length];if(s>n&&ot(x.plotArea.ctx,P[a].center,P[a].radius,r,g.type,n,s,g.fillOpacity),o)break}}function n(t){var e=x.plotArea.ctx;e.clearRect(f.x1,f.y1,f.width,f.height),e.fillStyle=x.backgroundColor,e.fillRect(f.x1,f.y1,f.width,f.height);for(var a=0;an){var o=.07*_*Math.cos(P[a].midAngle),r=.07*_*Math.sin(P[a].midAngle),l=!1;if(y[a].exploded?(Math.abs(P[a].center.x-(A.x+o))>1e-9||Math.abs(P[a].center.y-(A.y+r))>1e-9)&&(P[a].center.x=A.x+o*t,P[a].center.y=A.y+r*t,l=!0):(Math.abs(P[a].center.x-A.x)>0||Math.abs(P[a].center.y-A.y)>0)&&(P[a].center.x=A.x+o*(1-t),P[a].center.y=A.y+r*(1-t),l=!0),l){var h={};h.dataSeries=g,h.dataPoint=g.dataPoints[a],h.index=a,x._toolTip.highlightObjects([h])}var d=y[a].color?y[a].color:g._colorSet[a%g._colorSet.length];ot(x.plotArea.ctx,P[a].center,P[a].radius,d,g.type,n,s,g.fillOpacity)}}i()}function s(t,e){var i={x1:t.indexLabelTextBlock.x,y1:t.indexLabelTextBlock.y-t.indexLabelTextBlock.height/2,x2:t.indexLabelTextBlock.x+t.indexLabelTextBlock.width,y2:t.indexLabelTextBlock.y+t.indexLabelTextBlock.height/2},a={x1:e.indexLabelTextBlock.x,y1:e.indexLabelTextBlock.y-e.indexLabelTextBlock.height/2,x2:e.indexLabelTextBlock.x+e.indexLabelTextBlock.width,y2:e.indexLabelTextBlock.y+e.indexLabelTextBlock.height/2};return!(i.x2a.x2+v||i.y1>a.y2+v||i.y2a.y?n.y1-a.y2:a.y1-n.y2}function r(t){for(var e=null,i=1;i=P[t].indexLabelTextBlock.y:P[e].indexLabelTextBlock.y<=P[t].indexLabelTextBlock.y)))break;e=null}return e}function l(t){for(var e=null,i=1;i=P[t].indexLabelTextBlock.y)))break;e=null}return e}function h(t,e){e=e||0;var i=0,a=A.y-1*w,n=A.y+1*w;if(t>=0&&t0&&s.indexLabelTextBlock.y>n)return 0;var o=e,d=0,c=0,x=0,p=0,m=0;o<0?s.indexLabelTextBlock.y-s.indexLabelTextBlock.height/2>a&&s.indexLabelTextBlock.y-s.indexLabelTextBlock.height/2+on&&(o=s.indexLabelTextBlock.y+s.indexLabelTextBlock.height/2+o-n);var u=s.indexLabelTextBlock.y+o,g=0;g="right"===s.hemisphere?A.x+Math.sqrt(Math.pow(w,2)-Math.pow(u-A.y,2)):A.x-Math.sqrt(Math.pow(w,2)-Math.pow(u-A.y,2)),c=A.x+_*Math.cos(s.midAngle),x=A.y+_*Math.sin(s.midAngle),d=Math.sqrt(Math.pow(g-c,2)+Math.pow(u-x,2)),m=Math.acos(_/w),p=Math.acos((w*w+_*_-d*d)/(2*_*w)),o=p+L.toFixed(C)&&(i=b>M?-(b-M):-(B-(I-L))))}}else if(o>0&&(v="right"===s.hemisphere?k:f,i=o,null!==v)){var B=o,b=P[v].indexLabelTextBlock.y-P[v].indexLabelTextBlock.height/2-(s.indexLabelTextBlock.y+s.indexLabelTextBlock.height/2);b-BM?b-M:B-(L-I)))}if(i){var F=s.indexLabelTextBlock.y+i,X=0;if(X="right"===s.hemisphere?A.x+Math.sqrt(Math.pow(w,2)-Math.pow(F-A.y,2)):A.x-Math.sqrt(Math.pow(w,2)-Math.pow(F-A.y,2)),s.midAngle>Math.PI/2-S&&s.midAngleD.indexLabelTextBlock.x?X=D.indexLabelTextBlock.x-15:"right"===s.hemisphere&&"left"===Y.hemisphere&&X3*Math.PI/2-S&&s.midAngle<3*Math.PI/2+S){var z=(t-1+P.length)%P.length,D=P[z],Y=P[(t+1+P.length)%P.length];"right"===s.hemisphere&&"left"===D.hemisphere&&XY.indexLabelTextBlock.x&&(X=Y.indexLabelTextBlock.x-15)}s.indexLabelTextBlock.y=F,s.indexLabelTextBlock.x=X,s.indexLabelAngle=Math.atan2(s.indexLabelTextBlock.y-A.y,s.indexLabelTextBlock.x-A.x)}}return i}function d(){function t(t,e,i){for(var a=[],n=0,s=e;!0&&(a.push(P[s]),s!==i);s=(s+1+y.length)%y.length);for(a.sort(function(t,e){return t.y-e.y}),s=0;s0);n++){if(_-=l,l=0,"inside"!==g.indexLabelPlacement){for(w=_*k,a=0;a0&&(Math.abs(d.indexLabelTextBlock.y-d.indexLabelTextBlock.height/2-A.y)<_||Math.abs(d.indexLabelTextBlock.y+d.indexLabelTextBlock.height/2-A.y)<_)&&(W=Y/Math.abs(Math.cos(d.indexLabelAngle)),W>9&&(W*=.3),W>l&&(l=W));var E=0,O=0;d.indexLabelAngle>0&&d.indexLabelAngle0&&Math.abs(d.indexLabelTextBlock.x-A.x)<_&&(O=E/Math.abs(Math.sin(d.indexLabelAngle)),O>9&&(O*=.3),O>l&&(l=O))}}for(var V=-1,U=-1,R=0,S=0;S0&&(t(R,V,U),V=-1,U=-1,R=0)}}R>0&&t(R,V,U)}}function c(){if(x.plotArea.layoutManager.reset(),x._title&&(x._title.dockInsidePlotArea||"center"===x._title.horizontalAlign&&"center"===x._title.verticalAlign)&&x._title.render(),x.subtitles)for(var t=0;t1&&x._animator.animate(0,b,function(t){n(t),c()})}},e(),d(),this.disableToolTip=!0,this._animator.animate(0,this.animatedRender?this.animationDuration:0,function(t){a(t),c()},function(){x.disableToolTip=!1,x._animator.animate(0,x.animatedRender?b:0,function(t){n(t),c()})}))}},A.prototype.animationRequestId=null,A.prototype.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),A.prototype.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),w.prototype.registerSpace=function(t,e){"top"===t?this._topOccupied+=e.height:"bottom"===t?this._bottomOccupied+=e.height:"left"===t?this._leftOccupied+=e.width:"right"===t&&(this._rightOccupied+=e.width)},w.prototype.unRegisterSpace=function(t,e){"top"===t?this._topOccupied-=e.height:"bottom"===t?this._bottomOccupied-=e.height:"left"===t?this._leftOccupied-=e.width:"right"===t&&(this._rightOccupied-=e.width)},w.prototype.getFreeSpace=function(){return{x1:this._x1+this._leftOccupied,y1:this._y1+this._topOccupied,x2:this._x2-this._rightOccupied,y2:this._y2-this._bottomOccupied,width:this._x2-this._x1-this._rightOccupied-this._leftOccupied,height:this._y2-this._y1-this._bottomOccupied-this._topOccupied}},w.prototype.reset=function(){this._topOccupied=this._padding,this._bottomOccupied=this._padding,this._leftOccupied=this._padding,this._rightOccupied=this._padding},t(L,C),L.prototype.render=function(t){t&&this.ctx.save();var e=this.ctx.font;this.ctx.textBaseline=this.textBaseline;var i=0;this._isDirty&&this.measureText(this.ctx),this.ctx.translate(this.x,this.y+i),"middle"===this.textBaseline&&(i=-this._lineHeight/2),this.ctx.font=this._getFontString(),this.ctx.rotate(Math.PI/180*this.angle);var a=0,n=this.padding,s=null;(this.borderThickness>0&&this.borderColor||this.backgroundColor)&&this.ctx.roundRect(0,i,this.width,this.height,this.cornerRadius,this.borderThickness,this.backgroundColor,this.borderColor),this.ctx.fillStyle=this.fontColor;for(var o=0;oe))break;s=o-1}}a>e&&r.length>1&&(r=r.substr(0,r.length-1),a=this.ctx.measureText(r).width);var l=!0;if(r.length!==t.length&&" "!==t[r.length]||(l=!1),l){var h=r.split(" ");h.length>1&&h.pop(),r=h.join(" "),a=this.ctx.measureText(r).width}return{text:r,width:a}},L.prototype._wrapText=function(){var t=new String(o(String(this.text))),e=[],i=this.ctx.font,a=0,n=0;for(this.ctx.font=this._getFontString();t.length>0;){var s=this.maxWidth-2*this.padding,r=this.maxHeight-2*this.padding,l=this._getLineWithWidth(t,s,!1);if(l.height=this._lineHeight,e.push(l),n=Math.max(n,l.width),a+=l.height,t=o(t.slice(l.text.length,t.length)),r&&a>r){var l=e.pop();a-=l.height}}this._wrappedText={lines:e,width:n,height:a},this.width=n+2*this.padding,this.height=a+2*this.padding,this.ctx.font=i},L.prototype._getFontString=function(){return v("",this,null)},t(I,C),I.prototype.render=function(){if(this.text){var t,e,i=this.dockInsidePlotArea?this.chart.plotArea:this.chart,a=i.layoutManager.getFreeSpace(),n=a.x1,s=a.y1,o=0,r=0,l=2,h=this.chart._menuButton&&this.chart.exportEnabled&&"top"===this.verticalAlign?22:0;"top"===this.verticalAlign||"bottom"===this.verticalAlign?(null===this.maxWidth&&(this.maxWidth=a.width-2*l-h*("center"===this.horizontalAlign?2:1)),r=.5*a.height-this.margin-l,o=0):"center"===this.verticalAlign&&("left"===this.horizontalAlign||"right"===this.horizontalAlign?(null===this.maxWidth&&(this.maxWidth=a.height-2*l),r=.5*a.width-this.margin-l):"center"===this.horizontalAlign&&(null===this.maxWidth&&(this.maxWidth=a.width-2*l),r=.5*a.height-2*l)),this.wrap||(r=Math.min(r,Math.max(1.5*this.fontSize,this.fontSize+2.5*this.padding)));var d=new L(this.ctx,{fontSize:this.fontSize,fontFamily:this.fontFamily,fontColor:this.fontColor,fontStyle:this.fontStyle,fontWeight:this.fontWeight,horizontalAlign:this.horizontalAlign,verticalAlign:this.verticalAlign,borderColor:this.borderColor,borderThickness:this.borderThickness,backgroundColor:this.backgroundColor,maxWidth:this.maxWidth,maxHeight:r,cornerRadius:this.cornerRadius,text:this.text,padding:this.padding,textBaseline:"top"}),c=d.measureText();"top"===this.verticalAlign||"bottom"===this.verticalAlign?("top"===this.verticalAlign?(s=a.y1+l,e="top"):"bottom"===this.verticalAlign&&(s=a.y2-l-c.height,e="bottom"),"left"===this.horizontalAlign?n=a.x1+l:"center"===this.horizontalAlign?n=a.x1+a.width/2-c.width/2:"right"===this.horizontalAlign&&(n=a.x2-l-c.width-h),t=this.horizontalAlign,this.width=c.width,this.height=c.height):"center"===this.verticalAlign&&("left"===this.horizontalAlign?(n=a.x1+l,s=a.y2-l-(this.maxWidth/2-c.width/2),o=-90,e="left",this.width=c.height,this.height=c.width):"right"===this.horizontalAlign?(n=a.x2-l,s=a.y1+l+(this.maxWidth/2-c.width/2),o=90,e="right",this.width=c.height,this.height=c.width):"center"===this.horizontalAlign&&(s=i.y1+(i.height/2-c.height/2),n=i.x1+(i.width/2-c.width/2),e="center",this.width=c.width,this.height=c.height),t="center"),d.x=n,d.y=s,d.angle=o,d.horizontalAlign=t,d.render(!0),i.layoutManager.registerSpace(e,{width:this.width+("left"===e||"right"===e?this.margin+l:0),height:this.height+("top"===e||"bottom"===e?this.margin+l:0)}),this.bounds={x1:n,y1:s,x2:n+this.width,y2:s+this.height},this.ctx.textBaseline="top"}},t(B,C),B.prototype.render=I.prototype.render,t(F,C),F.prototype.render=function(){var t=this.dockInsidePlotArea?this.chart.plotArea:this.chart,e=t.layoutManager.getFreeSpace(),i=null,a=0,n=0,s=0,o=0,r=[],l=[];"top"===this.verticalAlign||"bottom"===this.verticalAlign?(this.orientation="horizontal",i=this.verticalAlign,s=null!==this.maxWidth?this.maxWidth:.7*e.width,o=null!==this.maxHeight?this.maxHeight:.5*e.height):"center"===this.verticalAlign&&(this.orientation="vertical",i=this.horizontalAlign,s=null!==this.maxWidth?this.maxWidth:.5*e.width,o=null!==this.maxHeight?this.maxHeight:.7*e.height);for(var h=0;h0){var T=null,P=0,M=0,k=0;M=null!==this.itemWidth?null!==this.itemMaxWidth?Math.min(this.itemWidth,this.itemMaxWidth,s):Math.min(this.itemWidth,s):null!==this.itemMaxWidth?Math.min(this.itemMaxWidth,s):s,u=0===u?.6*this.lineHeight:u,M-=u+.1*this.horizontalSpacing;for(var h=0;hs)&&(T={items:[],width:0},l.push(T),this.height+=k,k=0),k=Math.max(k,v.textBlock.height),v.textBlock.x=T.width,v.textBlock.y=0,T.width+=Math.round(v.textBlock.width+.1*this.horizontalSpacing+u+(0===T.width?0:this.horizontalSpacing)+("line"===v.chartType||"spline"===v.chartType||"stepLine"===v.chartType?2*(.1*this.lineHeight):0)),T.items.push(v),this.width=Math.max(T.width,this.width)):(v.textBlock=new L(this.ctx,{x:0,y:0,maxWidth:M,maxHeight:this.itemWrap===!0?o:1.5*this.fontSize,angle:0,text:v.text,horizontalAlign:"left",fontSize:this.fontSize,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontColor:this.fontColor,fontStyle:this.fontStyle,textBaseline:"top"}),v.textBlock.measureText(),null!==this.itemWidth&&(v.textBlock.width=this.itemWidth-(u+.1*this.horizontalSpacing+("line"===v.chartType||"spline"===v.chartType||"stepLine"===v.chartType?2*(.1*this.lineHeight):0))),this.height<=o?(T={items:[],width:0},l.push(T)):(T=l[P],P=(P+1)%l.length),this.height+=v.textBlock.height,v.textBlock.x=T.width,v.textBlock.y=0,T.width+=Math.round(v.textBlock.width+.1*this.horizontalSpacing+u+(0===T.width?0:this.horizontalSpacing)+("line"===v.chartType||"spline"===v.chartType||"stepLine"===v.chartType?2*(.1*this.lineHeight):0)),T.items.push(v),this.width=Math.max(T.width,this.width)))}this.itemWrap===!1?this.height=l.length*this.lineHeight:this.height+=k,this.height=Math.min(o,this.height),this.width=Math.min(s,this.width)}"top"===this.verticalAlign?(n="left"===this.horizontalAlign?e.x1:"right"===this.horizontalAlign?e.x2-this.width:e.x1+e.width/2-this.width/2,a=e.y1):"center"===this.verticalAlign?(n="left"===this.horizontalAlign?e.x1:"right"===this.horizontalAlign?e.x2-this.width:e.x1+e.width/2-this.width/2,a=e.y1+e.height/2-this.height/2):"bottom"===this.verticalAlign&&(n="left"===this.horizontalAlign?e.x1:"right"===this.horizontalAlign?e.x2-this.width:e.x1+e.width/2-this.width/2,a=e.y2-this.height),this.items=r;for(var h=0;h0?Math.max(k,v.textBlock.height):v.textBlock.height,this.chart.data[v.dataSeriesIndex].visible||(this.ctx.globalAlpha=1);var I=d(v.id);this.ghostCtx.fillStyle=I,this.ghostCtx.beginPath(),this.ghostCtx.fillRect(w,v.textBlock.y,v.textBlock.x+v.textBlock.width-w,v.textBlock.height),v.x1=this.chart._eventManager.objectMap[v.id].x1=w,v.y1=this.chart._eventManager.objectMap[v.id].y1=v.textBlock.y,v.x2=this.chart._eventManager.objectMap[v.id].x2=v.textBlock.x+v.textBlock.width,v.y2=this.chart._eventManager.objectMap[v.id].y2=v.textBlock.y+v.textBlock.height}S+=k}t.layoutManager.registerSpace(i,{width:this.width+2+2,height:this.height+5+5}),this.bounds={x1:n,y1:a,x2:n+this.width,y2:a+this.height}},t(X,C),X.prototype.render=function(){var t=this.chart.layoutManager.getFreeSpace();this.ctx.fillStyle="red",this.ctx.fillRect(t.x1,t.y1,t.x2,t.y2)},t(z,C),z.prototype.getDefaultAxisPlacement=function(){var t=this.type;return"column"===t||"line"===t||"stepLine"===t||"spline"===t||"area"===t||"stepArea"===t||"splineArea"===t||"stackedColumn"===t||"stackedLine"===t||"bubble"===t||"scatter"===t||"stackedArea"===t||"stackedColumn100"===t||"stackedLine100"===t||"stackedArea100"===t||"candlestick"===t||"ohlc"===t||"rangeColumn"===t||"rangeArea"===t||"rangeSplineArea"===t?"normal":"bar"===t||"stackedBar"===t||"stackedBar100"===t||"rangeBar"===t?"xySwapped":"pie"===t||"doughnut"===t||"funnel"===t?"none":null},z.getDefaultLegendMarker=function(t){return"column"===t||"stackedColumn"===t||"stackedLine"===t||"bar"===t||"stackedBar"===t||"stackedBar100"===t||"bubble"===t||"scatter"===t||"stackedColumn100"===t||"stackedLine100"===t||"stepArea"===t||"candlestick"===t||"ohlc"===t||"rangeColumn"===t||"rangeBar"===t||"rangeArea"===t||"rangeSplineArea"===t?"square":"line"===t||"stepLine"===t||"spline"===t||"pie"===t||"doughnut"===t||"funnel"===t?"circle":"area"===t||"splineArea"===t||"stackedArea"===t||"stackedArea100"===t?"triangle":null},z.prototype.getDataPointAtX=function(t,e){if(!this.dataPoints||0===this.dataPoints.length)return null;var i={dataPoint:null,distance:1/0,index:NaN},a=null,n=0,s=0,o=1,r=1/0,l=0,h=0,d=1e3,c=0;if("none"!==this.chart.plotInfo.axisPlacement){var x=this.dataPoints[this.dataPoints.length-1].x-this.dataPoints[0].x;c=x>0?Math.min(Math.max((this.dataPoints.length-1)/x*(t-this.dataPoints[0].x)>>0,0),this.dataPoints.length):0}for(;;){if(s=o>0?c+n:c-n,s>=0&&s0?l++:h++,l>d&&h>d)break}else if(c-n<0&&c+n>=this.dataPoints.length)break;o===-1?(n++,o=1):o=-1}return e||i.dataPoint.x!==t?e&&null!==i.dataPoint?i:null:i},z.prototype.getDataPointAtXY=function(t,e,i){if(!this.dataPoints||0===this.dataPoints.length)return null;i=i||!1;var a=[],n=0,s=0,o=1,r=!1,l=1/0,h=0,d=0,c=1e3,x=0;if("none"!==this.chart.plotInfo.axisPlacement){var p=this.chart.axisX.getXValueAt({x:t,y:e}),m=this.dataPoints[this.dataPoints.length-1].x-this.dataPoints[0].x;x=m>0?Math.min(Math.max((this.dataPoints.length-1)/m*(p-this.dataPoints[0].x)>>0,0),this.dataPoints.length):0}for(;;){if(s=o>0?x+n:x-n,s>=0&&s=g.x1&&t<=g.x2&&e>=g.y1&&e<=g.y2&&(a.push({dataPoint:y,dataPointIndex:s,dataSeries:this,distance:Math.min(Math.abs(g.x1-t),Math.abs(g.x2-t),Math.abs(g.y1-e),Math.abs(g.y2-e))}),r=!0);break;case"line":case"stepLine":case"spline":case"area":case"stepArea":case"stackedArea":case"stackedArea100":case"splineArea":case"scatter":var f=b("markerSize",y,this)||4,T=i?20:f;v=Math.sqrt(Math.pow(g.x1-t,2)+Math.pow(g.y1-e,2)),v<=T&&a.push({dataPoint:y,dataPointIndex:s,dataSeries:this,distance:v});var P=Math.abs(g.x1-t);P<=l?l=P:o>0?h++:d++,v<=f/2&&(r=!0);break;case"rangeArea":case"rangeSplineArea":var f=b("markerSize",y,this)||4,T=i?20:f;v=Math.min(Math.sqrt(Math.pow(g.x1-t,2)+Math.pow(g.y1-e,2)),Math.sqrt(Math.pow(g.x1-t,2)+Math.pow(g.y2-e,2))),v<=T&&a.push({dataPoint:y,dataPointIndex:s,dataSeries:this,distance:v});var P=Math.abs(g.x1-t);P<=l?l=P:o>0?h++:d++,v<=f/2&&(r=!0);break;case"bubble":var f=g.size;v=Math.sqrt(Math.pow(g.x1-t,2)+Math.pow(g.y1-e,2)),v<=f/2&&(a.push({dataPoint:y,dataPointIndex:s,dataSeries:this,distance:v}),r=!0);break;case"pie":case"doughnut":var M=g.center,k="doughnut"===this.type?.6*g.radius:0;if(v=Math.sqrt(Math.pow(M.x-t,2)+Math.pow(M.y-e,2)),vk){var S=e-M.y,C=t-M.x,A=Math.atan2(S,C);A<0&&(A+=2*Math.PI),A=Number(((A/Math.PI*180%360+360)%360).toFixed(12));var _=Number(((g.startAngle/Math.PI*180%360+360)%360).toFixed(12)),w=Number(((g.endAngle/Math.PI*180%360+360)%360).toFixed(12)); 0===w&&g.endAngle>1&&(w=360),_>=w&&0!==y.y&&(w+=360,A<_&&(A+=360)),A>_&&A=g.x1-g.borderThickness/2&&t<=g.x2+g.borderThickness/2&&e>=g.y2-g.borderThickness/2&&e<=g.y3+g.borderThickness/2||Math.abs(g.x2-t+g.x1-t)=g.y1&&e<=g.y4)&&(a.push({dataPoint:y,dataPointIndex:s,dataSeries:this,distance:Math.min(Math.abs(g.x1-t),Math.abs(g.x2-t),Math.abs(g.y2-e),Math.abs(g.y3-e))}),r=!0);break;case"ohlc":(Math.abs(g.x2-t+g.x1-t)=g.y2&&e<=g.y3||t>=g.x1&&t<=(g.x2+g.x1)/2&&e>=g.y1-g.borderThickness/2&&e<=g.y1+g.borderThickness/2||t>=(g.x1+g.x2)/2&&t<=g.x2&&e>=g.y4-g.borderThickness/2&&e<=g.y4+g.borderThickness/2)&&(a.push({dataPoint:y,dataPointIndex:s,dataSeries:this,distance:Math.min(Math.abs(g.x1-t),Math.abs(g.x2-t),Math.abs(g.y2-e),Math.abs(g.y3-e))}),r=!0)}if(r||h>c&&d>c)break}}else if(x-n<0&&x+n>=this.dataPoints.length)break;o===-1?(n++,o=1):o=-1}for(var L=null,I=0;I>0:this.labelMaxWidth:"undefined"==typeof this._options.labelMaxWidth?.7*this.chart.width>>0:this.labelMaxWidth,s="undefined"==typeof this._options.labelWrap||this.labelWrap?.5*this.chart.height>>0:1.5*this.labelFontSize):"left"!==this._position&&"right"!==this._position||(o=this.lineCoordinates.height/Math.abs(this.maximum-this.minimum)*this.interval,n=this.labelAutoFit?"undefined"==typeof this._options.labelMaxWidth?.3*this.chart.width>>0:this.labelMaxWidth:"undefined"==typeof this._options.labelMaxWidth?.5*this.chart.width>>0:this.labelMaxWidth,s="undefined"==typeof this._options.labelWrap||this.labelWrap?2*o>>0:1.5*this.labelFontSize),"axisX"===this.type&&"dateTime"===this.chart.plotInfo.axisXValueType)for(e=a(new Date(this.maximum),this.interval,this.intervalType),i=this.intervalstartTimePercent;ix?i.maximum=i.interval*c+i.minimum:x>c&&(e.maximum=e.interval*x+e.minimum)}var p=(e&&e.lineThickness?e.lineThickness:0,i&&i.lineThickness?i.lineThickness:0,e&&e.gridThickness?e.gridThickness:0,i&&i.gridThickness?i.gridThickness:0,e?e.margin:0);e?e.margin:0;if("normal"===a){t.lineCoordinates={};var m=Math.ceil(e?e.createLabelsAndCalculateWidth():0);s=Math.round(n.x1+m+p),t.lineCoordinates.x1=s;var u=Math.ceil(i?i.createLabelsAndCalculateWidth():0);r=Math.round(n.x2-u>t.chart.width-10?t.chart.width-10:n.x2-u),t.lineCoordinates.x2=r,t.lineCoordinates.width=Math.abs(r-s);var g=Math.ceil(t.createLabelsAndCalculateHeight());o=Math.round(n.y2-g-t.margin),l=Math.round(n.y2-t.margin),t.lineCoordinates.y1=o,t.lineCoordinates.y2=o,t.boundingRect={x1:s,y1:o,x2:r,y2:l,width:r-s,height:l-o},e&&(s=Math.round(n.x1+e.margin),o=Math.round(n.y1<10?10:n.y1),r=Math.round(n.x1+m+e.margin),l=Math.round(n.y2-g-t.margin),e.lineCoordinates={x1:r,y1:o,x2:r,y2:l,height:Math.abs(l-o)},e.boundingRect={x1:s,y1:o,x2:r,y2:l,width:r-s,height:l-o}),i&&(s=Math.round(t.lineCoordinates.x2),o=Math.round(n.y1<10?10:n.y1),r=Math.round(s+u+i.margin),l=Math.round(n.y2-g-t.margin),i.lineCoordinates={x1:s,y1:o,x2:s,y2:l,height:Math.abs(l-o)},i.boundingRect={x1:s,y1:o,x2:r,y2:l,width:r-s,height:l-o}),t.calculateValueToPixelconversionParameters(),e&&e.calculateValueToPixelconversionParameters(),i&&i.calculateValueToPixelconversionParameters(),d.save(),d.rect(5,t.boundingRect.y1,t.chart.width-10,t.boundingRect.height),d.clip(),t.renderLabelsTicksAndTitle(),d.restore(),e&&e.renderLabelsTicksAndTitle(),i&&i.renderLabelsTicksAndTitle(),h.preparePlotArea();var y=t.chart.plotArea;d.save(),d.rect(y.x1,y.y1,Math.abs(y.x2-y.x1),Math.abs(y.y2-y.y1)),d.clip(),t.renderStripLinesOfThicknessType("value"),e&&e.renderStripLinesOfThicknessType("value"),i&&i.renderStripLinesOfThicknessType("value"),t.renderInterlacedColors(),e&&e.renderInterlacedColors(),i&&i.renderInterlacedColors(),d.restore(),t.renderGrid(),e&&e.renderGrid(),i&&i.renderGrid(),t.renderAxisLine(),e&&e.renderAxisLine(),i&&i.renderAxisLine(),t.renderStripLinesOfThicknessType("pixel"),e&&e.renderStripLinesOfThicknessType("pixel"),i&&i.renderStripLinesOfThicknessType("pixel")}else{var v=Math.ceil(t.createLabelsAndCalculateWidth());e&&(e.lineCoordinates={},s=Math.round(n.x1+v+t.margin),r=Math.round(n.x2>e.chart.width-10?e.chart.width-10:n.x2),e.lineCoordinates.x1=s,e.lineCoordinates.x2=r,e.lineCoordinates.width=Math.abs(r-s)),i&&(i.lineCoordinates={},s=Math.round(n.x1+v+t.margin),r=Math.round(n.x2>i.chart.width-10?i.chart.width-10:n.x2),i.lineCoordinates.x1=s,i.lineCoordinates.x2=r,i.lineCoordinates.width=Math.abs(r-s));var b=Math.ceil(e?e.createLabelsAndCalculateHeight():0),f=Math.ceil(i?i.createLabelsAndCalculateHeight():0);e&&(o=Math.round(n.y2-b-e.margin),l=Math.round(n.y2-p>e.chart.height-10?e.chart.height-10:n.y2-p),e.lineCoordinates.y1=o,e.lineCoordinates.y2=o,e.boundingRect={x1:s,y1:o,x2:r,y2:l,width:r-s,height:b}),i&&(o=Math.round(n.y1+i.margin),l=n.y1+i.margin+f,i.lineCoordinates.y1=l,i.lineCoordinates.y2=l,i.boundingRect={x1:s,y1:o,x2:r,y2:l,width:r-s,height:f}),s=Math.round(n.x1+t.margin),o=Math.round(i?i.lineCoordinates.y2:n.y1<10?10:n.y1),r=Math.round(n.x1+v+t.margin),l=Math.round(e?e.lineCoordinates.y1:n.y2-p>t.chart.height-10?t.chart.height-10:n.y2-p),t.lineCoordinates={x1:r,y1:o,x2:r,y2:l,height:Math.abs(l-o)},t.boundingRect={x1:s,y1:o,x2:r,y2:l,width:r-s,height:l-o},t.calculateValueToPixelconversionParameters(),e&&e.calculateValueToPixelconversionParameters(),i&&i.calculateValueToPixelconversionParameters(),e&&e.renderLabelsTicksAndTitle(),i&&i.renderLabelsTicksAndTitle(),t.renderLabelsTicksAndTitle(),h.preparePlotArea();var y=t.chart.plotArea;d.save(),d.rect(y.x1,y.y1,Math.abs(y.x2-y.x1),Math.abs(y.y2-y.y1)),d.clip(),t.renderStripLinesOfThicknessType("value"),e&&e.renderStripLinesOfThicknessType("value"),i&&i.renderStripLinesOfThicknessType("value"),t.renderInterlacedColors(),e&&e.renderInterlacedColors(),i&&i.renderInterlacedColors(),d.restore(),t.renderGrid(),e&&e.renderGrid(),i&&i.renderGrid(),t.renderAxisLine(),e&&e.renderAxisLine(),i&&i.renderAxisLine(),t.renderStripLinesOfThicknessType("pixel"),e&&e.renderStripLinesOfThicknessType("pixel"),i&&i.renderStripLinesOfThicknessType("pixel")}},D.prototype.renderLabelsTicksAndTitle=function(){var t=!1,e=0,i=1,a=0;this.conversionParameters.pixelPerUnit*this.interval;if(0!==this.labelAngle&&360!==this.labelAngle&&(i=1.2),"undefined"==typeof this._options.interval){if("bottom"===this._position||"top"===this._position){for(r=0;rthis.lineCoordinates.width*i&&(t=!0)}if("left"===this._position||"right"===this._position){for(r=0;rthis.lineCoordinates.height*i&&(t=!0)}}if("bottom"===this._position){var s,o,r=0;for(r=0;rthis.maximum)){if(o=this.getPixelCoordinatesOnAxis(s.position),this.tickThickness&&!this._labels[r].stripLine||this._labels[r].stripLine&&"pixel"===this._labels[r].stripLine._thicknessType){this._labels[r].stripLine?(h=this._labels[r].stripLine,this.ctx.lineWidth=h.thickness,this.ctx.strokeStyle=h.color):(this.ctx.lineWidth=this.tickThickness,this.ctx.strokeStyle=this.tickColor);var l=this.ctx.lineWidth%2===1?(o.x<<0)+.5:o.x<<0;this.ctx.beginPath(),this.ctx.moveTo(l,o.y<<0),this.ctx.lineTo(l,o.y+this.tickLength<<0),this.ctx.stroke()}t&&a++%2!==0&&!this._labels[r].stripLine||(0===s.textBlock.angle?(o.x-=s.textBlock.width/2,o.y+=this.tickLength+s.textBlock.fontSize/2):(o.x-=this.labelAngle<0?s.textBlock.width*Math.cos(Math.PI/180*this.labelAngle):0,o.y+=this.tickLength+Math.abs(this.labelAngle<0?s.textBlock.width*Math.sin(Math.PI/180*this.labelAngle)-5:5)),s.textBlock.x=o.x,s.textBlock.y=o.y,s.textBlock.render(!0))}this.title&&(this._titleTextBlock=new L(this.ctx,{x:this.lineCoordinates.x1,y:this.boundingRect.y2-this.titleFontSize-5,maxWidth:this.lineCoordinates.width,maxHeight:1.5*this.titleFontSize,angle:0,text:this.title,horizontalAlign:"center",fontSize:this.titleFontSize,fontFamily:this.titleFontFamily,fontWeight:this.titleFontWeight,fontColor:this.titleFontColor,fontStyle:this.titleFontStyle,textBaseline:"top"}),this._titleTextBlock.measureText(),this._titleTextBlock.x=this.lineCoordinates.x1+this.lineCoordinates.width/2-this._titleTextBlock.width/2,this._titleTextBlock.y=this.boundingRect.y2-this._titleTextBlock.height-3,this._titleTextBlock.render(!0))}else if("top"===this._position){var s,o,h,r=0;for(r=0;rthis.maximum)){if(o=this.getPixelCoordinatesOnAxis(s.position),this.tickThickness&&!this._labels[r].stripLine||this._labels[r].stripLine&&"pixel"===this._labels[r].stripLine._thicknessType){this._labels[r].stripLine?(h=this._labels[r].stripLine,this.ctx.lineWidth=h.thickness,this.ctx.strokeStyle=h.color):(this.ctx.lineWidth=this.tickThickness,this.ctx.strokeStyle=this.tickColor);var l=this.ctx.lineWidth%2===1?(o.x<<0)+.5:o.x<<0;this.ctx.beginPath(),this.ctx.moveTo(l,o.y<<0),this.ctx.lineTo(l,o.y-this.tickLength<<0),this.ctx.stroke()}t&&a++%2!==0&&!this._labels[r].stripLine||(0===s.textBlock.angle?(o.x-=s.textBlock.width/2,o.y-=this.tickLength+s.textBlock.height/2):(o.x-=this.labelAngle>0?s.textBlock.width*Math.cos(Math.PI/180*this.labelAngle):0,o.y-=this.tickLength+Math.abs(this.labelAngle>0?s.textBlock.width*Math.sin(Math.PI/180*this.labelAngle)+5:5)),s.textBlock.x=o.x,s.textBlock.y=o.y,s.textBlock.render(!0))}this.title&&(this._titleTextBlock=new L(this.ctx,{x:this.lineCoordinates.x1,y:this.boundingRect.y1+1,maxWidth:this.lineCoordinates.width,maxHeight:1.5*this.titleFontSize,angle:0,text:this.title,horizontalAlign:"center",fontSize:this.titleFontSize,fontFamily:this.titleFontFamily,fontWeight:this.titleFontWeight,fontColor:this.titleFontColor,fontStyle:this.titleFontStyle,textBaseline:"top"}),this._titleTextBlock.measureText(),this._titleTextBlock.x=this.lineCoordinates.x1+this.lineCoordinates.width/2-this._titleTextBlock.width/2,this._titleTextBlock.render(!0))}else if("left"===this._position){for(var s,o,r=0;rthis.maximum)){if(o=this.getPixelCoordinatesOnAxis(s.position),this.tickThickness&&!this._labels[r].stripLine||this._labels[r].stripLine&&"pixel"===this._labels[r].stripLine._thicknessType){this._labels[r].stripLine?(h=this._labels[r].stripLine,this.ctx.lineWidth=h.thickness,this.ctx.strokeStyle=h.color):(this.ctx.lineWidth=this.tickThickness,this.ctx.strokeStyle=this.tickColor);var d=this.ctx.lineWidth%2===1?(o.y<<0)+.5:o.y<<0;this.ctx.beginPath(),this.ctx.moveTo(o.x<<0,d),this.ctx.lineTo(o.x-this.tickLength<<0,d),this.ctx.stroke()}t&&a++%2!==0&&!this._labels[r].stripLine||(s.textBlock.x=o.x-s.textBlock.width*Math.cos(Math.PI/180*this.labelAngle)-this.tickLength-5,0===this.labelAngle?s.textBlock.y=o.y:s.textBlock.y=o.y-s.textBlock.width*Math.sin(Math.PI/180*this.labelAngle),s.textBlock.render(!0))}if(this.title){this._titleTextBlock=new L(this.ctx,{x:this.boundingRect.x1+1,y:this.lineCoordinates.y2,maxWidth:this.lineCoordinates.height,maxHeight:1.5*this.titleFontSize,angle:-90,text:this.title,horizontalAlign:"center",fontSize:this.titleFontSize,fontFamily:this.titleFontFamily,fontWeight:this.titleFontWeight,fontColor:this.titleFontColor,fontStyle:this.titleFontStyle,textBaseline:"top"});this._titleTextBlock.measureText();this._titleTextBlock.y=this.lineCoordinates.height/2+this._titleTextBlock.width/2+this.lineCoordinates.y1,this._titleTextBlock.render(!0)}}else if("right"===this._position){for(var s,o,r=0;rthis.maximum)){if(o=this.getPixelCoordinatesOnAxis(s.position),this.tickThickness&&!this._labels[r].stripLine||this._labels[r].stripLine&&"pixel"===this._labels[r].stripLine._thicknessType){this._labels[r].stripLine?(h=this._labels[r].stripLine,this.ctx.lineWidth=h.thickness,this.ctx.strokeStyle=h.color):(this.ctx.lineWidth=this.tickThickness,this.ctx.strokeStyle=this.tickColor);var d=this.ctx.lineWidth%2===1?(o.y<<0)+.5:o.y<<0;this.ctx.beginPath(),this.ctx.moveTo(o.x<<0,d),this.ctx.lineTo(o.x+this.tickLength<<0,d),this.ctx.stroke()}t&&a++%2!==0&&!this._labels[r].stripLine||(s.textBlock.x=o.x+this.tickLength+5,0===this.labelAngle?s.textBlock.y=o.y:s.textBlock.y=o.y,s.textBlock.render(!0))}this.title&&(this._titleTextBlock=new L(this.ctx,{x:this.boundingRect.x2-1,y:this.lineCoordinates.y2,maxWidth:this.lineCoordinates.height,maxHeight:1.5*this.titleFontSize,angle:90,text:this.title,horizontalAlign:"center",fontSize:this.titleFontSize,fontFamily:this.titleFontFamily,fontWeight:this.titleFontWeight,fontColor:this.titleFontColor,fontStyle:this.titleFontStyle,textBaseline:"top"}),this._titleTextBlock.measureText(),this._titleTextBlock.y=this.lineCoordinates.height/2-this._titleTextBlock.width/2+this.lineCoordinates.y1,this._titleTextBlock.render(!0))}},D.prototype.renderInterlacedColors=function(){var t,e,i=this.chart.plotArea.ctx,a=this.chart.plotArea,n=0,s=!0;if("bottom"!==this._position&&"top"!==this._position||!this.interlacedColor){if(("left"===this._position||"right"===this._position)&&this.interlacedColor)for(i.fillStyle=this.interlacedColor,n=0;n=this._labels.length-1?this.getPixelCoordinatesOnAxis(this.maximum):this.getPixelCoordinatesOnAxis(this._labels[n+1].position),i.fillRect(a.x1,t.y,Math.abs(a.x1-a.x2),Math.abs(t.y-e.y)),s=!1):s=!0)}else for(i.fillStyle=this.interlacedColor,n=0;n=this._labels.length-1?this.getPixelCoordinatesOnAxis(this.maximum):this.getPixelCoordinatesOnAxis(this._labels[n+1].position),i.fillRect(t.x,a.y1,Math.abs(e.x-t.x),Math.abs(a.y1-a.y2)),s=!1):s=!0);i.beginPath()},D.prototype.renderStripLinesOfThicknessType=function(t){if(this.stripLines&&this.stripLines.length>0&&t){var e=0;for(e=0;ethis.maximum)||(i.showOnTop?this.chart.addEventListener("dataAnimationIterationEnd",i.render,i):i.render()))}}},D.prototype.renderGrid=function(){if(this.gridThickness&&this.gridThickness>0){var t,e=this.chart.ctx,i=this.chart.plotArea;if(e.lineWidth=this.gridThickness,e.strokeStyle=this.gridColor,e.setLineDash&&e.setLineDash(u(this.gridDashType,this.gridThickness)),"bottom"===this._position||"top"===this._position){for(n=0;nthis.maximum)){e.beginPath(),t=this.getPixelCoordinatesOnAxis(this._labels[n].position);var a=e.lineWidth%2===1?(t.x<<0)+.5:t.x<<0;e.moveTo(a,i.y1<<0),e.lineTo(a,i.y2<<0),e.stroke()}}else if("left"===this._position||"right"===this._position)for(var n=0;nthis.maximum)){e.beginPath(),t=this.getPixelCoordinatesOnAxis(this._labels[n].position);var s=e.lineWidth%2===1?(t.y<<0)+.5:t.y<<0;e.moveTo(i.x1<<0,s),e.lineTo(i.x2<<0,s),e.stroke()}}},D.prototype.renderAxisLine=function(){var t=this.chart.ctx;if("bottom"===this._position||"top"===this._position){if(this.lineThickness){t.lineWidth=this.lineThickness,t.strokeStyle=this.lineColor?this.lineColor:"black",t.setLineDash&&t.setLineDash(u(this.lineDashType,this.lineThickness));var e=this.lineThickness%2===1?(this.lineCoordinates.y1<<0)+.5:this.lineCoordinates.y1<<0;t.beginPath(),t.moveTo(this.lineCoordinates.x1,e),t.lineTo(this.lineCoordinates.x2,e),t.stroke()}}else if(("left"===this._position||"right"===this._position)&&this.lineThickness){t.lineWidth=this.lineThickness,t.strokeStyle=this.lineColor,t.setLineDash&&t.setLineDash(u(this.lineDashType,this.lineThickness));var i=this.lineThickness%2===1?(this.lineCoordinates.x1<<0)+.5:this.lineCoordinates.x1<<0;t.beginPath(),t.moveTo(i,this.lineCoordinates.y1),t.lineTo(i,this.lineCoordinates.y2),t.stroke()}},D.prototype.getPixelCoordinatesOnAxis=function(t){var e={},i=this.lineCoordinates.width,a=this.lineCoordinates.height;if("bottom"===this._position||"top"===this._position){var n=i/Math.abs(this.maximum-this.minimum);e.x=this.lineCoordinates.x1+n*(t-this.minimum),e.y=this.lineCoordinates.y1}if("left"===this._position||"right"===this._position){var n=a/Math.abs(this.maximum-this.minimum);e.y=this.lineCoordinates.y2-n*(t-this.minimum),e.x=this.lineCoordinates.x2}return e},D.prototype.getXValueAt=function(t){if(!t)return null;var e=null;return"left"===this._position?e=(this.chart.axisX.maximum-this.chart.axisX.minimum)/this.chart.axisX.lineCoordinates.height*(this.chart.axisX.lineCoordinates.y2-t.y)+this.chart.axisX.minimum:"bottom"===this._position&&(e=(this.chart.axisX.maximum-this.chart.axisX.minimum)/this.chart.axisX.lineCoordinates.width*(t.x-this.chart.axisX.lineCoordinates.x1)+this.chart.axisX.minimum),e},D.prototype.calculateValueToPixelconversionParameters=function(t){var e={pixelPerUnit:null,minimum:null,reference:null},i=this.lineCoordinates.width,a=this.lineCoordinates.height;e.minimum=this.minimum,"bottom"!==this._position&&"top"!==this._position||(e.pixelPerUnit=i/Math.abs(this.maximum-this.minimum),e.reference=this.lineCoordinates.x1),"left"!==this._position&&"right"!==this._position||(e.pixelPerUnit=-1*a/Math.abs(this.maximum-this.minimum),e.reference=this.lineCoordinates.y2),this.conversionParameters=e},D.prototype.calculateAxisParameters=function(){var t=this.chart.layoutManager.getFreeSpace(),e=!1;"bottom"===this._position||"top"===this._position?(this.maxWidth=t.width,this.maxHeight=t.height):(this.maxWidth=t.height,this.maxHeight=t.width);var i,a,n,s,o="axisX"===this.type?this.maxWidth<500?8:Math.max(6,Math.floor(this.maxWidth/62)):Math.max(Math.floor(this.maxWidth/40),2),r=0;if("axisX"===this.type?(i=null!==this.sessionVariables.internalMinimum?this.sessionVariables.internalMinimum:this.dataInfo.viewPortMin,a=null!==this.sessionVariables.internalMaximum?this.sessionVariables.internalMaximum:this.dataInfo.viewPortMax,a-i===0&&(r="undefined"==typeof this._options.interval?.4:this._options.interval,a+=r,i-=r),this.dataInfo.minDiff!==1/0?n=this.dataInfo.minDiff:a-i>1?n=.5*Math.abs(a-i):(n=1,"dateTime"===this.chart.plotInfo.axisXValueType&&(e=!0))):"axisY"===this.type&&(i="undefined"==typeof this._options.minimum||null===this._options.minimum?this.dataInfo.viewPortMin:this._options.minimum,a="undefined"==typeof this._options.maximum||null===this._options.maximum?this.dataInfo.viewPortMax:this._options.maximum,isFinite(i)||isFinite(a)?0===i&&0===a?(a+=9,i=0):a-i===0?(r=Math.min(Math.abs(.01*Math.abs(a)),5),a+=r,i-=r):i>a?(r=Math.min(Math.abs(.01*Math.abs(a-i)),5),a>=0?i=a-r:a=i+r):(r=Math.min(Math.abs(.01*Math.abs(a-i)),.05),0!==a&&(a+=r),0!==i&&(i-=r)):(a="undefined"==typeof this._options.interval?-(1/0):this._options.interval,i=0),!this.includeZero||"undefined"!=typeof this._options.minimum&&null!==this._options.minimum||i>0&&(i=0),!this.includeZero||"undefined"!=typeof this._options.maximum&&null!==this._options.maximum||a<0&&(a=0)),"axisX"===this.type&&"dateTime"===this.chart.plotInfo.axisXValueType?(s=a-i,this.intervalType||(s/1<=o?(this.interval=1,this.intervalType="millisecond"):s/2<=o?(this.interval=2,this.intervalType="millisecond"):s/5<=o?(this.interval=5,this.intervalType="millisecond"):s/10<=o?(this.interval=10,this.intervalType="millisecond"):s/20<=o?(this.interval=20,this.intervalType="millisecond"):s/50<=o?(this.interval=50,this.intervalType="millisecond"):s/100<=o?(this.interval=100,this.intervalType="millisecond"):s/200<=o?(this.interval=200,this.intervalType="millisecond"):s/250<=o?(this.interval=250,this.intervalType="millisecond"):s/300<=o?(this.interval=300,this.intervalType="millisecond"):s/400<=o?(this.interval=400,this.intervalType="millisecond"):s/500<=o?(this.interval=500,this.intervalType="millisecond"):s/(1*G.secondDuration)<=o?(this.interval=1,this.intervalType="second"):s/(2*G.secondDuration)<=o?(this.interval=2,this.intervalType="second"):s/(5*G.secondDuration)<=o?(this.interval=5,this.intervalType="second"):s/(10*G.secondDuration)<=o?(this.interval=10,this.intervalType="second"):s/(15*G.secondDuration)<=o?(this.interval=15,this.intervalType="second"):s/(20*G.secondDuration)<=o?(this.interval=20,this.intervalType="second"):s/(30*G.secondDuration)<=o?(this.interval=30,this.intervalType="second"):s/(1*G.minuteDuration)<=o?(this.interval=1,this.intervalType="minute"):s/(2*G.minuteDuration)<=o?(this.interval=2,this.intervalType="minute"):s/(5*G.minuteDuration)<=o?(this.interval=5,this.intervalType="minute"):s/(10*G.minuteDuration)<=o?(this.interval=10,this.intervalType="minute"):s/(15*G.minuteDuration)<=o?(this.interval=15,this.intervalType="minute"):s/(20*G.minuteDuration)<=o?(this.interval=20,this.intervalType="minute"):s/(30*G.minuteDuration)<=o?(this.interval=30,this.intervalType="minute"):s/(1*G.hourDuration)<=o?(this.interval=1,this.intervalType="hour"):s/(2*G.hourDuration)<=o?(this.interval=2,this.intervalType="hour"):s/(3*G.hourDuration)<=o?(this.interval=3,this.intervalType="hour"):s/(6*G.hourDuration)<=o?(this.interval=6,this.intervalType="hour"):s/(1*G.dayDuration)<=o?(this.interval=1,this.intervalType="day"):s/(2*G.dayDuration)<=o?(this.interval=2,this.intervalType="day"):s/(4*G.dayDuration)<=o?(this.interval=4,this.intervalType="day"):s/(1*G.weekDuration)<=o?(this.interval=1,this.intervalType="week"):s/(2*G.weekDuration)<=o?(this.interval=2,this.intervalType="week"):s/(3*G.weekDuration)<=o?(this.interval=3,this.intervalType="week"):s/(1*G.monthDuration)<=o?(this.interval=1,this.intervalType="month"):s/(2*G.monthDuration)<=o?(this.interval=2,this.intervalType="month"):s/(3*G.monthDuration)<=o?(this.interval=3,this.intervalType="month"):s/(6*G.monthDuration)<=o?(this.interval=6,this.intervalType="month"):s/(1*G.yearDuration)<=o?(this.interval=1,this.intervalType="year"):s/(2*G.yearDuration)<=o?(this.interval=2,this.intervalType="year"):s/(4*G.yearDuration)<=o?(this.interval=4,this.intervalType="year"):(this.interval=Math.floor(D.getNiceNumber(s/(o-1),!0)/G.yearDuration),this.intervalType="year")),null!==this.sessionVariables.internalMinimum?this.minimum=this.sessionVariables.internalMinimum:this.minimum=i-n/2,null!==this.sessionVariables.internalMaximum?this.maximum=this.sessionVariables.internalMaximum:this.maximum=a+n/2,this.valueFormatString||(e?this.valueFormatString="MMM DD YYYY HH:mm":"year"===this.intervalType?this.valueFormatString="YYYY":"month"===this.intervalType?this.valueFormatString="MMM YYYY":"week"===this.intervalType?this.valueFormatString="MMM DD YYYY":"day"===this.intervalType?this.valueFormatString="MMM DD YYYY":"hour"===this.intervalType?this.valueFormatString="hh:mm TT":"minute"===this.intervalType?this.valueFormatString="hh:mm TT":"second"===this.intervalType?this.valueFormatString="hh:mm:ss TT":"millisecond"===this.intervalType&&(this.valueFormatString="fff'ms'")),this.intervalstartTimePercent=this.getLabelStartPoint(new Date(this.minimum),this.intervalType,this.interval)):(this.intervalType="number",s=D.getNiceNumber(a-i,!1),this._options&&this._options.interval?this.interval=this._options.interval:this.interval=D.getNiceNumber(s/(o-1),!0),null!==this.sessionVariables.internalMinimum?this.minimum=this.sessionVariables.internalMinimum:this.minimum=Math.floor(i/this.interval)*this.interval,null!==this.sessionVariables.internalMaximum?this.maximum=this.sessionVariables.internalMaximum:this.maximum=Math.ceil(a/this.interval)*this.interval,0===this.maximum&&0===this.minimum&&(0===this._options.minimum?this.maximum+=10:0===this._options.maximum&&(this.minimum-=10),this._options&&"undefined"==typeof this._options.interval&&(this.interval=D.getNiceNumber((this.maximum-this.minimum)/(o-1),!0))),"axisX"===this.type?(null===this.sessionVariables.internalMinimum&&(this.minimum=i-n/2),null===this.sessionVariables.internalMaximum&&(this.maximum=a+n/2),this.intervalstartTimePercent=Math.floor((this.minimum+.2*this.interval)/this.interval)*this.interval):"axisY"===this.type&&(this.intervalstartTimePercent=this.minimum)),"axisX"===this.type&&(this._absoluteMinimum=this._options&&"undefined"!=typeof this._options.minimum?this._options.minimum:this.dataInfo.min-n/2,this._absoluteMaximum=this._options&&"undefined"!=typeof this._options.maximum?this._options.maximum:this.dataInfo.max+n/2),!this.valueFormatString&&(this.valueFormatString="#,##0.##",s=Math.abs(this.maximum-this.minimum),s<1)){var l=Math.floor(Math.abs(Math.log(s)/Math.LN10))+2;if(!isNaN(l)&&isFinite(l)||(l=2),l>2)for(var h=0;h0&&(i.setSeconds(i.getSeconds()+1),i.setMilliseconds(0)):"minute"===this.intervalType?(i.getSeconds()>0||i.getMilliseconds()>0)&&(i.setMinutes(i.getMinutes()+1),i.setSeconds(0),i.setMilliseconds(0)):"hour"===this.intervalType?(i.getMinutes()>0||i.getSeconds()>0||i.getMilliseconds()>0)&&(i.setHours(i.getHours()+1),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)):"day"===this.intervalType?(i.getHours()>0||i.getMinutes()>0||i.getSeconds()>0||i.getMilliseconds()>0)&&(i.setDate(i.getDate()+1),i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)):"week"===this.intervalType?(i.getDay()>0||i.getHours()>0||i.getMinutes()>0||i.getSeconds()>0||i.getMilliseconds()>0)&&(i.setDate(i.getDate()+(7-i.getDay())),i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)):"month"===this.intervalType?(i.getDate()>1||i.getHours()>0||i.getMinutes()>0||i.getSeconds()>0||i.getMilliseconds()>0)&&(i.setMonth(i.getMonth()+1),i.setDate(1),i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)):"year"===this.intervalType&&(i.getMonth()>0||i.getDate()>1||i.getHours()>0||i.getMinutes()>0||i.getSeconds()>0||i.getMilliseconds()>0)&&(i.setFullYear(i.getFullYear()+1),i.setMonth(0),i.setDate(1),i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0))),i},t(Y,C),Y.prototype.render=function(){var t=this.parent.getPixelCoordinatesOnAxis(this.value),e=Math.abs("pixel"===this._thicknessType?this.thickness:this.parent.conversionParameters.pixelPerUnit*this.thickness);if(e>0){var i=null===this.opacity?1:this.opacity;this.ctx.strokeStyle=this.color,this.ctx.beginPath();var a=this.ctx.globalAlpha;this.ctx.globalAlpha=i;var n,s,o,r;d(this.id); if(this.ctx.lineWidth=e,this.ctx.setLineDash&&this.ctx.setLineDash(u(this.lineDashType,e)),"bottom"===this.parent._position||"top"===this.parent._position){var l=this.ctx.lineWidth%2===1?(t.x<<0)+.5:t.x<<0;n=s=l,o=this.chart.plotArea.y1,r=this.chart.plotArea.y2}else if("left"===this.parent._position||"right"===this.parent._position){var h=this.ctx.lineWidth%2===1?(t.y<<0)+.5:t.y<<0;o=r=h,n=this.chart.plotArea.x1,s=this.chart.plotArea.x2}this.ctx.moveTo(n,o),this.ctx.lineTo(s,r),this.ctx.stroke(),this.ctx.globalAlpha=a}},t(W,C),W.prototype._initialize=function(){if(this.enabled){this.container=document.createElement("div"),this.container.setAttribute("class","canvasjs-chart-tooltip"),this.container.style.position="absolute",this.container.style.height="auto",this.container.style.boxShadow="1px 1px 2px 2px rgba(0,0,0,0.1)",this.container.style.zIndex="1000",this.container.style.display="none";var t='
=0&&(h.dataSeries=this.chart.data[l],null!==h.dataPoint.y&&r.push(h))}if(0===r.length)return;r.sort(function(t,e){return t.distance-e.distance});var d=r[0];for(l=0;l0&&"undefined"!=typeof this.chart._eventManager.objectMap[x]){if(eventObject=this.chart._eventManager.objectMap[x],"legendItem"===eventObject.objectType)return;this.currentSeriesIndex=eventObject.dataSeriesIndex,this.currentDataPointIndex=eventObject.dataPointIndex>=0?eventObject.dataPointIndex:-1}else this.currentDataPointIndex=-1}else this.currentDataPointIndex=-1;if(this.currentSeriesIndex>=0){n=this.chart.data[this.currentSeriesIndex];var h={};if(this.currentDataPointIndex>=0)a=n.dataPoints[this.currentDataPointIndex],h.dataSeries=n,h.dataPoint=a,h.index=this.currentDataPointIndex,h.distance=Math.abs(a.x-o);else{if(!this.enabled||"line"!==n.type&&"stepLine"!==n.type&&"spline"!==n.type&&"area"!==n.type&&"stepArea"!==n.type&&"splineArea"!==n.type&&"stackedArea"!==n.type&&"stackedArea100"!==n.type&&"rangeArea"!==n.type&&"rangeSplineArea"!==n.type&&"candlestick"!==n.type&&"ohlc"!==n.type)return;var o=(this.chart.axisX.maximum-this.chart.axisX.minimum)/this.chart.axisX.lineCoordinates.width*(t-this.chart.axisX.lineCoordinates.x1)+this.chart.axisX.minimum.valueOf();h=n.getDataPointAtX(o,!0),h.dataSeries=n,this.currentDataPointIndex=h.index,a=h.dataPoint}null!==h.dataPoint.y&&s.push(h)}}if(s.length>0&&(this.highlightObjects(s),this.enabled)){var p="";if(p=this.getToolTipInnerHTML({entries:s}),null!==p){this.contentDiv.innerHTML=p,this.contentDiv.innerHTML=p;var m=!1;"none"===this.container.style.display&&(m=!0,this.container.style.display="block");try{this.contentDiv.style.background=this.backgroundColor?this.backgroundColor:R?"rgba(255,255,255,.9)":"rgb(255,255,255)",this.contentDiv.style.borderRightColor=this.contentDiv.style.borderLeftColor=this.contentDiv.style.borderColor=this.borderColor?this.borderColor:s[0].dataPoint.color?s[0].dataPoint.color:s[0].dataSeries.color?s[0].dataSeries.color:s[0].dataSeries._colorSet[s[0].index%s[0].dataSeries._colorSet.length],this.contentDiv.style.borderWidth=this.borderThickness||0===this.borderThickness?this.borderThickness+"px":"2px",this.contentDiv.style.borderRadius=this.cornerRadius||0===this.cornerRadius?this.cornerRadius+"px":"5px",this.container.style.borderRadius=this.contentDiv.style.borderRadius,this.contentDiv.style.fontSize=this.fontSize||0===this.fontSize?this.fontSize+"px":"14px",this.contentDiv.style.color=this.fontColor?this.fontColor:"#000000",this.contentDiv.style.fontFamily=this.fontFamily?this.fontFamily:"Calibri, Arial, Georgia, serif;",this.contentDiv.style.fontWeight=this.fontWeight?this.fontWeight:"normal",this.contentDiv.style.fontStyle=this.fontStyle?this.fontStyle:R?"italic":"normal"}catch(t){}"pie"===s[0].dataSeries.type||"doughnut"===s[0].dataSeries.type||"funnel"===s[0].dataSeries.type||"bar"===s[0].dataSeries.type||"rangeBar"===s[0].dataSeries.type||"stackedBar"===s[0].dataSeries.type||"stackedBar100"===s[0].dataSeries.type?toolTipLeft=t-10-this.container.clientWidth:(toolTipLeft=this.chart.axisX.lineCoordinates.width/Math.abs(this.chart.axisX.maximum-this.chart.axisX.minimum)*Math.abs(s[0].dataPoint.x-this.chart.axisX.minimum)+this.chart.axisX.lineCoordinates.x1+.5-this.container.clientWidth<<0,toolTipLeft-=10),toolTipLeft<0&&(toolTipLeft+=this.container.clientWidth+20),toolTipLeft+this.container.clientWidth>this.chart._container.clientWidth&&(toolTipLeft=Math.max(0,this.chart._container.clientWidth-this.container.clientWidth)),toolTipLeft+="px",i=1!==s.length||this.shared||"line"!==s[0].dataSeries.type&&"stepLine"!==s[0].dataSeries.type&&"spline"!==s[0].dataSeries.type&&"area"!==s[0].dataSeries.type&&"stepArea"!==s[0].dataSeries.type&&"splineArea"!==s[0].dataSeries.type&&"stackedArea"!==s[0].dataSeries.type&&"stackedArea100"!==s[0].dataSeries.type?"bar"===s[0].dataSeries.type||"rangeBar"===s[0].dataSeries.type||"stackedBar"===s[0].dataSeries.type||"stackedBar100"===s[0].dataSeries.type?s[0].dataSeries.axisX.lineCoordinates.y2-s[0].dataSeries.axisX.lineCoordinates.height/Math.abs(s[0].dataSeries.axisX.maximum-s[0].dataSeries.axisX.minimum)*Math.abs(s[0].dataPoint.x-s[0].dataSeries.axisX.minimum)+.5<<0:e:s[0].dataSeries.axisY.lineCoordinates.y2-s[0].dataSeries.axisY.lineCoordinates.height/Math.abs(s[0].dataSeries.axisY.maximum-s[0].dataSeries.axisY.minimum)*Math.abs(s[0].dataPoint.y-s[0].dataSeries.axisY.minimum)+.5<<0,i=-i+10,i+this.container.clientHeight+5>0&&(i-=i+this.container.clientHeight+5-0),i+="px",this.container.style.left=toolTipLeft,this.container.style.bottom=i,!this.animationEnabled||m?this.disableAnimation():this.enableAnimation()}else this.hide(!1)}}},W.prototype.highlightObjects=function(t){var e=this.chart.overlaidCanvasCtx;this.chart.resetOverlayedCanvas(),e.save();for(var i=(this.chart.plotArea,0),a=0;a{name}:  {y}":"bubble"===a.type?o+=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:"{name}:  {y},   {z}":"pie"===a.type||"doughnut"===a.type||"funnel"===a.type?o+=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:"  {y}":"rangeColumn"===a.type||"rangeBar"===a.type||"rangeArea"===a.type||"rangeSplineArea"===a.type?o+=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:"{name}:  {y[0]}, {y[1]}":"candlestick"!==a.type&&"ohlc"!==a.type||(o+=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:"{name}:
Open:   {y[0]}
High:    {y[1]}
Low:   {y[2]}
Close:   {y[3]}"),null===i&&(i=""),this.reversed===!0?(i=this.chart.replaceKeywordsWithValue(o,n,a,s)+i,l"+i)):(i+=this.chart.replaceKeywordsWithValue(o,n,a,s),l")));null!==i&&(i=d+i)}else{if(a=e[0].dataSeries,n=e[0].dataPoint,s=e[0].index,null===n.toolTipContent||"undefined"==typeof n.toolTipContent&&null===a._options.toolTipContent)return null;"line"===a.type||"stepLine"===a.type||"spline"===a.type||"area"===a.type||"stepArea"===a.type||"splineArea"===a.type||"column"===a.type||"bar"===a.type||"scatter"===a.type||"stackedColumn"===a.type||"stackedColumn100"===a.type||"stackedBar"===a.type||"stackedBar100"===a.type||"stackedArea"===a.type||"stackedArea100"===a.type?o=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:""+(n.label?"{label}":"{x}")+" :  {y}":"bubble"===a.type?o=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:""+(n.label?"{label}":"{x}")+":  {y},   {z}":"pie"===a.type||"doughnut"===a.type||"funnel"===a.type?o=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:(n.name?"{name}:  ":n.label?"{label}:  ":"")+"{y}":"rangeColumn"===a.type||"rangeBar"===a.type||"rangeArea"===a.type||"rangeSplineArea"===a.type?o=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:""+(n.label?"{label}":"{x}")+" :  {y[0]},  {y[1]}":"candlestick"!==a.type&&"ohlc"!==a.type||(o=n.toolTipContent?n.toolTipContent:a.toolTipContent?a.toolTipContent:this.content&&"function"!=typeof this.content?this.content:""+(n.label?"{label}":"{x}")+"
Open:   {y[0]}
High:    {y[1]}
Low:     {y[2]}
Close:   {y[3]}"),null===i&&(i=""),i+=this.chart.replaceKeywordsWithValue(o,n,a,s)}return i},W.prototype.enableAnimation=function(){this.container.style.WebkitTransition||(this.container.style.WebkitTransition="left .2s ease-out, bottom .2s ease-out",this.container.style.MozTransition="left .2s ease-out, bottom .2s ease-out",this.container.style.MsTransition="left .2s ease-out, bottom .2s ease-out",this.container.style.transition="left .2s ease-out, bottom .2s ease-out")},W.prototype.disableAnimation=function(){this.container.style.WebkitTransition&&(this.container.style.WebkitTransition="",this.container.style.MozTransition="",this.container.style.MsTransition="",this.container.style.transition="")},W.prototype.hide=function(t){this.enabled&&(t="undefined"==typeof t||t,this.container.style.display="none",this.currentSeriesIndex=-1,this._prevX=NaN,this._prevY=NaN,t&&this.chart.resetOverlayedCanvas())},A.prototype.getPercentAndTotal=function(t,e){var a=null,n=null,s=null;if(t.type.indexOf("stacked")>=0)n=0,a=e.x.getTime?e.x.getTime():e.x,a in t.plotUnit.yTotals&&(n=t.plotUnit.yTotals[a],s=isNaN(e.y)?0:0===n?0:e.y/n*100);else if("pie"===t.type||"doughnut"===t.type){for(n=0,i=0;i=0||"pie"===i.type||"doughnut"===i.type)&&(t.indexOf("#percent")>=0||t.indexOf("#total")>=0)){var l="#percent",h="#total",d=this.getPercentAndTotal(i,e);h=d.total?d.total:h,l=isNaN(d.percent)?l:d.percent;do{var c="";if(i.percentFormatString)c=i.percentFormatString;else{c="#,##0.";var x=Math.max(Math.ceil(Math.log(1/Math.abs(l))/Math.LN10),2);!isNaN(x)&&isFinite(x)||(x=2);for(var p=0;p=0||t.indexOf("#total")>=0)}var m=function(t){if('"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1])return t.slice(1,t.length-1);var s=o(t.slice(1,t.length-1));s=s.replace("#index",n);var l=null;try{var h=s.match(/(.*?)\s*\[\s*(.*?)\s*\]/);h&&h.length>0&&(l=o(h[2]),s=o(h[1]))}catch(t){}var d=null;if("color"===s)return e.color?e.color:i.color?i.color:i._colorSet[a%i._colorSet.length];if(e.hasOwnProperty(s))d=e;else{if(!i.hasOwnProperty(s))return"";d=i}var c=d[s];return null!==l&&(c=c[l]),"x"===s?r.axisX&&"dateTime"===r.plotInfo.axisXValueType?Q(c,e.xValueFormatString?e.xValueFormatString:i.xValueFormatString?i.xValueFormatString:r.axisX&&r.axisX.valueFormatString?r.axisX.valueFormatString:"DD MMM YY",r._cultureInfo):Z(c,e.xValueFormatString?e.xValueFormatString:i.xValueFormatString?i.xValueFormatString:"#,##0.########",r._cultureInfo):"y"===s?Z(c,e.yValueFormatString?e.yValueFormatString:i.yValueFormatString?i.yValueFormatString:"#,##0.########",r._cultureInfo):"z"===s?Z(c,e.zValueFormatString?e.zValueFormatString:i.zValueFormatString?i.zValueFormatString:"#,##0.########",r._cultureInfo):c};return t.replace(s,m)},E.prototype.reset=function(){this.lastObjectId=0,this.objectMap=[],this.rectangularRegionEventSubscriptions=[],this.previousDataPointEventObject=null,this.eventObjects=[],R&&(this.ghostCtx.clearRect(0,0,this.chart.width,this.chart.height),this.ghostCtx.beginPath())},E.prototype.getNewObjectTrackingId=function(){return++this.lastObjectId},E.prototype.mouseEventHandler=function(t){if("mousemove"===t.type||"click"===t.type){var e=[],i=$(t),a=null;if(a=this.chart.getObjectAtXY(i.x,i.y,!1),a&&"undefined"!=typeof this.objectMap[a]){var n=this.objectMap[a];if("dataPoint"===n.objectType){var s=this.chart.data[n.dataSeriesIndex],o=s.dataPoints[n.dataPointIndex],r=n.dataPointIndex;n.eventParameter={x:i.x,y:i.y,dataPoint:o,dataSeries:s._options,dataPointIndex:r,dataSeriesIndex:s.index,chart:this.chart._publicChartReference},n.eventContext={context:o,userContext:o,mouseover:"mouseover",mousemove:"mousemove",mouseout:"mouseout",click:"click"},e.push(n),n=this.objectMap[s.id],n.eventParameter={x:i.x,y:i.y,dataPoint:o,dataSeries:s._options,dataPointIndex:r,dataSeriesIndex:s.index,chart:this.chart._publicChartReference},n.eventContext={context:s,userContext:s._options,mouseover:"mouseover",mousemove:"mousemove",mouseout:"mouseout",click:"click"},e.push(this.objectMap[s.id])}else if("legendItem"===n.objectType){var s=this.chart.data[n.dataSeriesIndex],o=null!==n.dataPointIndex?s.dataPoints[n.dataPointIndex]:null;n.eventParameter={x:i.x,y:i.y,dataSeries:s._options,dataPoint:o,dataPointIndex:n.dataPointIndex,dataSeriesIndex:n.dataSeriesIndex,chart:this.chart._publicChartReference},n.eventContext={context:this.chart.legend,userContext:this.chart.legend._options,mouseover:"itemmouseover",mousemove:"itemmousemove",mouseout:"itemmouseout",click:"itemclick"},e.push(n)}}for(var l=[],h=0;h0;){var r=this.animations.shift(),l=(new Date).getTime(),h=0;r.startTime<=l&&(h=n(Math.min(l-r.startTime,r.duration),0,1,r.duration),h=Math.min(h,1),!isNaN(h)&&isFinite(h)||(h=1)),h<1&&o.push(r),r.animationCallback(h),h>=1&&r.onComplete&&r.onComplete()}this.animations=o,this.animations.length>0?this.animationRequestId=this.chart.requestAnimFrame.call(window,function(){s.animate.call(s)}):this.chart.isAnimating=!1},V.prototype.cancelAllAnimations=function(){this.animations=[],this.animationRequestId&&this.chart.cancelRequestAnimFrame.call(window,this.animationRequestId),this.animationRequestId=null,this.chart.isAnimating=!1};var rt={yScaleAnimation:function(t,e){if(0!==t){var i=e.dest,a=e.source.canvas,n=e.animationBase,s=n-n*t;i.drawImage(a,0,0,a.width,a.height,0,s,i.canvas.width/at,t*i.canvas.height/at)}},xScaleAnimation:function(t,e){if(0!==t){var i=e.dest,a=e.source.canvas,n=e.animationBase,s=n-n*t;i.drawImage(a,0,0,a.width,a.height,s,0,t*i.canvas.width/at,i.canvas.height/at)}},xClipAnimation:function(t,e){if(0!==t){var i=e.dest,a=e.source.canvas;i.save(),t>0&&i.drawImage(a,0,0,a.width*t,a.height,0,0,a.width*t/at,a.height/at),i.restore()}},fadeInAnimation:function(t,e){if(0!==t){var i=e.dest,a=e.source.canvas;i.save(),i.globalAlpha=t,i.drawImage(a,0,0,a.width,a.height,0,0,i.canvas.width/at,i.canvas.height/at),i.restore()}},easing:{linear:function(t,e,i,a){return i*t/a+e},easeOutQuad:function(t,e,i,a){return-i*(t/=a)*(t-2)+e},easeOutQuart:function(t,e,i,a){return-i*((t=t/a-1)*t*t*t-1)+e},easeInQuad:function(t,e,i,a){return i*(t/=a)*t+e},easeInQuart:function(t,e,i,a){return i*(t/=a)*t*t*t+e}}},lt={drawMarker:function(t,e,i,a,n,s,o,r){if(i){var l=1;i.fillStyle=s?s:"#000000",i.strokeStyle=o?o:"#000000",i.lineWidth=r?r:0,"circle"===a?(i.moveTo(t,e),i.beginPath(),i.arc(t,e,n/2,0,2*Math.PI,!1),s&&i.fill(),r&&(o?i.stroke():(l=i.globalAlpha,i.globalAlpha=.15,i.strokeStyle="black",i.stroke(),i.globalAlpha=l))):"square"===a?(i.beginPath(),i.rect(t-n/2,e-n/2,n,n),s&&i.fill(),r&&(o?i.stroke():(l=i.globalAlpha,i.globalAlpha=.15,i.strokeStyle="black",i.stroke(),i.globalAlpha=l))):"triangle"===a?(i.beginPath(),i.moveTo(t-n/2,e+n/2),i.lineTo(t+n/2,e+n/2),i.lineTo(t,e-n/2),i.closePath(),s&&i.fill(),r&&(o?i.stroke():(l=i.globalAlpha,i.globalAlpha=.15,i.strokeStyle="black",i.stroke(),i.globalAlpha=l)),i.beginPath()):"cross"===a&&(i.strokeStyle=s,r=n/4,i.lineWidth=r,i.beginPath(),i.moveTo(t-n/2,e-n/2),i.lineTo(t+n/2,e+n/2),i.stroke(),i.moveTo(t+n/2,e-n/2),i.lineTo(t-n/2,e+n/2),i.stroke())}},drawMarkers:function(t){for(var e=0;e