function order_init(order_key) {
    // Инициализация панели
    let panel = document.getElementById(order_key + '_panel');

    // Инициализация кнопки
    let button = document.getElementById(order_key + '_button');

    let supplies_are_confirmed = true;

    for (let i = 0; i <= panel.children[2].children[0].children.length - 1; i++) {
        // Инициализация
        let target = panel.children[2].children[0].children[i];

        if ((target === undefined || target.children[1] === undefined || target.children[1].children[0] === undefined) && !target.classList.contains('dropdown-divider')) {

            supplies_are_confirmed = false;
        };
    };

    if (supplies_are_confirmed) {

        button.classList.remove('disabled');
    };

    return false;
};

function order_accept(order_key) {
    $.ajax({
        url: 'orders/' + order_key + '/accept',
        type: 'post',
        dataType: 'json',
        data: {
            '_csrf': yii.getCsrfToken()
        },
        success: orders_response_success,
        error: orders_response_error
    });

    return false;
};

function orders_supply_edit(type, supply_key, order_key) {
    // Инициализация
    let supply = document.getElementById(supply_key + '_supply');

    // Поиск панели для вывода информации
    let panel = document.getElementById('orders_panel_edit_' + order_key);

    // Поиск всех кнопок с поставками
    let rows = document.getElementsByClassName('row_supply');

    // Деактивация остальных кнопок
    for (let i = 0; i < rows.length; i++) {
        if (rows[i].parentElement.getAttribute('id') === 'orders_panel_supplies_' + order_key) {
            // Если это кнопка конкретно с этого заказа

            rows[i].classList.remove('row_supply_active');
        };
    };

    // Активация выбранной кнопки
    supply.classList.add('row_supply_active');

    // Запись индикатора загрузки
    panel.innerHTML = '<p class="my-auto">Загрузка</p>';

    $.ajax({
        url: 'orders/supply/' + supply_key + '/read',
        type: 'post',
        dataType: 'json',
        data: {
            '_csrf': yii.getCsrfToken()
        },
        success: function (data, status, xhr) {
            // Удаление индикатора загрузки
            panel.innerHTML = '';

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

                // Идентификатор
                if (document.getElementById(supply.getAttribute('id') + '_id') === null) {
                    // Инициализация контейнера
                    let container = document.createElement('div');
                    container.setAttribute('id', supply.getAttribute('id') + '_id');
                    container.setAttribute('class', 'row mb-1 px-3');

                    // Инициализация названия
                    let name = document.createElement('p');
                    name.setAttribute('id', supply.getAttribute('id') + '_id_name');
                    name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
                    name.innerText = 'Идентификатор:';

                    // Инициализация идентификатора
                    let text = document.createElement('p');
                    text.setAttribute('id', supply.getAttribute('id') + '_id_value');
                    text.setAttribute('class', 'col-auto px-0 mx-0 font-weight-bold');
                    if (data.id !== undefined) {
                        text.innerText = '#' + data.id;
                    } else {
                        text.innerText = 'Неизвестно';
                    };

                    // Запись в документ
                    panel.appendChild(container);
                    container.appendChild(name);
                    container.appendChild(text);
                };

                // // Разделитель статического информационного блока от блока с динамическими данными
                // if (document.getElementById(supply.getAttribute('id') + '_info_divider') === null) {
                //     // Инициализация контейнера
                //     let divider = document.createElement('div');
                //     divider.setAttribute('id', supply.getAttribute('id') + '_info_divider');
                //     divider.setAttribute('class', 'dropdown-divider mb-2');;

                //     // Запись в документ
                //     panel.appendChild(divider);
                // };

                // Цена
                if (document.getElementById(supply.getAttribute('id') + '_cost') === null) {
                    // Инициализация контейнера
                    let container = document.createElement('div');
                    container.setAttribute('id', supply.getAttribute('id') + '_cost');
                    container.setAttribute('class', 'row px-3');

                    // Инициализация названия
                    let name = document.createElement('p');
                    name.setAttribute('id', supply.getAttribute('id') + '_cost_name');
                    name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
                    name.innerText = 'Цена';

                    // Инициализация поля
                    let input = document.createElement('input');
                    input.setAttribute('id', supply.getAttribute('id') + '_cost_input');
                    input.setAttribute('class', 'col-2 text-center form-control-plaintext');
                    input.setAttribute('type', 'number');
                    input.setAttribute('onchange', 'return orders_supply_cost_edit(' + supply_key + ', this);');
                    if (data.cost !== undefined) {
                        input.setAttribute('value', data.cost);
                    } else {
                        input.setAttribute('value', 0);
                    };
                    input.setAttribute('aria-invalid', 'false');

                    // Инициализация дополнительных данных
                    let info = document.createElement('p');
                    info.setAttribute('class', 'col-auto px-0 ml-2 mr-0');
                    info.innerText = 'рублей';

                    // Запись в документ
                    panel.appendChild(container);
                    container.appendChild(name);
                    container.appendChild(input);
                    container.appendChild(info);
                };

                // Время доставки
                if (document.getElementById(supply.getAttribute('id') + '_time') === null) {
                    // Инициализация контейнера
                    let container = document.createElement('div');
                    container.setAttribute('id', supply.getAttribute('id') + '_time');
                    container.setAttribute('class', 'row mb-2 px-3');

                    // Инициализация названия
                    let name = document.createElement('p');
                    name.setAttribute('id', supply.getAttribute('id') + '_time_name');
                    name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
                    name.innerText = 'Время';

                    // Инициализация поля
                    let input = document.createElement('input');
                    input.setAttribute('id', supply.getAttribute('id') + '_time_input');
                    input.setAttribute('class', 'col-1 text-center form-control-plaintext');
                    input.setAttribute('type', 'number');
                    input.setAttribute('onchange', 'return orders_supply_time_edit(' + supply_key + ', this);')
                    if (data.time !== undefined) {
                        input.setAttribute('value', data.time);
                    } else {
                        input.setAttribute('value', 0);
                    };
                    input.setAttribute('aria-invalid', 'false');

                    // Инициализация дополнительных данных
                    let info = document.createElement('p');
                    info.setAttribute('class', 'col-auto px-0 ml-2 mr-0');
                    info.innerText = 'дней';

                    // Запись в документ
                    panel.appendChild(container);
                    container.appendChild(name);
                    container.appendChild(input);
                    container.appendChild(info);
                };

                // Комментарий
                if (document.getElementById(supply.getAttribute('id') + '_comm') === null) {
                    // Инициализация контейнера
                    let container = document.createElement('div');
                    container.setAttribute('id', supply.getAttribute('id') + '_comm');
                    container.setAttribute('class', 'row mb-3 px-3');

                    // Инициализация поля
                    let textarea = document.createElement('textarea');
                    textarea.setAttribute('id', supply.getAttribute('id') + '_comm_input');
                    textarea.setAttribute('class', 'col-12 form-control');
                    textarea.setAttribute('cols', '50');
                    textarea.setAttribute('rows', '3');
                    textarea.setAttribute('onchange', 'return orders_supply_comm_edit(' + supply_key + ', this);')
                    if (data.comm === undefined) {
                        textarea.value = 'Комментарий к заказу';
                    } else {
                        textarea.value = data.comm;
                    };

                    // Запись в документ
                    panel.appendChild(container);
                    container.appendChild(textarea);
                };

                // Статус подтверждения
                if (document.getElementById(supply.getAttribute('id') + '_stts') === null) {
                    // Инициализация контейнера
                    let container = document.createElement('div');
                    container.setAttribute('id', supply.getAttribute('id') + '_stts');
                    container.setAttribute('class', 'row px-3');

                    // Инициализация индикатора
                    let span = document.createElement('span');
                    span.setAttribute('id', supply.getAttribute('id') + '_' + type + '_supply_stts_indicator_icon');
                    span.setAttribute('class', 'ml-auto my-auto fas fa-check');

                    // Инициализация кнопки
                    let button = document.createElement('a');
                    button.setAttribute('id', supply.getAttribute('id') + '_stts_button');
                    button.setAttribute('type', 'button');
                    button.setAttribute('role', 'button');
                    button.setAttribute('onclick', 'return orders_supply_comm_write(this, \'' + type + '\' \'' + supply_key + '\', \'' + order_key + '\');');
                    if (data.stts === undefined || data.stts == 0) {
                        button.setAttribute('class', 'col-12 btn button_blue button_clean');
                        button.innerText = 'Подтвердить';
                    } else {
                        button.setAttribute('class', 'col-12 btn button_blue button_clean disabled');
                        button.innerText = 'Подтверждено';

                        // Инициализация
                        let title = document.getElementById(supply.getAttribute('id') + '_' + type + '_supply_stts_indicator');

                        if (title.children[1] === undefined) {
                            // Индикатор не найден

                            // Запись индикатора
                            title.appendChild(span);
                        };
                    };

                    // Запись в документ
                    panel.appendChild(container);
                    container.appendChild(button);

                    // Реинициализация
                    order_init(order_key);
                };
            };

            orders_response_success(data, status, xhr);
        },
        error: orders_response_error
    });

    return false;
};

