function page_main(redirect = '/') {
    if (document.getElementById('page_index') === null) {
        $.ajax({
            url: '/',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                redirect
            },
            success: menu_success,
            error: menu_error
        });
    };

    return false;
};

function page_profile(redirect = '/profile') {
    if (document.getElementById('page_profile') === null) {
        $.ajax({
            url: '/profile',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                redirect
            },
            success: menu_success,
            error: menu_error
        });
    };

    return false;
};

function page_cart(redirect = '/cart') {
    if (document.getElementById('page_cart') === null) {
        $.ajax({
            url: '/cart',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                redirect
            },
            success: menu_success,
            error: menu_error
        });
    };

    return false;
};

function page_orders(redirect = '/orders') {
    if (document.getElementById('page_orders') === null) {
        $.ajax({
            url: '/orders',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                redirect
            },
            success: menu_success,
            error: menu_error
        });
    };

    return false;
};

function menu_auth_panel_show(panel) {
    if (panel !== undefined) {
        // Необходимые данные переданы

        // Отображение панели
        panel.classList.remove('d-none');

        // Возможность скрыть панель при клике вне её
        function menu_auth_panel_hide_handler(event) {
            if (panel.contains(event.target)) {
                // Событие произошло по панели или элементов внутри неё

                return true;
            } else {
                // Событие произошло вне панели

                // Скрыть панель
                return menu_auth_panel_hide(panel);
            };
        };

        // Запись обработчика события
        document.addEventListener('mousedown', menu_auth_panel_hide_handler);

        return false;
    };

    return true;
};

function menu_auth_panel_hide(panel) {
    if (panel !== undefined) {
        // Необходимые данные переданы

        // Скрытие панели
        panel.classList.add('d-none');

        return false;
    };

    return true;
};

function cart_count() {
    $.ajax({
        url: '/cart/count',
        type: 'post',
        dataType: 'json',
        data: {
            '_csrf': yii.getCsrfToken()
        },
        success: function (data, status, xhr) {

            if (data !== undefined) {
                // Получены данные с сервера

                // Кнопка корзины
                if (data.button !== undefined) {
                    // Инициализация
                    button_old = document.getElementById('cart_button');

                    // Запись
                    button_old.insertAdjacentHTML("beforebegin", data.button);

                    // Запись
                    button_old.remove();

                    // Реинициализация
                    // $('#cart_button').dropdown().init();
                };
            };

            return menu_success(data, status, xhr);
        },
        error: function (data, status, xhr) {

            if (data !== undefined) {
                // Получены данные с сервера

                // Кнопка корзины
                if (data.button !== undefined) {
                    // Инициализация
                    button_old = document.getElementById('cart_button');

                    // Запись
                    button_old.insertAdjacentHTML("beforebegin", data.button);

                    // Запись
                    button_old.remove();

                    // Реинициализация
                    // $('#cart_button').dropdown().init();
                };
            };

            return menu_error(data, status, xhr);
        }
    });

    return false;
};


function menu_responce(data, status, xhr) {
    // Обработка ответов

    main_response(data, status, xhr);
};

function menu_success(data, status, xhr) {
    // Обработка ответов от удавшихся запросов

    menu_responce(data, status, xhr);
};

function menu_error(data, status, xhr) {
    // Обработка ответов от неудавшихся запросов

    // Инициализация
    data = data.responseJSON;

    menu_responce(data, status, xhr);
};
