(function(){var e=window.AmCharts;e.AmSerialChart=e.Class({inherits:e.AmRectangularChart,construct:function(a){this.type="serial";e.AmSerialChart.base.construct.call(this,a);this.cname="AmSerialChart";this.theme=a;this.createEvents("changed");this.columnSpacing=5;this.columnSpacing3D=0;this.columnWidth=.8;this.updateScrollbar=!0;var b=new e.CategoryAxis(a);b.chart=this;this.categoryAxis=b;this.zoomOutOnDataUpdate=!0;this.mouseWheelZoomEnabled=this.mouseWheelScrollEnabled=this.rotate=this.skipZoom= !1;this.minSelectedTime=0;e.applyTheme(this,a,this.cname)},initChart:function(){e.AmSerialChart.base.initChart.call(this);this.updateCategoryAxis(this.categoryAxis,this.rotate,"categoryAxis");this.dataChanged&&(this.updateData(),this.dataChanged=!1,this.dispatchDataUpdated=!0);var a=this.chartCursor;a&&a.updateData&&(a.updateData(),a.fullWidth&&(a.fullRectSet=this.cursorLineSet));var a=this.countColumns(),b=this.graphs,c;for(c=0;ca?d?(g=this.endTime-this.startTime,d=this.startTime+c*f,f=this.endTime+e*f,0=k&&(f=k,d=k-g),this.zoomToDates(new Date(d),new Date(f))):(0=g-1&&(c=e=0),d=this.start+ c,f=this.end+e,this.zoomToIndexes(d,f)):d?(g=this.endTime-this.startTime,d=this.startTime-c*f,f=this.endTime-e*f,0this.start&&(c=e=0),d=this.start-c,f=this.end-e,this.zoomToIndexes(d,f))}},validateData:function(a){this.marginsUpdated=!1;this.zoomOutOnDataUpdate&&!a&&(this.endTime=this.end=this.startTime=this.start=NaN);e.AmSerialChart.base.validateData.call(this)},drawChart:function(){if(0c&&(a=b-c,this.updateScrollbar=!0),a!=this.startTime&&b-a>c&&(b=a+c,this.updateScrollbar=!0));var d=this.minSelectedTime;if(0k&&(a=k);bk&&(b=k);bc&&(a=b-c,this.updateScrollbar=!0),a!=this.start&&b-a>c&&(b=a+c,this.updateScrollbar=!0));if(a!=this.start||b!=this.end){var d=this.chartData.length-1;isNaN(a)&&(a=0,isNaN(c)||(a=d-c));isNaN(b)&&(b=d);bd&&(b=d);a>d&&(a=d-1);0>a&&(a=0);this.start=a;this.end=b;this.categoryAxis.zoom(a,b);this.zoomAxesAndGraphs(); this.zoomScrollbar();0!==a||b!=this.chartData.length-1?this.showZB(!0):this.showZB(!1);this.updateColumnsDepth();this.dispatchIndexZoomEvent()}},updateGraphs:function(){e.AmSerialChart.base.updateGraphs.call(this);var a=this.graphs,b;for(b=0;bb.depth?1:-1},zoomScrollbar:function(){var a=this.chartScrollbar,b=this.categoryAxis;a&&this.updateScrollbar&& a.enabled&&a.dragger&&(a.dragger.stop(),b.parseDates&&!b.equalSpacing?a.timeZoom(this.startTime,this.endTime):a.zoom(this.start,this.end),this.updateScrollbar=!0)},updateTrendLines:function(){var a=this.trendLines,b;for(b=0;be&&(e=0);h>a.length-1&&(h=a.length-1);var g=e+Math.round((h- e)/2),k=a[g][b];if(c==k)return g;if(1>=h-e){if(d)return e;d=a[h][b];return Math.abs(a[e][b]-c)a&&(a=0),b>d-1&&(b=d-1),d=this.categoryAxis,d.parseDates&&!d.equalSpacing?this.zoom(c[a].time,this.getEndTime(c[b].time)):this.zoom(a,b))}},zoomToDates:function(a,b){this.updateScrollbar=!0;var c=this.chartData; if(this.categoryAxis.equalSpacing){var d=this.getClosestIndex(c,"time",a.getTime(),!0,0,c.length);b=e.resetDateToMin(b,this.categoryAxis.minPeriod,1);c=this.getClosestIndex(c,"time",b.getTime(),!1,0,c.length);this.zoom(d,c)}else this.zoom(a.getTime(),b.getTime())},zoomToCategoryValues:function(a,b){this.updateScrollbar=!0;this.zoom(this.getCategoryIndexByValue(a),this.getCategoryIndexByValue(b))},formatPeriodString:function(a,b){if(b){var c=["value","open","low","high","close"],d="value open low high close average sum count".split(" "), f=b.valueAxis,h=this.chartData,g=b.numberFormatter;g||(g=this.nf);for(var k=0;kz.x||z.x>z.graph.height)D=NaN}else if(0>z.x||z.x>z.graph.width)D=NaN;if(!isNaN(D)){isNaN(q)&&(q=D);n=D;if(isNaN(x)||x>D)x=D;if(isNaN(y)||yz)u=z;if(isNaN(B)||Bb&&0===p&&(p=180):0>c&&270==p&&(p=90);this.gradientRotation=p;0===d&&0===e&&(this.cornerRadius=q);this.draw()},draw:function(){var a=this.set;a.clear(); var b=this.container,c=b.chart,d=this.w,f=this.h,h=this.dx,g=this.dy,k=this.colors,m=this.alpha,l=this.bwidth,p=this.bcolor,q=this.balpha,n=this.gradientRotation,x=this.cornerRadius,y=this.dashLength,w=this.pattern,r=this.topRadius,t=this.bcn,A=k,v=k;"object"==typeof k&&(A=k[0],v=k[k.length-1]);var u,B,C,I,z,D,F,L,M,Q=m;w&&(m=0);var E,G,H,J,K=this.rotate;if(0Math.abs(f)&&(f=0);1>Math.abs(d)&&(d=0);!isNaN(r)&&(0f&&(l=" A"),m+=l+Math.round(d/2-H)+","+Math.round(f-J)+","+Math.round(d/2+H)+","+Math.round(f+J)+",0,"+f+","+d+","+f,m+=" L"+d+",0",m+=l+Math.round(d/ 2+E)+","+Math.round(G)+","+Math.round(d/2-E)+","+Math.round(-G)+","+d+",0,0,0"):(m+="A"+H+","+J+",0,0,0,"+(d-d/2*(1-r))+","+f+"L"+d+",0",m+="A"+E+","+G+",0,0,1,0,0"),E=180),b=b.path(m).attr(k),b.gradient("linearGradient",[A,e.adjustLuminosity(A,-.3),e.adjustLuminosity(A,-.3),A],E),K?b.translate(h/2,0):b.translate(0,g/2)):b=0===f?e.line(b,[0,d],[0,0],p,q,l,y):0===d?e.line(b,[0,0],[0,f],p,q,l,y):0f?[u, M,B,C,I,z,D,F,L,b]:[F,L,B,C,I,z,u,M,D,b]:K?0f?[u,b,F]:[F,b,u];e.setCN(c,b,t+"front");e.setCN(c,B,t+"back");e.setCN(c,F,t+"top");e.setCN(c,u,t+"bottom");e.setCN(c,I,t+"left");e.setCN(c,z,t+"right");for(u=0;ub&&(this.endTime=b);t=this.minorGridEnabled;var A=this.gridAlpha,v,u=0,B=0;if(this.widthField)for(b=0;bn&&(n=0),a=0,this.end-n+1>=this.autoRotateCount&&(this.labelRotationR=this.autoRotateAngle),b=n;b<=this.end+2;b++){q= !1;0<=b&&bthis.end&&"start"==this.tickPosition&&(n=" ");this.rotate&&this.inside&&(r=-2);isNaN(w.widthValue)||(w.percentWidthValue=w.widthValue/u*100,C=this.rotate?this.height*w.widthValue/u:this.width*w.widthValue/u,p=B,B+=C,r=C/2);r=new this.axisItemRenderer(this,p,n,q,C,r,void 0,x,v,!1,w.labelColor,w.className); r.serialDataItem=w;this.pushAxisItem(r);this.gridAlpha=A}}else if(this.parseDates&&this.equalSpacing){h=this.start;this.startTime=this.data[this.start].time;this.endTime=this.data[this.end].time;this.timeDifference=this.endTime-this.startTime;b=this.choosePeriod(0);f=b.period;y=b.count;b=e.getPeriodDuration(f,y);bn&&(n=0);A=this.end+2;A>=this.data.length&&(A=this.data.length);B=!1;B=!m;this.previousPos=-1E3;20=a){p=this.getCoordinate(b-this.start);t=!1;this.nextPeriod[w]&&(t=this.checkPeriodChange(this.nextPeriod[w],1,g,x,w));x=!1;t&&this.markPeriodChange?(t=this.dateFormatsObject[this.nextPeriod[w]],x=!0):t=this.dateFormatsObject[w];n=e.formatDate(new Date(g),t,c);if(b==d&&!m||b==k&&!l)n=" ";B?B=!1:(q||(x=!1),p-this.previousPos>this.safeDistance*Math.cos(this.labelRotationR*Math.PI/ 180)&&(this.labelFunction&&(n=this.labelFunction(n,new Date(g),this,f,y,r)),this.boldLabels&&(x=!0),r=new this.axisItemRenderer(this,p,n,void 0,void 0,void 0,void 0,x),t=r.graphics(),this.pushAxisItem(r),t=t.getBBox().width,e.isModern||(t-=p),this.previousPos=p+t));r=x=g}}for(b=0;bthis.height+1&&c--:h>this.width+1&&c--;0>h&&c++;return c=e.fitToBounds(c,0,b.length-1)},dateToCoordinate:function(a){return this.parseDates&&!this.equalSpacing?(a.getTime()-this.startTime)*this.stepWidth:this.parseDates&&this.equalSpacing?(a=this.chart.getClosestIndex(this.data,"time",a.getTime(),!1,0,this.data.length-1),this.getCoordinate(a- this.start)):NaN},categoryToCoordinate:function(a){return this.chart?(a=this.chart.getCategoryIndexByValue(a),this.getCoordinate(a-this.start)):NaN},coordinateToDate:function(a){return this.equalSpacing?(a=this.xToIndex(a),new Date(this.data[a].time)):new Date(this.startTime+a/this.stepWidth)},getCoordinate:function(a){a*=this.stepWidth;this.startOnAxis||(a+=this.stepWidth/2);return Math.round(a)}})})();