| /*================================================== |
| * Gregorian Date Labeller |
| *================================================== |
| */ |
| |
| Timeline.GregorianDateLabeller = function(locale, timeZone) { |
| this._locale = locale; |
| this._timeZone = timeZone; |
| }; |
| |
| Timeline.GregorianDateLabeller.monthNames = []; |
| Timeline.GregorianDateLabeller.dayNames = []; |
| Timeline.GregorianDateLabeller.labelIntervalFunctions = []; |
| |
| Timeline.GregorianDateLabeller.getMonthName = function(month, locale) { |
| return Timeline.GregorianDateLabeller.monthNames[locale][month]; |
| }; |
| |
| Timeline.GregorianDateLabeller.prototype.labelInterval = function(date, intervalUnit) { |
| var f = Timeline.GregorianDateLabeller.labelIntervalFunctions[this._locale]; |
| if (f == null) { |
| f = Timeline.GregorianDateLabeller.prototype.defaultLabelInterval; |
| } |
| return f.call(this, date, intervalUnit); |
| }; |
| |
| Timeline.GregorianDateLabeller.prototype.labelPrecise = function(date) { |
| return Timeline.DateTime.removeTimeZoneOffset( |
| date, |
| this._timeZone //+ (new Date().getTimezoneOffset() / 60) |
| ).toUTCString(); |
| }; |
| |
| Timeline.GregorianDateLabeller.prototype.defaultLabelInterval = function(date, intervalUnit) { |
| var text; |
| var emphasized = false; |
| |
| date = Timeline.DateTime.removeTimeZoneOffset(date, this._timeZone); |
| |
| switch(intervalUnit) { |
| case Timeline.DateTime.MILLISECOND: |
| text = date.getUTCMilliseconds(); |
| break; |
| case Timeline.DateTime.SECOND: |
| text = date.getUTCSeconds(); |
| break; |
| case Timeline.DateTime.MINUTE: |
| var m = date.getUTCMinutes(); |
| if (m == 0) { |
| text = date.getUTCHours() + ":00"; |
| emphasized = true; |
| } else { |
| text = m; |
| } |
| break; |
| case Timeline.DateTime.HOUR: |
| text = date.getUTCHours() + "hr"; |
| break; |
| case Timeline.DateTime.DAY: |
| text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate(); |
| break; |
| case Timeline.DateTime.WEEK: |
| text = Timeline.GregorianDateLabeller.getMonthName(date.getUTCMonth(), this._locale) + " " + date.getUTCDate(); |
| break; |
| case Timeline.DateTime.MONTH: |
| var m = date.getUTCMonth(); |
| if (m != 0) { |
| text = Timeline.GregorianDateLabeller.getMonthName(m, this._locale); |
| break; |
| } // else, fall through |
| case Timeline.DateTime.YEAR: |
| case Timeline.DateTime.DECADE: |
| case Timeline.DateTime.CENTURY: |
| case Timeline.DateTime.MILLENNIUM: |
| var y = date.getUTCFullYear(); |
| if (y > 0) { |
| text = date.getUTCFullYear(); |
| } else { |
| text = (1 - y) + "BC"; |
| } |
| emphasized = |
| (intervalUnit == Timeline.DateTime.MONTH) || |
| (intervalUnit == Timeline.DateTime.DECADE && y % 100 == 0) || |
| (intervalUnit == Timeline.DateTime.CENTURY && y % 1000 == 0); |
| break; |
| default: |
| text = date.toUTCString(); |
| } |
| return { text: text, emphasized: emphasized }; |
| } |
| |