/*==================================================
 *  Geochrono Labeller
 *==================================================
 */

Timeline.GeochronoLabeller = function(locale) {
    this._locale = locale;
};

Timeline.GeochronoLabeller.eonNames = [];
Timeline.GeochronoLabeller.eraNames = [];
Timeline.GeochronoLabeller.periodNames = [];
Timeline.GeochronoLabeller.epochNames = [];
Timeline.GeochronoLabeller.ageNames = [];

Timeline.GeochronoLabeller.prototype.labelInterval = function(date, intervalUnit) {
    var n = Timeline.GeochronoUnit.toNumber(date);
    var dates, names;
    switch (intervalUnit) {
    case Timeline.GeochronoUnit.AGE:
        dates = Timeline.Geochrono.ages;
        names = Timeline.GeochronoLabeller.ageNames; break;
    case Timeline.GeochronoUnit.EPOCH:
        dates = Timeline.Geochrono.epoches;
        names = Timeline.GeochronoLabeller.epochNames; break;
    case Timeline.GeochronoUnit.PERIOD:
        dates = Timeline.Geochrono.periods;
        names = Timeline.GeochronoLabeller.periodNames; break;
    case Timeline.GeochronoUnit.ERA:
        dates = Timeline.Geochrono.eras;
        names = Timeline.GeochronoLabeller.eraNames; break;
    case Timeline.GeochronoUnit.EON:
        dates = Timeline.Geochrono.eons;
        names = Timeline.GeochronoLabeller.eonNames; break;
    default:
        return { text: n, emphasized: false };
    }

    for (var i = dates.length - 1; i >= 0; i--) {
        if (n <= dates[i].start) {
            return {
                text: names[this._locale][i].name,
                emphasized: n == dates[i].start
            }
        }
    }
    return { text: n, emphasized: false };
};

Timeline.GeochronoLabeller.prototype.labelPrecise = function(date) {
    return Timeline.GeochronoUnit.toNumber(date) + "ma";
};
