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]']; console.log(form); console.log(query); 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', }) } } /* query['room'] = form['order[room]']; query['escort'] = form['order[escort]']; query['shuttle'] = form['order[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']; // if (airport == "SVO-D" || airport == "SVO-D-INT" || airport == "SVO-E" || airport == "SVO-F") { // online_get_session(false, online_email_with_session); // } // else { // online_get_session(false, online_book_with_session); // } //online_get_session(false, online_book_with_session); 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(); } } } }); }; //var online_email_with_session = function () //{ // var form = get_form(); // var query = create_book_object(form); // // query['room'] = form['order[room]']; // query['escort'] = form['order[escort]']; // query['shuttle'] = form['order[shuttle]']; // // $.ajax({ // url: "//ajax.php?action=email", // async: false, // type: 'post', // data: query, // success: function (answer) { // var form = get_form(); // var print_obj = create_print_object(form); // // print_obj['room'] = form['order[room]']; // print_obj['escort'] = form['order[escort]']; // print_obj['shuttle'] = form['order[shuttle]']; // // $("#online_form").hide(); // $("#checkout_info_text").html(order_print(print_obj)); // $("#checkout_info").show(); // $("#checkout_buttons").hide(); // $(".checkout_email").show(); // } // }); //}; function checkout_info_ok() { //online_get_session(true, checkout_info_ok_with_session); 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 (data) { var win = window.open("https://vipint-svo.ru/check.php?order_id=" + data.number, '_blank'); if (win) { //Browser has allowed it to be opened win.focus(); } else { //Browser has blocked it window.location.replace("https://vipint-svo.ru/frame-check.php?order_id=" + data.number + "&check=customer_check"); } //$.ajax({ // url: "//ajax.php?action=get_order_id", // async: true, // type: 'post', // data: {'id': query['id']}, // success: function (order_id) { // var win = window.open("//check.php?order_id=" + order_id, '_blank'); // if (win) { // //Browser has allowed it to be opened // win.focus(); // } else { // //Browser has blocked it // window.location.replace("//frame-check.php?order_id=" + order_id + "&check=customer_check"); // } // } //}); } }); }; 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 if (!current_prices) { $("#total").text("-"); } $("#total").text(answer.Total.price); if (answer.Total.price * 1 == 0) { $("#total_info").hide(); $("#button_send").html("ОТПРАВИТЬ ЗАЯВКУ"); $('#button_send_info').html('

Стоимость данной заявки по запросу, менеджер свяжется с Вами
в течение 30 минут после отправки заявки

'); $('#style_changer').html('.passenger_price { visibility: hidden; }'); } else { $("#total_info").show(); $("#button_send").html(L("ОПЛАТА ONLINE")); $('#button_send_info').html(''); $('#style_changer').html('.passenger_price { visibility: visible; }'); } orderAdd.updatePrices(); }); }; function changeCss(className, classValue) { // we need invisible container to store additional css definitions var cssMainContainer = $('#css-modifier-container'); if (cssMainContainer.length == 0) { var cssMainContainer = $('
'); cssMainContainer.hide(); cssMainContainer.appendTo($('body')); } // and we need one div for each class classContainer = cssMainContainer.find('div[data-class="' + className + '"]'); if (classContainer.length == 0) { classContainer = $('
'); classContainer.appendTo(cssMainContainer); } // append additional style classContainer.html(''); } function add_passenger() { $(".passenger:first").clone().appendTo("#passengers").removeClass("error"); $(".passenger:last") $(".passenger:last input").val(""); $(".passenger:last select").val("-1"); $("#passengers .button_close").click(del).show(); $("#passengers .passenger_number span").each( function (number, element) { $(element).html(number + 1); } ); } function add_car() { $(".car:first").clone().appendTo("#cars").removeClass("error"); $(".car:last input").val(""); $("#cars .button_close").click(del).show(); } function del(event) { $(event.target).parent().remove(); if ($(".passenger").length == 1) $("#passengers .button_close").hide(); if ($(".car").length == 1) $("#cars .button_close").hide(); $("#passengers .passenger_number span").each( function (number, element) { $(element).html(number + 1); } ); online_recount(); } function checkout_info_show(dop_info) { var form = get_form(); var print_obj = create_print_object(form); print_obj.dop_info = dop_info; $("#online_form").hide(); $("#checkout_info_text").html(order_print(print_obj)); $("#checkout_info").show(function () { $(window.parent).scrollTop(0); }); } function checkout_info_hide() { $("#checkout_info").hide(); $("#online_form").show(); } function cars_no_checkbox() { if ($("#cars_no_checkbox").is(':checked')) { $("#cars_list").hide(); $("#add_car").hide(); $("#cars_no div").show(); } else { $("#cars_list").show(); $("#add_car").show(); $("#cars_no div").hide(); } } jQuery(function ($) { $("#info").change(online_recount); $("#button_send").click(function (event) { event.preventDefault(); online_book(); }); $("#add_passenger").click(add_passenger); $("#add_car").click(add_car); $(".button_close").click(del).hide(); $("#checkout_info").hide(); $("#checkout_info_hide").click(checkout_info_hide); $("#checkout_info_ok").click(checkout_info_ok); $("#checkout_info_print").click(function () { window.print(); }); $("#cars_no_checkbox").click(cars_no_checkbox); $("#cars_no div").hide(); });