window.lBaseFunctions = {};

// #AddNewCountry
window.lBaseFunctions.getCountryCode = function(country)
{
    let result = '';

    switch (country) {
        case 'ru': result = "+7"; break;
        case 'by': result = "+375"; break;
        case 'kz': result = "+77"; break;
        case 'bg': result = "+359"; break;
        case 'cz': result = "+420"; break;
        case 'de': result = "+49"; break;
        case 'ee': result = "+372"; break;
        case 'es': result = "+34"; break;
        case 'it': result = "+39"; break;
        case 'lt': result = "+370"; break;
        case 'lv': result = "+371"; break;
        case 'pl': result = "+48"; break;
        case 'ro': result = "+40"; break;
        case 'sk': result = "+421"; break;
        case 'fr': result = "+33"; break;
        case 'at': result = "+43"; break;
        case 'gr': result = "+30"; break;
        case 'pt': result = "+351"; break;
        case 'hu': result = "+36"; break;
        case 'cy': result = "+357"; break;
        case 'hr': result = "+385"; break;
        case 'si': result = "+386"; break;
        case 'uz': result = "+998"; break;
        case 'pe': result = "+51"; break;
        case 'mx': result = "+52"; break;
    }

    return result;
}

// #AddNewCountry
window.lBaseFunctions.getPhoneCodes = function(countries)
{
    let result = [];

    for (let i = 0; i < countries.length; i++) {
        switch (countries[i]) {
            case 'ru':
            case 'kz':
                result.push({mask: "+7(###)###-##-##"});
                result.push({mask: "8(###)###-##-##"});
                break;
            case 'by': result.push({mask: "+375(##)###-##-##"}); break;
            case 'bg': result.push({mask: "+359 #{7,14}"}); break;
            case 'cz': result.push({mask: "+420 #{7,14}"}); break;
            case 'de': result.push({mask: "+49 #{7,14}"}); break;
            case 'ee': result.push({mask: "+372 #{7,14}"}); break;
            case 'es': result.push({mask: "+34 #{7,14}"}); break;
            case 'it': result.push({mask: "+39 #{7,14}"}); break;
            case 'lt': result.push({mask: "+370 #{7,14}"}); break;
            case 'lv': result.push({mask: "+371 #{7,14}"}); break;
            case 'pl': result.push({mask: "+48 #{7,14}"}); break;
            case 'ro': result.push({mask: "+40 #{7,14}"}); break;
            case 'sk': result.push({mask: "+421 #{7,14}"}); break;
            case 'fr': result.push({mask: "+33 #{7,14}"});break;
            case 'gr': result.push({mask: "+30 #{7,14}"});break;
            case 'pt': result.push({mask: "+351 #{7,14}"});break;
            case 'cy': result.push({mask: "+357 #{7,14}"});break;
            case 'hr': result.push({mask: "+385 #{7,14}"});break;
            case 'si': result.push({mask: "+386 #{7,14}"});break;
            case 'at': result.push({mask: "+43 #{7,14}"}); break;
            case 'hu': result.push({mask: "+36 #{7,14}"}); break;
            case 'uz': result.push({mask: "+998 #{7,14}"}); break;
            case 'pe': result.push({mask: "+51 #{7,14}"}); break;
            case 'mx': result.push({mask: "+52 #{7,14}"}); break;
        }
    }

    return result;
}

