1 /* Pretty handling of time axes.
3 Copyright (c) 2007-2013 IOLA and Ole Laursen.
4 Licensed under the MIT license.
6 Set axis.mode to "time" to enable. See the section "Time series data" in
9 */(function(e
){function n(e
,t
){return t
*Math
.floor(e
/t
)}function r(e
,t
,n
,r
){if(typeof e
.strftime
=="function")return e
.strftime(t
);var i=function(e
,t
){return e
=""+e
,t
=""+(t
==null?"0":t
),e
.length
==1?t
+e
:e
},s
=[],o
=!1,u
=e
.getHours(),a
=u
<12;n
==null&&(n
=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),r
==null&&(r
=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]);var f
;u
>12?f
=u
-12:u
==0?f
=12:f
=u
;for(var l
=0;l
<t
.length
;++l
){var c
=t
.charAt(l
);if(o
){switch(c
){case"a":c
=""+r
[e
.getDay()];break;case"b":c
=""+n
[e
.getMonth()];break;case"d":c
=i(e
.getDate());break;case"e":c
=i(e
.getDate()," ");break;case"h":case"H":c
=i(u
);break;case"I":c
=i(f
);break;case"l":c
=i(f
," ");break;case"m":c
=i(e
.getMonth()+1);break;case"M":c
=i(e
.getMinutes());break;case"q":c
=""+(Math
.floor(e
.getMonth()/3)+1);break;case"S":c=i(e.getSeconds());break;case"y":c=i(e.getFullYear()%100);break;case"Y":c=""+e.getFullYear();break;case"p":c=a?"am":"pm";break;case"P":c=a?"AM":"PM";break;case"w":c=""+e.getDay()}s.push(c),o=!1}else c=="%"?o=!0:s.push(c)}return s.join("")}function i(e){function t(e,t,n,r){e[t]=function(){return n[r].apply(n,arguments)}}var n={date:e};e.strftime!=undefined&&t(n,"strftime",e,"strftime"),t(n,"getTime",e,"getTime"),t(n,"setTime",e,"setTime");var r=["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds"];for(var i=0;i<r.length;i++)t(n,"get"+r[i],e,"getUTC"+r[i]),t(n,"set"+r[i],e,"setUTC"+r[i]);return n}function s(e,t){if(t.timezone=="browser")return new Date(e);if(!t.timezone||t.timezone=="utc")return i(new Date(e));if(typeof timezoneJS!="undefined"&&typeof timezoneJS.Date!="undefined"){var n=new timezoneJS.Date;return n.setTimezone(t.timezone),n.setTime(e),n}return i(new Date(e))}function l(t){t.hooks.processOptions.push(function(t,i){e.each(t.getAxes(),function(e,t){var i=t.options;i.mode=="time"&&(t.tickGenerator=function(e){var t=[],r=s(e.min,i),u=0,l=i.tickSize&&i.tickSize[1]==="quarter"||i.minTickSize&&i.minTickSize[1]==="quarter"?f:a;i.minTickSize!=null&&(typeof i.tickSize=="number"?u=i.tickSize:u=i.minTickSize[0]*o[i.minTickSize[1]]);for(var c=0;c<l.length-1;++c)if(e.delta<(l[c][0]*o[l[c][1]]+l[c+1][0]*o[l[c+1][1]])/2&&l
[c
][0]*o
[l
[c
][1]]>=u
)break;var h
=l
[c
][0],p
=l
[c
][1];if(p
=="year"){if(i
.minTickSize
!=null&&i
.minTickSize
[1]=="year")h
=Math
.floor(i
.minTickSize
[0]);else{var d
=Math
.pow(10,Math
.floor(Math
.log(e
.delta
/o.year)/Math
.LN10
)),v
=e
.delta
/o.year/d;v
<1.5?h
=1:v
<3?h
=2:v
<7.5?h
=5:h
=10,h
*=d
}h
<1&&(h
=1)}e
.tickSize
=i
.tickSize
||[h
,p
];var m
=e
.tickSize
[0];p
=e
.tickSize
[1];var g
=m
*o
[p
];p
=="second"?r
.setSeconds(n(r
.getSeconds(),m
)):p
=="minute"?r
.setMinutes(n(r
.getMinutes(),m
)):p
=="hour"?r
.setHours(n(r
.getHours(),m
)):p
=="month"?r
.setMonth(n(r
.getMonth(),m
)):p
=="quarter"?r
.setMonth(3*n(r
.getMonth()/3,m
)):p
=="year"&&r
.setFullYear(n(r
.getFullYear(),m
)),r
.setMilliseconds(0),g
>=o
.minute
&&r
.setSeconds(0),g
>=o
.hour
&&r
.setMinutes(0),g
>=o
.day
&&r
.setHours(0),g
>=o
.day
*4&&r
.setDate(1),g
>=o
.month
*2&&r
.setMonth(n(r
.getMonth(),3)),g
>=o
.quarter
*2&&r
.setMonth(n(r
.getMonth(),6)),g
>=o
.year
&&r
.setMonth(0);var y
=0,b
=Number
.NaN
,w
;do{w
=b
,b
=r
.getTime(),t
.push(b
);if(p
=="month"||p
=="quarter")if(m
<1){r
.setDate(1);var E
=r
.getTime();r
.setMonth(r
.getMonth()+(p
=="quarter"?3:1));var S
=r
.getTime();r
.setTime(b
+y
*o
.hour
+(S
-E
)*m
),y
=r
.getHours(),r
.setHours(0)}else r
.setMonth(r
.getMonth()+m
*(p
=="quarter"?3:1));else p
=="year"?r
.setFullYear(r
.getFullYear()+m
):r
.setTime(b
+g
)}while(b
<e
.max
&&b
!=w
);return t
},t
.tickFormatter=function(e
,t
){var n
=s(e
,t
.options
);if(i
.timeformat
!=null)return r(n
,i
.timeformat
,i
.monthNames
,i
.dayNames
);var u
=t
.options
.tickSize
&&t
.options
.tickSize
[1]=="quarter"||t
.options
.minTickSize
&&t
.options
.minTickSize
[1]=="quarter",a
=t
.tickSize
[0]*o
[t
.tickSize
[1]],f
=t
.max
-t
.min
,l
=i
.twelveHourClock
?" %p":"",c
=i
.twelveHourClock
?"%I":"%H",h
;a
<o
.minute
?h
=c
+":%M:%S"+l
:a
<o
.day
?f
<2*o
.day
?h
=c
+":%M"+l
:h
="%b %d "+c
+":%M"+l
:a
<o
.month
?h
="%b %d":u
&&a
<o
.quarter
||!u
&&a
<o
.year
?f
<o
.year
?h
="%b":h
="%b %Y":u
&&a
<o
.year
?f
<o
.year
?h
="Q%q":h
="Q%q %Y":h
="%Y";var p
=r(n
,h
,i
.monthNames
,i
.dayNames
);return p
})})})}var t
={xaxis
:{timezone
:null,timeformat
:null,twelveHourClock
:!1,monthNames
:null}},o
={second
:1e3
,minute
:6e4
,hour
:36e5
,day
:864e5
,month
:2592e6
,quarter
:7776e6
,year
:525949.2*60*1e3
},u
=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[.25,"month"],[.5,"month"],[1,"month"],[2,"month"]],a
=u
.concat([[3,"month"],[6,"month"],[1,"year"]]),f
=u
.concat([[1,"quarter"],[2,"quarter"],[1,"year"]]);e
.plot
.plugins
.push({init
:l
,options
:t
,name
:"time",version
:"1.0"}),e
.plot
.formatDate
=r
})(jQuery
);