function product_panel_title_edit(catn, prod, element) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        element.innerHTML = '<input class="form-control text-center" type="text" value="' + element.innerText + '" onchange="return product_panel_title_save(\'' + catn + '\', \'' + prod + '\', this.parentElement)" aria-invalid="false">';

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

function product_panel_title_save(catn, prod, element) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let text = element.children[0].value;

        // Обновление заголовка (предзагрузка)
        element.innerHTML = text;

        // Запись аттрибута (предзагрузка)
        element.setAttribute('onclick', 'return product_panel_title_edit(\'' + catn + '\', \'' + prod + '\', this);');

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/edit/title',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'text': text
            },
            success: function (data, status, xhr) {

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

                    // Заголовок
                    if (data.name !== undefined && element !== null && element !== undefined) {
                        // Обновление заголовка
                        element.innerHTML = data.name;

                        // Запись аттрибута
                        element.setAttribute('onclick', 'return product_panel_title_edit(\'' + catn + '\', \'' + prod + '\', this);');
                    };
                };

                product_response_success(data, status, xhr);
            },
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_catn_edit(catn, prod, element, redirect = false) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        element.innerHTML = '<input class="form-control text-center" type="text" value="' + element.innerText + '" onchange="return product_panel_catn_save(\'' + catn + '\', \'' + prod + '\', this.parentElement, ' + redirect + ')" aria-invalid="false">';

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

function product_panel_catn_save(catn, prod, element, redirect = false) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let text = element.children[0].value;

        // Обновление заголовка (предзагрузка)
        element.innerHTML = text;

        // Запись аттрибута (предзагрузка)
        element.setAttribute('onclick', 'return product_panel_catn_edit(\'' + catn + '\', \'' + prod + '\', this);');

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/edit/catn',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'text': text
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_name_edit(catn, prod, element, redirect = false) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        element.innerHTML = '<input class="form-control text-center" type="text" value="' + element.innerText + '" onchange="return product_panel_name_save(\'' + catn + '\', \'' + prod + '\', this.parentElement, ' + redirect + ')" aria-invalid="false">';

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

function product_panel_name_save(catn, prod, element, redirect = false) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let text = element.children[0].value;

        // Обновление заголовка (предзагрузка)
        element.innerHTML = text;

        // Запись аттрибута (предзагрузка)
        element.setAttribute('onclick', 'return product_panel_name_edit(\'' + catn + '\', \'' + prod + '\', this);');

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/edit/name',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'text': text
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_prod_edit(catn, prod, element, redirect = false) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        element.innerHTML = '<input class="form-control text-center" type="text" value="' + element.innerText + '" onchange="return product_panel_prod_save(\'' + catn + '\', \'' + prod + '\', this.parentElement, ' + redirect + ')" aria-invalid="false">';

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

function product_panel_prod_save(catn, prod, element, redirect = false) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let text = element.children[0].value;

        // Обновление заголовка (предзагрузка)
        element.innerHTML = text;

        // Запись аттрибута (предзагрузка)
        element.setAttribute('onclick', 'return product_panel_prod_edit(\'' + catn + '\', \'' + prod + '\', this);');

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/edit/prod',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'text': text
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_dimensions_edit(catn, prod, element, dimension) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {

        let input = document.createElement('input');

        input.setAttribute('id', element.id);
        input.setAttribute('class', 'ml-1 text-center product_options_edit_small');
        input.setAttribute('type', 'number');
        input.setAttribute('value', element.innerText);
        input.setAttribute('aria-invalid', 'false');

        element.replaceWith(input);

        product_panel_handler_save(product_panel_dimensions_save, catn, prod, input, dimension);

        return false;
    };

    return true;
};

function product_panel_dimensions_save(catn, prod, element, dimension) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let text = element.value;
        let span = document.createElement('span');

        span.setAttribute('id', element.id);
        span.setAttribute('class', 'ml-1 pointer-event');
        span.setAttribute('role', 'button');
        span.setAttribute('onclick', 'return product_panel_dimensions_edit(\'' + catn + '\', \'' + prod + '\', this, \'' + dimension + '\');');

        if (text.length === 0) {
            text = '0';
        };

        span.innerText = text;

        element.replaceWith(span);

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/edit/dmns',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'text': text,
                'dimension': dimension
            },
            success: function (data, status, xhr) {
                if (data !== undefined) {
                    // Получены данные с сервера

                    // Заголовок
                    if (data.dimension !== undefined && span !== null && span !== undefined) {
                        // Обновление заголовка
                        span.innerText = data.dimension;

                        // Запись аттрибута
                        span.setAttribute('onclick', 'return product_panel_dimensions_edit(\'' + catn + '\', \'' + prod + '\', this, \'' + dimension + '\');');
                    };
                };

                product_response_success(data, status, xhr);
            },
            error: product_response_error
        });

        return false;
    };

    return true;
};


function product_panel_weight_edit(catn, prod, element) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {

        let input = document.createElement('input');

        input.setAttribute('id', element.id);
        input.setAttribute('class', 'ml-1 text-center product_options_edit_small');
        input.setAttribute('type', 'number');
        input.setAttribute('value', element.innerText);
        input.setAttribute('aria-invalid', 'false');

        element.replaceWith(input);

        product_panel_handler_save(product_panel_weight_save, catn, prod, input);

        return false;
    };

    return true;
};

