PageSourceSearch

https://chateaudetalu.ru/local/templates/chateaudetalu/assets/js/dist/complex-excursion.js

js chateaudetalu.ru collected 2026-10-06 23:00:50 UTC 31,661 bytes, 752 lines download raw bytes

1// $(document).ready(function () {
2//     const twoExcursion = $("#two_excursion");
3  
4//     const modalAjaxComplexExcursion = new Modal({
5//       modalBtns: '[data-modal-complex]',
6//       modalCloseBtns: '.js-modal-complex-close',
7//       modals: '.js-modal-form',
8//     });
9  
10//     $("[data-modal-complex='complex-form']").click(function (event) {
11//       modalAjaxComplexExcursion.openModal(event);
12//     });
13  
14//     twoExcursion.click(function () {
15//       const $datepicker = $("#date-popup-complex-2").parent();
16//       const $datepickerLabel = $datepicker.find('.form-item__name');
17//       const $datepickerError = $datepicker.siblings();
18//       const formId = "#complex-form";
19//       const $dataSelect2 = $(formId + ' #date-popup-complex-2');    
20  
21//       if (twoExcursion.is(':checked')) {
22//         if (!$(formId + ' .part-2').hasClass('disabled')) {
23//           $datepicker.addClass('disabled');
24//           sendAjaxAbrauAtOneday(formId, window.dp2);
25//           disableGuestSelects();
26  
27//           //label error datepicker
28//           if ($datepickerError.length > 0) {
29//             $datepickerLabel.hide();
30//           } else {
31//             $datepickerLabel.show();
32//           }
33//         }     
34//       } else {
35//         $datepicker.removeClass('disabled');  
36//         $dataSelect2.val('').removeClass('changed');
37//         setLabelQuotasNotExist('', false);
38//         sendAjaxAbrauAtDifferentDays();
39//         disableGuestSelects(); 
40        
41//         //label error datepicker
42//         if ($datepickerError.length > 0) {
43//           $datepickerError.hide();
44//           $datepickerLabel.show();
45//         }
46//       }
47//     });  
48  
49//     $("[data-modal-step-2='step-2']").click(function (event) {  
50//       const formId = "#complex-form";
51//       $(formId).removeClass('step1').addClass('step2');
52//       $(".step-1").addClass('hide');
53//       $(".step-2").removeClass('hide');
54  
55//       let data = {};
56  
57//       $.ajax({
58//         type: "POST",
59//         data: data,
60//         dataType: 'json',  
61//         url: '/local/templates/chateaudetalu/assets/js/complex-ajax.json',
62//         success: function (data) {
63//           const disabledDays = data.data.quotas.disabledDays;
64//           const quotas = data.data.quotas.quotas;
65  
66//           const form = new Form("#complexForm", {
67//             handleSubmit: 'sendFormComplexExcursion',
68//             handleSubmitOption: 'ComplexExcursion',
69//             handleAjax: quotas,
70//             guestSelectTitle: 'Взрослые, от 12 лет*',
71//             datepicker: {
72//                 datepickerContainer: '.js-date-complex',
73//                 datepickerId: '#date-popup-complex-1',
74//                 disabledDays: disabledDays,
75//                 onShow: () => setLabelQuotasNotExist('', false),
76//                 onSelect: onDataSelectHandler
77//             },
78//             onGuestSelect: () => {
79//               onGuestSelectHandler('select-children', 'Дети от 3 до 12 лет*', $(formId + ' .js-fake-children'), onChildrenSelectHandler);
80//               setPrice();
81//             },
82//             onTimeSelect: onTimeSelectHandler,
83//             labelErrorQuota: 'К сожалению, на выбранные вами дату и время мест нет',
84//             labelErrorQuota2: 'К сожалению, на выбранную вами дату мест нет',
85//             noRestQuotas: true
86//           });
87//         },
88//         error: function (jqXHR, text, error) {
89//             //$('#news-ajax').html(error);
90//         }
91//       });
92//     });
93  
94//     $(".js-modal-complex-close").click(function () {
95//       const formId = "#complex-form";
96  
97//       if ($(formId + " .step-1").hasClass('hide')) {
98//         const modalBody = $(formId + ' .modal-custom__body');
99  
100//         //при сообщении об ошибке не очищать форму
101//         if ($(formId + " .error-message").hasClass('active')) {
102//           modalBody.removeClass('message');
103//         }
104  
105//         $(formId).removeClass('step2').addClass('step1');
106//         $(".step-2").addClass('hide');
107  
108//         $(formId + " .form-message").removeClass('active').addClass('hide');
109//         $(formId + " .error-message").removeClass('active').addClass('hide');
110  
111//         setLabelQuotasNotExist('', false);
112//         setTimeout(() => {
113//           $(".step-1").removeClass('hide');   
114//         }, 300);  
115  
116//         // сброс формы
117//         if (modalBody.hasClass('message')) {
118//           //time select 1
119//           const $timeSelect = $(formId + ' #select-time');
120//           const fakeTimeSelect = $(formId + ' .part-1 .js-fake-time');
121//           if ($timeSelect && $timeSelect.hasClass('select-ui')) disableSelect($timeSelect, fakeTimeSelect, window.selectTime);
122  
123//           //adult select 1
124//           const $adultSelect = $(formId + ' #select-guest');
125//           const fakeAdultSelect = $(formId + ' .part-1 .js-fake-guest');
126//           if ($adultSelect && $adultSelect.hasClass('select-ui')) disableSelect($adultSelect, fakeAdultSelect, window.selectGuestEvent);
127  
128//           //children select 1
129//           const $childrenSelect = $(formId + ' #select-children');
130//           const fakeСhildrenSelect = $(formId + ' .part-1 .js-fake-children');
131//           if ($childrenSelect && $childrenSelect.hasClass('select-ui')) disableSelect($childrenSelect, fakeСhildrenSelect, window.childrenSelect);
132  
133//           disableGuestSelects();
134  
135//           $('#complex-form .js-form')[0].reset();
136//         }    
137        
138//       }
139//     });
140  
141//     $("#complexForm").submit(function() {
142//       const formId = "#complex-form";    
143//       const $elements = $('#complexForm .select-ui.required');
144//       const $adultSelect2 = $(formId + ' #select-guest4');
145//       const $childrenSelect1 = $(formId + ' #select-guest5');
146//       const $childrenSelect2 = $(formId + ' #select-guest6');
147//       const $parentChildren1 = $childrenSelect1.parents(".row");
148//       const $alertChildren1 = $(formId).find('.alert-2');
149//       const errorChildren1 = 'Нужно указать не менее одного взрослого от 9 лет или ребенка от 6 до 9 лет';
150  
151//       if ($adultSelect2.find('[data-type="value"]').length > 0 || $childrenSelect1.find('[data-type="value"]').length > 0 || $childrenSelect2.find('[data-type="value"]').length > 0) {
152//         // при заполненной форме проверяем селекты взрослых и детей
153//         const adultValue = Number($adultSelect2.find('[data-type="value"]').text());
154//         const childrenValue1 = Number($childrenSelect1.find('[data-type="value"]').text());
155  
156//         if (adultValue === 0 && childrenValue1 === 0) {
157//           if ($alertChildren1.length === 0) {
158//             $parentChildren1.append(`<div class="alert-2">${errorChildren1}</div>`);
159//           }
160//         } else {
161//           $alertChildren1.remove();
162//         }    
163        
164//       } else {
165//         // подсвечиваем ошибки у фейковых селектов при пустой форме
166//         $elements.each(function() {
167//           const error = $(this).attr("data-validate-text-invalid");
168//           const parent = $(this).parents(".field");
169//           const alert = $(this).siblings('.alert');
170  
171//           if (alert.length === 0) {
172//             if ($(this).css("display") === "block") {
173//               parent.append(`<div class="alert">${error}</div>`);
174//             } 
175//           }         
176//         });
177//       }
178  
179//       // check email
180//       checkEmail();    
181//     });
182  
183//   });
184  
185//   function onDataSelectHandler() {
186//     const formId = "#complex-form";
187  
188//     //при новом выборе даты обнуляем children select 1
189//     const $childrenSelect = $(formId + ' #select-children');
190//     const fakeСhildrenSelect = $(formId + ' .part-1 .js-fake-children');
191  
192//     if ($childrenSelect && $childrenSelect.hasClass('select-ui')) disableSelect($childrenSelect, fakeСhildrenSelect, window.childrenSelect);
193  
194//     //при новом выборе даты обнуляем форму Абрау, если она уже была заполнена
195//     disableAbrauForm();
196//   }
197  
198//   function onTimeSelectHandler() {
199//     const formId = "#complex-form";
200  
201//     //при новом выборе даты обнуляем children select 1
202//     const $childrenSelect = $(formId + ' #select-children');
203//     const fakeСhildrenSelect = $(formId + ' .part-1 .js-fake-children');
204  
205//     if ($childrenSelect && $childrenSelect.hasClass('select-ui')) disableSelect($childrenSelect, fakeСhildrenSelect, window.childrenSelect);
206  
207//     const twoExcursion = $("#two_excursion");
208//     //при новом выборе времени обнуляем форму Абрау, если она уже была заполнена и нажат чекбокс в один день
209//     if (twoExcursion.is(':checked')) {
210//       disableAbrauForm();
211//     }  
212//   }
213  
214//   function onGuestSelectHandler(
215//       select,
216//       guestSelectTitle,
217//       fakeChildrenSelect,
218//       onChildrenSelectHandler,
219//       maxOptions = 11
220//     ) {
221//     let childrenSelect;
222  
223//     if (fakeChildrenSelect.css('display') === 'block') {
224//       fakeChildrenSelect.css('display', 'none');
225  
226//       childrenSelect = new SelectUI('#' + select, {
227//         placeholder: guestSelectTitle || 'Кол-во гостей*',
228//         errorText: 'Укажите кол-во гостей*',
229//         nameSelect: select,
230//         maxOptions: maxOptions,
231//         onSelect: () => {
232//           onChildrenSelectHandler();
233//           setPrice();
234//         }
235//       });
236//     }
237  
238//     switch(select) {
239//       case 'select-children':
240//         window.childrenSelect = childrenSelect;
241//         break;
242//       case 'select-guest6':
243//         window.childrenSelect3 = childrenSelect;
244//         break;
245//       default:
246//         window.childrenSelect = childrenSelect;
247//         break;
248//     }  
249//   }
250  
251//   function onChildrenSelectHandler() {
252//     const formId = "#complex-form";
253//     const part2 = $("#complex-form .part-2");
254//     const datepicker = $("#date-popup-complex-2").parent();
255//     const twoExcursion = $("#two_excursion");
256  
257//     part2.removeClass('disabled');
258  
259//     //checkbox two excursion at one day
260//     if (twoExcursion.is(':checked')) {
261//       datepicker.addClass('disabled');
262//       sendAjaxAbrauAtOneday(formId, window.dp);
263//     } else {
264//       datepicker.removeClass('disabled');
265//       sendAjaxAbrauAtDifferentDays();
266//     }
267//   }
268  
269//   function getDataTime(data, inputValue) {
270//     let dates = data[inputValue];
271//     if (typeof (dates) == 'object') {
272//         let dataSelect = [];
273//         Object.keys(dates).forEach(key => {
274//             dataSelect.push({
275//                 id: (inputValue + key).toString(),
276//                 value: key
277//             })
278//         })
279  
280//         return dataSelect;
281//     } else {
282//         return {};
283//     }
284//   }
285  
286//   function enableGuestSelect(select, fakeSelect, formId, quotas, dataInput) {
287//     const $timeSelect = $(formId + ' .part-2 #select-time2 [data-type="value"]');
288//     const timeInput = $timeSelect.text();
289    
290//     if (timeInput != "Время*") {    
291//       const dataSelect = getDataGuest(quotas, timeInput, dataInput);
292  
293//       if (dataSelect.length == 0) {
294//         setLabelQuotasNotExist('К сожалению, на выбранные вами дату и время мест нет');                    
295//       } else {
296//         setLabelQuotasNotExist('', false);  
297  
298//         if (fakeSelect.css('display') === 'block') {
299//           fakeSelect.css('display', 'none');
300      
301//           if (select === 'select-guest4') {
302//             enableAdultSelect(select, dataSelect, formId, quotas, timeInput, dataInput);
303//           } else {
304//             enableChildrenSelect(select, dataSelect);
305//           }
306//         }
307//       }
308//     }  
309//   }
310  
311//   function getDataGuest(data, timeInput, dataInput, newQuotas = false) {
312//     let dates = data[dataInput];
313//     // const quotas = dates[timeInput][category];
314//     const quotas = dates[timeInput]['adults'] + dates[timeInput]['children6_9'];
315//     let dataSelect = [];
316//     const countQuotas = quotas > 10 ? 10 : quotas;  
317//     let newQuotasNumber = countQuotas;
318  
319//     if (newQuotas > 0 && newQuotas <= countQuotas) {
320//       newQuotasNumber -= newQuotas;
321//     } else {
322//       newQuotasNumber = countQuotas;
323//     }
324  
325//     if (quotas > 0) {
326//         for (let i = 0; i <= newQuotasNumber; i++) {
327//             dataSelect.push({ id: (i+1).toString(), value: i.toString() });
328//         }
329//     }
330  
331//     return dataSelect;
332//   }
333  
334//   function enableAdultSelect(select, dataSelect, formId, quotas, timeInput, dataInput) {
335//     const adultSelect = new SelectUI('#' + select, {
336//       placeholder: 'Взрослые, от 9 лет*' || 'Кол-во гостей*',
337//       errorText: 'Укажите кол-во гостей*',
338//       nameSelect: select,
339//       data: dataSelect,
340//       onSelect: (val) => {
341//         const $childrenSelect2 = $(formId + ' #select-guest6');
342//         const $parent = $childrenSelect2.parent('.field-children-1');
343//         const dataSelectNew = getDataGuest(quotas, timeInput, dataInput, Number(val.value));
344  
345//         //select children 6-9
346//         const $childrenSelect1 = $(formId + ' #select-guest5');
347//         const $fakeChildrenSelect1 = $(formId + ' .js-fake-child1');
348//         if ($childrenSelect1 && $childrenSelect1.hasClass('select-ui')) {
349//           if (window.childrenSelect2) disableSelect($childrenSelect1, $fakeChildrenSelect1, window.childrenSelect2);
350          
351//         } 
352//         if ($fakeChildrenSelect1.css('display') === 'block') $fakeChildrenSelect1.css('display', 'none')
353//         enableChildrenSelect('select-guest5', dataSelectNew);
354  
355//         if (Number(val.value) > 0) {
356//           //select children 3-5
357//           onGuestSelectHandler('select-guest6', 'Дети от 3 до 5 лет', $(formId + ' .js-fake-child2'), () => {});
358//           $parent.removeClass('disabled');
359//         } else {
360//           $parent.addClass('disabled');
361  
362//           //destroy select children 3-5              
363//           const fakeChildrenSelect2 = $(formId + ' .js-fake-child2');
364//           if ($childrenSelect2 && $childrenSelect2.hasClass('select-ui')) disableSelect($childrenSelect2, fakeChildrenSelect2, window.childrenSelect3);
365//         }   
366//         setPrice();
367//       }
368//     });
369//     window.selectAdultEvent = adultSelect;
370//   }
371  
372//   function enableChildrenSelect(select, dataSelect) {
373//     const childrenSelect = new SelectUI('#' + select, {
374//       placeholder: 'Дети от 6 до 9 лет*' || 'Кол-во гостей*',
375//       errorText: 'Укажите кол-во гостей*',
376//       nameSelect: select,
377//       data: dataSelect,
378//       onSelect: () => {
379//         onChildrenSelectHandler();
380//         setPrice();
381//       }
382//     });
383//     window.childrenSelect2 = childrenSelect;
384//   }
385  
386//   function disableSelect(select, fakeSelect, wSelect) {
387//     if (Object.keys(wSelect).length !== 0) {
388//       select.removeClass('select-ui');
389//       wSelect.destroy();                    
390//       fakeSelect.css('display', 'block');
391//     }    
392//   }
393  
394//   function setPrice() {
395//     const formId = "#complex-form";
396//     const priceChateau = $(formId + ' #priceChateauHidden').val();
397//     const priceAbrau = $(formId + ' #priceAbrauHidden').val();
398//     const priceChildAbrau = $(formId + ' #priceChildAbrauHidden').val();
399//     const discount = Number($(formId + ' #discount').val());
400//     const priceHidden = $(formId + ' #totalPriceInput');
401//     const priceHiddenDiscount = $(formId + ' #totalPriceDiscountInput');
402//     const $totalPrice = $(formId + ' .js-total-price');
403//     const $totalOldPrice = $(formId + ' .js-old-price');
404//     const $totalDiscountPrice = $(formId + ' .js-price');
405//     const $discount = $(formId + ' .js-discount');
406//     let totalAdultGuest = 0, totalChildGuest = 0, totalAdultPrice = 0, totalChildPrice = 0, totalPrice = 0, discountTotalPrice = 0;
407  
408//     let guest1 = Number($("[name=select-guest]").val());
409//     let guest2 = Number($("[name=select-guest4]").val()) || 0;
410//     let guestCh = Number($("[name=select-guest5]").val()) || 0;
411  
412//     totalAdultGuest = guest1 + guest2;
413//     totalChildGuest = guestCh; 
414  
415//     totalAdultPrice = (Number(guest1) * Number(priceChateau)) + (Number(guest2) * Number(priceAbrau));
416//     totalChildPrice = Number(totalChildGuest) * Number(priceChildAbrau);
417//     totalPrice = totalAdultPrice + totalChildPrice;
418//     discountTotalPrice = totalPrice - (totalPrice * (discount / 100));
419    
420//     if (totalChildGuest === 0 || typeof (totalChildGuest) == 'undefined') {
421//       $totalPrice.html(Number(totalAdultPrice) + ' руб. за ' + Number(totalAdultGuest) + ' взр.');
422//     } else {
423//       if (Number(totalChildGuest) === 1) {
424//         $totalPrice.html(Number(totalAdultPrice) + ' руб. за ' + Number(totalAdultGuest) + ' взр., ' + Number(totalChildPrice) + ' руб. за ' + Number(totalChildGuest) + ' реб.');
425//       } else {
426//         $totalPrice.html(Number(totalAdultPrice) + ' руб. за ' + Number(totalAdultGuest) + ' взр., ' + Number(totalChildPrice) + ' руб. за ' + Number(totalChildGuest) + ' детей.');
427//       }    
428//     }  
429    
430//     if (totalPrice > 0) {
431//         $(formId + ' #priceBlock').css('display', 'block');
432//         $discount.html('Скидка ' + discount + '%');
433//         $totalOldPrice.text(totalPrice);
434//         $totalDiscountPrice.text(discountTotalPrice);
435  
436//         priceHidden.val(totalPrice);
437//         priceHiddenDiscount.val(discountTotalPrice);
438//     }
439//   }
440  
441//   function setLabelQuotasNotExist(message, showHide = true) {
442//     const form = $('#complexForm');
443//     if (typeof form == 'object') {
444//         const quotasLabel = $('#complexForm .quotasMessages2');
445//         if (typeof quotasLabel == 'object' && quotasLabel !== null) {
446//             if (showHide) {
447//                 quotasLabel.text(message);
448//                 quotasLabel.addClass('active');
449//             } else {
450//                 quotasLabel.removeClass('active');
451//             }
452//         }
453  
454//     }
455//   }
456  
457//   function sendAjaxAbrauAtOneday(formId, datepickerW) {
458//     const $timeSelect = $(formId + ' #select-time [data-type="value"]');
459//     const timeSelect = $timeSelect.text();
460//     const data = timeSelect;
461  
462//     // добавить в запрос выбранное в Шато время
463//     $.ajax({
464//       type: "POST",
465//       data: data,
466//       dataType: 'json',  
467//       url: '/local/templates/chateaudetalu/assets/js/abrau-ajax.json',
468//       success: function (data) {
469//         const quotas = data.result;
470//         //тут получаем квоты с учетом выбранного времени quotas
471//         datepickerW.$el.classList.add('changed');
472    
473//         const $dataSelect = $(formId + ' #date-popup-complex-1'); 
474//         const $dataSelect2 = $(formId + ' #date-popup-complex-2');         
475//         const dataInput = $dataSelect.val();
476//         const dataTimeSelect = getDataTime(quotas, dataInput);
477//         const fakeTimeSelect = $(formId + ' .part-2 .js-fake-time');
478//         const $adultSelect = $(formId + ' #select-guest4');
479//         const fakeAdultSelect = $(formId + ' .js-fake-adult');
480//         const $childrenSelect1 = $(formId + ' #select-guest5');
481//         const fakeChildrenSelect1 = $(formId + ' .js-fake-child1');
482//         const $childrenSelect2 = $(formId + ' #select-guest6');
483//         const fakeChildrenSelect2 = $(formId + ' .js-fake-child2');
484  
485//         $dataSelect2.val(dataInput).addClass('changed');
486  
487//         if (Object.keys(dataTimeSelect).length === 0) { 
488//           setLabelQuotasNotExist('К сожалению, на выбранную вами дату мест нет');                    
489//         } else {
490//           if (fakeTimeSelect.css('display') === 'block') {
491//             fakeTimeSelect.css('display', 'none');
492    
493//             const selectTimeEvent = new SelectUI('#select-time2', {
494//               placeholder: 'Время*',
495//               errorText: 'Выберите время*',
496//               nameSelect: 'select-time2',
497//               data: dataTimeSelect,
498//               onSelect: () => {    
499//                 if ($adultSelect && $adultSelect.hasClass('select-ui')) {
500//                   disableSelect($adultSelect, fakeAdultSelect, window.selectAdultEvent);
501//                   disableSelect($childrenSelect1, fakeChildrenSelect1, window.childrenSelect2);
502//                   disableSelect($childrenSelect2, fakeChildrenSelect2, window.childrenSelect3);
503//                 }
504//                 enableGuestSelect('select-guest4', $(formId + ' .part-2 .js-fake-adult'), formId, quotas, dataInput);
505//               }
506//             });
507//             window.selectTime2 = selectTimeEvent;
508//           } 
509//         }
510//       },
511//       error: function (jqXHR, text, error) {
512//           //$('#news-ajax').html(error);
513//       }
514//     }); 
515//   }
516  
517//   function sendAjaxAbrauAtDifferentDays() {  
518//     const formId = "#complex-form";
519//     const $dataSelect = $(formId + ' #date-popup-complex-1');
520//     const dateSelect = $dataSelect.val();
521//     const data = dateSelect;
522  
523//     // добавить в запрос выбранную в Шато дату
524//     $.ajax({
525//       type: "POST",
526//       data: data,
527//       dataType: 'json',  
528//       url: '/local/templates/chateaudetalu/assets/js/abrau-ajax.json',
529//       success: function (data) {
530//         const disabledDays = [];
531//         const quotas = data.result;
532//         //тут передаются квоты с учетом выбранной даты quotas
533//         //datepicker 2
534//         enableDatepicker2(quotas, disabledDays);
535//       },
536//       error: function (jqXHR, text, error) {
537//           //$('#news-ajax').html(error);
538//       }
539//     });
540//   }
541  
542//   function enableDatepicker2(quotas, disabledDays) {
543//     const formId = "#complex-form";
544//     let maxdate = new Date();
545//     maxdate.setDate(maxdate.getDate() + 90); //3 months
546  
547//     if (window.dp2) window.dp2.destroy();
548  
549//     const dp = new AirDatepicker("#date-popup-complex-2", {
550//       autoClose: true,
551//       minDate: new Date(),
552//       maxDate: maxdate,
553//       onRenderCell({ date, cellType }) {
554//           if (cellType == 'day') {
555//               var day = date.getDay();
556  
557//               var dd = date.getDate();
558//               if (dd < 10) dd = '0' + dd;
559  
560//               var mm = date.getMonth() + 1; // месяц 1-12
561//               if (mm < 10) mm = '0' + mm;
562  
563//               var yy = date.getFullYear();
564  
565//               const dateFormat = dd + '.' + mm + '.' + yy;
566//               const indexDisabled = disabledDays.indexOf(day);
567//               if (typeof quotas[dateFormat] !== "undefined" && indexDisabled == -1) {
568//                   var isDisabled = false;
569//                   window.isQuotasExist = window.isQuotasExist - 1;
570//               } else {
571//                   var isDisabled = true;
572//                   window.isQuotasExist = window.isQuotasExist + 1;
573//               }
574//               window.dayIndex = window.dayIndex + 1;
575  
576//               return {
577//                   disabled: isDisabled
578//               };
579//           }
580//       },
581//       onShow() {},
582//       onSelect({ date, formattedDate, datepicker }) {
583//           datepicker.$el.classList.add('changed');
584//           //дестрой селекта времени и гостей в случае перевыбора даты 
585//           //select time
586//           let timeSelect;
587//           const fakeTimeSelect = $(formId + ' .part-2 .js-fake-time');
588//           const $timeSelect = $(formId + ' #select-time2');
589          
590//           const $dataSelect = $(formId + ' #date-popup-complex-2');
591//           const dataInput = $dataSelect.val();
592//           const dataTimeSelect = getDataTime(quotas, dataInput);
593  
594//           if (dataTimeSelect.length == 0) {
595//             setLabelQuotasNotExist('К сожалению, на выбранную вами дату мест нет');                        
596//           } else {
597//             setLabelQuotasNotExist('', false);
598//             if ($timeSelect) timeSelect = $timeSelect.attr("id");
599//             if ($timeSelect && $timeSelect.hasClass('select-ui')) disableSelect($timeSelect, fakeTimeSelect, window.selectTime2);
600    
601//             if (fakeTimeSelect.css('display') === 'block') {
602//               fakeTimeSelect.css('display', 'none');
603    
604//               const selectTimeEvent = new SelectUI('#' + timeSelect, {
605//                 placeholder: 'Время*',
606//                 errorText: 'Выберите время*',
607//                 nameSelect: timeSelect,
608//                 data: dataTimeSelect,
609//                 onSelect: () => {
610//                   if ($adultSelect && $adultSelect.hasClass('select-ui')) {
611//                     disableSelect($adultSelect, fakeAdultSelect, window.selectAdultEvent);
612//                     disableSelect($childrenSelect1, fakeChildrenSelect1, window.childrenSelect2);
613//                     disableSelect($childrenSelect2, fakeChildrenSelect2, window.childrenSelect3);
614//                   }
615//                   enableGuestSelect('select-guest4', $(formId + ' .part-2 .js-fake-adult'), formId, quotas, dataInput);
616//                 }
617//               });
618//               window.selectTime2 = selectTimeEvent;
619//             } 
620//           }          
621                     
622//           //select guest            
623//           const $adultSelect = $(formId + ' #select-guest4');
624//           const fakeAdultSelect = $(formId + ' .js-fake-adult');
625//           if ($adultSelect && $adultSelect.hasClass('select-ui')) disableSelect($adultSelect, fakeAdultSelect, window.selectAdultEvent);
626         
627//           //select children 1
628//           const $childrenSelect1 = $(formId + ' #select-guest5');
629//           const fakeChildrenSelect1 = $(formId + ' .js-fake-child1');
630//           if ($childrenSelect1 && $childrenSelect1.hasClass('select-ui')) disableSelect($childrenSelect1, fakeChildrenSelect1, window.childrenSelect2);
631  
632//           //select children 2
633//           const $childrenSelect2 = $(formId + ' #select-guest6');
634//           const fakeChildrenSelect2 = $(formId + ' .js-fake-child2');
635//           if ($childrenSelect2 && $childrenSelect2.hasClass('select-ui')) disableSelect($childrenSelect2, fakeChildrenSelect2, window.childrenSelect3);
636  
637//       },
638//       container: '.js-date-complex',
639//       position({ $datepicker, $target, $pointer, done }) {
640//           let popper = Popper.createPopper($target, $datepicker, {
641//               placement: 'bottom',
642//               modifiers: [
643//                   {
644//                       name: 'flip',
645//                       options: {
646//                           fallbackPlacements: ['bottom'],
647//                       }
648//                   },
649//                   {
650//                       name: 'offset',
651//                       options: {
652//                           offset: [0, 10]
653//                       }
654//                   },
655//                   {
656//                       name: 'arrow',
657//                       options: {
658//                           element: $pointer
659//                       }
660//                   }
661//               ]
662//           })
663  
664//           return function completeHide() {
665//               popper.destroy();
666//               done();
667//           }
668//       }
669//     });
670//     window.dp2 = dp;
671//   }
672  
673//   function disableGuestSelects() {
674//     const formId = "#complex-form";
675  
676//     //time select
677//     const $timeSelect = $(formId + ' #select-time2');
678//     const fakeTimeSelect = $(formId + ' .part-2 .js-fake-time');
679//     if ($timeSelect && $timeSelect.hasClass('select-ui')) disableSelect($timeSelect, fakeTimeSelect, window.selectTime2);  
680  
681//     //adult adult 2
682//     const $adultSelect2 = $(formId + ' #select-guest4');
683//     const fakeAdultSelect2 = $(formId + ' .js-fake-adult');
684//     if ($adultSelect2 && $adultSelect2.hasClass('select-ui')) disableSelect($adultSelect2, fakeAdultSelect2, window.selectAdultEvent);
685  
686//     //select children 2-1
687//     const $childrenSelect1 = $(formId + ' #select-guest5');
688//     const fakeChildrenSelect1 = $(formId + ' .js-fake-child1');
689//     if ($childrenSelect1 && $childrenSelect1.hasClass('select-ui')) disableSelect($childrenSelect1, fakeChildrenSelect1, window.childrenSelect2);
690  
691//     //select children 2-2
692//     const $childrenSelect2 = $(formId + ' #select-guest6');
693//     const fakeChildrenSelect2 = $(formId + ' .js-fake-child2');
694//     if ($childrenSelect2 && $childrenSelect2.hasClass('select-ui')) disableSelect($childrenSelect2, fakeChildrenSelect2, window.childrenSelect3);
695//   }
696  
697//   function checkEmail() {
698//     const $inputEmail = document.querySelector('#complex-form #email');
699//     const $inputEmailParent = $inputEmail.parentNode;
700//     const $inputEmailLabel = $inputEmailParent.querySelector('.form-item__name');
701//     const $inputEmailError = $inputEmailParent.querySelector('.error-email');
702  
703//     if ($inputEmail.value.length > 0) {
704//       if (isEmailValid($inputEmail.value)) {
705//         $inputEmailError.style.display = 'none';
706//         $inputEmailLabel.style.display = 'block';
707//       } else {
708//         $inputEmailError.style.display = 'block';
709//         $inputEmailLabel.style.display = 'none';
710//       }
711//     } else {
712//       $inputEmailError.style.display = 'none';
713//       $inputEmailLabel.style.display = 'block';
714//     }  
715//   }
716  
717//   function isEmailValid(value) {
718//     const EMAIL_REGEXP = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;
719   
720//     return EMAIL_REGEXP.test(value);
721//   }
722  
723//   function disableAbrauForm() {
724//     const formId = "#complex-form";
725//     const part2 = $(formId + " .part-2");
726//     const $dataSelect2 = $(formId + ' #date-popup-complex-2');
727//     $dataSelect2.val('').removeClass('changed');
728  
729//     if (!part2.hasClass('disabled')) {      
730//       part2.addClass('disabled');
731//       disableGuestSelects();
732//     } 
733//   }
734  
735//   async function sendFormComplexExcursion(data, className) {
736//     //функцию скопировала тупо с другой формы, скорее всего, ее переписать надо под наши нужды
737//     data.className = "ComplexExcursion";
738//     if (className) {
739//         data.className = className;
740//     }
741  
742//     data.isQuotasExist = true;
743  
744//     return await BX.ajax.runComponentAction('uniqtrip:forms',
745//         'sendMessage', {
746//         mode: 'class',
747//         data: { post: data },
748//     }).then(function (response) {
749//         return response.data;
750//     }, function (response) {
751//     });
752//   }

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.