-
-/**
- * Zoom to something containing [lowX, highX]. These are pixel coordinates
- * in the canvas. The exact zoom window may be slightly larger if there are no
- * data points near lowX or highX. This function redraws the graph.
- * @param {Number} lowX The leftmost pixel value that should be visible.
- * @param {Number} highX The rightmost pixel value that should be visible.
- * @private
- */
-DateGraph.prototype.doZoom_ = function(lowX, highX) {
- // Find the earliest and latest dates contained in this canvasx range.
- var points = this.layout_.points;
- var minDate = null;
- var maxDate = null;
- // Find the nearest [minDate, maxDate] that contains [lowX, highX]
- for (var i = 0; i < points.length; i++) {
- var cx = points[i].canvasx;
- var x = points[i].xval;
- if (cx < lowX && (minDate == null || x > minDate)) minDate = x;
- if (cx > highX && (maxDate == null || x < maxDate)) maxDate = x;
- }
- // Use the extremes if either is missing
- if (minDate == null) minDate = points[0].xval;
- if (maxDate == null) maxDate = points[points.length-1].xval;
-
- this.dateWindow_ = [minDate, maxDate];
- this.drawGraph_(this.rawData_);
- this.zoomCallback_(minDate, maxDate);
+Dygraph.prototype.mouseMove_=function(_110){
+var _111=_110.mouse().page.x-PlotKit.Base.findPosX(this.hidden_);
+var _112=this.layout_.points;
+var _113=-1;
+var _114=-1;
+var _115=1e+100;
+var idx=-1;
+for(var i=0;i<_112.length;i++){
+var dist=Math.abs(_112[i].canvasx-_111);
+if(dist>_115){
+break;
+}
+_115=dist;
+idx=i;
+}
+if(idx>=0){
+_113=_112[idx].xval;
+}
+if(_111>_112[_112.length-1].canvasx){
+_113=_112[_112.length-1].xval;
+}
+var _118=[];
+for(var i=0;i<_112.length;i++){
+if(_112[i].xval==_113){
+_118.push(_112[i]);
+}
+}
+var _119=this.attr_("highlightCircleSize");
+var ctx=this.canvas_.getContext("2d");
+if(this.previousVerticalX_>=0){
+var px=this.previousVerticalX_;
+ctx.clearRect(px-_119-1,0,2*_119+2,this.height_);
+}
+if(_118.length>0){
+var _111=_118[0].canvasx;
+var _120=this.attr_("xValueFormatter")(_113,this)+":";
+var clen=this.colors_.length;
+for(var i=0;i<_118.length;i++){
+if(this.attr_("labelsSeparateLines")){
+_120+="<br/>";
+}
+var _122=_118[i];
+_120+=" <b><font color='"+this.colors_[i%clen].toHexString()+"'>"+_122.name+"</font></b>:"+this.round_(_122.yval,2);
+}
+this.attr_("labelsDiv").innerHTML=_120;
+this.lastx_=_113;
+ctx.save();
+for(var i=0;i<_118.length;i++){
+ctx.beginPath();
+ctx.fillStyle=this.colors_[i%clen].toRGBString();
+ctx.arc(_111,_118[i%clen].canvasy,_119,0,360,false);
+ctx.fill();
+}
+ctx.restore();
+this.previousVerticalX_=_111;
+}
+};
+Dygraph.prototype.mouseOut_=function(_123){
+var ctx=this.canvas_.getContext("2d");
+ctx.clearRect(0,0,this.width_,this.height_);
+this.attr_("labelsDiv").innerHTML="";
+};
+Dygraph.zeropad=function(x){
+if(x<10){
+return "0"+x;
+}else{
+return ""+x;
+}
+};
+Dygraph.prototype.hmsString_=function(date){
+var _125=Dygraph.zeropad;
+var d=new Date(date);
+if(d.getSeconds()){
+return _125(d.getHours())+":"+_125(d.getMinutes())+":"+_125(d.getSeconds());
+}else{
+if(d.getMinutes()){
+return _125(d.getHours())+":"+_125(d.getMinutes());
+}else{
+return _125(d.getHours());
+}
+}
+};
+Dygraph.dateString_=function(date,self){
+var _128=Dygraph.zeropad;
+var d=new Date(date);
+var year=""+d.getFullYear();
+var _130=_128(d.getMonth()+1);
+var day=_128(d.getDate());
+var ret="";
+var frac=d.getHours()*3600+d.getMinutes()*60+d.getSeconds();
+if(frac){
+ret=" "+self.hmsString_(date);
+}
+return year+"/"+_130+"/"+day+ret;
+};
+Dygraph.prototype.round_=function(num,_134){
+var _135=Math.pow(10,_134);
+return Math.round(num*_135)/_135;
+};
+Dygraph.prototype.loadedEvent_=function(data){
+this.rawData_=this.parseCSV_(data);
+this.drawGraph_(this.rawData_);
+};
+Dygraph.prototype.months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
+Dygraph.prototype.quarters=["Jan","Apr","Jul","Oct"];
+Dygraph.prototype.addXTicks_=function(){
+var _137,endDate;
+if(this.dateWindow_){
+_137=this.dateWindow_[0];
+endDate=this.dateWindow_[1];
+}else{
+_137=this.rawData_[0][0];
+endDate=this.rawData_[this.rawData_.length-1][0];
+}
+var _138=this.attr_("xTicker")(_137,endDate,this);
+this.layout_.updateOptions({xTicks:_138});
+};
+Dygraph.SECONDLY=0;
+Dygraph.TEN_SECONDLY=1;
+Dygraph.THIRTY_SECONDLY=2;
+Dygraph.MINUTELY=3;
+Dygraph.TEN_MINUTELY=4;
+Dygraph.THIRTY_MINUTELY=5;
+Dygraph.HOURLY=6;
+Dygraph.SIX_HOURLY=7;
+Dygraph.DAILY=8;
+Dygraph.WEEKLY=9;
+Dygraph.MONTHLY=10;
+Dygraph.QUARTERLY=11;
+Dygraph.BIANNUAL=12;
+Dygraph.ANNUAL=13;
+Dygraph.DECADAL=14;
+Dygraph.NUM_GRANULARITIES=15;
+Dygraph.SHORT_SPACINGS=[];
+Dygraph.SHORT_SPACINGS[Dygraph.SECONDLY]=1000*1;
+Dygraph.SHORT_SPACINGS[Dygraph.TEN_SECONDLY]=1000*10;
+Dygraph.SHORT_SPACINGS[Dygraph.THIRTY_SECONDLY]=1000*30;
+Dygraph.SHORT_SPACINGS[Dygraph.MINUTELY]=1000*60;
+Dygraph.SHORT_SPACINGS[Dygraph.TEN_MINUTELY]=1000*60*10;
+Dygraph.SHORT_SPACINGS[Dygraph.THIRTY_MINUTELY]=1000*60*30;
+Dygraph.SHORT_SPACINGS[Dygraph.HOURLY]=1000*3600;
+Dygraph.SHORT_SPACINGS[Dygraph.HOURLY]=1000*3600*6;
+Dygraph.SHORT_SPACINGS[Dygraph.DAILY]=1000*86400;
+Dygraph.SHORT_SPACINGS[Dygraph.WEEKLY]=1000*604800;
+Dygraph.prototype.NumXTicks=function(_139,_140,_141){
+if(_141<Dygraph.MONTHLY){
+var _142=Dygraph.SHORT_SPACINGS[_141];
+return Math.floor(0.5+1*(_140-_139)/_142);
+}else{
+var _143=1;
+var _144=12;
+if(_141==Dygraph.QUARTERLY){
+_144=3;
+}
+if(_141==Dygraph.BIANNUAL){
+_144=2;
+}
+if(_141==Dygraph.ANNUAL){
+_144=1;
+}
+if(_141==Dygraph.DECADAL){
+_144=1;
+_143=10;
+}
+var _145=365.2524*24*3600*1000;
+var _146=1*(_140-_139)/_145;
+return Math.floor(0.5+1*_146*_144/_143);
+}
+};
+Dygraph.prototype.GetXAxis=function(_147,_148,_149){
+var _150=[];
+if(_149<Dygraph.MONTHLY){
+var _151=Dygraph.SHORT_SPACINGS[_149];
+var _152="%d%b";
+if(_149<Dygraph.HOURLY){
+_147=_151*Math.floor(0.5+_147/_151);
+}
+for(var t=_147;t<=_148;t+=_151){
+var d=new Date(t);
+var frac=d.getHours()*3600+d.getMinutes()*60+d.getSeconds();
+if(frac==0||_149>=Dygraph.DAILY){
+_150.push({v:t,label:new Date(t+3600*1000).strftime(_152)});
+}else{
+_150.push({v:t,label:this.hmsString_(t)});
+}
+}
+}else{
+var _154;
+var _155=1;
+if(_149==Dygraph.MONTHLY){
+_154=[0,1,2,3,4,5,6,7,8,9,10,11,12];
+}else{
+if(_149==Dygraph.QUARTERLY){
+_154=[0,3,6,9];
+}else{
+if(_149==Dygraph.BIANNUAL){
+_154=[0,6];
+}else{
+if(_149==Dygraph.ANNUAL){
+_154=[0];
+}else{
+if(_149==Dygraph.DECADAL){
+_154=[0];
+_155=10;
+}
+}
+}
+}
+}
+var _156=new Date(_147).getFullYear();
+var _157=new Date(_148).getFullYear();
+var _158=Dygraph.zeropad;
+for(var i=_156;i<=_157;i++){
+if(i%_155!=0){
+continue;
+}
+for(var j=0;j<_154.length;j++){
+var _159=i+"/"+_158(1+_154[j])+"/01";
+var t=Date.parse(_159);
+if(t<_147||t>_148){
+continue;
+}
+_150.push({v:t,label:new Date(t).strftime("%b %y")});
+}
+}
+}
+return _150;