PageSourceSearch

https://felisatti.ru/local/templates/felisatti-new/js/script.js?178109935823657

js felisatti.ru collected 2026-10-07 16:55:58 UTC 23,657 bytes, 933 lines download raw bytes

1let AT = {}
2
3var setMask = (name) => {
4	const phones = [...document.querySelectorAll('input[name="' + name + '"]')];
5	for (const phone of phones)
6		IMask(phone, {mask: '+7 (000) 000-00-00'})
7}
8
9var decodeHtml = (html) => {
10	var txt = document.createElement("textarea");
11	txt.innerHTML = html;
12	return txt.value;
13}
14
15// region Bitrix custom preloader
16var lastWait = [];
17
18BX.showWait = function (node, msg)
19{
20	node = BX(node) || document.body || document.documentElement;
21	msg = msg || BX.message('JS_CORE_LOADING');
22
23	var container_id = node.id || Math.random();
24
25	var obMsg = node.bxmsg = document.body.appendChild(BX.create('DIV', {
26		props: {
27			id: 'wait_' + container_id,
28			className: 'bx-core-waitwindow'
29		},
30		text: msg
31	}));
32
33	setTimeout(BX.delegate(_adjustWait, node), 10);
34
35	document.querySelector('.pWrap').style.display = 'block'
36
37	lastWait[lastWait.length] = obMsg;
38	return obMsg;
39};
40
41BX.closeWait = function (node, obMsg)
42{
43	document.querySelector('.pWrap').style.display = 'none'
44
45	if (node && !obMsg)
46		obMsg = node.bxmsg;
47	if (node && !obMsg && BX.hasClass(node, 'bx-core-waitwindow'))
48		obMsg = node;
49	if (node && !obMsg)
50		obMsg = BX('wait_' + node.id);
51	if (!obMsg)
52		obMsg = lastWait.pop();
53
54	if (obMsg && obMsg.parentNode)
55	{
56		for (var i = 0, len = lastWait.length; i < len; i++)
57		{
58			if (obMsg == lastWait[i])
59			{
60				lastWait = BX.util.deleteFromArray(lastWait, i);
61				break;
62			}
63		}
64
65		obMsg.parentNode.removeChild(obMsg);
66		if (node)
67			node.bxmsg = null;
68		BX.cleanNode(obMsg, true);
69	}
70};
71
72function _adjustWait()
73{
74	if (!this.bxmsg)
75		return;
76
77	var arContainerPos = BX.pos(this),
78		div_top = arContainerPos.top;
79
80	if (div_top < BX.GetDocElement().scrollTop)
81		div_top = BX.GetDocElement().scrollTop + 5;
82
83	this.bxmsg.style.top = (div_top + 5) + 'px';
84
85	if (this == BX.GetDocElement())
86	{
87		this.bxmsg.style.right = '5px';
88	}
89	else
90	{
91		this.bxmsg.style.left = (arContainerPos.right - this.bxmsg.offsetWidth - 5) + 'px';
92	}
93}
94// endregion
95
96// region aTip - asteriks
97var aTip = (function() {
98
99	function fadeIn(el) {
100		let opacity = 0.01,
101			fadeEl = el;
102
103		if(fadeEl){
104			fadeEl.style.opacity = opacity;
105			fadeEl.style.display = "block";
106			var timer = setInterval(function() {
107				if(opacity >= 1) {
108					clearInterval(timer);
109				}
110				fadeEl.style.opacity = opacity;
111				opacity += opacity * 0.1;
112			}, 5);
113		}
114	}
115
116	function fadeOut(el) {
117		let opacity = 1,
118			fadeOutEl = el;
119
120		if(fadeOutEl){
121			fadeOutEl.style.display = "block";
122
123			var timer = setInterval(function() {
124				if(opacity <= 0.01) {
125					clearInterval(timer);
126					fadeOutEl.style.display = "none";
127				}
128				fadeOutEl.style.opacity = opacity;
129				opacity -= opacity * 0.1;
130			}, 5);
131		}
132	}
133
134	function isHidden(el) {
135		return (el.offsetParent === null)
136	}
137
138	Element.prototype.remove = function() {
139		this.parentElement.removeChild(this);
140	}
141
142	NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
143		for(var i = this.length - 1; i >= 0; i--) {
144			if(this[i] && this[i].parentElement) {
145				this[i].parentElement.removeChild(this[i]);
146			}
147		}
148	}
149
150	var api = {
151		init: function () {
152			let asteriks = document.querySelectorAll('.asteriks');
153
154			for (let i = 0; i < asteriks.length; i++){
155
156				asteriks[i].addEventListener("mouseenter", (e) => {
157					var el = asteriks[i],
158						title = el.getAttribute('data-title');
159
160					if(!!title){
161						el.setAttribute('tipText',title);
162						el.removeAttribute('data-title');
163
164						var newDiv = document.createElement("div");
165
166						newDiv.className = "nTip";
167						newDiv.innerHTML = title;
168
169						if(document.body.clientWidth < 670) {
170							newDiv.style.top = e.pageY + 30 + 'px';
171							newDiv.style.left = 15 + 'px';
172							newDiv.style.width = 'calc(100% - 30px)';
173						}else{
174							newDiv.style.top = e.pageY + 10 + 'px';
175							newDiv.style.left = e.pageX + 20 + 'px';
176						}
177
178						if(!!document.querySelector('.nTip'))
179							document.querySelector('.nTip').remove();
180
181						document.body.appendChild(newDiv);
182						fadeIn(newDiv);
183					}
184
185				});
186
187				asteriks[i].addEventListener("mouseleave", (e) => {
188					var el = asteriks[i];
189
190					if(!!el.getAttribute('tipText'))
191						el.setAttribute('data-title',el.getAttribute('tipText'));
192
193					if(!!document.querySelector('.nTip'))
194						document.querySelector('.nTip').remove();
195				});
196
197				asteriks[i].addEventListener("mousemove", (e) => {
198					var tip = document.querySelector('.nTip');
199
200					if(!!tip){
201						if(document.body.clientWidth < 670) {
202							tip.style.top = e.pageY + 30 + 'px';
203							tip.style.left = 15 + 'px';
204							tip.style.width = 'calc(100% - 30px)';
205						}else{
206							tip.style.top = e.pageY + 10 + 'px';
207							tip.style.left = e.pageX + 20 + 'px';
208						}
209					}
210				});
211			}
212		}
213	}
214
215	return api;
216});
217// endregion
218
219document.addEventListener('DOMContentLoaded', function(){
220
221	let scrollPos = 0;
222	function handleScroll() {
223		window.requestAnimationFrame(function() {
224			var scroll = document.documentElement.scrollTop;
225			var header = document.querySelector('.header');
226			if(scroll > 1){
227				header.classList.add('show');
228			}
229			else{
230				header.classList.remove('show');
231			}
232			scrollPos = scroll;
233		})
234	}
235	handleScroll();
236	window.addEventListener('scroll', handleScroll);
237	
238	let headerSearch = document.querySelector('.header__search');
239	let search = document.querySelector('.search');
240	if(headerSearch){
241		headerSearch.addEventListener("click", function () {
242			search.classList.toggle('active');
243		});		
244	}
245
246	let headerBurger = document.querySelector('.header__burger');
247	let menu = document.querySelector('.menu');
248	let menuLink = document.querySelectorAll('.menu__link');
249	let body = document.body;
250	
251	if(headerBurger){
252		headerBurger.addEventListener("click", function () {
253			headerBurger.classList.toggle('active');
254			menu.classList.toggle('open');
255			body.classList.toggle('lock');
256		});		
257	}
258
259	if(menuLink){
260		menuLink.forEach(function(menuLink) {
261			menuLink.addEventListener('click', function() {
262				if(menuLink.classList.contains('with-sublist')) return;
263				headerBurger.classList.remove('active');
264				menu.classList.remove('open');
265				body.classList.remove('lock');
266			});
267		});
268	}
269
270	var tabsItems = document.querySelectorAll('[data-tab]');
271	if(tabsItems){
272		tabsItems.forEach(function(tabsItem) {
273			tabsItem.addEventListener('click', function(event) {
274				event.preventDefault();
275				var tabParent = this.closest('.tabs');
276				var tabActive = tabParent.querySelector('[data-tab].active');
277				var contentActive = tabParent.querySelectorAll('[data-content].target');
278				if (tabActive) {
279					tabActive.classList.remove('active');
280				}
281				contentActive.forEach(function(contentActive){
282					if (contentActive) {
283						contentActive.classList.remove('target');
284						contentActive.classList.remove('open');
285					}	  
286				});
287				this.classList.add('active');
288				const tabContent = this.getAttribute("data-tab");
289				const tabId = tabParent.querySelectorAll(`[data-content="${tabContent}"]`);
290				tabId.forEach(function(tabId){
291					if (tabId) {
292						tabId.classList.add('target');
293						tabId.classList.add('open');
294					}	  
295				});
296			});
297		});
298	}
299
300	let menuLinkWithSub = document.querySelectorAll('.menu__link.with-sublist');
301	if(menuLinkWithSub){
302		menuLinkWithSub.forEach(function(menuLinkWithSub) {
303			menuLinkWithSub.addEventListener('click', function(e) {
304				e.preventDefault();
305				menuLinkWithSub.parentNode.classList.toggle('active');
306			});
307		})
308	}
309
310	let sublistBack = document.querySelectorAll('.sublist__back');
311	if(sublistBack){
312		sublistBack.forEach(function(sublistBack) {
313			sublistBack.addEventListener('click', function(e) {
314				e.preventDefault();
315				if(sublistBack.closest('.sublist__wrapper')){
316					sublistBack.closest('.sublist__wrapper').classList.remove('target');
317					sublistBack.closest('.sublist__wrapper').classList.remove('open');
318				}else{
319					sublistBack.closest('.menu__item')?.classList.remove('active');
320				}
321			});
322		})
323	}
324
325	var faqs = document.querySelectorAll('.success__top');
326	if(faqs){
327		faqs.forEach(function(faq) {
328			faq.addEventListener('click', function() {
329				faq.parentNode.classList.toggle('active');
330				slideToggle(faq.nextElementSibling);
331			});
332		});
333	}
334
335	function slideToggle(element) {
336		var target = element.style;
337		if (target.maxHeight) {
338			target.maxHeight = null;
339		} else {
340			target.maxHeight = element.scrollHeight + 'px';
341		}
342	}	
343
344	if (document.querySelector('.main__slider')) {
345		new Swiper('.main__slider', {
346			slidesPerView: 3,
347			spaceBetween: 30,
348			loop: false,
349			speed: 600,
350			breakpoints: {
351				0: {
352					slidesPerView: 1,
353					spaceBetween: 12,
354				},
355				681: {
356					slidesPerView: 2,
357					spaceBetween: 12,
358				},
359				1024:{
360					slidesPerView: 3,
361					spaceBetween: 30,					
362				}
363			},
364			scrollbar: {
365				el: ".main__scrollbar",
366				hide: false,
367				draggable: true,
368			},
369		});
370	}
371	if (document.querySelector('.products__slider')) {
372		new Swiper('.products__slider', {
373			slidesPerView: 4,
374			spaceBetween: 20,
375			loop: false,
376			speed: 600,
377			breakpoints: {
378				0: {
379					slidesPerView: 1,
380					spaceBetween: 10,
381				},
382				601: {
383					slidesPerView: 2,
384					spaceBetween: 10,
385				},
386				768: {
387					slidesPerView: 3,
388					spaceBetween: 12,
389				},
390				1024:{
391					slidesPerView: 4,
392					spaceBetween: 20,					
393				}
394			},
395			scrollbar: {
396				el: ".products__scrollbar",
397				hide: false,
398				draggable: true,
399			},
400		});
401	}
402	if (document.querySelector('.production__slider')) {
403		new Swiper('.production__slider', {
404			slidesPerView: 4,
405			spaceBetween: 20,
406			loop: false,
407			speed: 600,
408			breakpoints: {
409				0: {
410					slidesPerView: 1,
411					spaceBetween: 12,
412				},
413				601: {
414					slidesPerView: 2,
415					spaceBetween: 12,
416				},
417				861:{
418					slidesPerView: 3,
419					spaceBetween: 16,					
420				},
421				1024:{
422					slidesPerView: 4,
423					spaceBetween: 20,					
424				}
425			},
426			scrollbar: {
427				el: ".production__scrollbar",
428				hide: false,
429				draggable: true,
430			},
431		});
432	}
433
434	if (document.querySelector('.otherproducts__slider')) {
435		new Swiper('.otherproducts__slider', {
436			slidesPerView: 2,
437			spaceBetween: 20,
438			loop: false,
439			speed: 600,
440			breakpoints: {
441				0: {
442					slidesPerView: 1,
443				},
444				651:{
445					slidesPerView: 2,
446				}
447			},
448			scrollbar: {
449				el: ".otherproducts__scrollbar",
450				hide: false,
451				draggable: true,
452			},
453		});
454	}
455
456	let categorySort = document.querySelector('.category__sort-header');
457	if(categorySort){
458		categorySort.addEventListener("click", function () {
459			categorySort.parentNode.classList.toggle('active');
460		});		
461	}
462
463	let categoryShow = document.querySelector('.category__show-header');
464	if(categoryShow){
465		categoryShow.addEventListener("click", function () {
466			categoryShow.parentNode.classList.toggle('active');
467		});		
468	}
469
470	let categoryFilter = document.querySelector('.category__filter');
471	let filter = document.querySelector('.filter');
472	let filterClose = document.querySelector('.filter__head img');
473	if(categoryFilter){
474		categoryFilter.addEventListener("click", function () {
475			document.body.classList.add('filterlock');
476			filter.classList.add('open');
477		});		
478	}
479	if(filterClose){
480		filterClose.addEventListener("click", function() {
481			filter.classList.remove('open');
482			document.body.classList.remove('filterlock');
483		});
484	}
485
486	let filterItem = document.querySelectorAll('.filter__top');
487	if(filterItem){
488		filterItem.forEach(function(filterItem) {
489			filterItem.addEventListener('click', function() {
490				filterItem.parentNode.classList.toggle('active');
491				slideToggle(filterItem.nextElementSibling);
492			});
493		});
494	}
495
496	document.addEventListener('click', function (e) {
497		if (!!search && !search.contains(e.target) && !headerSearch.contains(e.target)) {
498			search.classList.remove('active');
499		}
500		if (categorySort && !categorySort.contains(e.target) && !categorySort.parentNode.contains(e.target)) {
501			categorySort.parentNode.classList.remove('active');
502		}
503		if (categoryShow && !categoryShow.contains(e.target) && !categoryShow.parentNode.contains(e.target)) {
504			categoryShow.parentNode.classList.remove('active');
505		}
506	});
507
508	let filterRange = document.querySelectorAll('.filter__range');
509	if(filterRange) {
510		filterRange.forEach(function(rangeEl) {
511			const parent = rangeEl.closest('.filter__item');
512			const inputs = parent.querySelectorAll('.filter__inputs input');
513			const min = parseInt(rangeEl.dataset.min, 10);
514			const max = parseInt(rangeEl.dataset.max, 10);
515
516			noUiSlider.create(rangeEl, {
517				start: [min, max],
518				connect: true,
519				range: {
520					'min': min,
521					'max': max
522				},
523				format: {
524					to: function (value) {
525						return Math.round(value);
526					},
527					from: function (value) {
528						return Number(value);
529					}
530				}
531			});
532
533			rangeEl.noUiSlider.on('slide', function(values, handle) {
534				inputs[handle].value = values[handle].toLocaleString('ru');
535			});
536
537			inputs.forEach(function(input, handle) {
538				input.addEventListener('input', function() {
539					this.value = this.value.replace(/[^\d\s]/g, '');
540					const cleanedValue = this.value.replace(/\s+/g, '');
541					rangeEl.noUiSlider.setHandle(handle, cleanedValue);
542				});
543			});
544		});
545	}
546
547	const filterLinks = document.querySelectorAll("[data-filter]");
548	const cards = document.querySelectorAll("[data-fitem]");
549	if(filterLinks){
550		cards.forEach(card => {
551			card.classList.add('show');
552		});
553		filterLinks.forEach(link => {
554			link.addEventListener("click", function (e) {
555				e.preventDefault();
556				filterLinks.forEach(link => link.classList.remove("active"));
557				this.classList.add("active");
558				const filter = this.getAttribute("data-filter") || this.textContent.trim('');
559				cards.forEach(card => {
560					const cardFilter = card.getAttribute("data-fitem");
561					if (filter === "Все" || filter === cardFilter) {
562						card.classList.remove('hide');
563						card.classList.remove('show');
564						setTimeout(() => {
565							card.classList.add('show');
566						})
567					} else {
568						card.classList.add('hide');
569						card.classList.remove('show');
570					}
571				});
572			});
573		});
574	}
575
576	if (document.querySelector('.post__slider')) {
577		new Swiper('.post__slider', {
578			slidesPerView: 3,
579			spaceBetween: 20,
580			loop: false,
581			speed: 600,
582			breakpoints: {
583				1101: {
584					spaceBetween: 20,
585					slidesPerView: 3,
586				},
587				1024: {
588					spaceBetween: 20,
589					slidesPerView: 2,
590				},
591				768: {
592					spaceBetween: 20,
593					slidesPerView: 3,
594				},
595				600: {
596					spaceBetween: 20,
597					slidesPerView: 2,
598				},
599				0: {
600					spaceBetween: 10,
601					slidesPerView: 1,
602				},
603			},
604		});
605	}
606
607	var productMore = document.querySelectorAll('.product__more');
608	if(faqs){
609		productMore.forEach(function(more) {
610			more.addEventListener('click', function(e) {
611				e.preventDefault();
612				more.parentNode.classList.toggle('active');
613			});
614		});
615	}	
616
617	const productSliders = document.querySelectorAll('.product__sliders');
618
619	if (productSliders.length) {
620		productSliders.forEach(productSlider => {
621			const mainSliderElement = productSlider.querySelector('.product__slider');
622			const navSliderElement = productSlider.querySelector('.product__navslider');
623
624			const navSlider = new Swiper(navSliderElement, {
625				loop: true,
626				slideToClickedSlide: true,
627				breakpoints: {
628					0: {
629						slidesPerView: 5,
630						spaceBetween: 0,
631					},
632					601: {
633						slidesPerView: 5,
634						spaceBetween: 5,
635					},
636					1024: {
637						slidesPerView: 7,
638						spaceBetween: 19,
639					},
640				},
641			});
642
643			new Swiper(mainSliderElement, {
644				spaceBetween: 0,
645				slidesPerView: 1,
646				loop: true,
647				navigation: {
648					nextEl: '.product__next',
649					prevEl: '.product__prev',
650				},
651				thumbs: {
652					swiper: navSlider,
653				},
654			});
655
656		})
657
658
659
660	}
661
662	if(document.querySelector('[data-fancybox]:not([data-mobile])')){
663		Fancybox.bind('[data-fancybox]:not([data-mobile])', {
664			Images: {
665				zoom: false,
666			},
667			Thumbs: {
668				type: "classic",
669			},
670			on: {
671				close: (fancybox) => {
672					BX.onCustomEvent('onAjaxSuccess');
673				},
674			},
675		});
676	}
677
678	if(document.querySelector('html').classList.contains('bx-touch')){
679		Fancybox.bind('.product__sliders [data-fancybox][data-mobile]', {
680			Images: {
681				zoom: false,
682			},
683			Thumbs: {
684				type: "classic",
685			},
686			on: {
687				close: (fancybox) => {
688					BX.onCustomEvent('onAjaxSuccess');
689				},
690			},
691		});
692	}
693
694	let copyBtn = document.getElementById('copyButton');
695	if(copyBtn){
696		copyBtn.addEventListener('click', function () {
697			const contacts = this.closest('.contacts');
698			const rows = contacts.querySelectorAll('.products__row');
699			let textToCopy = [];
700			rows.forEach(row => {
701				const label = row.querySelector('p:nth-child(1)').textContent.trim();
702				const value = row.querySelector('p:nth-of-type(2)').textContent.trim();
703				textToCopy.push(`${label}: ${value}`);
704			});
705
706			const result = textToCopy.join('\n');
707
708			navigator.clipboard.writeText(result).then(() => {
709				const notification = document.getElementById('copyNotification');
710				notification.classList.add('show');
711				setTimeout(() => {
712					notification.classList.remove('show');
713				}, 500);
714			});
715		});
716	}
717
718	let formFile = document.querySelectorAll('.form__file input');
719	if(formFile){
720		formFile.forEach(function(formFile) {
721			formFile.addEventListener('change', function() {
722				let formFileName = formFile.nextElementSibling;
723				if (formFile.files.length > 0) {
724					formFileName.textContent = formFile.files[0].name;
725				} else {
726					formFileName.textContent = 'Прикрепить файл';
727				}
728			});
729		});
730	}
731
732	let jsMenu = document.querySelector('.js--menu'),
733		sidebar = document.querySelector('.menu--sidebar');
734
735	if(jsMenu){
736		jsMenu.addEventListener('click', function() {
737			const width = document.body.clientWidth;
738
739			if (document.body.classList.contains('opened')){
740				document.body.classList.remove('opened')
741				sidebar.removeAttribute('style')
742			}else{
743				if(width > 1170){
744					const container = document.querySelector('.header-top__container')
745					const rect = container.getBoundingClientRect();
746					const distanceFromLeft = rect.left;
747
748					const sidebarWidth = distanceFromLeft + 400;
749
750					sidebar.style.width = `${sidebarWidth}px`;
751				}
752
753				document.body.classList.add('opened')
754			}
755		});
756	}
757
758	let hClose = document.querySelector('.user--head-close');
759	if(hClose){
760		hClose.addEventListener('click', function() {
761			document.body.classList.remove('opened')
762		});
763	}
764
765	const popupButton = document.querySelectorAll("[data-popup]");
766	if(popupButton){
767		popupButton.forEach(function (popupButton) {
768			popupButton.addEventListener("click", function (event) {
769				event.preventDefault();
770				let activePopup = document.querySelector('.popup.open');
771				if (activePopup) {
772					activePopup.classList.remove('open');
773					body.classList.remove('popuplock');
774				}
775				const dataPopup = this.getAttribute("data-popup");
776				const dataClassPopup = document.querySelector(`${dataPopup}`);
777				if (dataClassPopup !== null) {
778					dataClassPopup.classList.add("open");
779					body.classList.add('popuplock');
780				}
781
782			});
783		});
784	}
785
786	var popupClose = document.querySelectorAll('.popup__close, .popup__bg');
787	if(popupClose){
788		popupClose.forEach(function(popupClose) {
789			popupClose.addEventListener('click', function(event) {
790				event.preventDefault();
791				body.classList.remove('popuplock');
792				popupClose.closest('.popup').classList.remove('open');
793			});
794		});
795	}
796
797	var showPopupErrors = (errors) => {
798		let form = document.querySelector('form.popup__content')
799
800		if(!!form){
801			let old = form.querySelector('.info-message.alert-danger')
802			if(!!old)
803				old.remove()
804
805			let infoMessage = BX.create('div', {
806				attrs: {
807					className: 'info-message alert-danger'
808				},
809			})
810
811			errors.forEach(function(entry) {
812				infoMessage.appendChild(BX.create('div', {
813					attrs: {
814						className: 'info-item'
815					},
816					text: entry
817				}))
818			});
819
820			BX.insertBefore(infoMessage, form.querySelector('[name="USER_LOGIN"]'));
821		}
822	}
823
824	document.addEventListener('click', function(e) {
825		var el = e.target.closest('.js--send-sms')
826
827		if(!!el){
828			let form = el.closest('form'),
829				data = {
830				data: {
831					sessid: BX.bitrix_sessid(),
832					phone: form.querySelector('[name="USER_LOGIN"]').value,
833					ip: form.querySelector('[name="IP"]').value,
834					recaptcha_response: form.querySelector('[name="recaptcha_response"]').value,
835					ajax: 'y',
836				},
837			}
838
839			data.url = '/api/user/check/'
840
841			console.log(data)
842
843			aHelper().send(data)
844				// выполнится, когда промис завершится, независимо от того, успешно или нет
845				//.finally(() => console.log("Промис завершён"))
846				// таким образом, индикатор загрузки всегда останавливается, прежде чем мы продолжим
847				.then(
848					result => {
849						console.log(result)
850
851						if(!!result.NUMBER && result.NUMBER === 1){
852							form.classList.add('sended')
853						}
854
855						BX.closeWait()
856					},
857					err => {
858						console.log(err)
859
860						if (!!err.errors)
861							showPopupErrors(err.errors)
862
863						BX.closeWait()
864					}
865				)
866				//Ловим ошибки
867				.catch(err => console.log(err)
868				)
869		}
870
871		el = e.target.closest('.js--send-auth')
872		if(!!el){
873			e.preventDefault()
874			e.stopPropagation()
875
876			let form = el.closest('form'),
877				data = {
878				data: {
879					sessid: BX.bitrix_sessid(),
880					phone: form.querySelector('[name="USER_LOGIN"]').value,
881					ip: form.querySelector('[name="IP"]').value,
882					code: form.querySelector('[name="SMS"]').value,
883					ajax: 'y',
884				},
885			}
886
887			data.url = '/api/user/doauth/'
888
889			console.log(data)
890
891			aHelper().send(data)
892				// выполнится, когда промис завершится, независимо от того, успешно или нет
893				//.finally(() => console.log("Промис завершён"))
894				// таким образом, индикатор загрузки всегда останавливается, прежде чем мы продолжим
895				.then(
896					result => {
897						console.log(result)
898
899						if(!!result.NUMBER){
900							if(result.NUMBER === 1){
901								AT.POPUP.tools.load('auth-thanks')
902							}
903
904							if(result.NUMBER === 2){
905								showPopupErrors(['Неверно указан СМС код'])
906							}
907
908							if(result.NUMBER === 4){
909								showPopupErrors(['Превышен лимит попыток ввода'])
910							}
911						}
912
913						BX.closeWait()
914					},
915					err => {
916						console.log(err)
917
918						if (!!err.errors)
919							showPopupErrors(err.errors)
920
921						BX.closeWait()
922					}
923				)
924				//Ловим ошибки
925				.catch(err => console.log(err)
926				)
927		}
928	});
929
930	//setMask('USER_LOGIN')
931	setMask('PERSONAL_PHONE')
932	setMask('PHONE')
933});

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.