function product_panel_weight_save(catn, prod, element) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let text = element.value;
        let span = document.createElement('span');

        span.setAttribute('id', element.id);
        span.setAttribute('class', 'ml-1 pointer-event');
        span.setAttribute('role', 'button');
        span.setAttribute('onclick', 'return product_panel_weight_edit(\'' + catn + '\', \'' + prod + '\', this);');

        if (text.length === 0) {
            text = '0';
        };

        span.innerText = text;

        element.replaceWith(span);

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/edit/wght',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'text': text
            },
            success: function (data, status, xhr) {
                if (data !== undefined) {
                    // Получены данные с сервера

                    // Заголовок
                    if (data.weight !== undefined && span !== null && span !== undefined) {
                        // Обновление заголовка
                        span.innerText = data.weight;

                        // Запись аттрибута
                        span.setAttribute('onclick', 'return product_panel_weight_edit(\'' + catn + '\', \'' + prod + '\', this);');
                    };
                };

                product_response_success(data, status, xhr);
            },
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_description_edit(catn, prod, element) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        element.innerHTML = '<textarea class="form-control" cols="50" rows="5" onchange = "return product_panel_description_save(\'' + catn + '\', \'' + prod + '\', this.parentElement)">' + element.innerText + '</textarea>';

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

function product_panel_description_save(catn, prod, element) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let text = element.children[0].value;

        // Обновление заголовка (предзагрузка)
        element.innerHTML = text;

        // Запись аттрибута (предзагрузка)
        element.setAttribute('onclick', 'return product_panel_description_edit(\'' + catn + '\', \'' + prod + '\', this);');

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/edit/dscr',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'text': text
            },
            success: function (data, status, xhr) {
                if (data !== undefined) {
                    // Получены данные с сервера

                    // Заголовок
                    if (data.description !== undefined && element !== null && element !== undefined) {
                        // Обновление заголовка
                        element.innerHTML = data.description;

                        // Запись аттрибута
                        element.setAttribute('onclick', 'return product_panel_description_edit(\'' + catn + '\', \'' + prod + '\', this);');
                    };
                };

                product_response_success(data, status, xhr);
            },
            error: product_response_error
        });

        return false;
    };

    return true;
};

/**
 * Подключение к группе
 *
 * @param {*} catn
 * @returns
 */
function product_panel_connect(catn, prod, target_catn, target_prod, list) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined) {

        if (target_catn === undefined) {
            // Не получены данные о группе

            target_catn = prompt('Артикул');
        }

        if (target_prod === undefined) {
            // Не получены данные о группе

            target_prod = prompt('Производитель');
        }

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/connect',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'catn': target_catn,
                'prod': target_prod
            },
            success: (data, status, xhr) => {
                if (data.list !== undefined && data.list !== null) {
                    // Найдены данные поставщиков

                    // Запись cookie с номером страницы
                    Cookies.set('product_analogs_page', 1, { path: window.location.pathname });

                    // Инициализация оболочки
                    let wrap = document.getElementById(list);

                    // Запись в документ
                    wrap.innerHTML = data.list;

                    // Переход к остальным обработчикам
                    product_response_success(data, status, xhr);
                }},
            error: product_response_error
        });

        return false;
    };

    return true;
}

/**
 * Отключение от группы
 *
 * @param {*} catn
 * @returns
 */
 function product_panel_disconnect(catn, prod, element) {
    if (typeof prod === 'string' && typeof catn === 'string' && typeof element === 'object') {
        $.ajax({
            url: '/product/' + prod + '/' + catn + '/disconnect',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken()
            },
            success: function (data, status, xhr) {
                if (data !== undefined) {
                    // Получены данные с сервера

                    if (data.disconnected === 1) {
                        // Статус об отключении

                        // Удаление элемента
                        element.remove();
                    };
                };

                product_response_success(data, status, xhr);
            },
            error: product_response_error
        });

        return false;
    };

    return true;
 }

function product_panel_delete(catn, prod) {
    if (typeof prod === 'string' && typeof catn === 'string') {
        $.ajax({
            url: '/product/' + prod + '/' + catn + '/delete',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken()
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
}

function product_panel_images_write(catn, prod, element) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && element !== null && element !== undefined) {
        // Инициализация
        let data = new FormData();

        data.append('_csrf', yii.getCsrfToken());
        for (i = 0; i < element.files.length; i++) {
            data.append('images[' + i + ']', element.files[i]);
        };

        $.ajax({
            url: '/product/' + prod + '/' + catn + '/write/image',
            type: 'post',
            dataType: 'json',
            processData: false,
            contentType: false,
            data: data,
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_images_delete(catn, prod, index) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && index !== null && index !== undefined) {
        $.ajax({
            url: '/product/' + prod + '/' + catn + '/delete/image',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'index': index
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_images_cover_write(catn, prod, index) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && index !== null && index !== undefined) {
        $.ajax({
            url: '/product/' + prod + '/' + catn + '/write/cover',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                index
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
};

function product_panel_handler_save(save, catn, prod, element, ...vars) {
    if (save !== undefined && save !== null) {
        let product_panel_handler_save_function = function (event) {
            if (event.target.id !== element.id) {
                save(catn, prod, element, ...vars);
                document.body.removeEventListener('click', product_panel_handler_save_function, true);
            };
        };

        document.body.addEventListener('click', product_panel_handler_save_function, true);
    };
};

function product_panel_product_stts(catn, prod, stts) {
    if (catn !== null && catn !== undefined && prod !== null && prod !== undefined && stts !== null && stts !== undefined) {
        $.ajax({
            url: '/product/' + prod + '/' + catn + '/status',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                stts
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
};
