function identification() {
    $.ajax({
        url: '/identification',
        type: 'post',
        dataType: 'json',
        data: { '_csrf': yii.getCsrfToken() },
        success: function (data) {
            if (data.menu !== undefined) {
                // Обновление документа
                document.getElementsByTagName('menu')[0].innerHTML = data.menu;
            }
            if (data.redirect !== undefined) {
                // Перенаправление
                history.pushState({}, document.title, data.redirect);
            }
            if (data._csrf !== undefined) {
                // Обновление документа
                $('meta[name=csrf-token]').prop("content", data._csrf);
            }
        }
    });
};

function authentication(form) {
    if (form == undefined) {
        form = {
            '_csrf': yii.getCsrfToken()
        };
    } else {
        form = $(form).serialize();
    }

    $.ajax({
        url: '/authentication',
        type: 'post',
        dataType: 'json',
        data: form,
        success: function (data, status) {
            if (data.menu !== undefined) {
                // Обновление документа
                document.getElementsByTagName('menu')[0].innerHTML = data.menu;
            }
            if (data.main !== undefined && document.getElementById('page_index') === null) {
                main = document.getElementsByTagName('main')[0];

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

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

            // Реинициализация панели поиска
            // Перенести в отдельный файл который подгружается в зависимости от настроек
            // search_panel_show();

            // Обновление панели поиска
            product_search();
        },
        error: function (data, status) {
            if (data.responseJSON.main !== undefined) {
                main = document.getElementsByTagName('main')[0];

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

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

function deauthentication() {
    $.ajax({
        url: '/deauthentication',
        type: 'post',
        dataType: 'json',
        data: { '_csrf': yii.getCsrfToken() },
        success: function (data) {
            if (data.menu !== undefined) {
                // Обновление документа
                document.getElementsByTagName('menu')[0].innerHTML = data.menu;
            }
            if (data.main !== undefined) {
                main = document.getElementsByTagName('main')[0];

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

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

            // Реинициализация панели поиска
            // Перенести в отдельный файл который подгружается в зависимости от настроек
            // search_panel_hide();

            // Обновление панели поиска
            product_search();
        }
    });
};

function registration(form) {
    if (form == undefined) {
        form = { '_csrf': yii.getCsrfToken() };
    } else {
        form = $(form).serialize();
    }

    $.ajax({
        url: '/registration',
        type: 'post',
        dataType: 'json',
        data: form,
        success: function (data) {
            if (data.menu !== undefined) {
                // Обновление документа
                document.getElementsByTagName('menu')[0].innerHTML = data.menu;
            }
            // Разобраться нужна ли ещё првоерка на page_index, избавиться от неё
            if (data.main !== undefined && document.getElementById('page_index') === null) {
                main = document.getElementsByTagName('main')[0];

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

                // Реинициализация
                reinitialization(main);
            }
            if (data.redirect !== undefined) {
                // Перенаправление
                history.pushState({}, document.title, data.redirect);
            }
            if (data._csrf !== undefined) {
                // Обновление документа
                $('meta[name=csrf-token]').prop("content", data._csrf);
            }
        },
        error: function (data) {
            if (data.responseJSON.main !== undefined) {
                main = document.getElementsByTagName('main')[0];

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

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

document.addEventListener('DOMContentLoaded', identification(), true);