+DateGraph.SECONDLY=0;
+DateGraph.TEN_SECONDLY=1;
+DateGraph.THIRTY_SECONDLY=2;
+DateGraph.MINUTELY=3;
+DateGraph.TEN_MINUTELY=4;
+DateGraph.THIRTY_MINUTELY=5;
+DateGraph.HOURLY=6;
+DateGraph.SIX_HOURLY=7;
+DateGraph.DAILY=8;
+DateGraph.WEEKLY=9;
+DateGraph.MONTHLY=10;
+DateGraph.QUARTERLY=11;
+DateGraph.BIANNUAL=12;
+DateGraph.ANNUAL=13;
+DateGraph.DECADAL=14;
+DateGraph.NUM_GRANULARITIES=15;
+DateGraph.SHORT_SPACINGS=[];
+DateGraph.SHORT_SPACINGS[DateGraph.SECONDLY]=1000*1;
+DateGraph.SHORT_SPACINGS[DateGraph.TEN_SECONDLY]=1000*10;
+DateGraph.SHORT_SPACINGS[DateGraph.THIRTY_SECONDLY]=1000*30;
+DateGraph.SHORT_SPACINGS[DateGraph.MINUTELY]=1000*60;
+DateGraph.SHORT_SPACINGS[DateGraph.TEN_MINUTELY]=1000*60*10;
+DateGraph.SHORT_SPACINGS[DateGraph.THIRTY_MINUTELY]=1000*60*30;
+DateGraph.SHORT_SPACINGS[DateGraph.HOURLY]=1000*3600;
+DateGraph.SHORT_SPACINGS[DateGraph.HOURLY]=1000*3600*6;
+DateGraph.SHORT_SPACINGS[DateGraph.DAILY]=1000*86400;
+DateGraph.SHORT_SPACINGS[DateGraph.WEEKLY]=1000*604800;
+DateGraph.prototype.NumXTicks=function(_131,_132,_133){
+if(_133<DateGraph.MONTHLY){
+var _134=DateGraph.SHORT_SPACINGS[_133];
+return Math.floor(0.5+1*(_132-_131)/_134);
+}else{
+var _135=1;
+var _136=12;
+if(_133==DateGraph.QUARTERLY){
+_136=3;
+}
+if(_133==DateGraph.BIANNUAL){
+_136=2;
+}
+if(_133==DateGraph.ANNUAL){
+_136=1;
+}
+if(_133==DateGraph.DECADAL){
+_136=1;
+_135=10;
+}
+var _137=365.2524*24*3600*1000;
+var _138=1*(_132-_131)/_137;
+return Math.floor(0.5+1*_138*_136/_135);
+}
+};
+DateGraph.prototype.GetXAxis=function(_139,_140,_141){
+var _142=[];
+if(_141<DateGraph.MONTHLY){
+var _143=DateGraph.SHORT_SPACINGS[_141];
+var _144="%d%b";
+if(_141<DateGraph.HOURLY){
+_139=_143*Math.floor(0.5+_139/_143);
+}
+for(var t=_139;t<=_140;t+=_143){
+var d=new Date(t);
+var frac=d.getHours()*3600+d.getMinutes()*60+d.getSeconds();
+if(frac==0||_141>=DateGraph.DAILY){
+_142.push({v:t,label:new Date(t+3600*1000).strftime(_144)});