function orders_supply_comm_write(button, type, supply_key, order_key) {
    // Инициализация
    let supply = document.getElementById(supply_key + '_supply');

    $.ajax({
        url: 'orders/supply/' + supply_key + '/write/stts',
        type: 'post',
        dataType: 'json',
        data: {
            '_csrf': yii.getCsrfToken(),
            'stts': 'accepted'
        },
        success: function (data, status, xhr) {
            // Инициализация индикатора
            let span = document.createElement('span');
            span.setAttribute('id', supply.getAttribute('id') + '_' + type + '_supply_stts_indicator_icon');
            span.setAttribute('class', 'ml-auto my-auto fas fa-check');

            if (data.stts === undefined || data.stts == 0) {
                button.setAttribute('class', 'col-12 btn button_blue button_clean');
                button.innerText = 'Подтвердить';
            } else {
                button.setAttribute('class', 'col-12 btn button_blue button_clean disabled');
                button.innerText = 'Подтверждено';

                // Инициализация
                let title = document.getElementById(supply.getAttribute('id') + '_' + type + '_supply_stts_indicator');

                if (title.children[0] === undefined) {
                    // Индикатор не найден

                    // Запись индикатора
                    title.appendChild(span);
                };

                // Реинициализация
                order_init(order_key);
            };

            orders_response_success(data, status, xhr);
        },
        error: orders_response_error
    });

    return false;
};

