//! moment.js locale configuration
//! locale : slovenian (sl)
//! author : Robert Sedovšek : https://github.com/sedovsek

import moment from '../moment';

function processRelativeTime(number, withoutSuffix, key, isFuture) {
    var result = number + ' ';
    switch (key) {
    case 's':
        return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
    case 'm':
        return withoutSuffix ? 'ena minuta' : 'eno minuto';
    case 'mm':
        if (number === 1) {
            result += withoutSuffix ? 'minuta' : 'minuto';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'minute' : 'minutami';
        } else {
            result += withoutSuffix || isFuture ? 'minut' : 'minutami';
        }
        return result;
    case 'h':
        return withoutSuffix ? 'ena ura' : 'eno uro';
    case 'hh':
        if (number === 1) {
            result += withoutSuffix ? 'ura' : 'uro';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'uri' : 'urama';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'ure' : 'urami';
        } else {
            result += withoutSuffix || isFuture ? 'ur' : 'urami';
        }
        return result;
    case 'd':
        return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
    case 'dd':
        if (number === 1) {
            result += withoutSuffix || isFuture ? 'dan' : 'dnem';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
        } else {
            result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
        }
        return result;
    case 'M':
        return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
    case 'MM':
        if (number === 1) {
            result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
        } else {
            result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
        }
        return result;
    case 'y':
        return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
    case 'yy':
        if (number === 1) {
            result += withoutSuffix || isFuture ? 'leto' : 'letom';
        } else if (number === 2) {
            result += withoutSuffix || isFuture ? 'leti' : 'letoma';
        } else if (number < 5) {
            result += withoutSuffix || isFuture ? 'leta' : 'leti';
        } else {
            result += withoutSuffix || isFuture ? 'let' : 'leti';
        }
        return result;
    }
}

export default moment.defineLocale('sl', {
    months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
    monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
    monthsParseExact: true,
    weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
    weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
    weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
    weekdaysParseExact : true,
    longDateFormat : {
        LT : 'H:mm',
        LTS : 'H:mm:ss',
        L : 'DD. MM. YYYY',
        LL : 'D. MMMM YYYY',
        LLL : 'D. MMMM YYYY H:mm',
        LLLL : 'dddd, D. MMMM YYYY H:mm'
    },
    calendar : {
        sameDay  : '[danes ob] LT',
        nextDay  : '[jutri ob] LT',

        nextWeek : function () {
            switch (this.day()) {
            case 0:
                return '[v] [nedeljo] [ob] LT';
            case 3:
                return '[v] [sredo] [ob] LT';
            case 6:
                return '[v] [soboto] [ob] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[v] dddd [ob] LT';
            }
        },
        lastDay  : '[včeraj ob] LT',
        lastWeek : function () {
            switch (this.day()) {
            case 0:
                return '[prejšnjo] [nedeljo] [ob] LT';
            case 3:
                return '[prejšnjo] [sredo] [ob] LT';
            case 6:
                return '[prejšnjo] [soboto] [ob] LT';
            case 1:
            case 2:
            case 4:
            case 5:
                return '[prejšnji] dddd [ob] LT';
            }
        },
        sameElse : 'L'
    },
    relativeTime : {
        future : 'čez %s',
        past   : 'pred %s',
        s      : processRelativeTime,
        m      : processRelativeTime,
        mm     : processRelativeTime,
        h      : processRelativeTime,
        hh     : processRelativeTime,
        d      : processRelativeTime,
        dd     : processRelativeTime,
        M      : processRelativeTime,
        MM     : processRelativeTime,
        y      : processRelativeTime,
        yy     : processRelativeTime
    },
    ordinalParse: /\d{1,2}\./,
    ordinal : '%d.',
    week : {
        dow : 1, // Monday is the first day of the week.
        doy : 7  // The week that contains Jan 1st is the first week of the year.
    }
});
