function strip_tags(str) {
    return ("" + str).replace(/<\/?[^>]+>/gi, '');
}
var is_online_get_session_updated = false;
function online_get_session(create, after_func_me) {
    var id = $("[name=id]").val();
    if (is_online_get_session_updated) return;
    if (!id || create) {
        $.ajax({
            url: "https://vipint-svo.ru/ajax.php?action=get_session",
            async: true,
            type: 'post',
            success: function (data) {
                $("[name=id]").val(data);
                is_online_get_session_updated = false;
                after_func_me();
            },
            error: function (jqXHR, exception) {
                is_online_get_session_updated = false;
            }
        });
    }
    if (!!id && !create) {
        if (after_func_me !== undefined) {
            after_func_me();
        }
    }
}
function isDate(dd, mm, yyyy) {
    var xDate = new Date(yyyy, mm - 1, dd);
    if (xDate.getDate() != dd || xDate.getMonth() + 1 != mm || xDate.getFullYear() != yyyy)
        return false;
    else
        return true;
}
function online_check() {
    var errors = new Array();
    errors["input"] = new Object();
    errors["flight_id"] = new Object();
    errors["passengers"] = new Object();
    errors["cars"] = new Object();
    form = get_form();
    if (!form["dtype"]) errors["flight_id"]["dtype"] = L("Введите информацию о прилёте / вылете");
    if (
        !form['date'] ||
        !form["time"]
    ) {
        errors["flight_id"]["date_time"] = L("Введите дату");
    } else if (!form["time"]) {
        errors["flight_id"]["date_time"] = L("Введите время");
    }
    if (!form["num"]) errors["input"]["num"] = L("Введите номер рейса");
    if (!form["dest"]) errors["input"]["dest"] = L("Укажите направление");
    for (var passenger = 0; passenger <= form['passengers']; passenger++) {
        if (
            !form["passengers[" + passenger + "][fio]"] ||
            !form["passengers[" + passenger + "][pass_type]"]
        ) {
            errors["passengers"][passenger] = L("Введите данные по пассажиру") + " №" + (1 + 1 * passenger);
        } else if (!form["passengers[" + passenger + "][pass_type]"]) {
            errors["passengers"][passenger] = L("Укажите взлослый/ребёнок для пассажира") + " №" + (1 + 1 * passenger);
        }
    }
    if (form['airport'] == 'VKO-K' || form['airport'] == 'VKO-A-K') {
        if ($("#cars_no_checkbox")) {
            if (!$("#cars_no_checkbox").is(':checked')) {
                for (var car = 0; car <= form['cars']; car++) {
                    if (
                        !form["cars[" + car + "][model]"] ||
                        !form["cars[" + car + "][num]"]
                    ) {
                        errors["cars"][car] = L("Ведите данные по машине") + " №" + (1 + 1 * car);
                    }
                }
            }
        }
    }
    if (!form["contacts[fio]"]) errors["input"]["contacts[surname]"] = L("Введите данные контактного лица (ФИО)");
    if (!form["contacts[mobile]"]) errors["input"]["contacts[mobile]"] = L("Укажите телефон контактного лица в формате:\n +7 (xxx) xxx-xx-xx");
    if ($("#agreement").is(':checked') == false) errors["input"]["agreement"] = L("Ознакомьтесь с соглашением об оказании услуг");
    var text = "";
    $("#info input, #dtype, #date_time, .passenger, .car").removeClass("error");
    $.each(errors["flight_id"],
        function (item, value) {
            text += value + "\n";
            $("#" + item).addClass("error");
        }
    );
    $.each(errors["input"],
        function (item, value) {
            text += value + "\n";
            $("[name='" + item + "']").addClass("error");
        }
    );
    $.each(errors["passengers"],
        function (item, value) {
            text += value + "\n";
            $("#passengers .passenger").slice(item, 1 * item + 1).addClass("error");
        }
    );
    $.each(errors["cars"],
        function (item, value) {
            text += value + "\n";
            $("#cars .car").slice(item, item + 1).addClass("error");
        }
    );
    if (text) {
        text = L("Исправьте следующие ошибки") + ":\n\n" + text;
        alert(text);
        return false;
    }
    return true;
}
function get_form() {
    var form = {Dops: []};
    var form_temp = $("#orderonce").serializeArray();
    var passenger = -1;
    var car = -1;
    $.each(
        form_temp,
        function (i, field) {
            if (field.name === "passengers[x][fio]") {
                passenger++;
            } else if (field.name === "order[room]") {
                form['Dops'].push({
                    title: "Комната",
                    count: field.value,
                    code: 'meet_room'
                });
            } else if (field.name === "order[escort]") {
                form['Dops'].push({
                    title: "Сопровождение",
                    code: 'escort'
                });
            } else if (field.name === "order[shuttle]") {
                form['Dops'].push({
                    title: "Шаттл",
                    code: 'shuttle'
                });
            }
            field.name = field.name.replace("passengers[x]", "passengers[" + passenger + "]");
            if ($("#cars_no_checkbox")) {
                if (!$("#cars_no_checkbox").is(':checked')) {
                    if (field.name === "cars[x][num]") car++;
                    field.name = field.name.replace("cars[x]", "cars[" + car + "]");
                }
            }
            form[field.name] = field.value;
        }
    );
    form['passengers'] = passenger;
    form['cars'] = car;
    if (form['date'] && form['time']) {
        var date = form['date'].split('.');
        form['date[day]'] = 1 * date[0];
        form['date[month]'] = 1 * date[1];
        form['date[year]'] = date[2];
        var time = form['time'].split(':');
        form['date[hour]'] = 1 * time[0];
        form['date[minute]'] = 1 * time[1];
    }
    form['dest'] = form['city'];
    return form;
}
function passenger_type(birthday) {
    var form = get_form();
    var inf_to = airportAge[form['airport']]["inf_to"];
    var chd_to = airportAge[form['airport']]["chd_to"];
    if (1 * form['passengers'] + 1 == 1) {
        return "ADT";
    }
    // ?ополн€ем ведущими нул€ми:
    form['date[month]'] = (parseInt(form['date[month]'], 10) < 10) ? "0" + form['date[month]'] : form['date[month]'];
    form['date[day]'] = (parseInt(form['date[day]'], 10) < 10) ? "0" + form['date[day]'] : form['date[day]'];
    form['date[hour]'] = (parseInt(form['date[hour]'], 10) < 10) ? "0" + form['date[hour]'] : form['date[hour]'];
    form['date[minute]'] = (parseInt(form['date[minute]'], 10) < 10) ? "0" + form['date[minute]'] : form['date[minute]'];
    birthday['month'] = (parseInt(birthday['month'], 10) < 10) ? "0" + birthday['month'] : birthday['month'];
    birthday['day'] = (parseInt(birthday['day'], 10) < 10) ? "0" + birthday['day'] : birthday['day'];
    var executeDate = form['date[year]'] + "" +
        form['date[month]'] + "" +
        form['date[day]'] + "" +
        form['date[hour]'] + "" +
        form['date[minute]'] + "00";
    var passAge = birthday['year'] + "" +
        birthday['month'] + "" +
        birthday['day'] + "000000";
    var diff = Math.floor((parseInt(executeDate, 10) - parseInt(passAge, 10)) / 10000000000);
    if (diff < inf_to) {
        return "INF";
    }
    if (diff < chd_to) {
        return "CHD";
    }
    return "ADT";
}
function create_book_object(form) {
    var query = new Object();
    query['id'] = form['id'];
    query['device'] = "site";
    query['lang'] = get_language();
    query['dtype'] = form['dtype'];
    query['airport'] = form['airport'];
    query['num'] = form['num'];
    query['dest'] = form['dest'];
    query['date'] = form['date[year]'] + "-" + form['date[month]'] + "-" + form['date[day]'] + " " + form['date[hour]'] + ":" + form['date[minute]'];
    query['Contacts'] = new Object();
    query['Contacts'][0] = new Object();
    var inf_from = airportAge[form['airport']]["inf_from"];
    var chd_from = airportAge[form['airport']]["chd_from"];
    var fio = form['contacts[fio]'];
    if (fio) {
        fio = splitWithTail(fio, " ", 3);
        query['Contacts'][0]['surname'] = fio[0];
        query['Contacts'][0]['name'] = fio[1];
        query['Contacts'][0]['middle'] = fio[2];
    }
    query['Contacts'][0]['email'] = form['contacts[email]'];
    query['Contacts'][0]['mobile'] = form['contacts[mobile]'];
    query['Contacts'][0]['phone1'] = form['contacts[phone1]'];
    query['Contacts'][0]['phone2'] = form['contacts[phone2]'];
    query['Contacts'][0]['comments'] = form['contacts[comments]'];
    var passenger;
    query['Passengers'] = new Object();
    for (passenger_count = 0; passenger_count <= form.passengers; passenger_count++) {
        passenger = new Object();
        var fio = form['passengers[' + passenger_count + '][fio]'];
        if (fio) {
            fio = splitWithTail(fio, " ", 3);
            passenger['name'] = fio[1];
            passenger['middle'] = fio[2];
            passenger['surname'] = fio[0];
        }
        passenger['citizen'] = 'RU';
        var pass_type = form['passengers[' + passenger_count + '][pass_type]'];
        passenger['birthday'] = new Object();
        if (pass_type == 'INF') {
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1 * form['date[year]'] - inf_from - 1;
        }
        if (pass_type == 'CHD') {
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1 * form['date[year]'] - chd_from - 1;
        }
        if (pass_type == 'ADT') {
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1990;
        }
        passenger['tariff'] = pass_type;
        query['Passengers'][passenger_count] = passenger;
    }
    var car;
    query['Cars'] = new Object();
    for (car_count = 0; car_count <= form.cars; car_count++) {
        car = new Object();
        car['model'] = form['cars[' + car_count + '][model]'];
        car['num'] = form['cars[' + car_count + '][num]'];
        if (car['model'] || car['num']) query['Cars'][car_count] = car;
    }
    if (form['order[room]'] || form['order[escort]'] || form['order[shuttle]']) {
        query['Dops'] = [];
        if (form['order[room]']) {
            query['Dops'].push({
                title: "Комната",
                code: 'meet_room',
                count: form['order[room]'],
            })
        }
        if (form['order[escort]']) {
            query['Dops'].push({
                title: "Сопровождение",
                code: 'escort',
            })
        }
        if (form['order[shuttle]']) {
            query['Dops'].push({
                title: "Шаттл",
                code: 'shuttle',
            })
        }
    }
    return query;
}
function splitWithTail(str, delim, count) {
    var parts = str.split(delim);
    var tail = parts.slice(count).join(delim);
    var result = parts.slice(0, count);
    result.push(tail);
    return result;
}
function create_print_object(form) {
    var print = new Object();
    var addition = new Object();
    print['id'] = '';
    print['date'] = '';
    print['request_type'] = form['dtype'];
    print['request_airport'] = form['airport'];
    print['request_num'] = form['num'];
    print['request_dest'] = form['dest'];
    print['request_date'] = form['date[year]'] + "-" + print_add_zero(form['date[month]']) + "-" + print_add_zero(form['date[day]']) + " " + print_add_zero(form['date[hour]']) + ":" + print_add_zero(form['date[minute]']);
    print['summ'] = $("#total").text();
    addition['CONTACTS'] = new Object();
    addition['CONTACTS'][0] = new Object();
    var fio = form['contacts[fio]'];
    var inf_from = airportAge[form['airport']]["inf_from"];
    var chd_from = airportAge[form['airport']]["chd_from"];
    if (fio) {
        fio = splitWithTail(fio, " ", 3);
        addition['CONTACTS'][0]['surname'] = fio[0];
        addition['CONTACTS'][0]['name'] = fio[1];
        addition['CONTACTS'][0]['middle'] = fio[2];
    }
    addition['CONTACTS'][0]['email'] = form['contacts[email]'];
    addition['CONTACTS'][0]['mobile'] = form['contacts[mobile]'];
    addition['CONTACTS'][0]['phone1'] = form['contacts[phone1]'];
    addition['CONTACTS'][0]['phone2'] = form['contacts[phone2]'];
    addition['CONTACTS'][0]['comments'] = form['contacts[comments]'];
    var passenger;
    addition['PASSENGERS'] = new Object();
    for (passenger_count = 0; passenger_count <= form.passengers; passenger_count++) {
        passenger = new Object();
        var fio = form['passengers[' + passenger_count + '][fio]'];
        if (fio) {
            fio = splitWithTail(fio, " ", 3);
            passenger['name'] = fio[1];
            passenger['middle'] = fio[2];
            passenger['surname'] = fio[0];
        }
        passenger['citizen'] = 'RU';
        var pass_type = form['passengers[' + passenger_count + '][pass_type]'];
        passenger['birthday'] = new Object();
        if (pass_type == 'INF') {
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1 * form['date[year]'] - inf_from - 1;
        }
        if (pass_type == 'CHD') {
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1 * form['date[year]'] - chd_from - 1;
        }
        if (pass_type == 'ADT') {
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1990;
        }
        passenger['tariff'] = pass_type;
        addition['PASSENGERS'][passenger_count] = passenger;
    }
    var car;
    addition['CARS'] = new Object();
    for (car_count = 0; car_count <= form.cars; car_count++) {
        car = new Object();
        car['model'] = form['cars[' + car_count + '][model]'];
        car['num'] = form['cars[' + car_count + '][num]'];
        if (car['model'] || car['num']) addition['CARS'][car_count] = car;
    }
    print['Passengers'] = addition;
    print['room'] = form['order[room]'];
    print['escort'] = form['order[escort]'];
    print['shuttle'] = form['order[shuttle]'];
    return print;
}
function online_book() {
    if (!vipPassengerCheck.checkPassengers()) return;
    if (!online_check()) return;
    //var form = get_form();
    //var airport = form['airport'];
    checkout_info_show();
    $("#checkout_buttons").show();
    $(".checkout_email").hide();
}
var online_book_with_session = function () {
    var form = get_form();
    var query = create_book_object(form);
    $.ajax({
        url: "https://vipint-svo.ru/ajax.php?action=book",
        async: false,
        type: 'post',
        data: query,
        success: function (answer) {
            errors = '';
            if (answer['ERRORS']) {
                for (var item = 0; item < answer['ERRORS'].length; item++) {
                    errors += strip_tags(answer['ERRORS'][item]) + "\n";
                }
                if (errors) {
                    errors = "Исправьте следующие ошибки:\n\n" + errors;
                    alert(errors);
                } else {
                    checkout_info_show(answer.DOP);
                    $("#checkout_buttons").show();
                    $(".checkout_email").hide();
                }
            }
        }
    });
};
function checkout_info_ok() {
    checkout_info_ok_with_session();
}
var checkout_info_ok_with_session = function () {
    var form = get_form();
    var query = create_book_object(form);
    $('#checkout_buttons button').attr('disabled', 'disabled');
    $('#checkout_buttons .preloader').show();
    $.ajax({
        url: "https://vipint-svo.ru/ajax.php?action=book",
        async: true,
        type: 'post',
        data: query,
        success: function (response) {
            if (response['status'] === 'error') {
                let errors = response['messages'],
                    errorsHtml  = '';
                errors.forEach((error) => {
                    errorsHtml += error + "
";
                });
                Swal.fire({
                    title: "Возникла ошибка",
                    html: errorsHtml
                });
                document.querySelector('#checkout_info_hide').disabled = false;
                document.querySelector('#checkout_info_ok').disabled = false;
                $('#checkout_buttons .preloader').hide();
            } else {
                window.location.replace("/frame-check.php?order_id="+ response.number +"&check=customer_check" + "&lang=" + get_language() );
            }
        }
    });
};
function online_recount() {
    online_get_session(false, online_recount_with_session);
}
var online_recount_with_session = function () {
    var form = get_form();
    if (form['airport'] == undefined || form['airport'] == '') {
        return;
    }
    var inf_from = airportAge[form['airport']]["inf_from"];
    var chd_from = airportAge[form['airport']]["chd_from"];
    if (!form["dtype"] || !form["date"] || !form['airport'] || !form['time']) return;
    var passenger = 0;
    for (passenger = 0; passenger <= form['passengers']; passenger++) {
        if (form["passengers[" + passenger + "][pass_type]"] == "") {
            return;
        }
    }
    var query = {};
    query['id'] = form['id'];
    query['dtype'] = form['dtype'];
    query['airport'] = form['airport'];
    query['date'] = form['date[year]'] + "-" + form['date[month]'] + "-" + form['date[day]'] + " " + form['date[hour]'] + ":" + form['date[minute]'];
    query['Dops'] = form['Dops'];
    passenger = {};
    query['Passengers'] = {};
    for (passenger_count = 0; passenger_count <= form.passengers; passenger_count++) {
        var passenger = {};
        var pass_type = form['passengers[' + passenger_count + '][pass_type]'];
        if (pass_type == 'INF') {
            passenger['birthday'] = {};
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1 * form['date[year]'] - inf_from - 1;
        }
        if (pass_type == 'CHD') {
            passenger['birthday'] = new Object();
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1 * form['date[year]'] - chd_from - 1;
        }
        if (pass_type == 'ADT') {
            passenger['birthday'] = new Object();
            passenger['birthday']['day'] = 1;
            passenger['birthday']['month'] = 1;
            passenger['birthday']['year'] = 1990;
        }
        passenger['tariff'] = form['passengers[' + passenger_count + '][pass_type]'];
        query['Passengers'][passenger_count] = passenger;
    }
    $.post(
        "https://vipint-svo.ru/ajax.php?action=recount",
        query,
        function (answer) {
            current_prices = answer
            let currentPrices = JSON.parse(answer);
            if (!current_prices) {
                $("#total").text("-");
            }
            $("#total").text(currentPrices.sumTotal + " " + currentPrices.currency);
            if ( currentPrices.sumTotal * 1 === 0 ) {
                $("#total_info").hide();
                $("#button_send").html("ОТПРАВИТЬ ЗАЯВКУ");
                $('#button_send_info').html('
Стоимость данной заявки по запросу, менеджер свяжется с Вами
в течение 30 минут после отправки заявки