function product_panel_title_edit(catn, element) {
    if (catn !== null && catn !== 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 + '\', this.parentElement)" aria-invalid="false">';

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

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

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

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

        $.ajax({
            url: '/product/' + 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 + '\', this);');
                    };
                };

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

        return false;
    };

    return true;
};

function product_panel_catn_edit(catn, element, redirect = false) {
    if (catn !== null && catn !== 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 + '\', this.parentElement, ' + redirect + ')" aria-invalid="false">';

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

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

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

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

        $.ajax({
            url: '/product/' + 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_dimensions_edit(catn, element, dimension) {
    if (catn !== null && catn !== 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, input, dimension);

        return false;
    };

    return true;
};

function product_panel_dimensions_save(catn, element, dimension) {
    if (catn !== null && catn !== 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 + '\', this, \'' + dimension + '\');');

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

        span.innerText = text;

        element.replaceWith(span);

        $.ajax({
            url: '/product/' + 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 + '\', this, \'' + dimension + '\');');
                    };
                };

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

        return false;
    };

    return true;
};


function product_panel_weight_edit(catn, element) {
    if (catn !== null && catn !== 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, input);

        return false;
    };

    return true;
};

function product_panel_weight_save(catn, element) {
    if (catn !== null && catn !== 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 + '\', this);');

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

        span.innerText = text;

        element.replaceWith(span);

        $.ajax({
            url: '/product/' + 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 + '\', this);');
                    };
                };

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

        return false;
    };

    return true;
};

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

        element.removeAttribute('onclick');

        return false;
    };

    return true;
};

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

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

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

        $.ajax({
            url: '/product/' + 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 + '\', this);');
                    };
                };

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

        return false;
    };

    return true;
};

function product_panel_connect(catn) {
    if (catn !== null && catn !== undefined) {
        $.ajax({
            url: '/product/' + catn + '/connect',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'catn': prompt('Подключить аналог')
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
}

function product_panel_disconnect(catn) {
    if (catn !== null && catn !== undefined) {
        $.ajax({
            url: '/product/' + catn + '/disconnect',
            type: 'post',
            dataType: 'json',
            data: {
                '_csrf': yii.getCsrfToken(),
                'catn': prompt('Отсоединить аналог (пустое поле - все аналоги)')
            },
            success: product_response_success,
            error: product_response_error
        });

        return false;
    };

    return true;
}

function product_panel_delete(catn) {
    if (catn !== null && catn !== undefined) {
        $.ajax({
            url: '/product/' + 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, element) {
    if (catn !== null && catn !== 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/' + 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, index) {
    if (catn !== null && catn !== undefined && index !== null && index !== undefined) {
        $.ajax({
            url: '/product/' + 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, index) {
    if (catn !== null && catn !== undefined && index !== null && index !== undefined) {
        $.ajax({
            url: '/product/' + catn + '/write/cover',
            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_handler_save(save, catn, element, ...vars) {
    if (save !== undefined && save !== null) {
        let product_panel_handler_save_function = function (event) {
            if (event.target.id !== element.id) {
                save(catn, element, ...vars);
                document.body.removeEventListener('click', product_panel_handler_save_function, true);
            };
        };

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