async function ts(url, method, data) {
    if (method == "POST") {
        // let _token = document.getElementsByName("csrf-token")[0].value;
        //formData.append('_token', _token);
        try {
            const response = await fetch(url, {
                method: method,
                body: data,
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });

            const json = await response.json();
            return json;

        } catch (error) {
            console.error('Error ts:', error);
            return error;
        }
    }

    if (method == "GET") {
        try {
            let params = {};
            data.forEach((value, key) => params[key] = value);

            const response = await fetch(url + "?" + new URLSearchParams(params), {
                method: method
            });

            const json = await response.json();
            return json;

        } catch (error) {
            console.error('Error ts:', error);
            notification('error', error);
            return error;
        }
    }
}

$(function() {
    $('#authorization-form').submit(function(e) {

        let formData = new FormData(this);
        const send = ts('/api/authorization', 'POST', formData);

        send.then((result) => {
            console.log(result);
            if (result.status == true) {
                window.location.href = '/profile'
            } else {
                notification('error', result.msg);
            }
        });
        e.preventDefault();
    });
    $('.authorize_services a').click(function(e) {
        var type = $(this).attr('data-type');
        $("#loader h2").html('Waiting for authorization');
        $("#loader p").html('Pass authorization in ' + type);
        $("#loader").show();
        if (type == 'stabilityin.com') {
            var myWindow;
            myWindow = window.open('https://cabinet.stabilityin.com/api/user/auth/betweenoceans_io/' + $('meta[name="csrf-token"]').attr('content'), 'popup', 'width=590,height=595');

            function f() {
                if (!myWindow) {
                    console.log("Окно не открыто");
                } else {
                    if (myWindow.closed) {
                        let formData = new FormData();
                        formData.append('key', $('meta[name="csrf-token"]').attr('content'));
                        /*formData.append('remember', $('#authorization-form input[name="remember"]').checked);*/
                        const send = ts('/api/authorization/stability/verify', 'POST', formData);
                        send.then((result) => {
                            if (result.status == true) {
                                //notification('success', 'Авторизация пройдена');
                                $("#loader h2").html('Authorization passed');
                                $("#loader p").html('Go to your personal account betweenoceans.io');
                                window.location.href = '/profile';
                            } else {
                                console.log(result);
                                $("#loader").hide();
                            }
                        });
                    } else {
                        setTimeout(f, 500);
                    }
                }
            }

            setTimeout(f, 500);
        } else {
            $("#loader").hide();
            alert('The service is not connected yet');
        }
        e.preventDefault();
    });

    $('#form-data-object').submit(function(e) {
        editObjectsUser();
        e.preventDefault();
    });

    function editObjectsUser(href = '') {
        let formData = new FormData(document.getElementById("form-data-object"));
        console.log(formData);
        var send;
        if ($('#form-data-object input[name=p]').val() == undefined) {
            send = ts('/api/editObjectsUser', 'POST', formData);
            console.log('----!!!----');
        } else {
            send = ts('/api/editPremisesUser', 'POST', formData);
            console.log('!!!!---!!!!');
        }

        $("#loader h2").html('Ожидание');
        $("#loader p").html('Сохраняем');
        $("#loader").show();
        send.then((result) => {
            $("#loader").hide();
            console.log(result);
            if (result.status == true) {
                notification('success', 'Сохранено!');
                if (href != '') {
                    location.href = href;
                }
            } else {
                if (result.error) {
                    notification('error', result['error_msg']);
                    href = '';
                }
                if (result.warning) {
                    notification('warning', result['warning_msg']);
                    if (!result.error) {
                        notification('success', 'Сохранено!');
                    }
                    if (href != '') {
                        if (confirm("Были обнаружены ошибки, перейти на следующую страницу? (ваши данные сохранены)")) {
                            location.href = href;
                        }
                    }

                }
            }
        });
    }

    function isURL(str) { try { new URL(str); return true; } catch { return false; } }
/*    $('.btn-main, .btn-back').click(function(e) {
        var page_next = $(this).attr('data-next');
        /!*if(page_next.hasClass('page-active')){

        }*!/
        console.log(page_next);
        if (!isURL(page_next)) {

            var arUrl = window.location.search.split('&');
            arUrl[0] = arUrl[0].slice(1);
            var arr = [];
            $.each(arUrl, function(i, elem) {
                arr[i] = elem.split('=');
            });
            var newUrl = '';
            if (arr.length > 0) {
                newUrl += arr[0][0] + '=' + arr[0][1];
            }
            if (arr.length > 1) {
                if ('page_link' != arr[1][0]) {
                    newUrl += '&' + arr[1][0] + '=' + arr[1][1];
                }
            }
            newUrl += '&page_link=' + page_next;
            newUrl = window.location.pathname + '?' + newUrl;
            history.pushState('', '', newUrl);


            notification('default', 'Не забудьте сохранить перед выходом');
            $(this).parent('.page__control').parent('.move-page').removeClass('page-active');
            $('.navigation__dots .btn-main').removeClass('on');
            $('.move-page').removeClass('page-active');
            $('#' + page_next).addClass('page-active');
            $('#navigation_' + page_next).addClass('on');
        } else {
            editObjectsUser(page_next);
        }
        e.preventDefault();
    });*/

    $('.add-premises').click(function(e) {
        var type = $(this).attr('data-type');
        $("#loader h2").html('Загрузка');
        $("#loader p").html('Создаем помещение');
        $("#loader").show();
        //let formData = new FormData();
        let formData = new FormData();
        formData.append('id', $('#form-data-object input[name=id]').val())
            /*formData.append('remember', $('#authorization-form input[name="remember"]').checked);*/
        const send = ts('/api/add-premises', 'POST', formData);
        send.then((result) => {
            if (result.status == true) {
                location.reload();
            } else {
                notification('error', result['error']);
                $("#loader").hide();
            }
        });
        e.preventDefault();
    });

    $(".cabinet-form").submit(function(e) {
        let formData = new FormData(this);
        const send = ts('/api/user/save-profile-info', 'POST', formData);

        send.then((result) => {
            console.log(result);
            if (result.status == true) {
                notification('success', 'Сохранено');
            } else {
                notification('error', 'Ошибка');
            }
        });

        e.preventDefault();
    });

});
