function notification_last() {
    $.ajax({
        url: '/notification',
        type: 'post',
        dataType: 'json',
        data: {
            '_csrf': yii.getCsrfToken(),
            'last': 1
        },
        success: notification_response_success,
        error: notification_response_error
    });

    return false;
};

// Проверка уведомлений
setInterval(notification_last, 5000);

// Поиск уведомлений
notification_stream();

function notification_popup_create(html, id) {
    // Инициализация
    let wrap = document.getElementById('notifications_popup_wrap');

    // Количество уведомлений
    let notifications_count = wrap.childElementCount;

    // Запись
    wrap.insertAdjacentHTML("beforeEnd", html);

    setTimeout(() => {
        // Анимация появления
        wrap.children[notifications_count].style.opacity = 1;
    }, 500);

    return false;
};

function notification_popup_delete(notification) {
    // Эффект затухания (статус того, что уведомление прочитано)
    notification.style.opacity = 0.4;
    notification.style.borderColor = '#c0b7d0';

    setTimeout(() => {
        // Анимация затухания
        notification.style.opacity = 0;

        setTimeout(() => {
            // Удаление
            notification.remove();
        }, 300);
    }, 3000);

    return false;
};

function notification_stream() {
    $.ajax({
        url: '/notification',
        type: 'post',
        dataType: 'json',
        data: {
            '_csrf': yii.getCsrfToken(),
            'stream': 1
        },
        success: notification_response_success,
        error: notification_response_error
    });

    return false;
};

function notification_response_success(data, status) {
    if (data.main !== undefined) {
        main = document.getElementsByTagName('main')[0];

        // Обновление документа
        main.innerHTML = data.main;

        // Реинициализация
        reinitialization(main);
    };
    if (data.panel !== undefined) {
        // Инициализация
        panel = document.getElementById('notification_button_panel');

        // Обновление документа
        panel.innerHTML = data.panel;

        // Реинициализация
        reinitialization(panel);
    };
    if (data.popup !== undefined && data.popup['html'] !== undefined && data.popup['id'] !== undefined) {
        // Инициализация
        popup = document.getElementById('notification_popup');

        // Генерация
        notification_popup_create(data.popup['html'], data.popup['id']);
    };
    if (data.redirect !== undefined) {
        // Перенаправление
        history.pushState({}, document.title, data.redirect);
    };
    if (data._csrf !== undefined) {
        // Обновление документа
        $('meta[name=csrf-token]').prop("content", data._csrf);
    };
};

function notification_response_error(data, status) {
    if (data.responseJSON.main !== undefined) {
        main = document.getElementsByTagName('main')[0];

        // Обновление окна результатов поиска
        main.innerHTML = data.main;

        // Реинициализация
        reinitialization(main);
    };
    if (data.responseJSON._csrf !== undefined) {
        // Обновление документа
        $('meta[name=csrf-token]').prop("content", data.responseJSON._csrf);
    };
};