/**
 * Изменить цену товара в заказе
 */
function orders_supply_cost_edit(supply_key, input) {
    if (supply_key !== undefined && input !== undefined) {
        // Обработка входных параметров

        $.ajax({
            url: '/orders/supply/' + supply_key + '/edit/cost',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'cost': input.value
            },
            success: function (data, status, xhr) {
                if (data.cost !== undefined) {
                    input.value = data.cost;
                };

                orders_response_success(data, status, xhr);
            },
            error: orders_response_error
        });
    };

    // Пересчитывание стоимости
    cart_cost_calculate();

    return false;
};

/**
 * Изменить время доставки товара в заказе
 */
function orders_supply_time_edit(supply_key, input) {
    if (supply_key !== undefined && input !== undefined) {
        // Обработка входных параметров

        $.ajax({
            url: '/orders/supply/' + supply_key + '/edit/time',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'time': input.value
            },
            success: function (data, status, xhr) {
                if (data !== undefined) {
                    // Получены данные с сервера

                    if (data.time !== undefined) {
                        input.value = data.time;
                    };
                };

                orders_response_success(data, status, xhr);
            },
            error: orders_response_error
        });
    };

    // Пересчитывание стоимости
    cart_cost_calculate();

    return false;
};

/**
 * Изменить комментарий товара в заказе
 */
function orders_supply_comm_edit(supply_key, input) {
    if (supply_key !== undefined && input !== undefined) {
        // Обработка входных параметров

        $.ajax({
            url: '/orders/supply/' + supply_key + '/edit/comm',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'comm': input.value
            },
            success: function (data, status) {
                if (data !== undefined) {
                    // Получены данные с сервера

                    if (data.comm !== undefined) {
                        input.value = data.comm;
                    };
                };

                orders_response_success(data, status);
            },
            error: orders_response_error
        });
    };

    // Пересчитывание стоимости
    cart_cost_calculate();

    return false;
};