// #AddNewCountry
window.lBaseFunctions.getCityStockBy = function(country, number)
{
    switch (country) {
        case 'at': // Австрия
            return ['Вена','Линц','Инсбрук','Зальцбург','Инсбрук','Фельдкирх','Брегенц','Баден','Хоэнемс','Лиенц'][number - 1];
        case 'bg': // Болгария
            return ['София','Пловдив ','Варна','Бургас','Шумен','Дупница','Перник','Хасково','Велинград','Петрич'][number - 1];
        case 'hu': // Венгрия
            return ['Будапешт','Кечкемет','Мишкольц ','Сольнок','Веспрем','Шольт','Сечень','Путнок','Сольнок','Тамаши'][number - 1];
        case 'de': // Германия
            return ['Дрезден','Гамбург','Мюнхен','Штутгарт','Берлин','Оффенбах','Йена','Кобленц','Дюрен','Люнен'][number - 1];
        case 'gr': // Греция
            return ['Афины','Каламата','Ханья','Пирей','Патры','Калитея','Козани','Ксанти','Пиргос','Килкис'][number - 1];
        case 'es': // Испания
            return ['Мадрид','Барселона','Валенсия','Мурсия','Сарагоса','Гранада','Картахена','Витория','Сабадель','Аликанте'][number - 1];
        case 'it': // Италия
            return ['Рим','Флоренция','Неаполь','Мессина','Милан','Фоджа','Монца','Виченца','Пескара','Феррара'][number - 1];
        case 'cy': // Кипр
            return ['Лимасол','Ларнака','Фамагуста','Строволос','Пафос','Кирения','Дикомо','Протарас','Лефка','Лапитос'][number - 1];
        case 'lv': // Латвия
            return ['Рига','Елгава','Валмиера','Юрмала','Тукумс','Валка','Лудза','Алуксне','Медуми','Сигулда'][number - 1];
        case 'lt': // Литва
            return ['Вильнюс','Йонава','Каунас','Утена','Алитус','Варена','Пасвалис','Паланга','Молетай','Биржай'][number - 1];
        case 'pl': // Польша
            return ['Варшава','Познань','Лодзь','Белосток','Краков','Бохня','Кельце','Плоцк','Кошалин','Браньск'][number - 1];
        case 'pt': // Португалия
            return ['Лиссабон','Порту','Лореш','Амадора','Брага','Элваш','Келуш','Сакавен','Борба','Серпа'][number - 1];
        case 'ro': // Румыния
            return ['Бухарест','Яссы','Констанца','Брашов','Крайова','Александрия','Борша','Бистрица','Куджир','Зимнича'][number - 1];
        case 'sk': // Словакия
            return ['Братислава','Мартин','Жилина','Кошице','Гуменне','Середь','Сеница','Битча','Модра','Рожнява'][number - 1];
        case 'fr': // Франция
            return ['Париж','Ницца','Марсель','Лимож','Бордо','Брест','Нарбон','Кайенна','Руан','Бельфор'][number - 1];
        case 'hr': // Хорватия
            return ['Загреб','Пула','Риека','Вараждин','Дубровник','Чаковец','Сисак','Самобор','Осиек','Сплит'][number - 1];
        case 'cz': // Чехия
            return ['Прага','Пльзень','Либерец','Оломоуц','Пардубице','Трутнов','Вишков','Кадань','Годонин','Брунталь'][number - 1];
        case 'ee': // Эстония
            return ['Таллин','Нарва','Тарту','Пярну','Пярну','Пылва','Валга','Кейла','Тюри','Тырва'][number - 1];
        case 'pe': // Перу
            return ['Лима','Арекипа','Чиклайо','Пьюра','Икитос','Пукальпа','Кахамарка','Талара','Писко','Барранка'][number - 1];
        case 'mx': // Мексика
            return ['Мехико','Тихуана','Пуэбла','Гвадалахара','Леон','Запопан','Мехикали','Кульякан','Монтеррей','Чиуауа'][number - 1];
        default:
            return '!!!Unknown!!!';
    }
}

// #AddNewCountry
window.lBaseFunctions.getCityMoreBy = function(country, number)
{
    switch (country) {
        case 'at': // Австрия
            return ['Дрезден','София','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'bg': // Болгария
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'hu': // Венгрия
            return ['Дрезден','Вена','Йонава','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'de': // Германия
            return ['Варшава','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'gr': // Греция
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Лиссабон'][number - 1];
        case 'es': // Испания
            return ['Дрезден','Вена','Будапешт','Лодзь','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'it': // Италия
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Таллин','Варна','Афины'][number - 1];
        case 'cy': // Кипр
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'lv': // Латвия
            return ['Дрезден','Вена','Будапешт','Мадрид','Мюнхен','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'lt': // Литва
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'pl': // Польша
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Лиссабон','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'pt': // Португалия
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'ro': // Румыния
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Ницца','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'sk': // Словакия
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'fr': // Франция
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Барселона','Неаполь','Рим','Афины'][number - 1];
        case 'hr': // Хорватия
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'cz': // Чехия
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Милан','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'ee': // Эстония
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'pe': // Перу
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        case 'mx': // Мексика
            return ['Дрезден','Вена','Будапешт','Мадрид','Рига','Прага','Краков','Бухарест','Марсель','Неаполь','Рим','Афины'][number - 1];
        default:
            return '!!!Unknown!!!';
    }
}

window.lBaseFunctions.pluralForm = function(number, one, two, five)
{
    number = number % 100;
    if (number > 19) {
        number = number % 10;
    }
    switch (number) {
        case 1: {
            return one;
        }
        case 2:
        case 3:
        case 4: {
            return two;
        }
        default: {
            return five;
        }
    }
}

// #AddNewCurrency
window.lBaseFunctions.pluralCurrencies = function(config, currency)
{
    $('.pl_product_currency[type="full"]').each(function(key, element) {

        var maybePrice = $(element)
            .siblings()
            .filter(function( index ) {
                return $.isNumeric( $(this).text() );
            });

        var price = parseInt(maybePrice.text());

        if(!price){
            price = 1;
        }

        if(price && config.s_language == 'rus'){
            switch(currency) {
                case 'RUB':
                case 'BYN':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'рубль', 'рубля', 'рублей'));
                    break;
                case 'BGN':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'лев', 'лева', 'левов'));
                    break;
                case 'GEL': // не склоняется
                    $(element).text('лари');
                    break;
                case 'EUR': // не склоняется
                    $(element).text('евро');
                    break;
                case 'KGS':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'сом', 'сома', 'сомов'));
                    break;
                case 'MDL':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'лей', 'лея', 'леев'));
                    break;
                case 'PLN':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'злотый', 'злотых', 'злотых'));
                    break;
                case 'RON':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'лей', 'лея', 'леев'));
                    break;
                case 'UZS':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'сум', 'сума', 'сумов'));
                    break;
                case 'HUF': // не склоняется ???
                    $(element).text('форинт');
                    break;
                case 'CZK':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'крона', 'крон', 'крон'));
                    break;
                case 'PEN':
                    $(element).text(window.lBaseFunctions.pluralForm(price, 'соль', 'соль', 'соль'));
                    break;
            }
        }
    });
}