//! moment.js locale configuration //! locale : Luxembourgish (lb) //! author : mweimerskirch : github.com/mweimerskirch, David Raison : github.com/kwisatz

import moment from ‘../moment’;

function processRelativeTime(number, withoutSuffix, key, isFuture) {

var format = {
    'm': ['eng Minutt', 'enger Minutt'],
    'h': ['eng Stonn', 'enger Stonn'],
    'd': ['een Dag', 'engem Dag'],
    'M': ['ee Mount', 'engem Mount'],
    'y': ['ee Joer', 'engem Joer']
};
return withoutSuffix ? format[key][0] : format[key][1];

} function processFutureTime(string) {

var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
    return 'a ' + string;
}
return 'an ' + string;

} function processPastTime(string) {

var number = string.substr(0, string.indexOf(' '));
if (eifelerRegelAppliesToNumber(number)) {
    return 'viru ' + string;
}
return 'virun ' + string;

} /**

* Returns true if the word before the given number loses the '-n' ending.
* e.g. 'an 10 Deeg' but 'a 5 Deeg'
*
* @param number {integer}
* @returns {boolean}
*/

function eifelerRegelAppliesToNumber(number) {

number = parseInt(number, 10);
if (isNaN(number)) {
    return false;
}
if (number < 0) {
    // Negative Number --> always true
    return true;
} else if (number < 10) {
    // Only 1 digit
    if (4 <= number && number <= 7) {
        return true;
    }
    return false;
} else if (number < 100) {
    // 2 digits
    var lastDigit = number % 10, firstDigit = number / 10;
    if (lastDigit === 0) {
        return eifelerRegelAppliesToNumber(firstDigit);
    }
    return eifelerRegelAppliesToNumber(lastDigit);
} else if (number < 10000) {
    // 3 or 4 digits --> recursively check first digit
    while (number >= 10) {
        number = number / 10;
    }
    return eifelerRegelAppliesToNumber(number);
} else {
    // Anything larger than 4 digits: recursively check first n-3 digits
    number = number / 1000;
    return eifelerRegelAppliesToNumber(number);
}

}

export default moment.defineLocale(‘lb’, {

months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
longDateFormat: {
    LT: 'H:mm [Auer]',
    LTS: 'H:mm:ss [Auer]',
    L: 'DD.MM.YYYY',
    LL: 'D. MMMM YYYY',
    LLL: 'D. MMMM YYYY LT',
    LLLL: 'dddd, D. MMMM YYYY LT'
},
calendar: {
    sameDay: '[Haut um] LT',
    sameElse: 'L',
    nextDay: '[Muer um] LT',
    nextWeek: 'dddd [um] LT',
    lastDay: '[Gëschter um] LT',
    lastWeek: function () {
        // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
        switch (this.day()) {
            case 2:
            case 4:
                return '[Leschten] dddd [um] LT';
            default:
                return '[Leschte] dddd [um] LT';
        }
    }
},
relativeTime : {
    future : processFutureTime,
    past : processPastTime,
    s : 'e puer Sekonnen',
    m : processRelativeTime,
    mm : '%d Minutten',
    h : processRelativeTime,
    hh : '%d Stonnen',
    d : processRelativeTime,
    dd : '%d Deeg',
    M : processRelativeTime,
    MM : '%d Méint',
    y : processRelativeTime,
    yy : '%d Joer'
},
ordinalParse: /\d{1,2}\./,
ordinal: '%d.',
week: {
    dow: 1, // Monday is the first day of the week.
    doy: 4  // The week that contains Jan 4th is the first week of the year.
}

});