Help
RSS
API
Feed
Maltego
Contact
Domain > healercomp.ru
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2019-08-07
91.217.9.166
(
ClassC
)
2024-09-14
172.67.172.11
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Sat, 14 Sep 2024 11:31:04 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveVary: Accept-EncodingCache-Control: no-cache, privateSet-Cookie: healercompru_sessioneyJpdiI6IlZ5SmJ3bk9ENkhldHI5b3NrWGU4enc9PSIsInZhbHVlIjoiRUFtc3BaNmVGcHc2d256WHhpZzRUY1h1VjhWM1E0d3NpeElSb3djaTdBVGdLUkdVOVRVUkJvNWk0T2JWZDVhVHRXNmxZdG9DRURvd2JiT2hEbXl6cUNIS3RhZ1VBK2cxNDZqRERzNTBXeXdEaTdpY25wbm16N1BKcmczU0QyVzEiLCJtYWMiOiI4YmMzNzgwODYzODcwOTA2NjU4ZDhjY2Y4ODQ3Y2EwMDA4YzQ3NmNmNzAzMjVjOWYwOTE4ZThjMjJiOTFmODE0In0%3D; expiresSun, 15-Sep-2024 11:44:46 GMT; Max-Age86400; path/; httponlyX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; modeblockX-Content-Type-Options: nosniffCF-Cache-Status: DYNAMICReport-To: {endpoints:{url:https:\/\/a.nel.cloudflare.com\/report\/v4?sC3mBFB%2Bvz0Ll99HPCSnnyGIbDCRqX5VJp8gw1bwjiDkjg5Gxog%2BRrOabGicY5C09%2B70br5BNYwSiBPiZKw184w4ls52HkDkHQigaavb%2F8oHY60JtrMy%2BKWVUyPmtwfkB},group:cf-nel,max_age:604800}NEL: {success_fraction:0,report_to:cf-nel,max_age:604800}Server: cloudflareCF-RAY: 8c300c6a1e835ee6-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langru>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1> title>Ремонт компьютерной техники на дому/title> meta namedescription contentРемонт компьютерной техники на дому. Скидка 10%. Бесплатная** диагностика> link relapple-touch-icon sizes180x180 hrefhttp://healercomp.ru/land/assetsById/1024/assets/apple-touch-icon.png> link relicon typeimage/png sizes32x32 hrefhttp://healercomp.ru/land/assetsById/1024/assets/favicon-32x32.png> link relicon typeimage/png sizes16x16 hrefhttp://healercomp.ru/land/assetsById/1024/assets/favicon-16x16.png> link relmanifest hrefhttp://healercomp.ru/land/assetsById/1024/assets/site.webmanifest> meta namemsapplication-TileColor content#da532c> meta nametheme-color content#ffffff> link relpreload hrefhttp://healercomp.ru/land/assetsById/1024/assets/css/style.css asstyle> link relstylesheet hrefhttp://healercomp.ru/land/assetsById/1024/assets/css/vendor.css> link relstylesheet hrefhttp://healercomp.ru/land/assetsById/1024/assets/css/style.css>/head>body>!-- BEGIN HEADER -->header classheader> div classtop-header> div classcontainer> div classcap> a href/ classlogo> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/logo.svg altMasterskaya> span classlogo__text> span classlogo__name> Comprem24 /span> span classlogo__sub-name> ремонт пк, ноутбуков br> и моноблоков /span> /span> /a> div classcall> button classcall__button data-togglemodal data-target#exampleModal4> Заказать обратный звонок /button> /div> /div> /div> /div> section classfirst> div classcontainer> h1 classfirst__title> Ремонт компьютерной br> техники на домуbr> /h1> div classfirst__label> с гарантией 12 месяцев /div> div classfirst__offer> div classfirst__offer_wrap> div classfirst__offer_title> Узнайте стоимость ремонта вашего br> компьютера, ответив всего на 5 вопросов /div> div classfirst__offer_label> Это бесплатно и ни к чему вас не обязывает /div> div classfirst__offer_wrapper> div classfirst__offer_bonus> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/prize.png altImage classfirst__offer_prize> div classfirst__offer_bonus_text> В качестве бонуса: скидка - 10% br> на ремонт вашей техники /div> /div> a href#quiz classbutton first__offer_button> span> Узнать стоимость ремонта /span> /a> /div> /div> /div> div classfirst__merits> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/car.svg altIcon> /div> /div> div classfirst__merits_text> Бесплатный br> выезд мастера /div> /div> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/star.svg altIcon> /div> /div> div classfirst__merits_text> Более 5 лет br> опыта работы /div> /div> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/verified.svg altIcon> /div> /div> div classfirst__merits_text> До 12 месяцев br> полной гарантии /div> /div> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/sale-tag.svg altIcon> /div> /div> div classfirst__merits_text> Стоимость br> от 400 руб. /div> /div> /div> /div> /section>/header>!-- END HEADER -->!-- BEGIN MERITS -->section classmerits> div classcontainer> h2 classmerits__title> Почему клиенты обращаются br> strong>именно к нам?/strong> /h2> div classmerits__box> div classmerits__item> div classmerits__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/merits1.png altImage> /div> div classmerits__name> Вы не потеряете свое время /div> div classmerits__text> Мы ценим время наших клиентов br> и обычно выполняем ремонт прямо br> в день вашего обращения /div> /div> div classmerits__item> div classmerits__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/merits2.png altImage> /div> div classmerits__name> Устраним проблему бесплатно /div> div classmerits__text> При возникновении гарантийного br> случая мы устраним повторную br> поломку за свой счет /div> /div> div classmerits__item> div classmerits__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/merits3.png altImage> /div> div classmerits__name> Приедем только один раз /div> div classmerits__text> В 95% случаев мастер отремонтирует br> вашу технику за один визит /div> /div> div classmerits__item> div classmerits__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/merits4.png altImage> /div> div classmerits__name> Прозрачная стоимость /div> div classmerits__text> Мы обсуждаем с клиентом стоимость br> работ по ремонту до его начала и br> фиксируем оговоренную цену. /div> /div> /div> /div>/section>!-- END MERITS -->!-- BEGIN ORDER-->section classorder> div classcontainer> div classorder__box> div classorder__content> h2 classorder__title> strong>Свяжитесь/strong> с нами /h2> div classorder__label> Оставьте свои контактные данные и мы свяжемся с вами br> в ближайшее время. /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classorder__wrapper> span> input typetext namefullname classinput required placeholderВаше имя> /span> span> input typetel namephone classinput input--phone required placeholderВаш номер телефона> /span> /div> div classorder__wrapper> button classbutton order__button> span> Перезвоните мне /span> /button> div classorder__concent> Нажимая кнопку «Перезвоните мне», br> вы даете согласие на обработку ваших br> персональных данных /div> /div> input typehidden nameview_id value76643129> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/order.png altImage classorder__img> /div> /div>/section>!-- END ORDER -->!-- BEGIN STAGES -->section classstages> div classcontainer> h2 classstages__title> strong>этапы ремонта/strong> вашей техники /h2> div classstages__box> div classstages__wrapper stages__wrapper--1> div classstages__item> div classstages__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/stages1.png altImages> /div> div classstages__name> Заявка /div> div classstages__text> Вы можете оставить заявкуbr> онлайн или позвонитьbr> нам по телефону /div> /div> div classstages__item> div classstages__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/stages2.png altImages> /div> div classstages__name> Расчет /div> div classstages__text> Мы делаем предварительный br> расчет стоимости ремонта и br> согласовываем время приезда мастера /div> /div> /div> div classstages__wrapper stages__wrapper--3> div classstages__item> div classstages__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/stages5.png altImages> /div> div classstages__name> Описание проблемы /div> div classstages__text> Менеджер расспросит вас о возникшейbr> с вашей техникой проблеме /div> /div> div classstages__item> div classstages__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/stages4.png altImages> /div> div classstages__name> Компьютер как новый /div> div classstages__text> Мастер производит ремонт вашейbr> техники, после чего выписывает br> гарантийный талон /div> /div> /div> div classstages__wrapper stages__wrapper--2> div classstages__item> div classstages__img> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/stages3.png altImages> /div> div classstages__name> Выезд мастера /div> div classstages__text> Специалист выезжает в назначенноеbr> время и место и проводит диагностику br> вашего устройства /div> /div> /div> /div> /div>/section>!-- END STAGES -->!-- BEGIN QUIZ -->section classquiz idquiz> div classcontainer> h2 classquiz__title> ОТветьте всего на 5 вопросов br> и получите strong>скидку -10%/strong> /h2> div classquiz__box> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classquiz__item> div classquiz__wrapper> div classquiz__left quiz__left--1> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 0% /div> div classquiz__progress_box> div classquiz__progress_line> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Какая у вас техника? /div> div classquiz__checks> label classcheckbox> input typeradio checked namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Ноутбук /span> /span> /label> label classcheckbox> input typeradio namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Моноблок /span> /span> /label> label classcheckbox> input typeradio namecheck valueПерсональный компьютер/> span classcheckbox__text> span> ПК /span> /span> /label> /div> div classbutton quiz__button quiz__next--1> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--2> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 33% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Какая у вас проблема? /div> div classquiz__checks> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Тормозит /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Шумит /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Перезагружается /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Нет изображения /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Не включается /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Другое /span> /span> /label> /div> div classbutton quiz__button quiz__next--2> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--3> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 66% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Сколько лет вашему устройству? /div> div classquiz__checks> label classcheckbox> input typeradio nameyears valueПерсональный компьютер/> span classcheckbox__text> span> До 2 лет /span> /span> /label> label classcheckbox> input typeradio nameyears valueПерсональный компьютер/> span classcheckbox__text> span> от 2 до 5 лет /span> /span> /label> label classcheckbox> input typeradio nameyears valueПерсональный компьютер/> span classcheckbox__text> span> Больше 5 лет /span> /span> /label> /div> div classbutton quiz__button quiz__next--3> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--4> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 99% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Была ли техника в ремонте ранее? /div> div classquiz__checks> label classcheckbox> input typeradio namerepair valueПерсональный компьютер/> span classcheckbox__text> span> Да /span> /span> /label> label classcheckbox> input typeradio namerepair valueПерсональный компьютер/> span classcheckbox__text> span> Нет /span> /span> /label> /div> div classbutton quiz__button quiz__next--4> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--5> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 100% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Оставьте свои контактные данные и мы свяжемся с вами br> в ближайшее время. /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classorder__wrapper> span> input typetext namefullname classinput required placeholderКак к вам обращаться?> /span> span> input typetel namephone classinput input--phone required placeholderВаш номер телефона> /span> /div> div classorder__wrapper> button classbutton order__button> span> Перезвоните мне /span> /button> div classorder__concent> Нажимая кнопку «Перезвоните мне», br> вы даете согласие на обработку ваших br> персональных данных /div> /div> input typehidden nameview_id value76643129> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> div classquiz__right> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/quiz_right.png altImage> /div> /div> /div> /form> /div> /div>/section>!-- END QUIZ -->!-- BEGIN CONSULTATION-->section classconsultation> div classcontainer> div classorder__box> div classorder__content> h2 classorder__title> strong>нужна/strong> консультация? /h2> div classorder__label> Оставьте свои контактные данные и мы свяжемся с вами br> в ближайшее время. /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classorder__wrapper> span> input typetext namefullname classinput required placeholderКак к вам обращаться?> /span> span> input typetel namephone classinput input--phone required placeholderВаш номер телефона> /span> /div> div classorder__wrapper> button classbutton order__button> span> Перезвоните мне /span> /button> div classorder__concent> Нажимая кнопку «Перезвоните мне», br> вы даете согласие на обработку ваших br> персональных данных /div> /div> input typehidden nameview_id value76643129> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> /div> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/man.png altImage classconsultation__img> /div>/section>!-- END CONSULTATION -->!-- BEGIN QUESTIONS-->section classquestions> div classcontainer> h2 classquestions__title> Отвечаем на strong>популярные br> вопросы/strong> наших клиентов /h2> div idaccordeon classaccordeon> div classacc-item> div classacc-head active> Какое программное обеспечение Вы устанавливаете? /div> div classacc-body styledisplay: block;> p> Мы устанавливаем только надежное лицензионное ПО и сертифицированные драйверы с официальных сайтов производителей устройств, так как от этого зависит стабильность работы компьютера. /p> /div> /div> div classacc-item> div classacc-head> Как рассчитать время на выполнение услуги? /div> div classacc-body> p> Квалификация наших мастеров в большинстве случаев позволяет выполнить ремонт в день обращения, многие поломки мы устраняем всего за один час. Однако при сложных поломках срок устранения неисправности может составлять несколько дней. /p> /div> /div> div classacc-item> div classacc-head> Мне нужно перенести данные с одного ПК на другой. Сколько это стоит? /div> div classacc-body> p> С базовыми ценами на все услуги нашего сервисного центра вы можете ознакомиться, посмотрев прайс-лист в соответствующем разделе нашего сайта. Точную стоимость работ вы можете узнать у наших менеджеров по телефону. /p> /div> /div> div classacc-item> div classacc-head> Могу ли я сам купить необходимую запчасть и принести для замены? /div> div classacc-body> p> У нас имеется собственный склад с качественными оригинальными запасными частями для разных моделей компьютерной техники, но при желании вы можете предоставить свои комплектующие для замены. /p> /div> /div> div classacc-item> div classacc-head> Почему в прайсе некоторые цены указаны от, а не конкретные цифры? /div> div classacc-body> p> Стоимость работ рассчитывается в каждом случае индивидуально и зависит от сложности поломки и времени, необходимого для ее устранения. /p> /div> /div> /div> /div>/section>!-- END QUESTIONS -->!-- BEGIN CONTACTS -->section classcontacts> div classcontainer> div classcontacts__box> h2 classcontacts__title> strong>Наши контакты/strong> /h2> div classcontacts__wrapper> div classcontacts__item> div classcontacts__caption> Адрес: /div> div classcontacts__text> г. /div> /div> div classcontacts__item> div classcontacts__caption> График работы: /div> div classcontacts__text> Пн-Вс, с 10:00 до 22:00 /div> /div> /div> /div> /div> div classmap idyamap>/div>/section>!-- END CONTACTS -->!-- BEGIN FOOTER-->footer classfooter> div classcontainer> div classfooter__box> a href/ classlogo> img srchttp://healercomp.ru/land/assetsById/1024/assets/img/logo.svg altMasterskaya> span classlogo__text> span classlogo__name> Comprem24 /span> span classlogo__sub-name> ремонт пк, ноутбуков br> и моноблоков /span> /span> /a> div classcall> button classcall__button data-togglemodal data-target#exampleModal4> Заказать обратный звонок /button> /div> /div> /div>/footer>div classmodal fade modal-order idexampleModal4 tabindex-1 roledialog aria-hiddentrue> div classmodal-dialog modal-dialog-centered> div classmodal-content> button typebutton classclose data-dismissmodal aria-labelClose> span aria-hiddentrue>/span> /button> div classorder__modal> div classmodal__title> Заполните форму и мы свяжемся br> с Вами в ближайшее время! /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classform__group> div classform__label> Введите ваше имя /div> span> input typetext namefullname required classinput modal__input placeholderВаше имя> /span> /div> div classform__group> div classform__label> Телефон для уточнения деталей /div> span> input typetel namephone required classinput input--phone modal__input placeholderВаш номер телефона> /span> /div> button classbutton modal__button> span> Перезвоните мне /span> /button> div classmodal__concent> Нажимая кнопку «Перезвоните мне», вы даете br> согласие на обработку ваших персональных данных /div> input typehidden nameview_id value76643129> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> /div> /div>/div>script srchttp://healercomp.ru/land/assetsById/1024/assets/js/vendor.js>/script>script srchttp://healercomp.ru/land/assetsById/1024/assets/js/scripts.js>/script>style> #yamap, .yamap-psh { overflow: hidden; min-height: 490px; }/style>script srchttps://api-maps.yandex.ru/2.1/?langru_Ru&apikeybb24e9c9-1ab7-46d6-8730-b21689b44f86 typetext/javascript>/script>script src/app/new/js/js.cookie.min.js>/script>script> function getRandom(min, max) { return Math.random() * (max - min) + min; } function getRandomArray(arr, n) { var len arr.length; if (n > len) { n len; } var result new Array(n), taken new Array(len); while (n--) { var x Math.floor(Math.random() * len); resultn arrx in taken ? takenx : x; takenx --len in taken ? takenlen : len; } return result; } (function () { if (typeof ymaps ! undefined) { ymaps.ready(init); function renderMap(map, points) { } function init() { var $city window.detectedBranchData || {id:777,name:,country:rus}; var $thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; // console.log($city); // console.log($thread); if (parseInt($city.id) 777) { ymaps.geolocation.get({ // Выставляем опцию для определения положения по ip provider: yandex, // Карта автоматически отцентрируется по положению пользователя. mapStateAutoApply: true }).then(function (result) { var mapElements document.querySelectorAll(#yamap); if (mapElements.length > 1) { for (var iii 0; iii mapElements.length; iii++) { mapElementsiii.id yamap.concat(iii); } } var yaMaps ; for (var iii 0; iii mapElements.length; iii++) { // var myMap new ymaps.Map(yamap, { var myMap new ymaps.Map(mapElementsiii.id, { center: result.geoObjects.get(0).geometry.getCoordinates(), zoom: 9 }); yaMaps.push(myMap); myMap.geoObjects.add(result.geoObjects); // Масштабируем карту на область видимости геообъекта. myMap.setBounds(bounds, { // Проверяем наличие тайлов на данном масштабе. checkZoomRange: true }); } }); } else { // Поиск координат центра ymaps.geocode($city.name ? $city.name : Россия, { results: 1 }).then(function (res) { // Выбираем первый результат геокодирования. var firstGeoObject res.geoObjects.get(0), // Координаты геообъекта. coords firstGeoObject.geometry.getCoordinates(), // Область видимости геообъекта. bounds firstGeoObject.properties.get(boundedBy); var mapElements document.querySelectorAll(#yamap); if (mapElements.length > 1) { for (var iii 0; iii mapElements.length; iii++) { mapElementsiii.id yamap.concat(iii); } } var yaMaps ; for (var iii 0; iii mapElements.length; iii++) { // var myMap new ymaps.Map(yamap, { var myMap new ymaps.Map(mapElementsiii.id, { center: coords, zoom: 7 }); myMap.behaviors.disable(scrollZoom); var isMobile { Android: function () { return navigator.userAgent.match(/Android/i); }, BlackBerry: function () { return navigator.userAgent.match(/BlackBerry/i); }, iOS: function () { return navigator.userAgent.match(/iPhone|iPad|iPod/i); }, Opera: function () { return navigator.userAgent.match(/Opera Mini/i); }, Windows: function () { return navigator.userAgent.match(/IEMobile/i); }, any: function () { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); } } if (isMobile.any()) { myMap.behaviors.disable(drag); } yaMaps.push(myMap); // Масштабируем карту на область видимости геообъекта. myMap.setBounds(bounds, { // Проверяем наличие тайлов на данном масштабе. checkZoomRange: true }); } // if (parseInt($(body).data(ls_type)) 5) { if (parseInt($thread.type) 5) { var points firstGeoObject.geometry.getCoordinates(); } else { var points Cookies.getJSON($city.id + -points); } if (points undefined) { $.ajax({ dataType: json, url: data.json, data: , success: function (data) { var pointsAll data$city.name; var points ; if (pointsAll ! undefined) { points getRandomArray(pointsAll, 20); } else { points ; for (var prop in data) { if (data.hasOwnProperty(prop)) { points points.concat(getRandomArray(dataprop, 5)); } } } var points2 ; points.forEach((item) > { item item1 + item1 / getRandom(50000, 100000), item0 + item0 / getRandom(50000, 100000) ; points2.push(item); var myPlacemark new ymaps.Placemark(item, {}); for (var iii 0; iii yaMaps.length; iii++) { yaMapsiii.geoObjects.add(myPlacemark); } }); Cookies.set($city.id + -points, points2, {expires: 1 / 24}); } }); } else { points.forEach((item) > { var myPlacemark new ymaps.Placemark(item, {}); for (var iii 0; iii yaMaps.length; iii++) { yaMapsiii.geoObjects.add(myPlacemark); } }); } }); } } } })();/script>script> // var telLinks document.querySelectorAll(href^tel::not(.zphone)); // var telClasses zphone phone-marker.split( ); var telClasses zphone phone-marker.split( ); var telLinks document.querySelectorAll(href^tel:); for (var i 0; i telLinks.length; i++) { for (var j 0; j telClasses.length; j++) { if (telClassesj ! ) { telLinksi.classList.add(telClassesj); } } }/script>script> var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}};/script> !-- Yandex.Metrika counter --> script typetext/javascript> (function (m, e, t, r, i, k, a) { mi mi || function () { (mi.a mi.a || ).push(arguments) }; mi.l 1 * new Date(); k e.createElement(t), a e.getElementsByTagName(t)0, k.async 1, k.src r, a.parentNode.insertBefore(k, a) }) (window, document, script, https://mc.yandex.ru/metrika/tag.js, ym); ym(window.thread.data.ym_id, init, { clickmap: true, trackLinks: true, accurateTrackBounce: true, webvisor: true }); /script> noscript> div>img srchttps://mc.yandex.ru/watch/96259463 styleposition:absolute; left:-9999px; alt/>/div> /noscript> !-- /Yandex.Metrika counter -->script src/app/new/js/js.cookie.min.js>/script>script> (function ($) { $(function () { window.$ jQuery.noConflict(); window.Cookies2 Cookies; var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; function openModal() { $(.x-modal).addClass(open); } function closeModal() { $(.x-modal).removeClass(open); Cookies2.set(no-popups, true, { expires: 7, path: / }); } $(.x-modal .content-wrapper).on(click, function (e) { e.stopPropagation(); }); $(.x-modal, .x-modal .close).on(click, function () { closeModal(); }); $(.x-modal form).on(submit, function () { Cookies2.set(no-popups, true, { expires: 7, path: / }); }) // если cookie не установлено появится окно // $(document).mousemove(function (e) { // // console.log(e.screenY); // // var Y e.pageY; // var Y e.screenY; // if (Y 20 && performance.now() > 1000) { // 10000 - 10 секунд // $(#modal1).modal(show) // } // }); var delay parseInt(thread.data.form_modal_delay || 10) * 1000; $(document).mouseleave(function () { if (!Cookies2.get(no-popups) && performance.now() > delay) { openModal(); } }); // openModal(); }); })(jQuery);/script>link relpreconnect hrefhttps://fonts.gstatic.com>link hrefhttps://fonts.googleapis.com/css2?familyNoto+Sans:wght@400;700&displaydisplay relstylesheet>style> .x-modal { font-family: Noto Sans, sans-serif !important; font-size: 16px; font-weight: 300; font-smooth: auto; line-height: 1.5; color: #444; background-color: slategray; } .x-modal * { box-sizing: border-box !important; } .x-modal input { font-family: Noto Sans, sans-serif !important; height: auto; font-weight: normal; } button { cursor: pointer; } /*body {*/ /* position: relative;*/ /* display: flex;*/ /* width: 100%;*/ /* height: 100vh;*/ /* align-items: center;*/ /* justify-content: center;*/ /*}*/ .x-modal { position: fixed; z-index: 9999; top: 0; left: 0; display: flex; overflow: hidden; height: 0vh; background-color: transparent; transition: background-color 0.25s ease; align-items: center; justify-content: center; } .x-modal.open { position: fixed; width: 100%; height: 100vh; background-color: rgba(0, 0, 0, 0.5); transition: background-color 0.25s; } .x-modal.open > .content-wrapper { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } .x-modal .content-wrapper { position: relative; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; background-color: white; border-radius: 10px; -webkit-box-shadow: 0 0 2.5rem rgba(0, 0, 0, 0.5); box-shadow: 0 0 2.5rem rgba(0, 0, 0, 0.5); -webkit-transition: -webkit-transform 0.25s; transition: -webkit-transform 0.25s; -o-transition: transform 0.25s; transition: transform 0.25s; transition: transform 0.25s, -webkit-transform 0.25s; -webkit-transition-delay: 0.15s; -o-transition-delay: 0.15s; transition-delay: 0.15s; -webkit-transform: scale(0); -ms-transform: scale(0); transform: scale(0); -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .x-modal .content-wrapper .close { position: absolute; z-index: 99; top: 0.5rem; right: 0.5rem; display: -webkit-box; display: -ms-flexbox; display: flex; width: 2.5rem; height: 2.5rem; font-size: 1.5rem; background-color: transparent; border: none; -webkit-transition: 0.25s linear; -o-transition: 0.25s linear; transition: 0.25s linear; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .x-modal .content-wrapper .close:before, .x-modal .content-wrapper .close:after { position: absolute; width: 1.25rem; height: 0.125rem; content: ; cursor: pointer; background-color: black; } .x-modal-3:not(.x-modal-3) .content-wrapper .close:after { content: ; right: -80px; top: -85px; width: 140px; height: 140px; background: #0094fd; z-index: -1; position: absolute; border-radius: 100%; } .x-modal .content-wrapper .close:before { -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); } .x-modal .content-wrapper .close:after { -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } .x-modal-3 .content-wrapper .close { right: -70px; top: -70px; width: 140px; height: 140px; background: #0094fd; border-radius: 100%; } .x-modal-3 .content-wrapper .close:after, .x-modal-3 .content-wrapper .close:before { left: 35px; bottom: 45px; -webkit-transition: 0.25s linear; -o-transition: 0.25s linear; transition: 0.25s linear; } @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { .modal:not(.x-modal-3) .content-wrapper .close { right: 1rem; } } .modal:not(.x-modal-3) .content-wrapper .close:hover:before, .modal:not(.x-modal-3) .content-wrapper .close:hover:after { background-color: #ff8001; } .x-modal-3 .content-wrapper .close:hover:after, .x-modal-3 .content-wrapper .close:hover:before { background-color: #fff; } .x-modal .content-wrapper .content { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -15px; margin-left: -15px; } .d-flex { display: -ms-flexbox; display: flex; } .d-none { display: none; } .x-col-12, .x-col-md-8, .x-col-md-4, .x-col-md-7, .x-col-md-5 { position: relative; width: 100%; padding-right: 15px; padding-left: 15px; } .x-col-12 { max-width: 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } @media (min-width: 768px) { .x-col-md-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .x-col-md-5 { -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .x-col-md-7 { -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .x-col-md-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .d-md-block { display: block; } } .bg { background-position: center center; background-repeat: no-repeat; background-size: cover; width: 100%; } @media screen and (max-width: 991px) { .bg { background-position: left center; } } .x-modal-1 .content-wrapper, .x-modal-2 .content-wrapper { max-width: 750px; width: 98%; } .x-modal-3 .content-wrapper { max-width: 920px; width: 98%; overflow: hidden; } .x-modal-backdrop.show { opacity: 0.9; } .x-modal .x-modal-content { border: 0; overflow: hidden; border-radius: 10px; } .x-modal__title { font-size: 32px; margin-bottom: 20px; line-height: 1; } .x-modal__text { font-size: 14px; margin-bottom: 20px; line-height: 1.3; } .x-modal__form input { width: 100%; font-size: 14px; text-align: center; border-radius: 20px; border: 2px solid #e8e8e8; padding: 12px 10px; line-height: 1; outline: none !important; } .x-modal__form button { width: 100%; background: #292929; color: white; border: 1px solid transparent; padding: 14px 10px; line-height: 1; font-size: 14px; text-align: center; border-radius: 20px; outline: none; cursor: pointer; -webkit-transition: all 0.3s; -o-transition: all 0.3s; transition: all 0.3s; } .x-modal__form button:hover { background: transparent; color: #292929; border: 1px solid #292929; } .x-modal__agree { margin-top: 20px; font-size: 12px; } .x-modal__item { width: 100%; } .x-modal__item:first-child { padding-right: 10px; } .x-modal-1 .x-modal__left { min-height: 400px; } .x-modal-1 .x-modal__left img { position: absolute; bottom: 0; left: 10px; } .x-modal-1 .x-modal__right { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; padding: 20px 50px; } .x-modal-2 .x-modal-wrap { padding: 70px; text-align: center; border-radius: 10px; } .x-modal-2 .x-modal__title { margin-bottom: 50px; } .x-modal-2 .x-modal__text { font-size: 22px; margin-bottom: 50px; } .x-modal-2 .form__row { max-width: 460px; margin: 0 auto; } .x-modal-2 .x-modal__form input, .x-modal-2 .x-modal__form button { font-size: 16px; } .x-modal-2 .x-modal__agree { font-size: 14px; } .x-modal-3 .x-modal-wrap { width: 100%; } .x-modal-3 .x-modal__right { padding-top: 70px; padding-bottom: 60px; padding-left: 30px; padding-right: 40px; } .x-modal-3 .x-modal__title { font-size: 22px; line-height: 1.3; } .x-modal-3 .x-modal__text { font-size: 18px; margin-bottom: 30px; } .x-modal-3 .x-modal__agree { font-size: 12px; line-height: 1.2; margin-top: 5px; padding-right: 30px; } .x-modal-3 .x-modal__form input { font-size: 18px; border-radius: 40px; padding: 14px 10px; margin-bottom: 15px; } .x-modal-3 .x-modal__form button { font-size: 18px; border-radius: 40px; padding: 20px 10px; margin-bottom: 15px; } @media screen and (max-width: 767px) { .x-modal__form { max-width: 320px; margin: 10px auto; } .bg { background-image: none !important; } .x-modal-1 .content-wrapper, .x-modal-2 .content-wrapper, .x-modal-3 .content-wrapper { width: 96%; margin: 20px auto; } .modal:not(.x-modal-3) .content-wrapper .close { top: 0; right: 0; } .x-modal-1 { text-align: center; } .form__row { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .x-modal__item { width: 100%; } .x-modal__item:first-child { padding-right: 0; margin-bottom: 10px; } .x-modal-2 .x-modal-wrap { padding: 60px 30px; } .x-modal-2 .x-modal__title { margin-bottom: 30px; font-size: 28px; } .x-modal-2 .x-modal__text { font-size: 18px; margin-bottom: 30px; } .x-modal-2 .form__row { max-width: 320px; } .x-modal-3 .x-modal__right { padding: 60px 30px !important; } .x-modal-3 { text-align: center; } } form.x-modal__form { display: block; }/style> div classmodal x-modal x-modal-2 data-modaltrigger-2> article classcontent-wrapper> button classclose>/button> div classx-modal-wrap bg stylebackground-image: url(land/inc/popups/1/bg_modal2.png);> div classx-modal__title x-modal__title--big> Сломался компьютер? /div> div classx-modal__text x-modal__text--big> Оставьте свой номер и мы бесплатно, по телефону, проведём экспресс диагностику. /div> form classsltop__form x-modal__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 methodpost > input typehidden namehidden valueФорма при закрытии сайта> div classd-flex form__row> div classx-modal__item> input typetel namephone placeholderВаш телефон required> /div> div classx-modal__item> button typesubmit> Получить диагностику /button> /div> /div> div classx-modal__agree> Нажимая кнопку Вы соглашаетесь на обработку данных /div> input typehidden namefullname valueбез имени> input typehidden nameview_id value76643129> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namedirection_id value1> input typehidden nameoffer_id value1> /form> /div> /article> /div> link relpreconnect hrefhttps://fonts.gstatic.com>link hrefhttps://fonts.googleapis.com/css2?familyOpen+Sans:wght@300;400;600;700&familyRoboto:wght@100&displayswap relstylesheet>style> .open-chatbot_btn { width: 335px; height: 45px; background: linear-gradient(85.72deg, rgba(67, 116, 200, 0.45) -68.09%, rgba(37, 49, 70, 0.45) 58.38%), #253146; box-shadow: -20px 16px 45px rgba(0, 0, 0, 0.15); border-top-left-radius: 7px; border-top-right-radius: 7px; display: flex; justify-content: space-between; align-items: center; position: fixed; right: 30px; bottom: 0; padding-left: 25px; padding-right: 17px; z-index: 999; cursor: pointer; transform: translateY(100%); transition: 0.3s all; } .open-chatbot_btn.active { transform: translateY(0); } .chatbot_btn__text-conv__item { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 600; font-size: 15px; color: #FFFFFF; position: relative; display: none; margin-bottom: 0; } .chatbot_btn__text-conv__item.text-conv_active { display: block; } .chatbot_btn__text-conv__item::after { content: ; position: absolute; width: 8px; height: 8px; background-color: #1FDF00; right: -15px; top: 7px; border-radius: 100%; animation-name: blink; animation-timing-function: linear; animation-duration: 1.5s; animation-iteration-count: infinite; } @keyframes blink { 50% { opacity: 0; } } .chatbot_btn__dotes { display: flex; align-items: center; justify-content: center; } .chatbot_btn__dote { width: 4px; height: 4px; background-color: #495E86; border-radius: 100%; position: relative; } .chatbot_btn__dote:before { content: ; position: absolute; width: 4px; height: 4px; background-color: #495E86; border-radius: 100%; top: 0; left: -9.5px; } .chatbot_btn__dote:after { content: ; position: absolute; width: 4px; height: 4px; background-color: #495E86; border-radius: 100%; top: 0; left: -19px; } .chatbot-window { width: 335px; position: fixed; right: 30px; bottom: 0; z-index: 999; transition: 0.3s all; transform: translateY(100%); box-shadow: 0px 40px 75px rgba(0, 0, 0, 0.25); } .chatbot-window.active { transform: translateY(0); } .chatbot-window.active_mini { transform: translateY(428px); } .chatbot-window.active_mini .chatbot__header__cross { opacity: 0; visibility: hidden; } .chatbot-window.active_mini .chatbot__header { cursor: pointer; } .chatbot__header { background: linear-gradient(85.72deg, rgba(67, 116, 200, 0.45) -68.09%, rgba(37, 49, 70, 0.45) 58.38%), #253146; box-shadow: 0px 40px 75px rgba(0, 0, 0, 0.25); border-top-left-radius: 7px; border-top-right-radius: 7px; display: flex; align-items: center; padding: 15px; } .chatbot__header__avatar { width: 37px; height: 37px; background-size: cover; background-position: center; margin-right: 15px; background-color: rgba(37, 49, 70, 0.45); border-radius: 100%; position: relative; display: flex; align-items: center; justify-content: center; flex: none; } .chatbot__header__avatar__img { border-radius: 100%; width: 100%; height: 100%; object-fit: cover; } .chatbot__header__avatar:before { content: ; position: absolute; right: 4px; bottom: 0; width: 7px; height: 7px; background-color: #1FDF00; border-radius: 100%; } .chatbot__header__name { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 600; color: #FFFFFF; font-size: 15px; margin-bottom: 1px; line-height: 20px; } .chatbot__header__job { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 400; margin-bottom: 0; font-size: 13px; color: #D6D6D6; } .chatbot__header__cross { width: 25px; height: 25px; background: #495E86; border: 1px solid #172640; border-radius: 100%; margin-left: auto; display: flex; align-items: center; justify-content: center; align-self: flex-start; cursor: pointer; transition: 0.3s all; flex: none; } .chatbot__header__cross:hover { opacity: 0.7; } .chatbot__header__cross_icon { width: 11px !important; height: 11px !important; margin: 0 !important; } .chatbot__body { background-color: white; position: relative; } .chatbot__body__cont { height: 320px; overflow-y: auto; padding-top: 15px; display: flex; flex-direction: column; align-items: flex-start; padding-left: 15px; padding-right: 15px; padding-bottom: 26px; } .chatbot__body__cont::-webkit-scrollbar { width: 3px; background: transparent; height: 100%; } .chatbot__body__cont::-webkit-scrollbar-thumb { width: 3px; background-color: rgba(26, 24, 47, 0.1); border-radius: 5px; } .textarea__message_ch::-webkit-scrollbar { width: 3px; background: transparent; height: 100%; } .textarea__message_ch::-webkit-scrollbar-thumb { width: 3px; background-color: rgba(26, 24, 47, 0.1); border-radius: 5px; } .chatbot__footer { height: 108px; background-color: white; border-top: 1px solid #E8EBF1; padding: 15px; } .chatbot__body__list-mes { display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; align-self: flex-end; } .padding-mes { margin-bottom: 10px; } .chatbot__body__list-mes__item { font-family: Open Sans, sans-serif; text-align: right; padding: 9px 12px; border: 2px solid #8A9FC7; line-height: 22px; font-size: 15px; font-style: normal; font-weight: 400; color: #8A9FC7; border-radius: 17px; border-bottom-right-radius: 0; cursor: pointer; transition: 0.3s all; } .chatbot__body__list-mes__item:hover { border-color: #7081a2; color: #7081a2; } .chatbot__body__message-operator { display: flex; flex-direction: column; align-items: flex-start; max-width: 94%; } .chatbot__body__message-operator__item { font-family: Open Sans, sans-serif !important; font-style: normal !important; font-weight: 400 !important; font-size: 15px !important; color: #222D38 !important; background: #E8EBF1 !important; border-radius: 17px !important; border-bottom-left-radius: 0 !important; padding: 12px 15px !important; line-height: 20px !important; } .chatbot__body__message-client { align-self: flex-end; max-width: 93%; display: flex; flex-direction: column; align-items: flex-end; } .chatbot__body__message-client__item { font-family: Open Sans, sans-serif !important; font-style: normal !important; font-weight: 400 !important; font-size: 15px !important; color: #222D38 !important; background: #DFF2FF !important; border-radius: 17px !important; border-bottom-right-radius: 0 !important; padding: 12px 15px !important; line-height: 20px !important; max-width: 100%; overflow: hidden; } .chatbot__body__message-operator_name { font-family: Open Sans, sans-serif; color: #AAB7C7; font-style: normal; font-weight: 400; font-size: 14px; margin-bottom: 5px; margin-top: 17px !important; } .chatbot__body__form-cont { width: 100%; margin-bottom: 15px; position: absolute; left: 0; top: 0; height: 100%; background-color: white; display: flex; flex-direction: column; justify-content: center; padding-left: 15px; padding-right: 15px; z-index: 2; } .chatbot__body__form__title { font-family: Open Sans, sans-serif; text-align: center; font-size: 14px; font-style: normal; font-weight: 400; color: #AAB7C7; margin-bottom: 5px !important; margin-top: 15px !important; } .chatbot__body__form { position: relative !important; left: 0 !important; top: 0 !important; width: 100% !important; height: auto !important; border: 0 !important; box-shadow: 0px 0px 45px rgba(60, 75, 100, 0.1) !important; border-radius: 8px !important; border-top: 2px solid #009AFF; padding: 20px 16px !important; display: block !important; } .chatbot__body__form:before { content: !important; display: none !important; } .chatbot__body__form:after { content: !important; display: none !important; } .chatbot__body__form__input { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #AAB7C7 !important; font-style: normal !important; font-weight: 400 !important; color: #AAB7C7 !important; padding: 10px 20px !important; border: 1px solid #E8EBF1 !important; border-radius: 4px !important; transition: 0s all !important; color: #222D38 !important; appearance: none !important; outline: none !important; box-shadow: none !important; background: white !important; width: 100% !important; max-width: 100% !important; position: relative !important; display: block !important; line-height: initial !important; height: auto !important; text-align: left !important; margin: 0 !important; cursor: text !important; } .chatbot__body__form__input::-webkit-input-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input::-moz-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input:-moz-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input:-ms-input-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input-cont { margin-bottom: 20px; } .chatbot__body__form__submit { font-family: Open Sans, sans-serif !important; width: 100% !important; height: 40px !important; background: #009AFF !important; border-radius: 4px !important; font-style: normal !important; font-weight: 600 !important; font-size: 15px !important; color: #FFFFFF !important; text-align: center !important; border-radius: 4px !important; display: flex !important; align-items: center !important; justify-content: center !important; transition: 0.3s all !important; appearance: none !important; outline: none !important; outline: none !important; appearance: none !important; box-shadow: none !important; border: none !important; padding: 0 !important; margin: 0 !important; text-transform: inherit !important; max-width: 100% !important; cursor: pointer !important; } .chatbot__body__form__submit:before { display: none !important; } .chatbot__body__form__submit:after { display: none !important; } .chatbot__body__form__submit:hover { background: #0281d4 !important; } .chatbot__footer__cont { display: flex; align-items: flex-start; } .textarea__message_ch { color: #222D38 !important; font-family: Open Sans, sans-serif !important; width: 100% !important; height: 80px !important; max-height: 80px !important; font-style: normal !important; font-weight: 400 !important; font-size: 15px !important; appearance: none !important; outline: none !important; resize: none !important; cursor: text !important; border: none !important; box-shadow: none !important; padding: 0 !important; background-color: white; border: none !important; border-radius: 0 !important; } .textarea__message_ch::-webkit-input-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__message_ch::-moz-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__message_ch:-moz-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__message_ch:-ms-input-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__block { width: 100%; } .btn_messend__block { margin-left: 12px; width: 40px; } .btn__message-send { width: 40px !important; height: 40px !important; display: flex !important; align-items: center !important; justify-content: center !important; background: #3BC123 !important; border-radius: 7px !important; transition: 0.3s all !important; outline: none !important; appearance: none !important; box-shadow: none !important; border: none !important; padding: 0 !important; box-shadow: none !important; cursor: pointer !important; } .btn__message-send:hover { background: #2fa01a !important; } .btn__message-send_arrow { width: 16px !important; height: 16px !important; margin: 0 !important; } .chatbot__body__writes { position: absolute; left: 0; bottom: 0; height: 35px; width: 100%; background-color: white; display: flex; align-items: center; padding-left: 15px; transition: 0.3s all; opacity: 0; visibility: hidden; } .chatbot__body__writes__text { font-family: Open Sans, sans-serif !important; margin-bottom: 0; font-style: normal; font-weight: 400; font-size: 14px; color: #AAB7C7; } .chatbot__body__writes.active { opacity: 1; visibility: visible; } .chatbot__body__anchor-footer { position: absolute; width: 37px; height: 37px; bottom: 51px; right: 15px; background-color: white; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.15); border-radius: 100%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: 0.3s all; opacity: 0; visibility: hidden; } .chatbot__body__anchor-footer.active { opacity: 1; visibility: visible; } .chatbot__body__anchor-footer.active:hover { opacity: 0.7; } .chatbot__body__anchor-footer__arrow { width: 13px; height: 8px; bottom: -1px; position: relative; } .open-chatbot_btn p, .chatbot-window p { line-height: initial !important; margin-top: 0; } .open-chatbot_btn, .chatbot-window { letter-spacing: initial !important; font-family: Open Sans, sans-serif !important; font-style: normal !important; } .open-chatbot_btn__mobile { display: none !important; width: 65px; height: 65px; display: flex; align-items: center; justify-content: center; position: fixed; right: 20px; bottom: 20px; background: linear-gradient(85.72deg, rgba(67, 116, 200, 0.45) -68.09%, rgba(37, 49, 70, 0.45) 58.38%), #253146; border-radius: 100%; box-shadow: -10px 11px 45px rgb(0 0 0 / 56%); z-index: 999; transform: translateY(179%); transition: 0.3s all; } .open-chatbot_btn__mobile__icon { fill: white; width: 35px; } .open-chatbot_btn__mobile.active { transform: translateY(0); } .open-chatbot__active-invitation__mobile { width: 200px; background-color: white; padding: 16px 20px; right: 20px; bottom: 20px; position: fixed; box-shadow: 0 0 30px 0 hsl(0deg 0% 62% / 44%), 0 2px 4px 0 rgb(0 0 0 / 7%); border-radius: 8px !important; z-index: 999; transform: translateX(150%); transition: 0.3s ease-in-out all; } .open-chatbot__active-invitation__mobile.active { transform: translateX(0); } .open-chatbot__active-invitation__mobile__header { display: flex; align-items: center; margin-bottom: 7px; } .open-chatbot__active__avatar { width: 28px; height: 28px; background-size: cover; background-position: center; margin-right: 10px; background-color: rgba(37, 49, 70, 0.45); border-radius: 100%; position: relative; display: flex; align-items: center; justify-content: center; flex: none; } .open-chatbot__active__avatar:before { content: ; position: absolute; right: 3px; bottom: 0; width: 6px; height: 6px; background-color: #1FDF00; border-radius: 100%; } .open-chatbot__active__avatar__img__mobile { border-radius: 100%; width: 100%; height: 100%; object-fit: cover; } .open-chatbot__active__name { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 400 !important; color: #8e8d90 !important; font-size: 13px !important; margin-bottom: 0 !important; } .open-chatbot__active-invitation__mobile__text { font-family: Open Sans, sans-serif !important; font-style: normal !important; font-weight: 400 !important; font-size: 14px !important; color: #222D38 !important; margin-bottom: 0 !important; line-height: 18px !important; } .chatbot__active-invitation__cross1 { opacity: 0.3; align-self: center; width: 20px; height: 20px; flex: none; } .chatbot__active-invitation__cross1 .chatbot__header__cross_icon { width: 8px !important; height: 8px !important; } @media (max-width: 991px) { .open-chatbot_btn { display: none !important; } .open-chatbot_btn__mobile { display: flex !important; } .chatbot-window.active_mini { transform: translateY(520px); } } @media (max-width: 397px) { .chatbot-window { width: 100%; right: 0; } }/style>div classopen-chatbot_btn idopen-chatbot_btn> div classchatbot_btn__text-conv> p classchatbot_btn__text-conv__item text-conv_active>Напишите нам, мы online/p> p classchatbot_btn__text-conv__item>Новое сообщение!/p> /div> div classchatbot_btn__dotes> div classchatbot_btn__dote>/div> /div>/div>div classopen-chatbot_btn__mobile idopen-chatbot_btn__mobile> svg classopen-chatbot_btn__mobile__icon enable-backgroundnew 0 0 512 512 viewBox0 0 512 512 xmlnshttp://www.w3.org/2000/svg> g> path dm354.03 31.622h-296.13c-31.93 0-57.9 25.97-57.9 57.9v259.5c0 12.29 13.899 19.218 23.71 12.21l82.47-58.84c6.92-4.93 15.06-7.54 23.56-7.54h181.39c31.93 0 57.9-25.97 57.9-57.9v-190.33c0-8.28-6.72-15-15-15zm-72.86 181.71h-173.31c-8.28 0-15-6.71-15-15 0-8.28 6.72-15 15-15h173.31c8.28 0 15 6.72 15 15 0 8.29-6.72 15-15 15zm0-70h-173.31c-8.28 0-15-6.71-15-15 0-8.28 6.72-15 15-15h173.31c8.28 0 15 6.72 15 15 0 8.29-6.72 15-15 15z/> path dm512 205.872v259.49c0 12.207-13.829 19.268-23.71 12.21l-82.47-58.83c-6.92-4.93-15.06-7.54-23.56-7.54h-181.39c-31.93 0-57.9-25.98-57.9-57.91v-28.44h168.16c48.47 0 87.9-39.43 87.9-87.9v-88.99h55.07c31.93 0 57.9 25.98 57.9 57.91z/> /g> /svg>/div>div classopen-chatbot__active-invitation__mobile idmessageActiveInvitation__Mobile> div classopen-chatbot__active-invitation__mobile__header> div classopen-chatbot__active__avatar> img srcland/inc/chatbot/avatar-def.png altАватар classopen-chatbot__active__avatar__img__mobile> /div> div classopen-chatbot__active__name-block> p classopen-chatbot__active__name>Константин/p> /div> div classchatbot__header__cross chatbot__active-invitation__cross1 idchatbot__active-invitation__cross> svg classchatbot__header__cross_icon viewBox0 0 11 11 fillnone xmlnshttp://www.w3.org/2000/svg> path fill-ruleevenodd clip-ruleevenodd dM0.270753 0.270753C0.631757 -0.090251 1.21706 -0.090251 1.57806 0.270753L10.7292 9.42194C11.0903 9.78294 11.0903 10.3682 10.7292 10.7292C10.3682 11.0903 9.78294 11.0903 9.42194 10.7292L0.270753 1.57806C-0.090251 1.21706 -0.090251 0.631757 0.270753 0.270753Z fillwhite/> path fill-ruleevenodd clip-ruleevenodd dM10.7292 0.270753C11.0903 0.631757 11.0903 1.21706 10.7292 1.57806L1.57806 10.7292C1.21706 11.0903 0.631757 11.0903 0.270753 10.7292C-0.0902508 10.3682 -0.0902512 9.78294 0.270753 9.42194L9.42194 0.270753C9.78294 -0.090251 10.3682 -0.090251 10.7292 0.270753Z fillwhite/> /svg> /div> /div> div classopen-chatbot__active-invitation__mobile__body> p classopen-chatbot__active-invitation__mobile__text>Здравствуйте, ремонт какой техники вас интересует?/p> /div>/div>div classchatbot-window idchatbot-window> div classchatbot__header idchatbot__header> div classchatbot__header__avatar> img srcland/inc/chatbot/avatar-def.png altАватар classchatbot__header__avatar__img> /div> div classchatbot__header__name-and-job> p classchatbot__header__name>Константин/p> p classchatbot__header__job>Ваш личный менеджер/p> /div> div classchatbot__header__cross idchatbot__header__cross> svg classchatbot__header__cross_icon viewBox0 0 11 11 fillnone xmlnshttp://www.w3.org/2000/svg> path fill-ruleevenodd clip-ruleevenodd dM0.270753 0.270753C0.631757 -0.090251 1.21706 -0.090251 1.57806 0.270753L10.7292 9.42194C11.0903 9.78294 11.0903 10.3682 10.7292 10.7292C10.3682 11.0903 9.78294 11.0903 9.42194 10.7292L0.270753 1.57806C-0.090251 1.21706 -0.090251 0.631757 0.270753 0.270753Z fillwhite/> path fill-ruleevenodd clip-ruleevenodd dM10.7292 0.270753C11.0903 0.631757 11.0903 1.21706 10.7292 1.57806L1.57806 10.7292C1.21706 11.0903 0.631757 11.0903 0.270753 10.7292C-0.0902508 10.3682 -0.0902512 9.78294 0.270753 9.42194L9.42194 0.270753C9.78294 -0.090251 10.3682 -0.090251 10.7292 0.270753Z fillwhite/> /svg> /div> /div> div classchatbot__body> div classchatbot__body__cont idchatbot__body__cont> div classchatbot__body__message-operator idmessageActiveInvitation styledisplay: none;> p classchatbot__body__message-operator_name>Константин/p> p classchatbot__body__message-operator__item padding-mes> Здравствуйте, ремонт какой техники вас интересует? /p> /div> div classchatbot__body__list-mes> p classchatbot__body__list-mes__item padding-mes>Ремонт компьютера/p> p classchatbot__body__list-mes__item padding-mes>Ремонт ноутбука/p> p classchatbot__body__list-mes__item padding-mes>Ремонт моноблока/p> /div> !-- div classchatbot__body__message-operator> p classchatbot__body__message-operator_name>Константин/p> p classchatbot__body__message-operator__item padding-mes> Здравствуйте! /p> p classchatbot__body__message-operator__item padding-mes> За слезы сестры — можно убить. За счастье матери — можно мужскую слезу пустить. За отца — жизнь отдать. За брата — перед пулей встать. /p> /div> div classchatbot__body__message-client> p classchatbot__body__message-operator_name>/p> p classchatbot__body__message-client__item padding-mes> Здравствуйте /p> p classchatbot__body__message-client__item padding-mes> Все мы пацаны думаем, что сильнее девушек, но для каждого пацана найдется та, которая заставит не спать ночами. /p> /div> div classchatbot__body__form-cont> p classchatbot__body__form__title>Представьтесь в чате/p> form classchatbot__body__form> div classchatbot__body__form__input-cont> input classchatbot__body__form__input namefullname typetext placeholderВаше имя> /div> div classchatbot__body__form__input-cont> input classchatbot__body__form__input namephone typetel required placeholder+7> /div> button classchatbot__body__form__submit typesubmit>Отправить/button> /form> /div> --> /div> div classchatbot__body__writes idoperator_writing_text_cb> p classchatbot__body__writes__text>Константин набирает сообщение.../p> /div> div classchatbot__body__anchor-footer idchatbot__body__anchor-footer> svg classchatbot__body__anchor-footer__arrow viewBox0 0 13 8 fillnone xmlnshttp://www.w3.org/2000/svg> path dM12 1L6.5 6.5L1 1 stroke#D7DEE6 stroke-width2 stroke-linecapround/> /svg> /div> /div> div classchatbot__footer> div classchatbot__footer__cont> div classtextarea__block> textarea classtextarea__message_ch idtextarea__message_ch placeholderВведите сообщение>/textarea> /div> div classbtn_messend__block> div classbtn__message-send idbtn-send-mes__cb> svg classbtn__message-send_arrow viewBox0 0 16 16 fillnone xmlnshttp://www.w3.org/2000/svg> path dM8.70711 0.292892C8.31658 -0.097632 7.68342 -0.097632 7.29289 0.292892L0.928933 6.65685C0.538408 7.04738 0.538408 7.68054 0.928933 8.07107C1.31946 8.46159 1.95262 8.46159 2.34315 8.07107L8 2.41421L13.6569 8.07107C14.0474 8.46159 14.6805 8.46159 15.0711 8.07107C15.4616 7.68054 15.4616 7.04738 15.0711 6.65685L8.70711 0.292892ZM9 16L9 0.999999L7 0.999999L7 16L9 16Z fillwhite/> /svg> /div> /div> /div> /div>/div>script> var operatorName Константин; var operatorJob Мастер по ремонту; var spawnRateChatBot 3 * 1000; var operatorAvatar land/inc/chatbot/avatar-def.png; var ActiveInvitation true; var TimeActiveInvitation 7 * 1000; var TimeOperatorWritingShort 4 * 1000; var TimeOperatorWritingLong 6 * 1000; document.querySelector(.chatbot__header__name).innerText operatorName; document.querySelector(.chatbot__body__message-operator_name).innerText operatorName; document.querySelector(.open-chatbot__active__name).innerText operatorName; document.querySelector(.chatbot__body__writes__text).innerText operatorName + набирает сообщение...; document.querySelector(.chatbot__header__job).innerText operatorJob; document.querySelector(.chatbot__header__avatar__img).src operatorAvatar; document.querySelector(.open-chatbot__active__avatar__img__mobile).src operatorAvatar; function getRandomInt(min, max) { min Math.ceil(min); max Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается } const idClientChatBotSl getRandomInt(1, 10000); // console.log(idClientChatBotSl); setTimeout(function () { document.querySelector(#open-chatbot_btn).classList.add(active); document.querySelector(#open-chatbot_btn__mobile).classList.add(active); if (ActiveInvitation true) { setTimeout(function () { if (pageWidthChatBot 991) { if (document.querySelector(#open-chatbot_btn__mobile).classList.contains(active)) { messageActiveInvitation.style.display flex; document.querySelector(#messageActiveInvitation__Mobile).classList.add(active); document.querySelector(#open-chatbot_btn__mobile).classList.remove(active); } } else { if (document.querySelector(#open-chatbot_btn).classList.contains(active)) { messageActiveInvitation.style.display flex; document.querySelector(#open-chatbot_btn).classList.remove(active); document.querySelector(#chatbot-window).classList.add(active); } } }, TimeActiveInvitation); } }, spawnRateChatBot); document.querySelector(#open-chatbot_btn).onclick function (e) { e.preventDefault(); document.querySelector(#open-chatbot_btn).classList.remove(active); document.querySelector(#chatbot-window).classList.add(active); }; document.querySelector(#open-chatbot_btn__mobile).onclick function (e) { e.preventDefault(); document.querySelector(#open-chatbot_btn__mobile).classList.toggle(active) document.querySelector(#chatbot-window).classList.add(active); }; document.querySelector(#messageActiveInvitation__Mobile).onclick function (e) { e.preventDefault(); document.querySelector(#messageActiveInvitation__Mobile).classList.toggle(active) document.querySelector(#chatbot-window).classList.add(active); }; document.querySelector(#chatbot__header).onclick function (e) { e.preventDefault(); document.querySelector(#chatbot-window).classList.toggle(active_mini); }; const pageWidthChatBot document.documentElement.scrollWidth; if (pageWidthChatBot 991) { document.querySelector(#chatbot__header).onclick function (e) { e.preventDefault(); document.querySelector(#chatbot-window).classList.toggle(active); document.querySelector(#open-chatbot_btn__mobile).classList.toggle(active) }; } else { document.querySelector(#chatbot__header).onclick function (e) { e.preventDefault(); document.querySelector(#chatbot-window).classList.toggle(active_mini); }; } document.querySelector(#chatbot__body__cont).addEventListener(scroll, function () { var ContHeightMax document.querySelector(#chatbot__body__cont).scrollHeight - 300; if (this.scrollTop + 400 ContHeightMax) { document.querySelector(#chatbot__body__anchor-footer).classList.add(active); } else { document.querySelector(#chatbot__body__anchor-footer).classList.remove(active); } }); document.querySelector(#chatbot__body__anchor-footer).onclick function (e) { e.preventDefault(); var chatbotBodyCont document.querySelector(#chatbot__body__cont); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); }; document.querySelector(#textarea__message_ch).addEventListener(keyup, function (e) { btnKey e.key; if (btnKey Enter) { var chatbotBodyCont document.querySelector(#chatbot__body__cont); var textareaClient document.querySelector(#textarea__message_ch); var valTextAreaClient textareaClient.value; textareaClient.value ; // console.log(valTextAreaClient); if (valTextAreaClient.length > 1) { valTextAreaClient valTextAreaClient.substr(0, (valTextAreaClient.length - 1)); document.querySelector(.chatbot__body__list-mes).style.display none; var newClientMessage document.createElement(div); newClientMessage.classList.add(chatbot__body__message-client); newClientMessage.innerHTML p classchatbot__body__message-client__item padding-mes> + valTextAreaClient + /p> chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var messagesClientNumber document.getElementsByClassName(chatbot__body__message-client).length; ClientMessageSended(valTextAreaClient, messagesClientNumber); } } }); document.querySelector(#btn-send-mes__cb).onclick function (e) { e.preventDefault(); var chatbotBodyCont document.querySelector(#chatbot__body__cont); var textareaClient document.querySelector(#textarea__message_ch); var valTextAreaClient textareaClient.value; textareaClient.value ; // console.log(valTextAreaClient); if (valTextAreaClient ! ) { document.querySelector(.chatbot__body__list-mes).style.display none; var newClientMessage document.createElement(div); newClientMessage.classList.add(chatbot__body__message-client); newClientMessage.innerHTML p classchatbot__body__message-client__item padding-mes> + valTextAreaClient + /p> chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var messagesClientNumber document.getElementsByClassName(chatbot__body__message-client).length; ClientMessageSended(valTextAreaClient, messagesClientNumber); } }; var mesItem document.querySelectorAll(.chatbot__body__list-mes__item); for (var i_mes 0; i_mes mesItem.length; i_mes++) { mesItemi_mes.onclick function (e) { e.preventDefault(); var chatbotBodyCont document.querySelector(#chatbot__body__cont); var textareaClient this.textContent; console.log(textareaClient); var valTextAreaClient textareaClient; textareaClient.value ; // console.log(valTextAreaClient); if (valTextAreaClient ! ) { document.querySelector(.chatbot__body__list-mes).style.display none; var newClientMessage document.createElement(div); newClientMessage.classList.add(chatbot__body__message-client); newClientMessage.innerHTML p classchatbot__body__message-client__item padding-mes> + valTextAreaClient + /p> chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var messagesClientNumber document.getElementsByClassName(chatbot__body__message-client).length; ClientMessageSended(valTextAreaClient, messagesClientNumber); } }; } function writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew) { textOperator.forEach(function (item, i, arr) { var arrLenght arr.length - 1; var textsOperator item; if (textsOperator.length 25) { timing TimeOperatorWritingShort; } else { timing TimeOperatorWritingLong; } // console.log(Длинна текста: + textsOperator.length + timing: + timing); // alert(arrLenght + + i); if (i > 0) { timingFor timing * i + 1000; } else { timingFor 0; } if ((typeof textsOperator) string) { setTimeout(function () { var operatorWriting document.querySelector(#operator_writing_text_cb); setTimeout(function () { operatorWriting.classList.add(active); }, 1000); setTimeout(function () { operatorWriting.classList.remove(active); var newClientMessage document.createElement(div); var chatbotBodyCont document.querySelector(#chatbot__body__cont); newClientMessage.classList.add(chatbot__body__message-operator); if (i 0) { newClientMessage.innerHTML p classchatbot__body__message-operator_name> + operatorName + /p>p classchatbot__body__message-operator__item padding-mes> + textsOperator + /p>; } else { newClientMessage.innerHTML p classchatbot__body__message-operator__item padding-mes> + textsOperator + /p>; } chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var oData new FormData(); oData.append(idClientChatBotSl, idClientChatBotSl); oData.append(MessageOperatorChatBotSl, textsOperator); var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, https://chatservicelead.u1221283.isp.regruhosting.ru/stat.php, true); xhr.onload function (oEvent) { if (xhr.status 200) { console.log(Ответ бота сохранен); // Событие при успешной отправке формы в систему } else { console.log(Ошибка сохранения ответа бота + xhr.status); // Событие при неуспешной отправке формы в систему } }; xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); if (i arrLenght) { setTimeout(function () { if (leadform true) { console.log(форма); createChatFormSL(); sendLeadSL(); } }, 2000); } }, timing); }, timingFor); } }); if (textOperator ) { setTimeout(function () { if (leadform true) { console.log(форма); createChatFormSL(); sendLeadSL(); } }, timing); } if (idLastMessageNew ! undefined || idLastMessageNew ! null) { idLastMessage idLastMessageNew; console.log(ID ветки + idLastMessage); vvv(); } else if (idLastMessageNew null) { idLastMessage null; console.log(ID ветки + idLastMessage); vvv(); } } var idLastMessage undefined; function OperatorMessageSending(valTextAreaClient, messagesClientNumber, textInclude, textOperator, timing, leadform, idNewMessage, idLastMessageNew) { valTextAreaClient valTextAreaClient.toLowerCase(); textInclude.forEach(function (itemText, iText, arrText) { var arrTextLenght arrText.length - 1; if (idNewMessage idLastMessage && idNewMessage ! null) { itemText itemText.toLowerCase(); if (valTextAreaClient.includes(itemText) && itemText ! любой ответ) { console.log(Совпадение и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } else if (itemText любой ответ && !valTextAreaClient.includes(itemText)) { console.log(Любой ответ и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } } else if (idNewMessage null || !idNewMessage) { itemText itemText.toLowerCase(); if (valTextAreaClient.includes(itemText)) { console.log(Совпадение и отсутсвие ID нового сообщения ); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } } else if (messagesClientNumber 1 && idNewMessage 1) { itemText itemText.toLowerCase(); if (valTextAreaClient.includes(itemText) && itemText ! любой ответ) { console.log(Совпадение и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } else if (itemText любой ответ && !valTextAreaClient.includes(itemText)) { console.log(Любой ответ и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } } }); } function ClientMessageSended(valTextAreaClient, messagesClientNumber) { var oData new FormData(); if (messagesClientNumber 1) { oData.append(DelitelClientChatBotSl, dilitel); } oData.append(idClientChatBotSl, idClientChatBotSl); oData.append(MessageClientChatBotSl, valTextAreaClient); var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, https://chatservicelead.u1221283.isp.regruhosting.ru/stat.php, true); xhr.onload function (oEvent) { if (xhr.status 200) { console.log(Ответ сохранен); // Событие при успешной отправке формы в систему } else { console.log(Ошибка сохранения ответа + xhr.status); // Событие при неуспешной отправке формы в систему } }; xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); //общие цены OperatorMessageSending(valTextAreaClient, messagesClientNumber, интернет, инет, Стоимость настройки интернета от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, windows, win, винд, синий экран, экран смерт, Стоимость установки и настройки Windows от 325 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, роутер, wi-fi, wifi, вайфай, Стоимость настройки роутера от 480 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, антивирус, Стоимость установки и настройки антивируса от 390 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, вирус, Стоимость удаления вирусов от 310 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, чистка, Стоимость чистки от пыли от 490 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, биос, биус, Стоимость настройки биоса от 560 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, драйвер, Стоимость установки драйверов от 190 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, принтер, Стоимость настройки принтера от 420 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, парол, Стоимость восстановления пароля от 690 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, диспле, Стоимость замены дисплея от 490 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, восстанов, Стоимость восстановления данных от 290 руб. за ГБ, Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, жесткий диск, диск, hdd, Стоимость замены жесткого диска (HDD) от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, клав, Стоимость замены и ремонта клавиатуры от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, кулер, куллер, Стоимость замены кулера от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, озу, оператив, Стоимость замены оперативной памяти от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, usb, Стоимость замены порта USB от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, термо, Стоимость замены термопасты от 445 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, экран, монитор, Стоимость замены экрана от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, корпус, Стоимость ремонта и замены корпуса от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, матриц, Стоимость ремонта и замены матрицы от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, разъем, Стоимость ремонта и замены разъемов от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, видеокарт, видео-карт, Стоимость ремонта или замены видеокарты от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, материнская плат, мат плат, материнской плат, материнскую плат, Стоимость ремонта материнской платы от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, проц, Стоимость ремонта и замены процессора от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, звук, Стоимость замены звуковой карты от 395 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, блок питан, блока питан, блоки питан, Стоимость замены блока питания от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ворд, ексель, повер поинт, word, excel, microsoft office, майкрософт офис, майкрософт оффис, Стоимость установки пакета программ Microsoft Office от 690 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); // OperatorMessageSending(valTextAreaClient, messagesClientNumber, замен, Стоимость замены от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, переустанов, Стоимость переустановки от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, установ, Стоимость установки от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, цену, цена, стоимость, стоит, денег, сколько, Стоимость работ мастер определяет после диагностики, Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, диагностик, мастер, специалист, Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ремонт компьютера, Давайте определимся, что у вас за проблема с компьютером?, Расскажите в двух словах про поломку, 4000, false, null, 281); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ремонт ноутбука, Давайте определимся, что у вас за проблема с ноутбуком?, Расскажите в двух словах про поломку, 4000, false, null, 281); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ремонт моноблока, Давайте определимся, что у вас за проблема с моноблоком?, Расскажите в двух словах про поломку, 4000, false, null, 281); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Чтобы отремонтировать ваше оборудование, нужно сначала его продиагностировать, Выезд мастера и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, 291, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, комп, пк, ноут, нотбук, нетбук, монобл, Нужно диагностировать, когда вам было бы удобно принять мастера?, Выезд мастера и диагностика бесплатные, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, адрес, где нах, офис, Мы работаем на выезде, Хотите заказать диагностику на дому?, Выезд мастера и диагностика бесплатные, 4000, false, null, 301); OperatorMessageSending(valTextAreaClient, messagesClientNumber, да, хочу, обязательно, Отлично, заполните форму и мы с вами свяжемся, 4000, true, 301, 1002); OperatorMessageSending(valTextAreaClient, messagesClientNumber, нет, не хочу, неа, У нас сейчас действует скидка 20% только при заказе через сайт, Точно не хотите вызвать мастера?, 4000, false, 301, 302); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Хорошо, у вас еще остались вопросы?, 4000, false, 302, 1001); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Для точного определения неисправности необходимо провести диагностику, Выезд мастера и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, 281, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Отлично, заполните форму и мы с вами свяжемся, 4000, true, 282, 1002); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Добрый день, любой ответ, Добрый день, ремонт какой техники вас интересует?, 4000, false, null, 291); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Добрый вечер, любой ответ, Добрый вечер, ремонт какой техники вас интересует?, 4000, false, null, 291); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Доброе утро, любой ответ, Доброе утро, ремонт какой техники вас интересует?, 4000, false, null, 291); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Здравствуйте, любой ответ, Здравствуйте, ремонт какой техники вас интересует?, 4000, false, 1, 291); //по окончанию ветки OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Для решения данного вопроса оставьте ваш телефон и мы с вами свяжемся, 4000, true, 1001, 1001); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Для решения данного вопроса дождитесь звонка оператора, 4000, false, 1002, 1002); } var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; // console.log(thread); var action /addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0; var branch_id 777; var is_pm false; var thread_id 39971; var thread_type 1; var direction_id 1; var offer_id 1; var sub_id1 ; var sub_id2 ; var sub_id3 ; var view_id 76643129; function createChatFormSL() { var newClientMessage document.createElement(div); var chatbotBodyCont document.querySelector(#chatbot__body__cont); newClientMessage.classList.add(chatbot__body__form-cont); newClientMessage.innerHTML p classchatbot__body__form__title>Заполните форму/p>form classchatbot__body__form>div classchatbot__body__form__input-cont>input classchatbot__body__form__input namefullname typetext placeholderВаше имя>/div>div classchatbot__body__form__input-cont>input classchatbot__body__form__input namephone typetel required placeholder+7>/div>button classchatbot__body__form__submit typesubmit>Отправить/button>/form>; chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); } function sendLeadSL() { var city {id:777,name:,country:rus}; var countryName city.country; $(typetel).not(.nomask).each(function () { var self $(this); self.inputmask(remove); if (countryName rus) { self.inputmask({ mask: +7 (999) 999-99-99, onBeforePaste: function (pastedValue, opts) { var processedValue pastedValue; var tel processedValue.replace(/^\d/g, ); if (tel.length 11 && (tel0 8 || tel0 7)) { processedValue +7 + tel.substring(1); } return processedValue; }, onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName bel) { self.inputmask(+375 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName ua) { self.inputmask(+380 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } }); var forms document.getElementsByClassName(chatbot__body__form); console.log(forms.length); for (var i 0; i forms.length; i++) { // var btnSubmit formsi.querySelector(buttontypesubmit); // btnSubmit.addEventListener(click, function(e) { formsi.addEventListener(submit, function (e) { e.preventDefault(); var form this.closest(.chatbot__body__form); var oData new FormData(form); if (typeof URLSearchParams function) { const utm { utm_source: utm1, utm_medium: utm2, utm_campaign: utm3, utm_content: utm4, utm_term: utm5 }; const urlParams new URLSearchParams(window.location.search); for (var prop in utm) { if (urlParams.get(prop) ! null) { oData.append(utmprop, urlParams.get(prop)); } } } oData.append(hash, view_id); oData.append(branch_id, branch_id); oData.append(is_pm, is_pm); oData.append(thread_id, thread_id); oData.append(thread_type, thread_type); oData.append(direction_id, direction_id); oData.append(offer_id, offer_id); oData.append(sub_id1, sub_id1); oData.append(sub_id2, sub_id2); oData.append(sub_id3, sub_id3 + _chatbot_lend); if (!oData.get(fullname)) { oData.set(fullname, Без имени); } oData.append(view_id, window.view_id); oData.append(hash, window.view_id); var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, action, true); xhr.onload function (oEvent) { if (xhr.status 200) { form.reset(); var chatbotForms document.querySelectorAll(.chatbot__body__form-cont); for (var i_forms 0; i_forms chatbotForms.length; i_forms++) { chatbotFormsi_forms.style.display none; } console.log(Лид из чат-бота отправлен); // Событие при успешной отправке формы в систему var oDataStat new FormData(); oDataStat.append(idClientChatBotSl, idClientChatBotSl); oDataStat.append(MessageClientChatBotSl, Лид отправлен); var XHRStat (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var XHRStat new XHRStat(); XHRStat.open(POST, https://chatservicelead.u1221283.isp.regruhosting.ru/stat.php, true); XHRStat.onload function (oEvent) { if (XHRStat.status 200) { console.log(Ответ сохранен + отправлен лид); // Событие при успешной отправке формы в систему } else { console.log(Ошибка сохранения ответа + XHRStat.status); // Событие при неуспешной отправке формы в систему } }; XHRStat.setRequestHeader(Content-Type, application/x-www-form-urlencoded); XHRStat.send(urlencodeFormData(oDataStat)); } else { console.log(Ошибка + xhr.status); // Событие при неуспешной отправке формы в систему } }; xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); }); } } function urlencodeFormData(fd) { if (typeof URLSearchParams function) { var params new URLSearchParams(); for (var pair of fd.entries()) { typeof pair1 string && params.append(pair0, pair1); } return params.toString(); } else { var s ; function encode(s) { return encodeURIComponent(s).replace(/%20/g, +); } for (var pair of fd.entries()) { if (typeof pair1 string) { s + (s ? & : ) + encode(pair0) + + encode(pair1); } } return s; } }/script>script src/app/new/js/jquery.inputmask.bundle.min.js>/script>script> /*! * sweetalert2 v11.6.15 * Released under the MIT License. */ !function (e, t) { object typeof exports && undefined ! typeof module ? module.exports t() : function typeof define && define.amd ? define(t) : (e undefined ! typeof globalThis ? globalThis : e || self).Sweetalert2 t() }(this, (function () { use strict; var e {awaitingPromise: new WeakMap, promise: new WeakMap, innerParams: new WeakMap, domCache: new WeakMap}; const t e > { const t {}; for (const o in e) teo swal2- + eo; return t }, o t(container, shown, height-auto, iosfix, popup, modal, no-backdrop, no-transition, toast, toast-shown, show, hide, close, title, html-container, actions, confirm, deny, cancel, default-outline, footer, icon, icon-content, image, input, file, range, select, radio, checkbox, label, textarea, inputerror, input-label, validation-message, progress-steps, active-progress-step, progress-step, progress-step-line, loader, loading, styled, top, top-start, top-end, top-left, top-right, center, center-start, center-end, center-left, center-right, bottom, bottom-start, bottom-end, bottom-left, bottom-right, grow-row, grow-column, grow-fullscreen, rtl, timer-progress-bar, timer-progress-bar-container, scrollbar-measure, icon-success, icon-warning, icon-info, icon-question, icon-error), n t(success, warning, info, question, error), s SweetAlert2:, a e > e.charAt(0).toUpperCase() + e.slice(1), i e > { console.warn(`${s} ${object typeof e ? e.join( ) : e}`) }, r e > { console.error(`${s} ${e}`) }, l , c (e, t) > { var o; o `${e} is deprecated and will be removed in the next major release. Please use ${t} instead.`, l.includes(o) || (l.push(o), i(o)) }, d e > function typeof e ? e() : e, u e > e && function typeof e.toPromise, p e > u(e) ? e.toPromise() : Promise.resolve(e), m e > e && Promise.resolve(e) e, w () > document.body.querySelector(`.${o.container}`), g e > { const t w(); return t ? t.querySelector(e) : null }, h e > g(`.${e}`), f () > h(o.popup), b () > h(o.icon), y () > h(o.title), v () > h(ohtml-container), x () > h(o.image), k () > h(oprogress-steps), C () > h(ovalidation-message), A () > g(`.${o.actions} .${o.confirm}`), B () > g(`.${o.actions} .${o.deny}`), P () > g(`.${o.loader}`), $ () > g(`.${o.actions} .${o.cancel}`), E () > h(o.actions), T () > h(o.footer), S () > h(otimer-progress-bar), L () > h(o.close), j () > { const e Array.from(f().querySelectorAll(tabindex:not(tabindex-1):not(tabindex0))).sort(((e, t) > { const o parseInt(e.getAttribute(tabindex)), n parseInt(t.getAttribute(tabindex)); return o > n ? 1 : o n ? -1 : 0 })), t Array.from(f().querySelectorAll(\n ahref,\n areahref,\n input:not(disabled),\n select:not(disabled),\n textarea:not(disabled),\n button:not(disabled),\n iframe,\n object,\n embed,\n tabindex0,\n contenteditable,\n audiocontrols,\n videocontrols,\n summary\n )).filter((e > -1 ! e.getAttribute(tabindex))); return (e > { const t ; for (let o 0; o e.length; o++) -1 t.indexOf(eo) && t.push(eo); return t })(e.concat(t)).filter((e > X(e))) }, O () > q(document.body, o.shown) && !q(document.body, otoast-shown) && !q(document.body, ono-backdrop), M () > f() && q(f(), o.toast), z {previousBodyPadding: null}, H (e, t) > { if (e.textContent , t) { const o (new DOMParser).parseFromString(t, text/html); Array.from(o.querySelector(head).childNodes).forEach((t > { e.appendChild(t) })), Array.from(o.querySelector(body).childNodes).forEach((t > { t instanceof HTMLVideoElement || t instanceof HTMLAudioElement ? e.appendChild(t.cloneNode(!0)) : e.appendChild(t) })) } }, q (e, t) > { if (!t) return !1; const o t.split(/\s+/); for (let t 0; t o.length; t++) if (!e.classList.contains(ot)) return !1; return !0 }, I (e, t, s) > { if (((e, t) > { Array.from(e.classList).forEach((s > { Object.values(o).includes(s) || Object.values(n).includes(s) || Object.values(t.showClass).includes(s) || e.classList.remove(s) })) })(e, t), t.customClass && t.customClasss) { if (string ! typeof t.customClasss && !t.customClasss.forEach) return void i(`Invalid type of customClass.${s}! Expected string or iterable object, got ${typeof t.customClasss}`); F(e, t.customClasss) } }, D (e, t) > { if (!t) return null; switch (t) { caseselect: casetextarea: casefile: return e.querySelector(`.${o.popup} > .${ot}`); casecheckbox: return e.querySelector(`.${o.popup} > .${o.checkbox} input`); caseradio: return e.querySelector(`.${o.popup} > .${o.radio} input:checked`) || e.querySelector(`.${o.popup} > .${o.radio} input:first-child`); caserange: return e.querySelector(`.${o.popup} > .${o.range} input`); default: return e.querySelector(`.${o.popup} > .${o.input}`) } }, V e > { if (e.focus(), file ! e.type) { const t e.value; e.value , e.value t } }, N (e, t, o) > { e && t && (string typeof t && (t t.split(/\s+/).filter(Boolean)), t.forEach((t > { Array.isArray(e) ? e.forEach((e > { o ? e.classList.add(t) : e.classList.remove(t) })) : o ? e.classList.add(t) : e.classList.remove(t) }))) }, F (e, t) > { N(e, t, !0) }, R (e, t) > { N(e, t, !1) }, U (e, t) > { const o Array.from(e.children); for (let e 0; e o.length; e++) { const n oe; if (n instanceof HTMLElement && q(n, t)) return n } }, _ (e, t, o) > { o `${parseInt(o)}` && (o parseInt(o)), o || 0 parseInt(o) ? e.stylet number typeof o ? `${o}px` : o : e.style.removeProperty(t) }, W function (e) { let t arguments.length > 1 && void 0 ! arguments1 ? arguments1 : flex; e.style.display t }, Y e > { e.style.display none }, Z (e, t, o, n) > { const s e.querySelector(t); s && (s.styleo n) }, K function (e, t) { let o arguments.length > 2 && void 0 ! arguments2 ? arguments2 : flex; t ? W(e, o) : Y(e) }, X e > !(!e || !(e.offsetWidth || e.offsetHeight || e.getClientRects().length)), J e > !!(e.scrollHeight > e.clientHeight), G e > { const t window.getComputedStyle(e), o parseFloat(t.getPropertyValue(animation-duration) || 0), n parseFloat(t.getPropertyValue(transition-duration) || 0); return o > 0 || n > 0 }, Q function (e) { let t arguments.length > 1 && void 0 ! arguments1 && arguments1; const o S(); X(o) && (t && (o.style.transition none, o.style.width 100%), setTimeout((() > { o.style.transition `width ${e / 1e3}s linear`, o.style.width 0% }), 10)) }, ee {}, te e > new Promise((t > { if (!e) return t(); const o window.scrollX, n window.scrollY; ee.restoreFocusTimeout setTimeout((() > { ee.previousActiveElement instanceof HTMLElement ? (ee.previousActiveElement.focus(), ee.previousActiveElement null) : document.body && document.body.focus(), t() }), 100), window.scrollTo(o, n) })), oe () > undefined typeof window || undefined typeof document, ne `\n div aria-labelledby${o.title} aria-describedby${ohtml-container} class${o.popup} tabindex-1>\n button typebutton class${o.close}>/button>\n ul class${oprogress-steps}>/ul>\n div class${o.icon}>/div>\n img class${o.image} />\n h2 class${o.title} id${o.title}>/h2>\n div class${ohtml-container} id${ohtml-container}>/div>\n input class${o.input} />\n input typefile class${o.file} />\n div class${o.range}>\n input typerange />\n output>/output>\n /div>\n select class${o.select}>/select>\n div class${o.radio}>/div>\n label for${o.checkbox} class${o.checkbox}>\n input typecheckbox />\n span class${o.label}>/span>\n /label>\n textarea class${o.textarea}>/textarea>\n div class${ovalidation-message} id${ovalidation-message}>/div>\n div class${o.actions}>\n div class${o.loader}>/div>\n button typebutton class${o.confirm}>/button>\n button typebutton class${o.deny}>/button>\n button typebutton class${o.cancel}>/button>\n /div>\n div class${o.footer}>/div>\n div class${otimer-progress-bar-container}>\n div class${otimer-progress-bar}>/div>\n /div>\n /div>\n `.replace(/(^|\n)\s*/g, ), se () > { ee.currentInstance.resetValidationMessage() }, ae e > { const t (() > { const e w(); return !!e && (e.remove(), R(document.documentElement, document.body, ono-backdrop, otoast-shown, ohas-column), !0) })(); if (oe()) return void r(SweetAlert2 requires document to initialize); const n document.createElement(div); n.className o.container, t && F(n, ono-transition), H(n, ne); const s string typeof (a e.target) ? document.querySelector(a) : a; var a; s.appendChild(n), (e > { const t f(); t.setAttribute(role, e.toast ? alert : dialog), t.setAttribute(aria-live, e.toast ? polite : assertive), e.toast || t.setAttribute(aria-modal, true) })(e), (e > { rtl window.getComputedStyle(e).direction && F(w(), o.rtl) })(s), (() > { const e f(), t U(e, o.input), n U(e, o.file), s e.querySelector(`.${o.range} input`), a e.querySelector(`.${o.range} output`), i U(e, o.select), r e.querySelector(`.${o.checkbox} input`), l U(e, o.textarea); t.oninput se, n.onchange se, i.onchange se, r.onchange se, l.oninput se, s.oninput () > { se(), a.value s.value }, s.onchange () > { se(), a.value s.value } })() }, ie (e, t) > { e instanceof HTMLElement ? t.appendChild(e) : object typeof e ? re(e, t) : e && H(t, e) }, re (e, t) > { e.jquery ? le(t, e) : H(t, e.toString()) }, le (e, t) > { if (e.textContent , 0 in t) for (let o 0; o in t; o++) e.appendChild(to.cloneNode(!0)); else e.appendChild(t.cloneNode(!0)) }, ce (() > { if (oe()) return !1; const e document.createElement(div), t {WebkitAnimation: webkitAnimationEnd, animation: animationend}; for (const o in t) if (Object.prototype.hasOwnProperty.call(t, o) && void 0 ! e.styleo) return to; return !1 })(), de (e, t) > { const n E(), s P(); t.showConfirmButton || t.showDenyButton || t.showCancelButton ? W(n) : Y(n), I(n, t, actions), function (e, t, n) { const s A(), a B(), i $(); ue(s, confirm, n), ue(a, deny, n), ue(i, cancel, n), function (e, t, n, s) { if (!s.buttonsStyling) return void R(e, t, n, o.styled); F(e, t, n, o.styled), s.confirmButtonColor && (e.style.backgroundColor s.confirmButtonColor, F(e, odefault-outline)); s.denyButtonColor && (t.style.backgroundColor s.denyButtonColor, F(t, odefault-outline)); s.cancelButtonColor && (n.style.backgroundColor s.cancelButtonColor, F(n, odefault-outline)) }(s, a, i, n), n.reverseButtons && (n.toast ? (e.insertBefore(i, s), e.insertBefore(a, s)) : (e.insertBefore(i, t), e.insertBefore(a, t), e.insertBefore(s, t))) }(n, s, t), H(s, t.loaderHtml), I(s, t, loader) }; function ue(e, t, n) { K(e, n`show${a(t)}Button`, inline-block), H(e, n`${t}ButtonText`), e.setAttribute(aria-label, n`${t}ButtonAriaLabel`), e.className ot, I(e, n, `${t}Button`), F(e, n`${t}ButtonClass`) } const pe (e, t) > { const n w(); n && (!function (e, t) { string typeof t ? e.style.background t : t || F(document.documentElement, document.body, ono-backdrop) }(n, t.backdrop), function (e, t) { t in o ? F(e, ot) : (i(The position parameter is not valid, defaulting to center), F(e, o.center)) }(n, t.position), function (e, t) { if (t && string typeof t) { const n `grow-${t}`; n in o && F(e, on) } }(n, t.grow), I(n, t, container)) }; const me input, file, range, select, radio, checkbox, textarea, we e > { if (!xee.input) return void r(`Unexpected type of input! Expected text, email, password, number, tel, select, radio, checkbox, textarea, file or url, got ${e.input}`); const t ye(e.input), o xee.input(t, e); W(t), setTimeout((() > { V(o) })) }, ge (e, t) > { const o D(f(), e); if (o) { (e > { for (let t 0; t e.attributes.length; t++) { const o e.attributest.name; type, value, style.includes(o) || e.removeAttribute(o) } })(o); for (const e in t) o.setAttribute(e, te) } }, he e > { const t ye(e.input); object typeof e.customClass && F(t, e.customClass.input) }, fe (e, t) > { e.placeholder && !t.inputPlaceholder || (e.placeholder t.inputPlaceholder) }, be (e, t, n) > { if (n.inputLabel) { e.id o.input; const s document.createElement(label), a oinput-label; s.setAttribute(for, e.id), s.className a, object typeof n.customClass && F(s, n.customClass.inputLabel), s.innerText n.inputLabel, t.insertAdjacentElement(beforebegin, s) } }, ye e > U(f(), oe || o.input), ve (e, t) > { string, number.includes(typeof t) ? e.value `${t}` : m(t) || i(`Unexpected type of inputValue! Expected string, number or Promise, got ${typeof t}`) }, xe {}; xe.text xe.email xe.password xe.number xe.tel xe.url (e, t) > (ve(e, t.inputValue), be(e, e, t), fe(e, t), e.type t.input, e), xe.file (e, t) > (be(e, e, t), fe(e, t), e), xe.range (e, t) > { const o e.querySelector(input), n e.querySelector(output); return ve(o, t.inputValue), o.type t.input, ve(n, t.inputValue), be(o, e, t), e }, xe.select (e, t) > { if (e.textContent , t.inputPlaceholder) { const o document.createElement(option); H(o, t.inputPlaceholder), o.value , o.disabled !0, o.selected !0, e.appendChild(o) } return be(e, e, t), e }, xe.radio e > (e.textContent , e), xe.checkbox (e, t) > { const n D(f(), checkbox); n.value 1, n.id o.checkbox, n.checked Boolean(t.inputValue); const s e.querySelector(span); return H(s, t.inputPlaceholder), n }, xe.textarea (e, t) > { ve(e, t.inputValue), fe(e, t), be(e, e, t); return setTimeout((() > { if (MutationObserver in window) { const t parseInt(window.getComputedStyle(f()).width); new MutationObserver((() > { const o e.offsetWidth + (n e, parseInt(window.getComputedStyle(n).marginLeft) + parseInt(window.getComputedStyle(n).marginRight)); var n; f().style.width o > t ? `${o}px` : null })).observe(e, {attributes: !0, attributeFilter: style}) } })), e }; const ke (t, n) > { const s v(); I(s, n, htmlContainer), n.html ? (ie(n.html, s), W(s, block)) : n.text ? (s.textContent n.text, W(s, block)) : Y(s), ((t, n) > { const s f(), a e.innerParams.get(t), i !a || n.input ! a.input; me.forEach((e > { const t U(s, oe); ge(e, n.inputAttributes), t.className oe, i && Y(t) })), n.input && (i && we(n), he(n)) })(t, n) }, Ce (e, t) > { for (const o in n) t.icon ! o && R(e, no); F(e, nt.icon), Pe(e, t), Ae(), I(e, t, icon) }, Ae () > { const e f(), t window.getComputedStyle(e).getPropertyValue(background-color), o e.querySelectorAll(class^swal2-success-circular-line, .swal2-success-fix); for (let e 0; e o.length; e++) oe.style.backgroundColor t }, Be (e, t) > { let o, n e.innerHTML; if (t.iconHtml) o $e(t.iconHtml); else if (success t.icon) o \n div classswal2-success-circular-line-left>/div>\n span classswal2-success-line-tip>/span> span classswal2-success-line-long>/span>\n div classswal2-success-ring>/div> div classswal2-success-fix>/div>\n div classswal2-success-circular-line-right>/div>\n , n n.replace(/ style.*?/g, ); else if (error t.icon) o \n span classswal2-x-mark>\n span classswal2-x-mark-line-left>/span>\n span classswal2-x-mark-line-right>/span>\n /span>\n ; else { o $e({question: ?, warning: !, info: i}t.icon) } n.trim() ! o.trim() && H(e, o) }, Pe (e, t) > { if (t.iconColor) { e.style.color t.iconColor, e.style.borderColor t.iconColor; for (const o of .swal2-success-line-tip, .swal2-success-line-long, .swal2-x-mark-line-left, .swal2-x-mark-line-right) Z(e, o, backgroundColor, t.iconColor); Z(e, .swal2-success-ring, borderColor, t.iconColor) } }, $e e > `div class${oicon-content}>${e}/div>`, Ee (e, t) > { e.className `${o.popup} ${X(e) ? t.showClass.popup : }`, t.toast ? (F(document.documentElement, document.body, otoast-shown), F(e, o.toast)) : F(e, o.modal), I(e, t, popup), string typeof t.customClass && F(e, t.customClass), t.icon && F(e, o`icon-${t.icon}`) }, Te e > { const t document.createElement(li); return F(t, oprogress-step), H(t, e), t }, Se e > { const t document.createElement(li); return F(t, oprogress-step-line), e.progressStepsDistance && _(t, width, e.progressStepsDistance), t }, Le (t, s) > { ((e, t) > { const o w(), n f(); t.toast ? (_(o, width, t.width), n.style.width 100%, n.insertBefore(P(), b())) : _(n, width, t.width), _(n, padding, t.padding), t.color && (n.style.color t.color), t.background && (n.style.background t.background), Y(C()), Ee(n, t) })(0, s), pe(0, s), ((e, t) > { const n k(); t.progressSteps && 0 ! t.progressSteps.length ? (W(n), n.textContent , t.currentProgressStep > t.progressSteps.length && i(Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)), t.progressSteps.forEach(((e, s) > { const a Te(e); if (n.appendChild(a), s t.currentProgressStep && F(a, oactive-progress-step), s ! t.progressSteps.length - 1) { const e Se(t); n.appendChild(e) } }))) : Y(n) })(0, s), ((t, o) > { const s e.innerParams.get(t), a b(); if (s && o.icon s.icon) return Be(a, o), void Ce(a, o); if (o.icon || o.iconHtml) { if (o.icon && -1 Object.keys(n).indexOf(o.icon)) return r(`Unknown icon! Expected success, error, warning, info or question, got ${o.icon}`), void Y(a); W(a), Be(a, o), Ce(a, o), F(a, o.showClass.icon) } else Y(a) })(t, s), ((e, t) > { const n x(); t.imageUrl ? (W(n, ), n.setAttribute(src, t.imageUrl), n.setAttribute(alt, t.imageAlt), _(n, width, t.imageWidth), _(n, height, t.imageHeight), n.className o.image, I(n, t, image)) : Y(n) })(0, s), ((e, t) > { const o y(); K(o, t.title || t.titleText, block), t.title && ie(t.title, o), t.titleText && (o.innerText t.titleText), I(o, t, title) })(0, s), ((e, t) > { const o L(); H(o, t.closeButtonHtml), I(o, t, closeButton), K(o, t.showCloseButton), o.setAttribute(aria-label, t.closeButtonAriaLabel) })(0, s), ke(t, s), de(0, s), ((e, t) > { const o T(); K(o, t.footer), t.footer && ie(t.footer, o), I(o, t, footer) })(0, s), function typeof s.didRender && s.didRender(f()) }; function je() { const t e.innerParams.get(this); if (!t) return; const n e.domCache.get(this); Y(n.loader), M() ? t.icon && W(b()) : Oe(n), R(n.popup, n.actions, o.loading), n.popup.removeAttribute(aria-busy), n.popup.removeAttribute(data-loading), n.confirmButton.disabled !1, n.denyButton.disabled !1, n.cancelButton.disabled !1 } const Oe e > { const t e.popup.getElementsByClassName(e.loader.getAttribute(data-button-to-replace)); t.length ? W(t0, inline-block) : X(A()) || X(B()) || X($()) || Y(e.actions) }; const Me () > A() && A().click(), ze Object.freeze({cancel: cancel, backdrop: backdrop, close: close, esc: esc, timer: timer}), He e > { e.keydownTarget && e.keydownHandlerAdded && (e.keydownTarget.removeEventListener(keydown, e.keydownHandler, {capture: e.keydownListenerCapture}), e.keydownHandlerAdded !1) }, qe (e, t, o) > { const n j(); if (n.length) return (t + o) n.length ? t 0 : -1 t && (t n.length - 1), void nt.focus(); f().focus() }, Ie ArrowRight, ArrowDown, De ArrowLeft, ArrowUp, Ve (t, o, n) > { const s e.innerParams.get(t); s && (o.isComposing || 229 o.keyCode || (s.stopKeydownPropagation && o.stopPropagation(), Enter o.key ? Ne(t, o, s) : Tab o.key ? Fe(o, s) : ...Ie, ...De.includes(o.key) ? Re(o.key) : Escape o.key && Ue(o, s, n))) }, Ne (e, t, o) > { if (d(o.allowEnterKey) && t.target && e.getInput() && t.target instanceof HTMLElement && t.target.outerHTML e.getInput().outerHTML) { if (textarea, file.includes(o.input)) return; Me(), t.preventDefault() } }, Fe (e, t) > { const o e.target, n j(); let s -1; for (let e 0; e n.length; e++) if (o ne) { s e; break } e.shiftKey ? qe(0, s, -1) : qe(0, s, 1), e.stopPropagation(), e.preventDefault() }, Re e > { const t A(), o B(), n $(); if (document.activeElement instanceof HTMLElement && !t, o, n.includes(document.activeElement)) return; const s Ie.includes(e) ? nextElementSibling : previousElementSibling; let a document.activeElement; for (let e 0; e E().children.length; e++) { if (a as, !a) return; if (a instanceof HTMLButtonElement && X(a)) break } a instanceof HTMLButtonElement && a.focus() }, Ue (e, t, o) > { d(t.allowEscapeKey) && (e.preventDefault(), o(ze.esc)) }; var _e {swalPromiseResolve: new WeakMap, swalPromiseReject: new WeakMap}; const We () > { Array.from(document.body.children).forEach((e > { e.hasAttribute(data-previous-aria-hidden) ? (e.setAttribute(aria-hidden, e.getAttribute(data-previous-aria-hidden)), e.removeAttribute(data-previous-aria-hidden)) : e.removeAttribute(aria-hidden) })) }, Ye () > { const e navigator.userAgent, t !!e.match(/iPad/i) || !!e.match(/iPhone/i), o !!e.match(/WebKit/i); if (t && o && !e.match(/CriOS/i)) { const e 44; f().scrollHeight > window.innerHeight - e && (w().style.paddingBottom `${e}px`) } }, Ze () > { const e w(); let t; e.ontouchstart e > { t Ke(e) }, e.ontouchmove e > { t && (e.preventDefault(), e.stopPropagation()) } }, Ke e > { const t e.target, o w(); return !Xe(e) && !Je(e) && (t o || !J(o) && t instanceof HTMLElement && INPUT ! t.tagName && TEXTAREA ! t.tagName && (!J(v()) || !v().contains(t))) }, Xe e > e.touches && e.touches.length && stylus e.touches0.touchType, Je e > e.touches && e.touches.length > 1, Ge () > { null z.previousBodyPadding && document.body.scrollHeight > window.innerHeight && (z.previousBodyPadding parseInt(window.getComputedStyle(document.body).getPropertyValue(padding-right)), document.body.style.paddingRight `${z.previousBodyPadding + (() > { const e document.createElement(div); e.className oscrollbar-measure, document.body.appendChild(e); const t e.getBoundingClientRect().width - e.clientWidth; return document.body.removeChild(e), t })()}px`) }; function Qe(e, t, n, s) { M() ? it(e, s) : (te(n).then((() > it(e, s))), He(ee)); /^((?!chrome|android).)*safari/i.test(navigator.userAgent) ? (t.setAttribute(style, display:none !important), t.removeAttribute(class), t.innerHTML ) : t.remove(), O() && (null ! z.previousBodyPadding && (document.body.style.paddingRight `${z.previousBodyPadding}px`, z.previousBodyPadding null), (() > { if (q(document.body, o.iosfix)) { const e parseInt(document.body.style.top, 10); R(document.body, o.iosfix), document.body.style.top , document.body.scrollTop -1 * e } })(), We()), R(document.documentElement, document.body, o.shown, oheight-auto, ono-backdrop, otoast-shown) } function et(e) { e nt(e); const t _e.swalPromiseResolve.get(this), o tt(this); this.isAwaitingPromise() ? e.isDismissed || (ot(this), t(e)) : o && t(e) } const tt t > { const o f(); if (!o) return !1; const n e.innerParams.get(t); if (!n || q(o, n.hideClass.popup)) return !1; R(o, n.showClass.popup), F(o, n.hideClass.popup); const s w(); return R(s, n.showClass.backdrop), F(s, n.hideClass.backdrop), st(t, o, n), !0 }; const ot t > { t.isAwaitingPromise() && (e.awaitingPromise.delete(t), e.innerParams.get(t) || t._destroy()) }, nt e > void 0 e ? {isConfirmed: !1, isDenied: !1, isDismissed: !0} : Object.assign({ isConfirmed: !1, isDenied: !1, isDismissed: !1 }, e), st (e, t, o) > { const n w(), s ce && G(t); function typeof o.willClose && o.willClose(t), s ? at(e, t, n, o.returnFocus, o.didClose) : Qe(e, n, o.returnFocus, o.didClose) }, at (e, t, o, n, s) > { ee.swalCloseEventFinishedCallback Qe.bind(null, e, o, n, s), t.addEventListener(ce, (function (e) { e.target t && (ee.swalCloseEventFinishedCallback(), delete ee.swalCloseEventFinishedCallback) })) }, it (e, t) > { setTimeout((() > { function typeof t && t.bind(e.params)(), e._destroy() })) }; function rt(t, o, n) { const s e.domCache.get(t); o.forEach((e > { se.disabled n })) } function lt(e, t) { if (e) if (radio e.type) { const o e.parentNode.parentNode.querySelectorAll(input); for (let e 0; e o.length; e++) oe.disabled t } else e.disabled t } const ct { title: , titleText: , text: , html: , footer: , icon: void 0, iconColor: void 0, iconHtml: void 0, template: void 0, toast: !1, showClass: {popup: swal2-show, backdrop: swal2-backdrop-show, icon: swal2-icon-show}, hideClass: {popup: swal2-hide, backdrop: swal2-backdrop-hide, icon: swal2-icon-hide}, customClass: {}, target: body, color: void 0, backdrop: !0, heightAuto: !0, allowOutsideClick: !0, allowEscapeKey: !0, allowEnterKey: !0, stopKeydownPropagation: !0, keydownListenerCapture: !1, showConfirmButton: !0, showDenyButton: !1, showCancelButton: !1, preConfirm: void 0, preDeny: void 0, confirmButtonText: OK, confirmButtonAriaLabel: , confirmButtonColor: void 0, denyButtonText: No, denyButtonAriaLabel: , denyButtonColor: void 0, cancelButtonText: Cancel, cancelButtonAriaLabel: , cancelButtonColor: void 0, buttonsStyling: !0, reverseButtons: !1, focusConfirm: !0, focusDeny: !1, focusCancel: !1, returnFocus: !0, showCloseButton: !1, closeButtonHtml: ×, closeButtonAriaLabel: Close this dialog, loaderHtml: , showLoaderOnConfirm: !1, showLoaderOnDeny: !1, imageUrl: void 0, imageWidth: void 0, imageHeight: void 0, imageAlt: , timer: void 0, timerProgressBar: !1, width: void 0, padding: void 0, background: void 0, input: void 0, inputPlaceholder: , inputLabel: , inputValue: , inputOptions: {}, inputAutoTrim: !0, inputAttributes: {}, inputValidator: void 0, returnInputValueOnDeny: !1, validationMessage: void 0, grow: !1, position: center, progressSteps: , currentProgressStep: void 0, progressStepsDistance: void 0, willOpen: void 0, didOpen: void 0, didRender: void 0, willClose: void 0, didClose: void 0, didDestroy: void 0, scrollbarPadding: !0 }, dt allowEscapeKey, allowOutsideClick, background, buttonsStyling, cancelButtonAriaLabel, cancelButtonColor, cancelButtonText, closeButtonAriaLabel, closeButtonHtml, color, confirmButtonAriaLabel, confirmButtonColor, confirmButtonText, currentProgressStep, customClass, denyButtonAriaLabel, denyButtonColor, denyButtonText, didClose, didDestroy, footer, hideClass, html, icon, iconColor, iconHtml, imageAlt, imageHeight, imageUrl, imageWidth, preConfirm, preDeny, progressSteps, returnFocus, reverseButtons, showCancelButton, showCloseButton, showConfirmButton, showDenyButton, text, title, titleText, willClose, ut {}, pt allowOutsideClick, allowEnterKey, backdrop, focusConfirm, focusDeny, focusCancel, returnFocus, heightAuto, keydownListenerCapture, mt e > Object.prototype.hasOwnProperty.call(ct, e), wt e > -1 ! dt.indexOf(e), gt e > ute, ht e > { mt(e) || i(`Unknown parameter ${e}`) }, ft e > { pt.includes(e) && i(`The parameter ${e} is incompatible with toasts`) }, bt e > { gt(e) && c(e, gt(e)) }; const yt e > { const t {}; return Object.keys(e).forEach((o > { wt(o) ? to eo : i(`Invalid parameter to update: ${o}`) })), t }; const vt e > { xt(e), delete e.params, delete ee.keydownHandler, delete ee.keydownTarget, delete ee.currentInstance }, xt t > { t.isAwaitingPromise() ? (kt(e, t), e.awaitingPromise.set(t, !0)) : (kt(_e, t), kt(e, t)) }, kt (e, t) > { for (const o in e) eo.delete(t) }; var Ct Object.freeze({ __proto__: null, hideLoading: je, disableLoading: je, getInput: function (t) { const o e.innerParams.get(t || this), n e.domCache.get(t || this); return n ? D(n.popup, o.input) : null }, close: et, isAwaitingPromise: function () { return !!e.awaitingPromise.get(this) }, rejectPromise: function (e) { const t _e.swalPromiseReject.get(this); ot(this), t && t(e) }, handleAwaitingPromise: ot, closePopup: et, closeModal: et, closeToast: et, enableButtons: function () { rt(this, confirmButton, denyButton, cancelButton, !1) }, disableButtons: function () { rt(this, confirmButton, denyButton, cancelButton, !0) }, enableInput: function () { lt(this.getInput(), !1) }, disableInput: function () { lt(this.getInput(), !0) }, showValidationMessage: function (t) { const n e.domCache.get(this), s e.innerParams.get(this); H(n.validationMessage, t), n.validationMessage.className ovalidation-message, s.customClass && s.customClass.validationMessage && F(n.validationMessage, s.customClass.validationMessage), W(n.validationMessage); const a this.getInput(); a && (a.setAttribute(aria-invalid, !0), a.setAttribute(aria-describedby, ovalidation-message), V(a), F(a, o.inputerror)) }, resetValidationMessage: function () { const t e.domCache.get(this); t.validationMessage && Y(t.validationMessage); const n this.getInput(); n && (n.removeAttribute(aria-invalid), n.removeAttribute(aria-describedby), R(n, o.inputerror)) }, update: function (t) { const o f(), n e.innerParams.get(this); if (!o || q(o, n.hideClass.popup)) return void i(Youre trying to update the closed or closing popup, that wont work. Use the update() method in preConfirm parameter or show a new popup.); const s yt(t), a Object.assign({}, n, s); Le(this, a), e.innerParams.set(this, a), Object.defineProperties(this, { params: { value: Object.assign({}, this.params, t), writable: !1, enumerable: !0 } }) }, _destroy: function () { const t e.domCache.get(this), o e.innerParams.get(this); o ? (t.popup && ee.swalCloseEventFinishedCallback && (ee.swalCloseEventFinishedCallback(), delete ee.swalCloseEventFinishedCallback), function typeof o.didDestroy && o.didDestroy(), vt(this)) : xt(this) } }); const At e > { let t f(); t || new $o, t f(); const o P(); M() ? Y(b()) : Bt(t, e), W(o), t.setAttribute(data-loading, true), t.setAttribute(aria-busy, true), t.focus() }, Bt (e, t) > { const n E(), s P(); !t && X(A()) && (t A()), W(n), t && (Y(t), s.setAttribute(data-button-to-replace, t.className)), s.parentNode.insertBefore(s, t), F(e, n, o.loading) }, Pt e > e.checked ? 1 : 0, $t e > e.checked ? e.value : null, Et e > e.files.length ? null ! e.getAttribute(multiple) ? e.files : e.files0 : null, Tt (e, t) > { const o f(), n e > { Ltt.input(o, jt(e), t) }; u(t.inputOptions) || m(t.inputOptions) ? (At(A()), p(t.inputOptions).then((t > { e.hideLoading(), n(t) }))) : object typeof t.inputOptions ? n(t.inputOptions) : r(Unexpected type of inputOptions! Expected object, Map or Promise, got + typeof t.inputOptions) }, St (e, t) > { const o e.getInput(); Y(o), p(t.inputValue).then((n > { o.value number t.input ? `${parseFloat(n) || 0}` : `${n}`, W(o), o.focus(), e.hideLoading() })).catch((t > { r(`Error in inputValue promise: ${t}`), o.value , W(o), o.focus(), e.hideLoading() })) }, Lt { select: (e, t, n) > { const s U(e, o.select), a (e, t, o) > { const s document.createElement(option); s.value o, H(s, t), s.selected Ot(o, n.inputValue), e.appendChild(s) }; t.forEach((e > { const t e0, o e1; if (Array.isArray(o)) { const e document.createElement(optgroup); e.label t, e.disabled !1, s.appendChild(e), o.forEach((t > a(e, t1, t0))) } else a(s, o, t) })), s.focus() }, radio: (e, t, n) > { const s U(e, o.radio); t.forEach((e > { const t e0, a e1, i document.createElement(input), r document.createElement(label); i.type radio, i.name o.radio, i.value t, Ot(t, n.inputValue) && (i.checked !0); const l document.createElement(span); H(l, a), l.className o.label, r.appendChild(i), r.appendChild(l), s.appendChild(r) })); const a s.querySelectorAll(input); a.length && a0.focus() } }, jt e > { const t ; return undefined ! typeof Map && e instanceof Map ? e.forEach(((e, o) > { let n e; object typeof n && (n jt(n)), t.push(o, n) })) : Object.keys(e).forEach((o > { let n eo; object typeof n && (n jt(n)), t.push(o, n) })), t }, Ot (e, t) > t && t.toString() e.toString(), Mt (t, o) > { const n e.innerParams.get(t); if (!n.input) return void r(`The input parameter is needed to be set when using returnInputValueOn${a(o)}`); const s ((e, t) > { const o e.getInput(); if (!o) return null; switch (t.input) { casecheckbox: return Pt(o); caseradio: return $t(o); casefile: return Et(o); default: return t.inputAutoTrim ? o.value.trim() : o.value } })(t, n); n.inputValidator ? zt(t, s, o) : t.getInput().checkValidity() ? deny o ? Ht(t, s) : Dt(t, s) : (t.enableButtons(), t.showValidationMessage(n.validationMessage)) }, zt (t, o, n) > { const s e.innerParams.get(t); t.disableInput(); Promise.resolve().then((() > p(s.inputValidator(o, s.validationMessage)))).then((e > { t.enableButtons(), t.enableInput(), e ? t.showValidationMessage(e) : deny n ? Ht(t, o) : Dt(t, o) })) }, Ht (t, o) > { const n e.innerParams.get(t || void 0); if (n.showLoaderOnDeny && At(B()), n.preDeny) { e.awaitingPromise.set(t || void 0, !0); Promise.resolve().then((() > p(n.preDeny(o, n.validationMessage)))).then((e > { !1 e ? (t.hideLoading(), ot(t)) : t.close({isDenied: !0, value: void 0 e ? o : e}) })).catch((e > It(t || void 0, e))) } else t.close({isDenied: !0, value: o}) }, qt (e, t) > { e.close({isConfirmed: !0, value: t}) }, It (e, t) > { e.rejectPromise(t) }, Dt (t, o) > { const n e.innerParams.get(t || void 0); if (n.showLoaderOnConfirm && At(), n.preConfirm) { t.resetValidationMessage(), e.awaitingPromise.set(t || void 0, !0); Promise.resolve().then((() > p(n.preConfirm(o, n.validationMessage)))).then((e > { X(C()) || !1 e ? (t.hideLoading(), ot(t)) : qt(t, void 0 e ? o : e) })).catch((e > It(t || void 0, e))) } else qt(t, o) }, Vt (t, o, n) > { o.popup.onclick () > { const o e.innerParams.get(t); o && (Nt(o) || o.timer || o.input) || n(ze.close) } }, Nt e > e.showConfirmButton || e.showDenyButton || e.showCancelButton || e.showCloseButton; let Ft !1; const Rt e > { e.popup.onmousedown () > { e.container.onmouseup function (t) { e.container.onmouseup void 0, t.target e.container && (Ft !0) } } }, Ut e > { e.container.onmousedown () > { e.popup.onmouseup function (t) { e.popup.onmouseup void 0, (t.target e.popup || e.popup.contains(t.target)) && (Ft !0) } } }, _t (t, o, n) > { o.container.onclick s > { const a e.innerParams.get(t); Ft ? Ft !1 : s.target o.container && d(a.allowOutsideClick) && n(ze.backdrop) } }, Wt e > e instanceof Element || (e > object typeof e && e.jquery)(e); const Yt () > { if (ee.timeout) return (() > { const e S(), t parseInt(window.getComputedStyle(e).width); e.style.removeProperty(transition), e.style.width 100%; const o t / parseInt(window.getComputedStyle(e).width) * 100; e.style.removeProperty(transition), e.style.width `${o}%` })(), ee.timeout.stop() }, Zt () > { if (ee.timeout) { const e ee.timeout.start(); return Q(e), e } }; let Kt !1; const Xt {}; const Jt e > { for (let t e.target; t && t ! document; t t.parentNode) for (const e in Xt) { const o t.getAttribute(e); if (o) return void Xte.fire({template: o}) } }; var Gt Object.freeze({ __proto__: null, isValidParameter: mt, isUpdatableParameter: wt, isDeprecatedParameter: gt, argsToParams: e > { const t {}; return object ! typeof e0 || Wt(e0) ? title, html, icon.forEach(((o, n) > { const s en; string typeof s || Wt(s) ? to s : void 0 ! s && r(`Unexpected type of ${o}! Expected string or Element, got ${typeof s}`) })) : Object.assign(t, e0), t }, getContainer: w, getPopup: f, getTitle: y, getHtmlContainer: v, getImage: x, getIcon: b, getIconContent: () > h(oicon-content), getInputLabel: () > h(oinput-label), getCloseButton: L, getActions: E, getConfirmButton: A, getDenyButton: B, getCancelButton: $, getLoader: P, getFooter: T, getTimerProgressBar: S, getFocusableElements: j, getValidationMessage: C, getProgressSteps: k, isLoading: () > f().hasAttribute(data-loading), isVisible: () > X(f()), clickConfirm: Me, clickDeny: () > B() && B().click(), clickCancel: () > $() && $().click(), fire: function () { const e this; for (var t arguments.length, o new Array(t), n 0; n t; n++) on argumentsn; return new e(...o) }, mixin: function (e) { return class extends (this) { _main(t, o) { return super._main(t, Object.assign({}, e, o)) } } }, showLoading: At, enableLoading: At, getTimerLeft: () > ee.timeout && ee.timeout.getTimerLeft(), stopTimer: Yt, resumeTimer: Zt, toggleTimer: () > { const e ee.timeout; return e && (e.running ? Yt() : Zt()) }, increaseTimer: e > { if (ee.timeout) { const t ee.timeout.increase(e); return Q(t, !0), t } }, isTimerRunning: () > ee.timeout && ee.timeout.isRunning(), bindClickHandler: function () { let e arguments.length > 0 && void 0 ! arguments0 ? arguments0 : data-swal-template; Xte this, Kt || (document.body.addEventListener(click, Jt), Kt !0) } }); class Qt { constructor(e, t) { this.callback e, this.remaining t, this.running !1, this.start() } start() { return this.running || (this.running !0, this.started new Date, this.id setTimeout(this.callback, this.remaining)), this.remaining } stop() { return this.running && (this.running !1, clearTimeout(this.id), this.remaining - (new Date).getTime() - this.started.getTime()), this.remaining } increase(e) { const t this.running; return t && this.stop(), this.remaining + e, t && this.start(), this.remaining } getTimerLeft() { return this.running && (this.stop(), this.start()), this.remaining } isRunning() { return this.running } } const eo swal-title, swal-html, swal-footer, to e > { const t {}; return Array.from(e.querySelectorAll(swal-param)).forEach((e > { co(e, name, value); const o e.getAttribute(name), n e.getAttribute(value); to boolean typeof cto ? false ! n : object typeof cto ? JSON.parse(n) : n })), t }, oo e > { const t {}; return Array.from(e.querySelectorAll(swal-function-param)).forEach((e > { const o e.getAttribute(name), n e.getAttribute(value); to new Function(`return ${n}`)() })), t }, no e > { const t {}; return Array.from(e.querySelectorAll(swal-button)).forEach((e > { co(e, type, color, aria-label); const o e.getAttribute(type); t`${o}ButtonText` e.innerHTML, t`show${a(o)}Button` !0, e.hasAttribute(color) && (t`${o}ButtonColor` e.getAttribute(color)), e.hasAttribute(aria-label) && (t`${o}ButtonAriaLabel` e.getAttribute(aria-label)) })), t }, so e > { const t {}, o e.querySelector(swal-image); return o && (co(o, src, width, height, alt), o.hasAttribute(src) && (t.imageUrl o.getAttribute(src)), o.hasAttribute(width) && (t.imageWidth o.getAttribute(width)), o.hasAttribute(height) && (t.imageHeight o.getAttribute(height)), o.hasAttribute(alt) && (t.imageAlt o.getAttribute(alt))), t }, ao e > { const t {}, o e.querySelector(swal-icon); return o && (co(o, type, color), o.hasAttribute(type) && (t.icon o.getAttribute(type)), o.hasAttribute(color) && (t.iconColor o.getAttribute(color)), t.iconHtml o.innerHTML), t }, io e > { const t {}, o e.querySelector(swal-input); o && (co(o, type, label, placeholder, value), t.input o.getAttribute(type) || text, o.hasAttribute(label) && (t.inputLabel o.getAttribute(label)), o.hasAttribute(placeholder) && (t.inputPlaceholder o.getAttribute(placeholder)), o.hasAttribute(value) && (t.inputValue o.getAttribute(value))); const n Array.from(e.querySelectorAll(swal-input-option)); return n.length && (t.inputOptions {}, n.forEach((e > { co(e, value); const o e.getAttribute(value), n e.innerHTML; t.inputOptionso n }))), t }, ro (e, t) > { const o {}; for (const n in t) { const s tn, a e.querySelector(s); a && (co(a, ), os.replace(/^swal-/, ) a.innerHTML.trim()) } return o }, lo e > { const t eo.concat(swal-param, swal-function-param, swal-button, swal-image, swal-icon, swal-input, swal-input-option); Array.from(e.children).forEach((e > { const o e.tagName.toLowerCase(); t.includes(o) || i(`Unrecognized element ${o}>`) })) }, co (e, t) > { Array.from(e.attributes).forEach((o > { -1 t.indexOf(o.name) && i(`Unrecognized attribute ${o.name} on ${e.tagName.toLowerCase()}>.`, + (t.length ? `Allowed attributes are: ${t.join(, )}` : To set the value, use HTML within the element.)) })) }, uo e > { const t w(), n f(); function typeof e.willOpen && e.willOpen(n); const s window.getComputedStyle(document.body).overflowY; go(t, n, e), setTimeout((() > { mo(t, n) }), 10), O() && (wo(t, e.scrollbarPadding, s), Array.from(document.body.children).forEach((e > { e w() || e.contains(w()) || (e.hasAttribute(aria-hidden) && e.setAttribute(data-previous-aria-hidden, e.getAttribute(aria-hidden)), e.setAttribute(aria-hidden, true)) }))), M() || ee.previousActiveElement || (ee.previousActiveElement document.activeElement), function typeof e.didOpen && setTimeout((() > e.didOpen(n))), R(t, ono-transition) }, po e > { const t f(); if (e.target ! t) return; const o w(); t.removeEventListener(ce, po), o.style.overflowY auto }, mo (e, t) > { ce && G(t) ? (e.style.overflowY hidden, t.addEventListener(ce, po)) : e.style.overflowY auto }, wo (e, t, n) > { (() > { if ((/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || MacIntel navigator.platform && navigator.maxTouchPoints > 1) && !q(document.body, o.iosfix)) { const e document.body.scrollTop; document.body.style.top -1 * e + px, F(document.body, o.iosfix), Ze(), Ye() } })(), t && hidden ! n && Ge(), setTimeout((() > { e.scrollTop 0 })) }, go (e, t, n) > { F(e, n.showClass.backdrop), t.style.setProperty(opacity, 0, important), W(t, grid), setTimeout((() > { F(t, n.showClass.popup), t.style.removeProperty(opacity) }), 10), F(document.documentElement, document.body, o.shown), n.heightAuto && n.backdrop && !n.toast && F(document.documentElement, document.body, oheight-auto) }; var ho { email: (e, t) > /^a-zA-Z0-9.+_-+@a-zA-Z0-9.-+\.a-zA-Z0-9-{2,24}$/.test(e) ? Promise.resolve() : Promise.resolve(t || Invalid email address), url: (e, t) > /^https?:\/\/(www\.)?-a-zA-Z0-9@:%._+~#{1,256}\.a-z{2,63}\b(-a-zA-Z0-9@:%_+.~#?&/*)$/.test(e) ? Promise.resolve() : Promise.resolve(t || Invalid URL) }; function fo(e) { !function (e) { e.inputValidator || Object.keys(ho).forEach((t > { e.input t && (e.inputValidator hot) })) }(e), e.showLoaderOnConfirm && !e.preConfirm && i(showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request), function (e) { (!e.target || string typeof e.target && !document.querySelector(e.target) || string ! typeof e.target && !e.target.appendChild) && (i(Target parameter is not valid, defaulting to body), e.target body) }(e), string typeof e.title && (e.title e.title.split(\n).join(br />)), ae(e) } let bo; class yo { constructor() { if (undefined typeof window) return; bo this; for (var t arguments.length, o new Array(t), n 0; n t; n++) on argumentsn; const s Object.freeze(this.constructor.argsToParams(o)); Object.defineProperties(this, {params: {value: s, writable: !1, enumerable: !0, configurable: !0}}); const a bo._main(bo.params); e.promise.set(this, a) } _main(t) { let o arguments.length > 1 && void 0 ! arguments1 ? arguments1 : {}; (e > { !1 e.backdrop && e.allowOutsideClick && i(allowOutsideClick parameter requires `backdrop` parameter to be set to `true`); for (const t in e) ht(t), e.toast && ft(t), bt(t) })(Object.assign({}, o, t)), ee.currentInstance && (ee.currentInstance._destroy(), O() && We()), ee.currentInstance bo; const n xo(t, o); fo(n), Object.freeze(n), ee.timeout && (ee.timeout.stop(), delete ee.timeout), clearTimeout(ee.restoreFocusTimeout); const s ko(bo); return Le(bo, n), e.innerParams.set(bo, n), vo(bo, s, n) } then(t) { return e.promise.get(this).then(t) } finally(t) { return e.promise.get(this).finally(t) } } const vo (t, o, n) > new Promise(((s, a) > { const i e > { t.close({isDismissed: !0, dismiss: e}) }; _e.swalPromiseResolve.set(t, s), _e.swalPromiseReject.set(t, a), o.confirmButton.onclick () > { (t > { const o e.innerParams.get(t); t.disableButtons(), o.input ? Mt(t, confirm) : Dt(t, !0) })(t) }, o.denyButton.onclick () > { (t > { const o e.innerParams.get(t); t.disableButtons(), o.returnInputValueOnDeny ? Mt(t, deny) : Ht(t, !1) })(t) }, o.cancelButton.onclick () > { ((e, t) > { e.disableButtons(), t(ze.cancel) })(t, i) }, o.closeButton.onclick () > { i(ze.close) }, ((t, o, n) > { e.innerParams.get(t).toast ? Vt(t, o, n) : (Rt(o), Ut(o), _t(t, o, n)) })(t, o, i), ((e, t, o, n) > { He(t), o.toast || (t.keydownHandler t > Ve(e, t, n), t.keydownTarget o.keydownListenerCapture ? window : f(), t.keydownListenerCapture o.keydownListenerCapture, t.keydownTarget.addEventListener(keydown, t.keydownHandler, {capture: t.keydownListenerCapture}), t.keydownHandlerAdded !0) })(t, ee, n, i), ((e, t) > { select t.input || radio t.input ? Tt(e, t) : text, email, number, tel, textarea.includes(t.input) && (u(t.inputValue) || m(t.inputValue)) && (At(A()), St(e, t)) })(t, n), uo(n), Co(ee, n, i), Ao(o, n), setTimeout((() > { o.container.scrollTop 0 })) })), xo (e, t) > { const o (e > { const t string typeof e.template ? document.querySelector(e.template) : e.template; if (!t) return {}; const o t.content; return lo(o), Object.assign(to(o), oo(o), no(o), so(o), ao(o), io(o), ro(o, eo)) })(e), n Object.assign({}, ct, t, o, e); return n.showClass Object.assign({}, ct.showClass, n.showClass), n.hideClass Object.assign({}, ct.hideClass, n.hideClass), n }, ko t > { const o { popup: f(), container: w(), actions: E(), confirmButton: A(), denyButton: B(), cancelButton: $(), loader: P(), closeButton: L(), validationMessage: C(), progressSteps: k() }; return e.domCache.set(t, o), o }, Co (e, t, o) > { const n S(); Y(n), t.timer && (e.timeout new Qt((() > { o(timer), delete e.timeout }), t.timer), t.timerProgressBar && (W(n), I(n, t, timerProgressBar), setTimeout((() > { e.timeout && e.timeout.running && Q(t.timer) })))) }, Ao (e, t) > { t.toast || (d(t.allowEnterKey) ? Bo(e, t) || qe(0, -1, 1) : Po()) }, Bo (e, t) > t.focusDeny && X(e.denyButton) ? (e.denyButton.focus(), !0) : t.focusCancel && X(e.cancelButton) ? (e.cancelButton.focus(), !0) : !(!t.focusConfirm || !X(e.confirmButton)) && (e.confirmButton.focus(), !0), Po () > { document.activeElement instanceof HTMLElement && function typeof document.activeElement.blur && document.activeElement.blur() }; Object.assign(yo.prototype, Ct), Object.assign(yo, Gt), Object.keys(Ct).forEach((e > { yoe function () { if (bo) return boe(...arguments) } })), yo.DismissReason ze, yo.version 11.6.15; const $o yo; return $o.default $o, $o })), void 0 ! this && this.Sweetalert2 && (this.swal this.sweetAlert this.Swal this.SweetAlert this.Sweetalert2), undefined ! typeof document && function (e, t) { var o e.createElement(style); if (e.getElementsByTagName(head)0.appendChild(o), o.styleSheet) o.styleSheet.disabled || (o.styleSheet.cssText t); else try { o.innerHTML t } catch (e) { o.innerText t } }(document, .swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error class^swal2-x-mark-line{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error class^swal2-x-mark-lineclass$left{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error class^swal2-x-mark-lineclass$right{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success class^swal2-success-circular-line{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success class^swal2-success-circular-lineclass$left{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-circular-lineclass$right{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-line{height:.3125em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-lineclass$tip{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-lineclass$long{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:top-start top top-end center-start center center-end bottom-start bottom-center bottom-end;grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:rgba(0,0,0,0) !important}.swal2-container.swal2-top-start,.swal2-container.swal2-center-start,.swal2-container.swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}.swal2-container.swal2-top,.swal2-container.swal2-center,.swal2-container.swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}.swal2-container.swal2-top-end,.swal2-container.swal2-center-end,.swal2-container.swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-start>.swal2-popup,.swal2-container.swal2-center-left>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-start>.swal2-popup,.swal2-container.swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-row>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none !important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:none}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styleddisabled{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}.swal2-styled:not(disabled){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:none}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:rgba(0,0,0,0);color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:rgba(0,0,0,0);color:#f27474}.swal2-close:focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-input,.swal2-file,.swal2-textarea,.swal2-select,.swal2-radio,.swal2-checkbox{margin:1em 2em 3px}.swal2-input,.swal2-file,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-input.swal2-inputerror,.swal2-file.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}.swal2-input:focus,.swal2-file:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-input::placeholder,.swal2-file::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 3px;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-radio,.swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-radio label,.swal2-checkbox label{margin:0 .6em;font-size:1.125em}.swal2-radio input,.swal2-checkbox input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:!;display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error class^swal2-x-mark-line{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error class^swal2-x-mark-lineclass$left{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error class^swal2-x-mark-lineclass$right{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success class^swal2-success-circular-line{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success class^swal2-success-circular-lineclass$left{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success class^swal2-success-circular-lineclass$right{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success class^swal2-success-line{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success class^swal2-success-lineclass$tip{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success class^swal2-success-lineclass$long{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}class^swal2{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>aria-hiddentrue{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto});/script>script> /* * Микролиба для получения gaid и yaid */ var SLGodObject window.SLGodObject || { helpers: {}, data: { counters: {} } }; SLGodObject.helpers.setYaCliendID function () { // ХЗ к какому событию можно приципиться, поэтому дёргаем раз в 1 секунду до победного var timerId setInterval(function () { if (SLGodObject.data.counters.yaClienId) { clearInterval(timerId); } else { for (var i in window) { if (/^yaCounter\d+/.test(i)) { try { SLGodObject.data.counters.yaClienId windowi.getClientID(); // console.log(yaid: + SLGodObject.data.counters.yaClienId); } catch (e) { } } } } }, 1000); }; SLGodObject.helpers.setGaCliendID function () { // ХЗ к какому событию можно приципиться, поэтому дёргаем раз в 1 секунду до победного var timerId setInterval(function () { if (SLGodObject.data.counters.gaClienId) { clearInterval(timerId); } else { try { SLGodObject.data.counters.gaClienId ga.getAll()0.get(clientId); // console.log(gaid: + SLGodObject.data.counters.gaClienId); } catch (e) { } } }, 1000); }; SLGodObject.helpers.getYaCliendID function () { // Чисто для наглядности, но можно взять прямо из data return SLGodObject.data.counters.yaClienId || null; }; SLGodObject.helpers.getGaCliendID function () { // Чисто для наглядности, но можно взять прямо из data return SLGodObject.data.counters.gaClienId || null; }; SLGodObject.helpers.setAllCliendID function () { // Получаем id со всех счётчиков (может ещё что добавиться) SLGodObject.helpers.setYaCliendID(); SLGodObject.helpers.setGaCliendID(); }; SLGodObject.helpers.setAllCliendID();/script>script> var city {id:777,name:,country:rus}; var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; var countryName city.country || rus; $(typetel).not(.nomask).each(function () { var self $(this); self.inputmask(remove); if (countryName rus || countryName kaz) { self.removeAttr(pattern); self.inputmask({ mask: +7 (999) 999-99-99, onBeforePaste: function (pastedValue, opts) { var processedValue pastedValue; var tel processedValue.replace(/^\d/g, ); if (tel.length 11 && (tel0 8 || tel0 7)) { processedValue +7 + tel.substring(1); } return processedValue; }, onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName bel) { self.removeAttr(pattern); self.inputmask(+375 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName ua) { self.removeAttr(pattern); self.inputmask(+380 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName tur) { self.removeAttr(pattern); self.inputmask(0 (999) 999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName az) { if ( true // typeof thread ! undefined && // typeof thread.tool_id number && // thread.tool_id 1191 && // typeof thread.id number && // thread.id 33490 ) { self.prop(pattern, \\+?((994\\s*\\(?\\d{2,3}\\)?\\s*\\d{3}-*\\s*\\d{2}-*\\s*\\d{2})|(0\\s*\\(?\\d{2,3}\\)?\\s*\\d{3}-*\\s*\\d{2}-*\\s*\\d{2})|(\\(?\\d{2,3}\\)?\\s*\\d{3}-*\\s*\\d{2}-*\\s*\\d{2}))); self.inputmask({ regex: \\d\\s\\(\\)\\-\\+{9,25}, onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else { self.inputmask(+\\9\\94 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } } }); (function ($) { $(function () { if (window.location.hostname.endsWith(.ua)) { countryName ua; } if (window.location.hostname.endsWith(.by)) { countryName bel; } if (window.location.hostname.endsWith(.kz)) { countryName kaz; } if (window.location.hostname.endsWith(.tr)) { countryName tur; } window.convertPrices function () { if ( countryName bel || countryName ua || countryName kaz || countryName az ) { if (countryName bel) { var currName Бел.руб.; var currDelim 32; } if (countryName ua) { var currName грн.; var currDelim 2.67; } if (countryName kaz) { var currName тг; var currDelim 0.125; } if (countryName az) { var currName AZN; var currDelim 35.74; } var regex /(\d+)\s?((₽)|(ру?б?\.?)|(Ру?б?\.?))/gmi; var pretext function (priceStr) { if (priceStr.includes(от)) { if (countryName az) { priceStr priceStr.replace(от, ).trim(); priceStr priceStr.replace(currName, currName + -dən); } } return priceStr; } var convert function (m, m1, m2, offset, s) { var price Math.ceil(m1 / currDelim); if ( countryName kaz // || // countryName az ) { if (price > 100) { price Math.round(price / 100) * 100; } else { price Math.round(price / 10) * 10; } } var res price + + currName; return res; } jQuery(:contains(Руб),:contains(руб),:contains(р.),:contains(₽)).not(script,style,link).each(function () { var self jQuery(this); if (self.children().length ! 0) { return; } var text self.text(); if (regex.test(text)) { // console.log(text); text text.replace(regex, convert); // console.log(text); text pretext(text); self.text(text); } }); } } // document.addEventListener(DOMContentLoaded, convertPrices); convertPrices(); function insertParam(key, value) { key encodeURI(key); value encodeURI(value); var kvp document.location.search.substr(1).split(&); var i kvp.length; var x; while (i--) { x kvpi.split(); if (x0 key) { x1 value; kvpi x.join(); break; } } if (i 0) { kvpkvp.length key, value.join(); } document.location.search kvp.join(&); } $(#city, .city-change).change(function (e) { if ($(this).parents(.not-city-select).length ! 0) { return; } e.preventDefault(); insertParam(city_id, $(this).val()); }); $(.select__list li, .header-city a.dropdown-item, .nice-select li).click(function () { if ($(this).parents(.not-city-select).length ! 0) { return; } //e.preventDefault(); insertParam(city_id, $(this).data(value)); }); }); })(jQuery); function urlencodeFormData(fd) { if (typeof URLSearchParams function) { var params new URLSearchParams(); for (var pair of fd.entries()) { typeof pair1 string && params.append(pair0, pair1); } return params.toString(); } else { var s ; function encode(s) { return encodeURIComponent(s).replace(/%20/g, +); } for (var pair of fd.entries()) { if (typeof pair1 string) { s + (s ? & : ) + encode(pair0) + + encode(pair1); } } return s; } } (function ($) { $(function () { // находим справочные поля типа // input typehidden namework valueна сайте есть акция - Скидка до 15%> var saleInfoFields $(inputnamework); saleInfoFields.each(function () { var self $(this); var formEl self.parents(form); var commentEl formEl.find(textareanamework); // если в форме есть textareanamework - переименовываем // inputnamework в inputnamework2 if (commentEl.length ! 0) { self.prop(name, work2); } }); var forms document.getElementsByClassName(sltop__form); for (var i 0; i forms.length; i++) { formsi.addEventListener(submit, function (ev) { ev.preventDefault(); var hcaptchaField $(this).find(nameh-captcha-response); if (hcaptchaField.length ! 0 && hcaptchaField.val() ) { alert(Решите капчу.); return; } var form this; var oData new FormData(form); var popupCloseEl document.getElementsByClassName(sltop__form_close); var telEl $(this).find(namephone); var modal $(this).closest(.modal); if (form.classList.contains(loading)) { return; } // добавляем комментарий о скидке и тп if (oData.has(work2)) { oData.set(work, oData.get(work) + \n\n + oData.get(work2)); } if (!telEl.inputmask(isComplete)) { telEl.trigger(focus); // console.log(Phone not isComplete!!!); return; } if (countryName tur) { oData.set(phone, +9 + oData.get(phone)); } if ( countryName az && typeof thread ! undefined && typeof thread.tool_id number && thread.tool_id 1191 && typeof thread.id number && thread.id 33490 ) { var phoneNum oData.get(phone); phoneNum phoneNum.replace(/^\d/g, ); if (phoneNum.substring(0, 1) 0) { // если начинается с 0 // убираем 0 и добавляем +994 phoneNum +994.concat(phoneNum.substring(1, phoneNum.length)); } else { // если не с 0 if (phoneNum.substring(0, 3) 994) { phoneNum +.concat(phoneNum); } else { // добавляем +994 phoneNum +994.concat(phoneNum); } } oData.set(phone, phoneNum); // for (var pair of oData.entries()) { // console.log(pair0 + , + pair1); // } // return; } if (typeof URLSearchParams function) { const utm { utm_source: utm1, utm_medium: utm2, utm_campaign: utm3, utm_content: utm4, utm_term: utm5 }; const sub_id { sub_id1: sub_id1, sub_id2: sub_id2, sub_id3: sub_id3, sub_id4: sub_id4, sub_id5: sub_id5 }; const urlParams new URLSearchParams(window.location.search); for (var prop in utm) { if (urlParams.get(prop) ! null) { oData.append(utmprop, urlParams.get(prop)); } } for (var prop in sub_id) { if (urlParams.get(prop) ! null) { oData.set(sub_idprop, urlParams.get(prop)); } } } oData.append(hash, oData.get(view_id)); // if (parseInt(thread.type) 0) { // oData.append(directionTypeId, thread.type + 10000); // } var threadOfferId 0; var threadDirectionId 0; try { threadDirectionId parseInt(thread.data.direction_id || 0); } catch (err) { console.log(err); } try { threadOfferId parseInt(thread.data.new_offer_id || 0); } catch (err) { console.log(err); } oData.set(direction_id, threadDirectionId); oData.set(offer_id, threadOfferId); oData.set(lk, rf); // Временное исключение для новых офферов var offersSpecial { // 10: 78, // Телевизоры // 11: 78, // Телевизоры ЧМ // 14: 79, // Сантехника // 18: 79, // Сантехника ЧМ // 16: 79, // Муж на час // 20: 79, // Муж на час ЧМ 22: 56, // Клининг 23: 56, // Клининг ЧМ }; var offerId parseInt(oData.get(offer_id) || 0); if (offersSpecialofferId ! undefined) { if ( offerId 14 || offerId 18 || offerId 16 || offerId 20 ) { if (parseInt(oData.get(branch_id)) 0) { oData.set(branch_id, offersSpecialofferId); } } else { oData.set(branch_id, offersSpecialofferId); } } if (!oData.get(fullname)) { oData.set(fullname, Без имени); } try { var yaid SLGodObject.helpers.getYaCliendID(); var gaid SLGodObject.helpers.getGaCliendID(); if (yaid) { oData.set(yaid, yaid); } if (gaid) { oData.set(gaid, gaid); } } catch (e) { } var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, form.action, true); xhr.onload function (oEvent) { var reponseCode 0; if (xhr.response.length > 0) { try { var result JSON.parse(xhr.response); console.info(result); reponseCode result.reponseCode; if (!result.success) { form.classList.remove(loading); form.classList.add(fail); if (typeof jQuery.fancybox object) { jQuery.fancybox.close(); } Array.from(popupCloseEl).forEach(el > el.click()); var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Veri gönderilemedi.; msg.text Lütfen tekrar deneyin veya telefonla bize ulaşın.; } else { msg.title Не удалось отправить данные.; msg.text Пожалуйста, попробуйте ещё раз или свяжитесь с нами по телефону.; } Swal.fire({ icon: error, title: msg.title, text: msg.text + \n + result.errorType + - + result.errorText, onOpen: () > { if (typeof hideKvizForm ! undefined) { hideKvizForm(); } } }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } return; } } catch { } } if (xhr.status 200 || xhr.status 202) { form.classList.remove(loading); form.classList.add(success); form.reset(); Array.from(popupCloseEl).forEach(el > el.click()); if (typeof jQuery.fancybox object) { jQuery.fancybox.close(); } if (xhr.status 200) { var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Başvuru gönderildi.; msg.text Bizimle iletişime geçtiğiniz için teşekkür ederiz, bir arama bekleyin.; } else { msg.title Заявка отправлена.; msg.text Спасибо за обращение, ожидайте звонка.; } Swal.fire({ icon: success, title: msg.title, text: msg.text, onOpen: () > { if (typeof hideKvizForm ! undefined) { hideKvizForm(); } $(.sltop__form).trigger(reset); } }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } } if (xhr.status 202 || reponseCode 202) { var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Başvuru gönderildi #202.; msg.text Bizimle iletişime geçtiğiniz için teşekkür ederiz, bir arama bekleyin.; } else { msg.title Заявка отправлена #202.; msg.text Спасибо за обращение, ожидайте звонка.; } Swal.fire({ icon: success, title: msg.title, text: msg.text }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } } if (typeof fbq function) { fbq(track, CompleteRegistration); console.log(fbq(track, CompleteRegistration)); } try { fbq(track, Lead); console.log(Success: fbq(track, Lead)); } catch (err) { console.error(Fail: fbq(track, Lead)); } try { VK.Retargeting.Event(Lead); console.log(Success: VK.Retargeting.Event(Lead)); } catch (err) { console.error(Fail: VK.Retargeting.Event(Lead)); } for (var i in window) { if (/^yaCounter\d+/.test(i)) { try { windowi.reachGoal(Lead); console.log(Success: yaCounter.reachGoal(Lead)); } catch (err) { console.error(Fail: yaCounter.reachGoal(Lead)); } } } try { gtag(event, Lead); console.log(Success: gtag(event, Lead)); } catch (err) { console.error(Fail: gtag(event, Lead)); } try { ga(send, event, null, Lead); // ga(send, event, Lead, Lead, Lead); console.log(Success: ga(send, event, null, Lead)); } catch (err) { console.error(Fail: ga(send, event, null, Lead)); } } else { console.log(Error + xhr.status); console.log(xhr.responseText); form.classList.remove(loading); form.classList.add(fail); if (typeof jQuery.fancybox object) { jQuery.fancybox.close(); } Array.from(popupCloseEl).forEach(el > el.click()); var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Veri gönderilemedi.; msg.text Lütfen tekrar deneyin veya telefonla bize ulaşın.; } else { msg.title Не удалось отправить данные.; msg.text Пожалуйста, попробуйте ещё раз или свяжитесь с нами по телефону.; } Swal.fire({ icon: error, title: msg.title, text: msg.text, onOpen: () > { if (typeof hideKvizForm ! undefined) { hideKvizForm(); } } }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } } hcaptcha2.reset(); }; xhr.onerror function () { var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Bağlantı hatası.; msg.text Lütfen tekrar deneyin veya telefonla bize ulaşın.; } else { msg.title Ошибка соединения.; msg.text Пожалуйста, попробуйте ещё раз или свяжитесь с нами по телефону.; } Swal.fire({ icon: error, title: msg.title, text: msg.text }); form.classList.remove(loading); form.classList.add(fail); hcaptcha2.reset(); }; form.classList.remove(success); form.classList.remove(fail); form.classList.add(loading); xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); }, false); } }); })(jQuery);/script> div classsite-policy-line> div classsite-policy-line-inner> Информация на данном ресурсе не является публичной офертой. a hrefhttp://healercomp.ru/politika-obrabotki-personalnyh-dannyh.html target_blank> Политика конфиденциальности /a> br> Юр. наименование: Сервисный центр Healercomp Факт. адрес: Обнинск, ул. Аксёнова, 16А /div>/div>style> .site-policy-line { padding: 3px 10px; background: #eee; border-top: 1px solid #ccc; } .site-policy-line .site-policy-line-inner { max-width: 800px; margin: 0 auto; text-align: center; font-size: 12px; line-height: 18px; color: #333; } .site-policy-line .site-policy-line-inner a { color: #0036d0; text-decoration: underline; }/style> script> window.hcaptcha2 { reset: function () { } }; /script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Sat, 14 Sep 2024 11:31:05 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveVary: Accept-EncodingCache-Control: no-cache, privateSet-Cookie: healercompru_sessioneyJpdiI6ImpPcERjcUNcL2JoWkpNaXRBV3JqR2hnPT0iLCJ2YWx1ZSI6InhMQW8yMTM4YWZcL0I0R3dlMitUcnFNcXhVQW50RUtBUFA5eUpLd2pIVnRxc05ObmdUaDJJRUd4bWE4MWFkVTV4dm9yVkVGOW1IYWdXdFh0Y3VvVkZaaXdZMzI4OTJcL2tVOGttUmpnOGdsWXhOYzU5MXdlVkZ6YWtQMzZTT010YngiLCJtYWMiOiI4Y2NiMmYxY2E1ZWMxY2Q5MDYyZTBhZmU0MDAzZmE2MzI4ZTYyOWQ4NGEyYjRjNWNhNWYzNDk3NzlmMjg0YjNlIn0%3D; expiresSun, 15-Sep-2024 11:44:47 GMT; Max-Age86400; path/; httponlyX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; modeblockX-Content-Type-Options: nosniffCF-Cache-Status: DYNAMICReport-To: {endpoints:{url:https:\/\/a.nel.cloudflare.com\/report\/v4?sNF45j04bnBELBkzF7zZFDjFB2bVI2va9PYRDZUl3yZZh3YBB18Xyp8eNxIfbHSPMwPkK1Ub3dvqia9h6rB5Ncs5mxTDhc%2FZxVzzyjsaDp6d2YUdmN9jO2i0SMWL3WZdl},group:cf-nel,max_age:604800}NEL: {success_fraction:0,report_to:cf-nel,max_age:604800}Server: cloudflareCF-RAY: 8c300c708b1c8e5d-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langru>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1> title>Ремонт компьютерной техники на дому/title> meta namedescription contentРемонт компьютерной техники на дому. Скидка 10%. Бесплатная** диагностика> link relapple-touch-icon sizes180x180 hrefhttps://healercomp.ru/land/assetsById/1024/assets/apple-touch-icon.png> link relicon typeimage/png sizes32x32 hrefhttps://healercomp.ru/land/assetsById/1024/assets/favicon-32x32.png> link relicon typeimage/png sizes16x16 hrefhttps://healercomp.ru/land/assetsById/1024/assets/favicon-16x16.png> link relmanifest hrefhttps://healercomp.ru/land/assetsById/1024/assets/site.webmanifest> meta namemsapplication-TileColor content#da532c> meta nametheme-color content#ffffff> link relpreload hrefhttps://healercomp.ru/land/assetsById/1024/assets/css/style.css asstyle> link relstylesheet hrefhttps://healercomp.ru/land/assetsById/1024/assets/css/vendor.css> link relstylesheet hrefhttps://healercomp.ru/land/assetsById/1024/assets/css/style.css>/head>body>!-- BEGIN HEADER -->header classheader> div classtop-header> div classcontainer> div classcap> a href/ classlogo> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/logo.svg altMasterskaya> span classlogo__text> span classlogo__name> Comprem24 /span> span classlogo__sub-name> ремонт пк, ноутбуков br> и моноблоков /span> /span> /a> div classcall> button classcall__button data-togglemodal data-target#exampleModal4> Заказать обратный звонок /button> /div> /div> /div> /div> section classfirst> div classcontainer> h1 classfirst__title> Ремонт компьютерной br> техники на домуbr> /h1> div classfirst__label> с гарантией 12 месяцев /div> div classfirst__offer> div classfirst__offer_wrap> div classfirst__offer_title> Узнайте стоимость ремонта вашего br> компьютера, ответив всего на 5 вопросов /div> div classfirst__offer_label> Это бесплатно и ни к чему вас не обязывает /div> div classfirst__offer_wrapper> div classfirst__offer_bonus> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/prize.png altImage classfirst__offer_prize> div classfirst__offer_bonus_text> В качестве бонуса: скидка - 10% br> на ремонт вашей техники /div> /div> a href#quiz classbutton first__offer_button> span> Узнать стоимость ремонта /span> /a> /div> /div> /div> div classfirst__merits> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/car.svg altIcon> /div> /div> div classfirst__merits_text> Бесплатный br> выезд мастера /div> /div> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/star.svg altIcon> /div> /div> div classfirst__merits_text> Более 5 лет br> опыта работы /div> /div> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/verified.svg altIcon> /div> /div> div classfirst__merits_text> До 12 месяцев br> полной гарантии /div> /div> div classfirst__merits_item> div classfirst__merits_icon-box> div classfirst__merits_icon> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/sale-tag.svg altIcon> /div> /div> div classfirst__merits_text> Стоимость br> от 400 руб. /div> /div> /div> /div> /section>/header>!-- END HEADER -->!-- BEGIN MERITS -->section classmerits> div classcontainer> h2 classmerits__title> Почему клиенты обращаются br> strong>именно к нам?/strong> /h2> div classmerits__box> div classmerits__item> div classmerits__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/merits1.png altImage> /div> div classmerits__name> Вы не потеряете свое время /div> div classmerits__text> Мы ценим время наших клиентов br> и обычно выполняем ремонт прямо br> в день вашего обращения /div> /div> div classmerits__item> div classmerits__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/merits2.png altImage> /div> div classmerits__name> Устраним проблему бесплатно /div> div classmerits__text> При возникновении гарантийного br> случая мы устраним повторную br> поломку за свой счет /div> /div> div classmerits__item> div classmerits__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/merits3.png altImage> /div> div classmerits__name> Приедем только один раз /div> div classmerits__text> В 95% случаев мастер отремонтирует br> вашу технику за один визит /div> /div> div classmerits__item> div classmerits__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/merits4.png altImage> /div> div classmerits__name> Прозрачная стоимость /div> div classmerits__text> Мы обсуждаем с клиентом стоимость br> работ по ремонту до его начала и br> фиксируем оговоренную цену. /div> /div> /div> /div>/section>!-- END MERITS -->!-- BEGIN ORDER-->section classorder> div classcontainer> div classorder__box> div classorder__content> h2 classorder__title> strong>Свяжитесь/strong> с нами /h2> div classorder__label> Оставьте свои контактные данные и мы свяжемся с вами br> в ближайшее время. /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classorder__wrapper> span> input typetext namefullname classinput required placeholderВаше имя> /span> span> input typetel namephone classinput input--phone required placeholderВаш номер телефона> /span> /div> div classorder__wrapper> button classbutton order__button> span> Перезвоните мне /span> /button> div classorder__concent> Нажимая кнопку «Перезвоните мне», br> вы даете согласие на обработку ваших br> персональных данных /div> /div> input typehidden nameview_id value76643130> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/order.png altImage classorder__img> /div> /div>/section>!-- END ORDER -->!-- BEGIN STAGES -->section classstages> div classcontainer> h2 classstages__title> strong>этапы ремонта/strong> вашей техники /h2> div classstages__box> div classstages__wrapper stages__wrapper--1> div classstages__item> div classstages__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/stages1.png altImages> /div> div classstages__name> Заявка /div> div classstages__text> Вы можете оставить заявкуbr> онлайн или позвонитьbr> нам по телефону /div> /div> div classstages__item> div classstages__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/stages2.png altImages> /div> div classstages__name> Расчет /div> div classstages__text> Мы делаем предварительный br> расчет стоимости ремонта и br> согласовываем время приезда мастера /div> /div> /div> div classstages__wrapper stages__wrapper--3> div classstages__item> div classstages__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/stages5.png altImages> /div> div classstages__name> Описание проблемы /div> div classstages__text> Менеджер расспросит вас о возникшейbr> с вашей техникой проблеме /div> /div> div classstages__item> div classstages__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/stages4.png altImages> /div> div classstages__name> Компьютер как новый /div> div classstages__text> Мастер производит ремонт вашейbr> техники, после чего выписывает br> гарантийный талон /div> /div> /div> div classstages__wrapper stages__wrapper--2> div classstages__item> div classstages__img> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/stages3.png altImages> /div> div classstages__name> Выезд мастера /div> div classstages__text> Специалист выезжает в назначенноеbr> время и место и проводит диагностику br> вашего устройства /div> /div> /div> /div> /div>/section>!-- END STAGES -->!-- BEGIN QUIZ -->section classquiz idquiz> div classcontainer> h2 classquiz__title> ОТветьте всего на 5 вопросов br> и получите strong>скидку -10%/strong> /h2> div classquiz__box> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classquiz__item> div classquiz__wrapper> div classquiz__left quiz__left--1> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 0% /div> div classquiz__progress_box> div classquiz__progress_line> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Какая у вас техника? /div> div classquiz__checks> label classcheckbox> input typeradio checked namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Ноутбук /span> /span> /label> label classcheckbox> input typeradio namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Моноблок /span> /span> /label> label classcheckbox> input typeradio namecheck valueПерсональный компьютер/> span classcheckbox__text> span> ПК /span> /span> /label> /div> div classbutton quiz__button quiz__next--1> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--2> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 33% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Какая у вас проблема? /div> div classquiz__checks> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Тормозит /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Шумит /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Перезагружается /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Нет изображения /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Не включается /span> /span> /label> label classcheckbox> input typecheckbox namecheck valueПерсональный компьютер/> span classcheckbox__text> span> Другое /span> /span> /label> /div> div classbutton quiz__button quiz__next--2> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--3> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 66% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Сколько лет вашему устройству? /div> div classquiz__checks> label classcheckbox> input typeradio nameyears valueПерсональный компьютер/> span classcheckbox__text> span> До 2 лет /span> /span> /label> label classcheckbox> input typeradio nameyears valueПерсональный компьютер/> span classcheckbox__text> span> от 2 до 5 лет /span> /span> /label> label classcheckbox> input typeradio nameyears valueПерсональный компьютер/> span classcheckbox__text> span> Больше 5 лет /span> /span> /label> /div> div classbutton quiz__button quiz__next--3> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--4> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 99% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Была ли техника в ремонте ранее? /div> div classquiz__checks> label classcheckbox> input typeradio namerepair valueПерсональный компьютер/> span classcheckbox__text> span> Да /span> /span> /label> label classcheckbox> input typeradio namerepair valueПерсональный компьютер/> span classcheckbox__text> span> Нет /span> /span> /label> /div> div classbutton quiz__button quiz__next--4> span> следующий вопрос /span> /div> /div> div classquiz__left quiz__left--5> div classquiz__progress> div classquiz__progress_text> Расчет пройден на 100% /div> div classquiz__progress_box> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> /div> div classquiz__progress_line active> div classquiz__progress_elipse>/div> div classquiz__progress_elipse quiz__progress_elipse--2>/div> /div> /div> /div> div classquiz__quest> Оставьте свои контактные данные и мы свяжемся с вами br> в ближайшее время. /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classorder__wrapper> span> input typetext namefullname classinput required placeholderКак к вам обращаться?> /span> span> input typetel namephone classinput input--phone required placeholderВаш номер телефона> /span> /div> div classorder__wrapper> button classbutton order__button> span> Перезвоните мне /span> /button> div classorder__concent> Нажимая кнопку «Перезвоните мне», br> вы даете согласие на обработку ваших br> персональных данных /div> /div> input typehidden nameview_id value76643130> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> div classquiz__right> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/quiz_right.png altImage> /div> /div> /div> /form> /div> /div>/section>!-- END QUIZ -->!-- BEGIN CONSULTATION-->section classconsultation> div classcontainer> div classorder__box> div classorder__content> h2 classorder__title> strong>нужна/strong> консультация? /h2> div classorder__label> Оставьте свои контактные данные и мы свяжемся с вами br> в ближайшее время. /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classorder__wrapper> span> input typetext namefullname classinput required placeholderКак к вам обращаться?> /span> span> input typetel namephone classinput input--phone required placeholderВаш номер телефона> /span> /div> div classorder__wrapper> button classbutton order__button> span> Перезвоните мне /span> /button> div classorder__concent> Нажимая кнопку «Перезвоните мне», br> вы даете согласие на обработку ваших br> персональных данных /div> /div> input typehidden nameview_id value76643130> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> /div> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/man.png altImage classconsultation__img> /div>/section>!-- END CONSULTATION -->!-- BEGIN QUESTIONS-->section classquestions> div classcontainer> h2 classquestions__title> Отвечаем на strong>популярные br> вопросы/strong> наших клиентов /h2> div idaccordeon classaccordeon> div classacc-item> div classacc-head active> Какое программное обеспечение Вы устанавливаете? /div> div classacc-body styledisplay: block;> p> Мы устанавливаем только надежное лицензионное ПО и сертифицированные драйверы с официальных сайтов производителей устройств, так как от этого зависит стабильность работы компьютера. /p> /div> /div> div classacc-item> div classacc-head> Как рассчитать время на выполнение услуги? /div> div classacc-body> p> Квалификация наших мастеров в большинстве случаев позволяет выполнить ремонт в день обращения, многие поломки мы устраняем всего за один час. Однако при сложных поломках срок устранения неисправности может составлять несколько дней. /p> /div> /div> div classacc-item> div classacc-head> Мне нужно перенести данные с одного ПК на другой. Сколько это стоит? /div> div classacc-body> p> С базовыми ценами на все услуги нашего сервисного центра вы можете ознакомиться, посмотрев прайс-лист в соответствующем разделе нашего сайта. Точную стоимость работ вы можете узнать у наших менеджеров по телефону. /p> /div> /div> div classacc-item> div classacc-head> Могу ли я сам купить необходимую запчасть и принести для замены? /div> div classacc-body> p> У нас имеется собственный склад с качественными оригинальными запасными частями для разных моделей компьютерной техники, но при желании вы можете предоставить свои комплектующие для замены. /p> /div> /div> div classacc-item> div classacc-head> Почему в прайсе некоторые цены указаны от, а не конкретные цифры? /div> div classacc-body> p> Стоимость работ рассчитывается в каждом случае индивидуально и зависит от сложности поломки и времени, необходимого для ее устранения. /p> /div> /div> /div> /div>/section>!-- END QUESTIONS -->!-- BEGIN CONTACTS -->section classcontacts> div classcontainer> div classcontacts__box> h2 classcontacts__title> strong>Наши контакты/strong> /h2> div classcontacts__wrapper> div classcontacts__item> div classcontacts__caption> Адрес: /div> div classcontacts__text> г. /div> /div> div classcontacts__item> div classcontacts__caption> График работы: /div> div classcontacts__text> Пн-Вс, с 10:00 до 22:00 /div> /div> /div> /div> /div> div classmap idyamap>/div>/section>!-- END CONTACTS -->!-- BEGIN FOOTER-->footer classfooter> div classcontainer> div classfooter__box> a href/ classlogo> img srchttps://healercomp.ru/land/assetsById/1024/assets/img/logo.svg altMasterskaya> span classlogo__text> span classlogo__name> Comprem24 /span> span classlogo__sub-name> ремонт пк, ноутбуков br> и моноблоков /span> /span> /a> div classcall> button classcall__button data-togglemodal data-target#exampleModal4> Заказать обратный звонок /button> /div> /div> /div>/footer>div classmodal fade modal-order idexampleModal4 tabindex-1 roledialog aria-hiddentrue> div classmodal-dialog modal-dialog-centered> div classmodal-content> button typebutton classclose data-dismissmodal aria-labelClose> span aria-hiddentrue>/span> /button> div classorder__modal> div classmodal__title> Заполните форму и мы свяжемся br> с Вами в ближайшее время! /div> form classsltop__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 > div classform__group> div classform__label> Введите ваше имя /div> span> input typetext namefullname required classinput modal__input placeholderВаше имя> /span> /div> div classform__group> div classform__label> Телефон для уточнения деталей /div> span> input typetel namephone required classinput input--phone modal__input placeholderВаш номер телефона> /span> /div> button classbutton modal__button> span> Перезвоните мне /span> /button> div classmodal__concent> Нажимая кнопку «Перезвоните мне», вы даете br> согласие на обработку ваших персональных данных /div> input typehidden nameview_id value76643130> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namework valueна сайте есть акция - Скидка 10%> /form> /div> /div> /div>/div>script srchttps://healercomp.ru/land/assetsById/1024/assets/js/vendor.js>/script>script srchttps://healercomp.ru/land/assetsById/1024/assets/js/scripts.js>/script>style> #yamap, .yamap-psh { overflow: hidden; min-height: 490px; }/style>script srchttps://api-maps.yandex.ru/2.1/?langru_Ru&apikeybb24e9c9-1ab7-46d6-8730-b21689b44f86 typetext/javascript>/script>script src/app/new/js/js.cookie.min.js>/script>script> function getRandom(min, max) { return Math.random() * (max - min) + min; } function getRandomArray(arr, n) { var len arr.length; if (n > len) { n len; } var result new Array(n), taken new Array(len); while (n--) { var x Math.floor(Math.random() * len); resultn arrx in taken ? takenx : x; takenx --len in taken ? takenlen : len; } return result; } (function () { if (typeof ymaps ! undefined) { ymaps.ready(init); function renderMap(map, points) { } function init() { var $city window.detectedBranchData || {id:777,name:,country:rus}; var $thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; // console.log($city); // console.log($thread); if (parseInt($city.id) 777) { ymaps.geolocation.get({ // Выставляем опцию для определения положения по ip provider: yandex, // Карта автоматически отцентрируется по положению пользователя. mapStateAutoApply: true }).then(function (result) { var mapElements document.querySelectorAll(#yamap); if (mapElements.length > 1) { for (var iii 0; iii mapElements.length; iii++) { mapElementsiii.id yamap.concat(iii); } } var yaMaps ; for (var iii 0; iii mapElements.length; iii++) { // var myMap new ymaps.Map(yamap, { var myMap new ymaps.Map(mapElementsiii.id, { center: result.geoObjects.get(0).geometry.getCoordinates(), zoom: 9 }); yaMaps.push(myMap); myMap.geoObjects.add(result.geoObjects); // Масштабируем карту на область видимости геообъекта. myMap.setBounds(bounds, { // Проверяем наличие тайлов на данном масштабе. checkZoomRange: true }); } }); } else { // Поиск координат центра ymaps.geocode($city.name ? $city.name : Россия, { results: 1 }).then(function (res) { // Выбираем первый результат геокодирования. var firstGeoObject res.geoObjects.get(0), // Координаты геообъекта. coords firstGeoObject.geometry.getCoordinates(), // Область видимости геообъекта. bounds firstGeoObject.properties.get(boundedBy); var mapElements document.querySelectorAll(#yamap); if (mapElements.length > 1) { for (var iii 0; iii mapElements.length; iii++) { mapElementsiii.id yamap.concat(iii); } } var yaMaps ; for (var iii 0; iii mapElements.length; iii++) { // var myMap new ymaps.Map(yamap, { var myMap new ymaps.Map(mapElementsiii.id, { center: coords, zoom: 7 }); myMap.behaviors.disable(scrollZoom); var isMobile { Android: function () { return navigator.userAgent.match(/Android/i); }, BlackBerry: function () { return navigator.userAgent.match(/BlackBerry/i); }, iOS: function () { return navigator.userAgent.match(/iPhone|iPad|iPod/i); }, Opera: function () { return navigator.userAgent.match(/Opera Mini/i); }, Windows: function () { return navigator.userAgent.match(/IEMobile/i); }, any: function () { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); } } if (isMobile.any()) { myMap.behaviors.disable(drag); } yaMaps.push(myMap); // Масштабируем карту на область видимости геообъекта. myMap.setBounds(bounds, { // Проверяем наличие тайлов на данном масштабе. checkZoomRange: true }); } // if (parseInt($(body).data(ls_type)) 5) { if (parseInt($thread.type) 5) { var points firstGeoObject.geometry.getCoordinates(); } else { var points Cookies.getJSON($city.id + -points); } if (points undefined) { $.ajax({ dataType: json, url: data.json, data: , success: function (data) { var pointsAll data$city.name; var points ; if (pointsAll ! undefined) { points getRandomArray(pointsAll, 20); } else { points ; for (var prop in data) { if (data.hasOwnProperty(prop)) { points points.concat(getRandomArray(dataprop, 5)); } } } var points2 ; points.forEach((item) > { item item1 + item1 / getRandom(50000, 100000), item0 + item0 / getRandom(50000, 100000) ; points2.push(item); var myPlacemark new ymaps.Placemark(item, {}); for (var iii 0; iii yaMaps.length; iii++) { yaMapsiii.geoObjects.add(myPlacemark); } }); Cookies.set($city.id + -points, points2, {expires: 1 / 24}); } }); } else { points.forEach((item) > { var myPlacemark new ymaps.Placemark(item, {}); for (var iii 0; iii yaMaps.length; iii++) { yaMapsiii.geoObjects.add(myPlacemark); } }); } }); } } } })();/script>script> // var telLinks document.querySelectorAll(href^tel::not(.zphone)); // var telClasses zphone phone-marker.split( ); var telClasses zphone phone-marker.split( ); var telLinks document.querySelectorAll(href^tel:); for (var i 0; i telLinks.length; i++) { for (var j 0; j telClasses.length; j++) { if (telClassesj ! ) { telLinksi.classList.add(telClassesj); } } }/script>script> var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}};/script> !-- Yandex.Metrika counter --> script typetext/javascript> (function (m, e, t, r, i, k, a) { mi mi || function () { (mi.a mi.a || ).push(arguments) }; mi.l 1 * new Date(); k e.createElement(t), a e.getElementsByTagName(t)0, k.async 1, k.src r, a.parentNode.insertBefore(k, a) }) (window, document, script, https://mc.yandex.ru/metrika/tag.js, ym); ym(window.thread.data.ym_id, init, { clickmap: true, trackLinks: true, accurateTrackBounce: true, webvisor: true }); /script> noscript> div>img srchttps://mc.yandex.ru/watch/96259463 styleposition:absolute; left:-9999px; alt/>/div> /noscript> !-- /Yandex.Metrika counter -->script src/app/new/js/js.cookie.min.js>/script>script> (function ($) { $(function () { window.$ jQuery.noConflict(); window.Cookies2 Cookies; var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; function openModal() { $(.x-modal).addClass(open); } function closeModal() { $(.x-modal).removeClass(open); Cookies2.set(no-popups, true, { expires: 7, path: / }); } $(.x-modal .content-wrapper).on(click, function (e) { e.stopPropagation(); }); $(.x-modal, .x-modal .close).on(click, function () { closeModal(); }); $(.x-modal form).on(submit, function () { Cookies2.set(no-popups, true, { expires: 7, path: / }); }) // если cookie не установлено появится окно // $(document).mousemove(function (e) { // // console.log(e.screenY); // // var Y e.pageY; // var Y e.screenY; // if (Y 20 && performance.now() > 1000) { // 10000 - 10 секунд // $(#modal1).modal(show) // } // }); var delay parseInt(thread.data.form_modal_delay || 10) * 1000; $(document).mouseleave(function () { if (!Cookies2.get(no-popups) && performance.now() > delay) { openModal(); } }); // openModal(); }); })(jQuery);/script>link relpreconnect hrefhttps://fonts.gstatic.com>link hrefhttps://fonts.googleapis.com/css2?familyNoto+Sans:wght@400;700&displaydisplay relstylesheet>style> .x-modal { font-family: Noto Sans, sans-serif !important; font-size: 16px; font-weight: 300; font-smooth: auto; line-height: 1.5; color: #444; background-color: slategray; } .x-modal * { box-sizing: border-box !important; } .x-modal input { font-family: Noto Sans, sans-serif !important; height: auto; font-weight: normal; } button { cursor: pointer; } /*body {*/ /* position: relative;*/ /* display: flex;*/ /* width: 100%;*/ /* height: 100vh;*/ /* align-items: center;*/ /* justify-content: center;*/ /*}*/ .x-modal { position: fixed; z-index: 9999; top: 0; left: 0; display: flex; overflow: hidden; height: 0vh; background-color: transparent; transition: background-color 0.25s ease; align-items: center; justify-content: center; } .x-modal.open { position: fixed; width: 100%; height: 100vh; background-color: rgba(0, 0, 0, 0.5); transition: background-color 0.25s; } .x-modal.open > .content-wrapper { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } .x-modal .content-wrapper { position: relative; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; background-color: white; border-radius: 10px; -webkit-box-shadow: 0 0 2.5rem rgba(0, 0, 0, 0.5); box-shadow: 0 0 2.5rem rgba(0, 0, 0, 0.5); -webkit-transition: -webkit-transform 0.25s; transition: -webkit-transform 0.25s; -o-transition: transform 0.25s; transition: transform 0.25s; transition: transform 0.25s, -webkit-transform 0.25s; -webkit-transition-delay: 0.15s; -o-transition-delay: 0.15s; transition-delay: 0.15s; -webkit-transform: scale(0); -ms-transform: scale(0); transform: scale(0); -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .x-modal .content-wrapper .close { position: absolute; z-index: 99; top: 0.5rem; right: 0.5rem; display: -webkit-box; display: -ms-flexbox; display: flex; width: 2.5rem; height: 2.5rem; font-size: 1.5rem; background-color: transparent; border: none; -webkit-transition: 0.25s linear; -o-transition: 0.25s linear; transition: 0.25s linear; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .x-modal .content-wrapper .close:before, .x-modal .content-wrapper .close:after { position: absolute; width: 1.25rem; height: 0.125rem; content: ; cursor: pointer; background-color: black; } .x-modal-3:not(.x-modal-3) .content-wrapper .close:after { content: ; right: -80px; top: -85px; width: 140px; height: 140px; background: #0094fd; z-index: -1; position: absolute; border-radius: 100%; } .x-modal .content-wrapper .close:before { -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); } .x-modal .content-wrapper .close:after { -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } .x-modal-3 .content-wrapper .close { right: -70px; top: -70px; width: 140px; height: 140px; background: #0094fd; border-radius: 100%; } .x-modal-3 .content-wrapper .close:after, .x-modal-3 .content-wrapper .close:before { left: 35px; bottom: 45px; -webkit-transition: 0.25s linear; -o-transition: 0.25s linear; transition: 0.25s linear; } @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { .modal:not(.x-modal-3) .content-wrapper .close { right: 1rem; } } .modal:not(.x-modal-3) .content-wrapper .close:hover:before, .modal:not(.x-modal-3) .content-wrapper .close:hover:after { background-color: #ff8001; } .x-modal-3 .content-wrapper .close:hover:after, .x-modal-3 .content-wrapper .close:hover:before { background-color: #fff; } .x-modal .content-wrapper .content { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -15px; margin-left: -15px; } .d-flex { display: -ms-flexbox; display: flex; } .d-none { display: none; } .x-col-12, .x-col-md-8, .x-col-md-4, .x-col-md-7, .x-col-md-5 { position: relative; width: 100%; padding-right: 15px; padding-left: 15px; } .x-col-12 { max-width: 100%; -ms-flex: 0 0 100%; flex: 0 0 100%; } @media (min-width: 768px) { .x-col-md-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .x-col-md-5 { -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .x-col-md-7 { -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .x-col-md-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .d-md-block { display: block; } } .bg { background-position: center center; background-repeat: no-repeat; background-size: cover; width: 100%; } @media screen and (max-width: 991px) { .bg { background-position: left center; } } .x-modal-1 .content-wrapper, .x-modal-2 .content-wrapper { max-width: 750px; width: 98%; } .x-modal-3 .content-wrapper { max-width: 920px; width: 98%; overflow: hidden; } .x-modal-backdrop.show { opacity: 0.9; } .x-modal .x-modal-content { border: 0; overflow: hidden; border-radius: 10px; } .x-modal__title { font-size: 32px; margin-bottom: 20px; line-height: 1; } .x-modal__text { font-size: 14px; margin-bottom: 20px; line-height: 1.3; } .x-modal__form input { width: 100%; font-size: 14px; text-align: center; border-radius: 20px; border: 2px solid #e8e8e8; padding: 12px 10px; line-height: 1; outline: none !important; } .x-modal__form button { width: 100%; background: #292929; color: white; border: 1px solid transparent; padding: 14px 10px; line-height: 1; font-size: 14px; text-align: center; border-radius: 20px; outline: none; cursor: pointer; -webkit-transition: all 0.3s; -o-transition: all 0.3s; transition: all 0.3s; } .x-modal__form button:hover { background: transparent; color: #292929; border: 1px solid #292929; } .x-modal__agree { margin-top: 20px; font-size: 12px; } .x-modal__item { width: 100%; } .x-modal__item:first-child { padding-right: 10px; } .x-modal-1 .x-modal__left { min-height: 400px; } .x-modal-1 .x-modal__left img { position: absolute; bottom: 0; left: 10px; } .x-modal-1 .x-modal__right { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; padding: 20px 50px; } .x-modal-2 .x-modal-wrap { padding: 70px; text-align: center; border-radius: 10px; } .x-modal-2 .x-modal__title { margin-bottom: 50px; } .x-modal-2 .x-modal__text { font-size: 22px; margin-bottom: 50px; } .x-modal-2 .form__row { max-width: 460px; margin: 0 auto; } .x-modal-2 .x-modal__form input, .x-modal-2 .x-modal__form button { font-size: 16px; } .x-modal-2 .x-modal__agree { font-size: 14px; } .x-modal-3 .x-modal-wrap { width: 100%; } .x-modal-3 .x-modal__right { padding-top: 70px; padding-bottom: 60px; padding-left: 30px; padding-right: 40px; } .x-modal-3 .x-modal__title { font-size: 22px; line-height: 1.3; } .x-modal-3 .x-modal__text { font-size: 18px; margin-bottom: 30px; } .x-modal-3 .x-modal__agree { font-size: 12px; line-height: 1.2; margin-top: 5px; padding-right: 30px; } .x-modal-3 .x-modal__form input { font-size: 18px; border-radius: 40px; padding: 14px 10px; margin-bottom: 15px; } .x-modal-3 .x-modal__form button { font-size: 18px; border-radius: 40px; padding: 20px 10px; margin-bottom: 15px; } @media screen and (max-width: 767px) { .x-modal__form { max-width: 320px; margin: 10px auto; } .bg { background-image: none !important; } .x-modal-1 .content-wrapper, .x-modal-2 .content-wrapper, .x-modal-3 .content-wrapper { width: 96%; margin: 20px auto; } .modal:not(.x-modal-3) .content-wrapper .close { top: 0; right: 0; } .x-modal-1 { text-align: center; } .form__row { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .x-modal__item { width: 100%; } .x-modal__item:first-child { padding-right: 0; margin-bottom: 10px; } .x-modal-2 .x-modal-wrap { padding: 60px 30px; } .x-modal-2 .x-modal__title { margin-bottom: 30px; font-size: 28px; } .x-modal-2 .x-modal__text { font-size: 18px; margin-bottom: 30px; } .x-modal-2 .form__row { max-width: 320px; } .x-modal-3 .x-modal__right { padding: 60px 30px !important; } .x-modal-3 { text-align: center; } } form.x-modal__form { display: block; }/style> div classmodal x-modal x-modal-2 data-modaltrigger-2> article classcontent-wrapper> button classclose>/button> div classx-modal-wrap bg stylebackground-image: url(land/inc/popups/1/bg_modal2.png);> div classx-modal__title x-modal__title--big> Сломался компьютер? /div> div classx-modal__text x-modal__text--big> Оставьте свой номер и мы бесплатно, по телефону, проведём экспресс диагностику. /div> form classsltop__form x-modal__form action/addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0 methodpost > input typehidden namehidden valueФорма при закрытии сайта> div classd-flex form__row> div classx-modal__item> input typetel namephone placeholderВаш телефон required> /div> div classx-modal__item> button typesubmit> Получить диагностику /button> /div> /div> div classx-modal__agree> Нажимая кнопку Вы соглашаетесь на обработку данных /div> input typehidden namefullname valueбез имени> input typehidden nameview_id value76643130> input typehidden namebranch_id value777> input typehidden nameidp value817685d2-1726-4154-8e0733dde91d1ec0> input typehidden nameis_pm valuefalse> input typehidden namethread_id value39971> input typehidden namethread_type value1> input typehidden namedirection_id value1> input typehidden nameoffer_id value1> /form> /div> /article> /div> link relpreconnect hrefhttps://fonts.gstatic.com>link hrefhttps://fonts.googleapis.com/css2?familyOpen+Sans:wght@300;400;600;700&familyRoboto:wght@100&displayswap relstylesheet>style> .open-chatbot_btn { width: 335px; height: 45px; background: linear-gradient(85.72deg, rgba(67, 116, 200, 0.45) -68.09%, rgba(37, 49, 70, 0.45) 58.38%), #253146; box-shadow: -20px 16px 45px rgba(0, 0, 0, 0.15); border-top-left-radius: 7px; border-top-right-radius: 7px; display: flex; justify-content: space-between; align-items: center; position: fixed; right: 30px; bottom: 0; padding-left: 25px; padding-right: 17px; z-index: 999; cursor: pointer; transform: translateY(100%); transition: 0.3s all; } .open-chatbot_btn.active { transform: translateY(0); } .chatbot_btn__text-conv__item { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 600; font-size: 15px; color: #FFFFFF; position: relative; display: none; margin-bottom: 0; } .chatbot_btn__text-conv__item.text-conv_active { display: block; } .chatbot_btn__text-conv__item::after { content: ; position: absolute; width: 8px; height: 8px; background-color: #1FDF00; right: -15px; top: 7px; border-radius: 100%; animation-name: blink; animation-timing-function: linear; animation-duration: 1.5s; animation-iteration-count: infinite; } @keyframes blink { 50% { opacity: 0; } } .chatbot_btn__dotes { display: flex; align-items: center; justify-content: center; } .chatbot_btn__dote { width: 4px; height: 4px; background-color: #495E86; border-radius: 100%; position: relative; } .chatbot_btn__dote:before { content: ; position: absolute; width: 4px; height: 4px; background-color: #495E86; border-radius: 100%; top: 0; left: -9.5px; } .chatbot_btn__dote:after { content: ; position: absolute; width: 4px; height: 4px; background-color: #495E86; border-radius: 100%; top: 0; left: -19px; } .chatbot-window { width: 335px; position: fixed; right: 30px; bottom: 0; z-index: 999; transition: 0.3s all; transform: translateY(100%); box-shadow: 0px 40px 75px rgba(0, 0, 0, 0.25); } .chatbot-window.active { transform: translateY(0); } .chatbot-window.active_mini { transform: translateY(428px); } .chatbot-window.active_mini .chatbot__header__cross { opacity: 0; visibility: hidden; } .chatbot-window.active_mini .chatbot__header { cursor: pointer; } .chatbot__header { background: linear-gradient(85.72deg, rgba(67, 116, 200, 0.45) -68.09%, rgba(37, 49, 70, 0.45) 58.38%), #253146; box-shadow: 0px 40px 75px rgba(0, 0, 0, 0.25); border-top-left-radius: 7px; border-top-right-radius: 7px; display: flex; align-items: center; padding: 15px; } .chatbot__header__avatar { width: 37px; height: 37px; background-size: cover; background-position: center; margin-right: 15px; background-color: rgba(37, 49, 70, 0.45); border-radius: 100%; position: relative; display: flex; align-items: center; justify-content: center; flex: none; } .chatbot__header__avatar__img { border-radius: 100%; width: 100%; height: 100%; object-fit: cover; } .chatbot__header__avatar:before { content: ; position: absolute; right: 4px; bottom: 0; width: 7px; height: 7px; background-color: #1FDF00; border-radius: 100%; } .chatbot__header__name { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 600; color: #FFFFFF; font-size: 15px; margin-bottom: 1px; line-height: 20px; } .chatbot__header__job { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 400; margin-bottom: 0; font-size: 13px; color: #D6D6D6; } .chatbot__header__cross { width: 25px; height: 25px; background: #495E86; border: 1px solid #172640; border-radius: 100%; margin-left: auto; display: flex; align-items: center; justify-content: center; align-self: flex-start; cursor: pointer; transition: 0.3s all; flex: none; } .chatbot__header__cross:hover { opacity: 0.7; } .chatbot__header__cross_icon { width: 11px !important; height: 11px !important; margin: 0 !important; } .chatbot__body { background-color: white; position: relative; } .chatbot__body__cont { height: 320px; overflow-y: auto; padding-top: 15px; display: flex; flex-direction: column; align-items: flex-start; padding-left: 15px; padding-right: 15px; padding-bottom: 26px; } .chatbot__body__cont::-webkit-scrollbar { width: 3px; background: transparent; height: 100%; } .chatbot__body__cont::-webkit-scrollbar-thumb { width: 3px; background-color: rgba(26, 24, 47, 0.1); border-radius: 5px; } .textarea__message_ch::-webkit-scrollbar { width: 3px; background: transparent; height: 100%; } .textarea__message_ch::-webkit-scrollbar-thumb { width: 3px; background-color: rgba(26, 24, 47, 0.1); border-radius: 5px; } .chatbot__footer { height: 108px; background-color: white; border-top: 1px solid #E8EBF1; padding: 15px; } .chatbot__body__list-mes { display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; align-self: flex-end; } .padding-mes { margin-bottom: 10px; } .chatbot__body__list-mes__item { font-family: Open Sans, sans-serif; text-align: right; padding: 9px 12px; border: 2px solid #8A9FC7; line-height: 22px; font-size: 15px; font-style: normal; font-weight: 400; color: #8A9FC7; border-radius: 17px; border-bottom-right-radius: 0; cursor: pointer; transition: 0.3s all; } .chatbot__body__list-mes__item:hover { border-color: #7081a2; color: #7081a2; } .chatbot__body__message-operator { display: flex; flex-direction: column; align-items: flex-start; max-width: 94%; } .chatbot__body__message-operator__item { font-family: Open Sans, sans-serif !important; font-style: normal !important; font-weight: 400 !important; font-size: 15px !important; color: #222D38 !important; background: #E8EBF1 !important; border-radius: 17px !important; border-bottom-left-radius: 0 !important; padding: 12px 15px !important; line-height: 20px !important; } .chatbot__body__message-client { align-self: flex-end; max-width: 93%; display: flex; flex-direction: column; align-items: flex-end; } .chatbot__body__message-client__item { font-family: Open Sans, sans-serif !important; font-style: normal !important; font-weight: 400 !important; font-size: 15px !important; color: #222D38 !important; background: #DFF2FF !important; border-radius: 17px !important; border-bottom-right-radius: 0 !important; padding: 12px 15px !important; line-height: 20px !important; max-width: 100%; overflow: hidden; } .chatbot__body__message-operator_name { font-family: Open Sans, sans-serif; color: #AAB7C7; font-style: normal; font-weight: 400; font-size: 14px; margin-bottom: 5px; margin-top: 17px !important; } .chatbot__body__form-cont { width: 100%; margin-bottom: 15px; position: absolute; left: 0; top: 0; height: 100%; background-color: white; display: flex; flex-direction: column; justify-content: center; padding-left: 15px; padding-right: 15px; z-index: 2; } .chatbot__body__form__title { font-family: Open Sans, sans-serif; text-align: center; font-size: 14px; font-style: normal; font-weight: 400; color: #AAB7C7; margin-bottom: 5px !important; margin-top: 15px !important; } .chatbot__body__form { position: relative !important; left: 0 !important; top: 0 !important; width: 100% !important; height: auto !important; border: 0 !important; box-shadow: 0px 0px 45px rgba(60, 75, 100, 0.1) !important; border-radius: 8px !important; border-top: 2px solid #009AFF; padding: 20px 16px !important; display: block !important; } .chatbot__body__form:before { content: !important; display: none !important; } .chatbot__body__form:after { content: !important; display: none !important; } .chatbot__body__form__input { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #AAB7C7 !important; font-style: normal !important; font-weight: 400 !important; color: #AAB7C7 !important; padding: 10px 20px !important; border: 1px solid #E8EBF1 !important; border-radius: 4px !important; transition: 0s all !important; color: #222D38 !important; appearance: none !important; outline: none !important; box-shadow: none !important; background: white !important; width: 100% !important; max-width: 100% !important; position: relative !important; display: block !important; line-height: initial !important; height: auto !important; text-align: left !important; margin: 0 !important; cursor: text !important; } .chatbot__body__form__input::-webkit-input-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input::-moz-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input:-moz-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input:-ms-input-placeholder { font-family: Open Sans, sans-serif !important; color: #AAB7C7 !important; font-size: 15px !important; } .chatbot__body__form__input-cont { margin-bottom: 20px; } .chatbot__body__form__submit { font-family: Open Sans, sans-serif !important; width: 100% !important; height: 40px !important; background: #009AFF !important; border-radius: 4px !important; font-style: normal !important; font-weight: 600 !important; font-size: 15px !important; color: #FFFFFF !important; text-align: center !important; border-radius: 4px !important; display: flex !important; align-items: center !important; justify-content: center !important; transition: 0.3s all !important; appearance: none !important; outline: none !important; outline: none !important; appearance: none !important; box-shadow: none !important; border: none !important; padding: 0 !important; margin: 0 !important; text-transform: inherit !important; max-width: 100% !important; cursor: pointer !important; } .chatbot__body__form__submit:before { display: none !important; } .chatbot__body__form__submit:after { display: none !important; } .chatbot__body__form__submit:hover { background: #0281d4 !important; } .chatbot__footer__cont { display: flex; align-items: flex-start; } .textarea__message_ch { color: #222D38 !important; font-family: Open Sans, sans-serif !important; width: 100% !important; height: 80px !important; max-height: 80px !important; font-style: normal !important; font-weight: 400 !important; font-size: 15px !important; appearance: none !important; outline: none !important; resize: none !important; cursor: text !important; border: none !important; box-shadow: none !important; padding: 0 !important; background-color: white; border: none !important; border-radius: 0 !important; } .textarea__message_ch::-webkit-input-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__message_ch::-moz-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__message_ch:-moz-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__message_ch:-ms-input-placeholder { font-family: Open Sans, sans-serif !important; font-size: 15px !important; color: #8A9FC7 !important; } .textarea__block { width: 100%; } .btn_messend__block { margin-left: 12px; width: 40px; } .btn__message-send { width: 40px !important; height: 40px !important; display: flex !important; align-items: center !important; justify-content: center !important; background: #3BC123 !important; border-radius: 7px !important; transition: 0.3s all !important; outline: none !important; appearance: none !important; box-shadow: none !important; border: none !important; padding: 0 !important; box-shadow: none !important; cursor: pointer !important; } .btn__message-send:hover { background: #2fa01a !important; } .btn__message-send_arrow { width: 16px !important; height: 16px !important; margin: 0 !important; } .chatbot__body__writes { position: absolute; left: 0; bottom: 0; height: 35px; width: 100%; background-color: white; display: flex; align-items: center; padding-left: 15px; transition: 0.3s all; opacity: 0; visibility: hidden; } .chatbot__body__writes__text { font-family: Open Sans, sans-serif !important; margin-bottom: 0; font-style: normal; font-weight: 400; font-size: 14px; color: #AAB7C7; } .chatbot__body__writes.active { opacity: 1; visibility: visible; } .chatbot__body__anchor-footer { position: absolute; width: 37px; height: 37px; bottom: 51px; right: 15px; background-color: white; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.15); border-radius: 100%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: 0.3s all; opacity: 0; visibility: hidden; } .chatbot__body__anchor-footer.active { opacity: 1; visibility: visible; } .chatbot__body__anchor-footer.active:hover { opacity: 0.7; } .chatbot__body__anchor-footer__arrow { width: 13px; height: 8px; bottom: -1px; position: relative; } .open-chatbot_btn p, .chatbot-window p { line-height: initial !important; margin-top: 0; } .open-chatbot_btn, .chatbot-window { letter-spacing: initial !important; font-family: Open Sans, sans-serif !important; font-style: normal !important; } .open-chatbot_btn__mobile { display: none !important; width: 65px; height: 65px; display: flex; align-items: center; justify-content: center; position: fixed; right: 20px; bottom: 20px; background: linear-gradient(85.72deg, rgba(67, 116, 200, 0.45) -68.09%, rgba(37, 49, 70, 0.45) 58.38%), #253146; border-radius: 100%; box-shadow: -10px 11px 45px rgb(0 0 0 / 56%); z-index: 999; transform: translateY(179%); transition: 0.3s all; } .open-chatbot_btn__mobile__icon { fill: white; width: 35px; } .open-chatbot_btn__mobile.active { transform: translateY(0); } .open-chatbot__active-invitation__mobile { width: 200px; background-color: white; padding: 16px 20px; right: 20px; bottom: 20px; position: fixed; box-shadow: 0 0 30px 0 hsl(0deg 0% 62% / 44%), 0 2px 4px 0 rgb(0 0 0 / 7%); border-radius: 8px !important; z-index: 999; transform: translateX(150%); transition: 0.3s ease-in-out all; } .open-chatbot__active-invitation__mobile.active { transform: translateX(0); } .open-chatbot__active-invitation__mobile__header { display: flex; align-items: center; margin-bottom: 7px; } .open-chatbot__active__avatar { width: 28px; height: 28px; background-size: cover; background-position: center; margin-right: 10px; background-color: rgba(37, 49, 70, 0.45); border-radius: 100%; position: relative; display: flex; align-items: center; justify-content: center; flex: none; } .open-chatbot__active__avatar:before { content: ; position: absolute; right: 3px; bottom: 0; width: 6px; height: 6px; background-color: #1FDF00; border-radius: 100%; } .open-chatbot__active__avatar__img__mobile { border-radius: 100%; width: 100%; height: 100%; object-fit: cover; } .open-chatbot__active__name { font-family: Open Sans, sans-serif; font-style: normal; font-weight: 400 !important; color: #8e8d90 !important; font-size: 13px !important; margin-bottom: 0 !important; } .open-chatbot__active-invitation__mobile__text { font-family: Open Sans, sans-serif !important; font-style: normal !important; font-weight: 400 !important; font-size: 14px !important; color: #222D38 !important; margin-bottom: 0 !important; line-height: 18px !important; } .chatbot__active-invitation__cross1 { opacity: 0.3; align-self: center; width: 20px; height: 20px; flex: none; } .chatbot__active-invitation__cross1 .chatbot__header__cross_icon { width: 8px !important; height: 8px !important; } @media (max-width: 991px) { .open-chatbot_btn { display: none !important; } .open-chatbot_btn__mobile { display: flex !important; } .chatbot-window.active_mini { transform: translateY(520px); } } @media (max-width: 397px) { .chatbot-window { width: 100%; right: 0; } }/style>div classopen-chatbot_btn idopen-chatbot_btn> div classchatbot_btn__text-conv> p classchatbot_btn__text-conv__item text-conv_active>Напишите нам, мы online/p> p classchatbot_btn__text-conv__item>Новое сообщение!/p> /div> div classchatbot_btn__dotes> div classchatbot_btn__dote>/div> /div>/div>div classopen-chatbot_btn__mobile idopen-chatbot_btn__mobile> svg classopen-chatbot_btn__mobile__icon enable-backgroundnew 0 0 512 512 viewBox0 0 512 512 xmlnshttp://www.w3.org/2000/svg> g> path dm354.03 31.622h-296.13c-31.93 0-57.9 25.97-57.9 57.9v259.5c0 12.29 13.899 19.218 23.71 12.21l82.47-58.84c6.92-4.93 15.06-7.54 23.56-7.54h181.39c31.93 0 57.9-25.97 57.9-57.9v-190.33c0-8.28-6.72-15-15-15zm-72.86 181.71h-173.31c-8.28 0-15-6.71-15-15 0-8.28 6.72-15 15-15h173.31c8.28 0 15 6.72 15 15 0 8.29-6.72 15-15 15zm0-70h-173.31c-8.28 0-15-6.71-15-15 0-8.28 6.72-15 15-15h173.31c8.28 0 15 6.72 15 15 0 8.29-6.72 15-15 15z/> path dm512 205.872v259.49c0 12.207-13.829 19.268-23.71 12.21l-82.47-58.83c-6.92-4.93-15.06-7.54-23.56-7.54h-181.39c-31.93 0-57.9-25.98-57.9-57.91v-28.44h168.16c48.47 0 87.9-39.43 87.9-87.9v-88.99h55.07c31.93 0 57.9 25.98 57.9 57.91z/> /g> /svg>/div>div classopen-chatbot__active-invitation__mobile idmessageActiveInvitation__Mobile> div classopen-chatbot__active-invitation__mobile__header> div classopen-chatbot__active__avatar> img srcland/inc/chatbot/avatar-def.png altАватар classopen-chatbot__active__avatar__img__mobile> /div> div classopen-chatbot__active__name-block> p classopen-chatbot__active__name>Константин/p> /div> div classchatbot__header__cross chatbot__active-invitation__cross1 idchatbot__active-invitation__cross> svg classchatbot__header__cross_icon viewBox0 0 11 11 fillnone xmlnshttp://www.w3.org/2000/svg> path fill-ruleevenodd clip-ruleevenodd dM0.270753 0.270753C0.631757 -0.090251 1.21706 -0.090251 1.57806 0.270753L10.7292 9.42194C11.0903 9.78294 11.0903 10.3682 10.7292 10.7292C10.3682 11.0903 9.78294 11.0903 9.42194 10.7292L0.270753 1.57806C-0.090251 1.21706 -0.090251 0.631757 0.270753 0.270753Z fillwhite/> path fill-ruleevenodd clip-ruleevenodd dM10.7292 0.270753C11.0903 0.631757 11.0903 1.21706 10.7292 1.57806L1.57806 10.7292C1.21706 11.0903 0.631757 11.0903 0.270753 10.7292C-0.0902508 10.3682 -0.0902512 9.78294 0.270753 9.42194L9.42194 0.270753C9.78294 -0.090251 10.3682 -0.090251 10.7292 0.270753Z fillwhite/> /svg> /div> /div> div classopen-chatbot__active-invitation__mobile__body> p classopen-chatbot__active-invitation__mobile__text>Здравствуйте, ремонт какой техники вас интересует?/p> /div>/div>div classchatbot-window idchatbot-window> div classchatbot__header idchatbot__header> div classchatbot__header__avatar> img srcland/inc/chatbot/avatar-def.png altАватар classchatbot__header__avatar__img> /div> div classchatbot__header__name-and-job> p classchatbot__header__name>Константин/p> p classchatbot__header__job>Ваш личный менеджер/p> /div> div classchatbot__header__cross idchatbot__header__cross> svg classchatbot__header__cross_icon viewBox0 0 11 11 fillnone xmlnshttp://www.w3.org/2000/svg> path fill-ruleevenodd clip-ruleevenodd dM0.270753 0.270753C0.631757 -0.090251 1.21706 -0.090251 1.57806 0.270753L10.7292 9.42194C11.0903 9.78294 11.0903 10.3682 10.7292 10.7292C10.3682 11.0903 9.78294 11.0903 9.42194 10.7292L0.270753 1.57806C-0.090251 1.21706 -0.090251 0.631757 0.270753 0.270753Z fillwhite/> path fill-ruleevenodd clip-ruleevenodd dM10.7292 0.270753C11.0903 0.631757 11.0903 1.21706 10.7292 1.57806L1.57806 10.7292C1.21706 11.0903 0.631757 11.0903 0.270753 10.7292C-0.0902508 10.3682 -0.0902512 9.78294 0.270753 9.42194L9.42194 0.270753C9.78294 -0.090251 10.3682 -0.090251 10.7292 0.270753Z fillwhite/> /svg> /div> /div> div classchatbot__body> div classchatbot__body__cont idchatbot__body__cont> div classchatbot__body__message-operator idmessageActiveInvitation styledisplay: none;> p classchatbot__body__message-operator_name>Константин/p> p classchatbot__body__message-operator__item padding-mes> Здравствуйте, ремонт какой техники вас интересует? /p> /div> div classchatbot__body__list-mes> p classchatbot__body__list-mes__item padding-mes>Ремонт компьютера/p> p classchatbot__body__list-mes__item padding-mes>Ремонт ноутбука/p> p classchatbot__body__list-mes__item padding-mes>Ремонт моноблока/p> /div> !-- div classchatbot__body__message-operator> p classchatbot__body__message-operator_name>Константин/p> p classchatbot__body__message-operator__item padding-mes> Здравствуйте! /p> p classchatbot__body__message-operator__item padding-mes> За слезы сестры — можно убить. За счастье матери — можно мужскую слезу пустить. За отца — жизнь отдать. За брата — перед пулей встать. /p> /div> div classchatbot__body__message-client> p classchatbot__body__message-operator_name>/p> p classchatbot__body__message-client__item padding-mes> Здравствуйте /p> p classchatbot__body__message-client__item padding-mes> Все мы пацаны думаем, что сильнее девушек, но для каждого пацана найдется та, которая заставит не спать ночами. /p> /div> div classchatbot__body__form-cont> p classchatbot__body__form__title>Представьтесь в чате/p> form classchatbot__body__form> div classchatbot__body__form__input-cont> input classchatbot__body__form__input namefullname typetext placeholderВаше имя> /div> div classchatbot__body__form__input-cont> input classchatbot__body__form__input namephone typetel required placeholder+7> /div> button classchatbot__body__form__submit typesubmit>Отправить/button> /form> /div> --> /div> div classchatbot__body__writes idoperator_writing_text_cb> p classchatbot__body__writes__text>Константин набирает сообщение.../p> /div> div classchatbot__body__anchor-footer idchatbot__body__anchor-footer> svg classchatbot__body__anchor-footer__arrow viewBox0 0 13 8 fillnone xmlnshttp://www.w3.org/2000/svg> path dM12 1L6.5 6.5L1 1 stroke#D7DEE6 stroke-width2 stroke-linecapround/> /svg> /div> /div> div classchatbot__footer> div classchatbot__footer__cont> div classtextarea__block> textarea classtextarea__message_ch idtextarea__message_ch placeholderВведите сообщение>/textarea> /div> div classbtn_messend__block> div classbtn__message-send idbtn-send-mes__cb> svg classbtn__message-send_arrow viewBox0 0 16 16 fillnone xmlnshttp://www.w3.org/2000/svg> path dM8.70711 0.292892C8.31658 -0.097632 7.68342 -0.097632 7.29289 0.292892L0.928933 6.65685C0.538408 7.04738 0.538408 7.68054 0.928933 8.07107C1.31946 8.46159 1.95262 8.46159 2.34315 8.07107L8 2.41421L13.6569 8.07107C14.0474 8.46159 14.6805 8.46159 15.0711 8.07107C15.4616 7.68054 15.4616 7.04738 15.0711 6.65685L8.70711 0.292892ZM9 16L9 0.999999L7 0.999999L7 16L9 16Z fillwhite/> /svg> /div> /div> /div> /div>/div>script> var operatorName Константин; var operatorJob Мастер по ремонту; var spawnRateChatBot 3 * 1000; var operatorAvatar land/inc/chatbot/avatar-def.png; var ActiveInvitation true; var TimeActiveInvitation 7 * 1000; var TimeOperatorWritingShort 4 * 1000; var TimeOperatorWritingLong 6 * 1000; document.querySelector(.chatbot__header__name).innerText operatorName; document.querySelector(.chatbot__body__message-operator_name).innerText operatorName; document.querySelector(.open-chatbot__active__name).innerText operatorName; document.querySelector(.chatbot__body__writes__text).innerText operatorName + набирает сообщение...; document.querySelector(.chatbot__header__job).innerText operatorJob; document.querySelector(.chatbot__header__avatar__img).src operatorAvatar; document.querySelector(.open-chatbot__active__avatar__img__mobile).src operatorAvatar; function getRandomInt(min, max) { min Math.ceil(min); max Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается } const idClientChatBotSl getRandomInt(1, 10000); // console.log(idClientChatBotSl); setTimeout(function () { document.querySelector(#open-chatbot_btn).classList.add(active); document.querySelector(#open-chatbot_btn__mobile).classList.add(active); if (ActiveInvitation true) { setTimeout(function () { if (pageWidthChatBot 991) { if (document.querySelector(#open-chatbot_btn__mobile).classList.contains(active)) { messageActiveInvitation.style.display flex; document.querySelector(#messageActiveInvitation__Mobile).classList.add(active); document.querySelector(#open-chatbot_btn__mobile).classList.remove(active); } } else { if (document.querySelector(#open-chatbot_btn).classList.contains(active)) { messageActiveInvitation.style.display flex; document.querySelector(#open-chatbot_btn).classList.remove(active); document.querySelector(#chatbot-window).classList.add(active); } } }, TimeActiveInvitation); } }, spawnRateChatBot); document.querySelector(#open-chatbot_btn).onclick function (e) { e.preventDefault(); document.querySelector(#open-chatbot_btn).classList.remove(active); document.querySelector(#chatbot-window).classList.add(active); }; document.querySelector(#open-chatbot_btn__mobile).onclick function (e) { e.preventDefault(); document.querySelector(#open-chatbot_btn__mobile).classList.toggle(active) document.querySelector(#chatbot-window).classList.add(active); }; document.querySelector(#messageActiveInvitation__Mobile).onclick function (e) { e.preventDefault(); document.querySelector(#messageActiveInvitation__Mobile).classList.toggle(active) document.querySelector(#chatbot-window).classList.add(active); }; document.querySelector(#chatbot__header).onclick function (e) { e.preventDefault(); document.querySelector(#chatbot-window).classList.toggle(active_mini); }; const pageWidthChatBot document.documentElement.scrollWidth; if (pageWidthChatBot 991) { document.querySelector(#chatbot__header).onclick function (e) { e.preventDefault(); document.querySelector(#chatbot-window).classList.toggle(active); document.querySelector(#open-chatbot_btn__mobile).classList.toggle(active) }; } else { document.querySelector(#chatbot__header).onclick function (e) { e.preventDefault(); document.querySelector(#chatbot-window).classList.toggle(active_mini); }; } document.querySelector(#chatbot__body__cont).addEventListener(scroll, function () { var ContHeightMax document.querySelector(#chatbot__body__cont).scrollHeight - 300; if (this.scrollTop + 400 ContHeightMax) { document.querySelector(#chatbot__body__anchor-footer).classList.add(active); } else { document.querySelector(#chatbot__body__anchor-footer).classList.remove(active); } }); document.querySelector(#chatbot__body__anchor-footer).onclick function (e) { e.preventDefault(); var chatbotBodyCont document.querySelector(#chatbot__body__cont); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); }; document.querySelector(#textarea__message_ch).addEventListener(keyup, function (e) { btnKey e.key; if (btnKey Enter) { var chatbotBodyCont document.querySelector(#chatbot__body__cont); var textareaClient document.querySelector(#textarea__message_ch); var valTextAreaClient textareaClient.value; textareaClient.value ; // console.log(valTextAreaClient); if (valTextAreaClient.length > 1) { valTextAreaClient valTextAreaClient.substr(0, (valTextAreaClient.length - 1)); document.querySelector(.chatbot__body__list-mes).style.display none; var newClientMessage document.createElement(div); newClientMessage.classList.add(chatbot__body__message-client); newClientMessage.innerHTML p classchatbot__body__message-client__item padding-mes> + valTextAreaClient + /p> chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var messagesClientNumber document.getElementsByClassName(chatbot__body__message-client).length; ClientMessageSended(valTextAreaClient, messagesClientNumber); } } }); document.querySelector(#btn-send-mes__cb).onclick function (e) { e.preventDefault(); var chatbotBodyCont document.querySelector(#chatbot__body__cont); var textareaClient document.querySelector(#textarea__message_ch); var valTextAreaClient textareaClient.value; textareaClient.value ; // console.log(valTextAreaClient); if (valTextAreaClient ! ) { document.querySelector(.chatbot__body__list-mes).style.display none; var newClientMessage document.createElement(div); newClientMessage.classList.add(chatbot__body__message-client); newClientMessage.innerHTML p classchatbot__body__message-client__item padding-mes> + valTextAreaClient + /p> chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var messagesClientNumber document.getElementsByClassName(chatbot__body__message-client).length; ClientMessageSended(valTextAreaClient, messagesClientNumber); } }; var mesItem document.querySelectorAll(.chatbot__body__list-mes__item); for (var i_mes 0; i_mes mesItem.length; i_mes++) { mesItemi_mes.onclick function (e) { e.preventDefault(); var chatbotBodyCont document.querySelector(#chatbot__body__cont); var textareaClient this.textContent; console.log(textareaClient); var valTextAreaClient textareaClient; textareaClient.value ; // console.log(valTextAreaClient); if (valTextAreaClient ! ) { document.querySelector(.chatbot__body__list-mes).style.display none; var newClientMessage document.createElement(div); newClientMessage.classList.add(chatbot__body__message-client); newClientMessage.innerHTML p classchatbot__body__message-client__item padding-mes> + valTextAreaClient + /p> chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var messagesClientNumber document.getElementsByClassName(chatbot__body__message-client).length; ClientMessageSended(valTextAreaClient, messagesClientNumber); } }; } function writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew) { textOperator.forEach(function (item, i, arr) { var arrLenght arr.length - 1; var textsOperator item; if (textsOperator.length 25) { timing TimeOperatorWritingShort; } else { timing TimeOperatorWritingLong; } // console.log(Длинна текста: + textsOperator.length + timing: + timing); // alert(arrLenght + + i); if (i > 0) { timingFor timing * i + 1000; } else { timingFor 0; } if ((typeof textsOperator) string) { setTimeout(function () { var operatorWriting document.querySelector(#operator_writing_text_cb); setTimeout(function () { operatorWriting.classList.add(active); }, 1000); setTimeout(function () { operatorWriting.classList.remove(active); var newClientMessage document.createElement(div); var chatbotBodyCont document.querySelector(#chatbot__body__cont); newClientMessage.classList.add(chatbot__body__message-operator); if (i 0) { newClientMessage.innerHTML p classchatbot__body__message-operator_name> + operatorName + /p>p classchatbot__body__message-operator__item padding-mes> + textsOperator + /p>; } else { newClientMessage.innerHTML p classchatbot__body__message-operator__item padding-mes> + textsOperator + /p>; } chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); var oData new FormData(); oData.append(idClientChatBotSl, idClientChatBotSl); oData.append(MessageOperatorChatBotSl, textsOperator); var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, https://chatservicelead.u1221283.isp.regruhosting.ru/stat.php, true); xhr.onload function (oEvent) { if (xhr.status 200) { console.log(Ответ бота сохранен); // Событие при успешной отправке формы в систему } else { console.log(Ошибка сохранения ответа бота + xhr.status); // Событие при неуспешной отправке формы в систему } }; xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); if (i arrLenght) { setTimeout(function () { if (leadform true) { console.log(форма); createChatFormSL(); sendLeadSL(); } }, 2000); } }, timing); }, timingFor); } }); if (textOperator ) { setTimeout(function () { if (leadform true) { console.log(форма); createChatFormSL(); sendLeadSL(); } }, timing); } if (idLastMessageNew ! undefined || idLastMessageNew ! null) { idLastMessage idLastMessageNew; console.log(ID ветки + idLastMessage); vvv(); } else if (idLastMessageNew null) { idLastMessage null; console.log(ID ветки + idLastMessage); vvv(); } } var idLastMessage undefined; function OperatorMessageSending(valTextAreaClient, messagesClientNumber, textInclude, textOperator, timing, leadform, idNewMessage, idLastMessageNew) { valTextAreaClient valTextAreaClient.toLowerCase(); textInclude.forEach(function (itemText, iText, arrText) { var arrTextLenght arrText.length - 1; if (idNewMessage idLastMessage && idNewMessage ! null) { itemText itemText.toLowerCase(); if (valTextAreaClient.includes(itemText) && itemText ! любой ответ) { console.log(Совпадение и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } else if (itemText любой ответ && !valTextAreaClient.includes(itemText)) { console.log(Любой ответ и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } } else if (idNewMessage null || !idNewMessage) { itemText itemText.toLowerCase(); if (valTextAreaClient.includes(itemText)) { console.log(Совпадение и отсутсвие ID нового сообщения ); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } } else if (messagesClientNumber 1 && idNewMessage 1) { itemText itemText.toLowerCase(); if (valTextAreaClient.includes(itemText) && itemText ! любой ответ) { console.log(Совпадение и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } else if (itemText любой ответ && !valTextAreaClient.includes(itemText)) { console.log(Любой ответ и наличие ID нового сообщения + idNewMessage); writeMessegeOperator(textOperator, timing, leadform, idLastMessageNew); } } }); } function ClientMessageSended(valTextAreaClient, messagesClientNumber) { var oData new FormData(); if (messagesClientNumber 1) { oData.append(DelitelClientChatBotSl, dilitel); } oData.append(idClientChatBotSl, idClientChatBotSl); oData.append(MessageClientChatBotSl, valTextAreaClient); var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, https://chatservicelead.u1221283.isp.regruhosting.ru/stat.php, true); xhr.onload function (oEvent) { if (xhr.status 200) { console.log(Ответ сохранен); // Событие при успешной отправке формы в систему } else { console.log(Ошибка сохранения ответа + xhr.status); // Событие при неуспешной отправке формы в систему } }; xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); //общие цены OperatorMessageSending(valTextAreaClient, messagesClientNumber, интернет, инет, Стоимость настройки интернета от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, windows, win, винд, синий экран, экран смерт, Стоимость установки и настройки Windows от 325 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, роутер, wi-fi, wifi, вайфай, Стоимость настройки роутера от 480 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, антивирус, Стоимость установки и настройки антивируса от 390 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, вирус, Стоимость удаления вирусов от 310 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, чистка, Стоимость чистки от пыли от 490 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, биос, биус, Стоимость настройки биоса от 560 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, драйвер, Стоимость установки драйверов от 190 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, принтер, Стоимость настройки принтера от 420 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, парол, Стоимость восстановления пароля от 690 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, диспле, Стоимость замены дисплея от 490 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, восстанов, Стоимость восстановления данных от 290 руб. за ГБ, Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, жесткий диск, диск, hdd, Стоимость замены жесткого диска (HDD) от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, клав, Стоимость замены и ремонта клавиатуры от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, кулер, куллер, Стоимость замены кулера от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, озу, оператив, Стоимость замены оперативной памяти от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, usb, Стоимость замены порта USB от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, термо, Стоимость замены термопасты от 445 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, экран, монитор, Стоимость замены экрана от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, корпус, Стоимость ремонта и замены корпуса от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, матриц, Стоимость ремонта и замены матрицы от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, разъем, Стоимость ремонта и замены разъемов от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, видеокарт, видео-карт, Стоимость ремонта или замены видеокарты от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, материнская плат, мат плат, материнской плат, материнскую плат, Стоимость ремонта материнской платы от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, проц, Стоимость ремонта и замены процессора от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, звук, Стоимость замены звуковой карты от 395 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, блок питан, блока питан, блоки питан, Стоимость замены блока питания от 495 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ворд, ексель, повер поинт, word, excel, microsoft office, майкрософт офис, майкрософт оффис, Стоимость установки пакета программ Microsoft Office от 690 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); // OperatorMessageSending(valTextAreaClient, messagesClientNumber, замен, Стоимость замены от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, переустанов, Стоимость переустановки от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, установ, Стоимость установки от 595 руб., Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, цену, цена, стоимость, стоит, денег, сколько, Стоимость работ мастер определяет после диагностики, Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, диагностик, мастер, специалист, Выезд мастера на дом и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ремонт компьютера, Давайте определимся, что у вас за проблема с компьютером?, Расскажите в двух словах про поломку, 4000, false, null, 281); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ремонт ноутбука, Давайте определимся, что у вас за проблема с ноутбуком?, Расскажите в двух словах про поломку, 4000, false, null, 281); OperatorMessageSending(valTextAreaClient, messagesClientNumber, ремонт моноблока, Давайте определимся, что у вас за проблема с моноблоком?, Расскажите в двух словах про поломку, 4000, false, null, 281); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Чтобы отремонтировать ваше оборудование, нужно сначала его продиагностировать, Выезд мастера и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, 291, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, комп, пк, ноут, нотбук, нетбук, монобл, Нужно диагностировать, когда вам было бы удобно принять мастера?, Выезд мастера и диагностика бесплатные, 4000, false, null, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, адрес, где нах, офис, Мы работаем на выезде, Хотите заказать диагностику на дому?, Выезд мастера и диагностика бесплатные, 4000, false, null, 301); OperatorMessageSending(valTextAreaClient, messagesClientNumber, да, хочу, обязательно, Отлично, заполните форму и мы с вами свяжемся, 4000, true, 301, 1002); OperatorMessageSending(valTextAreaClient, messagesClientNumber, нет, не хочу, неа, У нас сейчас действует скидка 20% только при заказе через сайт, Точно не хотите вызвать мастера?, 4000, false, 301, 302); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Хорошо, у вас еще остались вопросы?, 4000, false, 302, 1001); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Для точного определения неисправности необходимо провести диагностику, Выезд мастера и диагностика бесплатные, Когда вам было бы удобно принять мастера?, 4000, false, 281, 282); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Отлично, заполните форму и мы с вами свяжемся, 4000, true, 282, 1002); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Добрый день, любой ответ, Добрый день, ремонт какой техники вас интересует?, 4000, false, null, 291); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Добрый вечер, любой ответ, Добрый вечер, ремонт какой техники вас интересует?, 4000, false, null, 291); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Доброе утро, любой ответ, Доброе утро, ремонт какой техники вас интересует?, 4000, false, null, 291); OperatorMessageSending(valTextAreaClient, messagesClientNumber, Здравствуйте, любой ответ, Здравствуйте, ремонт какой техники вас интересует?, 4000, false, 1, 291); //по окончанию ветки OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Для решения данного вопроса оставьте ваш телефон и мы с вами свяжемся, 4000, true, 1001, 1001); OperatorMessageSending(valTextAreaClient, messagesClientNumber, любой ответ, Для решения данного вопроса дождитесь звонка оператора, 4000, false, 1002, 1002); } var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; // console.log(thread); var action /addorders.xphp?idp817685d2-1726-4154-8e0733dde91d1ec0; var branch_id 777; var is_pm false; var thread_id 39971; var thread_type 1; var direction_id 1; var offer_id 1; var sub_id1 ; var sub_id2 ; var sub_id3 ; var view_id 76643130; function createChatFormSL() { var newClientMessage document.createElement(div); var chatbotBodyCont document.querySelector(#chatbot__body__cont); newClientMessage.classList.add(chatbot__body__form-cont); newClientMessage.innerHTML p classchatbot__body__form__title>Заполните форму/p>form classchatbot__body__form>div classchatbot__body__form__input-cont>input classchatbot__body__form__input namefullname typetext placeholderВаше имя>/div>div classchatbot__body__form__input-cont>input classchatbot__body__form__input namephone typetel required placeholder+7>/div>button classchatbot__body__form__submit typesubmit>Отправить/button>/form>; chatbotBodyCont.appendChild(newClientMessage); var HeightСhatbotBodyCont chatbotBodyCont.scrollHeight; chatbotBodyCont.scrollBy({ top: HeightСhatbotBodyCont, behavior: smooth }); } function sendLeadSL() { var city {id:777,name:,country:rus}; var countryName city.country; $(typetel).not(.nomask).each(function () { var self $(this); self.inputmask(remove); if (countryName rus) { self.inputmask({ mask: +7 (999) 999-99-99, onBeforePaste: function (pastedValue, opts) { var processedValue pastedValue; var tel processedValue.replace(/^\d/g, ); if (tel.length 11 && (tel0 8 || tel0 7)) { processedValue +7 + tel.substring(1); } return processedValue; }, onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName bel) { self.inputmask(+375 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName ua) { self.inputmask(+380 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } }); var forms document.getElementsByClassName(chatbot__body__form); console.log(forms.length); for (var i 0; i forms.length; i++) { // var btnSubmit formsi.querySelector(buttontypesubmit); // btnSubmit.addEventListener(click, function(e) { formsi.addEventListener(submit, function (e) { e.preventDefault(); var form this.closest(.chatbot__body__form); var oData new FormData(form); if (typeof URLSearchParams function) { const utm { utm_source: utm1, utm_medium: utm2, utm_campaign: utm3, utm_content: utm4, utm_term: utm5 }; const urlParams new URLSearchParams(window.location.search); for (var prop in utm) { if (urlParams.get(prop) ! null) { oData.append(utmprop, urlParams.get(prop)); } } } oData.append(hash, view_id); oData.append(branch_id, branch_id); oData.append(is_pm, is_pm); oData.append(thread_id, thread_id); oData.append(thread_type, thread_type); oData.append(direction_id, direction_id); oData.append(offer_id, offer_id); oData.append(sub_id1, sub_id1); oData.append(sub_id2, sub_id2); oData.append(sub_id3, sub_id3 + _chatbot_lend); if (!oData.get(fullname)) { oData.set(fullname, Без имени); } oData.append(view_id, window.view_id); oData.append(hash, window.view_id); var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, action, true); xhr.onload function (oEvent) { if (xhr.status 200) { form.reset(); var chatbotForms document.querySelectorAll(.chatbot__body__form-cont); for (var i_forms 0; i_forms chatbotForms.length; i_forms++) { chatbotFormsi_forms.style.display none; } console.log(Лид из чат-бота отправлен); // Событие при успешной отправке формы в систему var oDataStat new FormData(); oDataStat.append(idClientChatBotSl, idClientChatBotSl); oDataStat.append(MessageClientChatBotSl, Лид отправлен); var XHRStat (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var XHRStat new XHRStat(); XHRStat.open(POST, https://chatservicelead.u1221283.isp.regruhosting.ru/stat.php, true); XHRStat.onload function (oEvent) { if (XHRStat.status 200) { console.log(Ответ сохранен + отправлен лид); // Событие при успешной отправке формы в систему } else { console.log(Ошибка сохранения ответа + XHRStat.status); // Событие при неуспешной отправке формы в систему } }; XHRStat.setRequestHeader(Content-Type, application/x-www-form-urlencoded); XHRStat.send(urlencodeFormData(oDataStat)); } else { console.log(Ошибка + xhr.status); // Событие при неуспешной отправке формы в систему } }; xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); }); } } function urlencodeFormData(fd) { if (typeof URLSearchParams function) { var params new URLSearchParams(); for (var pair of fd.entries()) { typeof pair1 string && params.append(pair0, pair1); } return params.toString(); } else { var s ; function encode(s) { return encodeURIComponent(s).replace(/%20/g, +); } for (var pair of fd.entries()) { if (typeof pair1 string) { s + (s ? & : ) + encode(pair0) + + encode(pair1); } } return s; } }/script>script src/app/new/js/jquery.inputmask.bundle.min.js>/script>script> /*! * sweetalert2 v11.6.15 * Released under the MIT License. */ !function (e, t) { object typeof exports && undefined ! typeof module ? module.exports t() : function typeof define && define.amd ? define(t) : (e undefined ! typeof globalThis ? globalThis : e || self).Sweetalert2 t() }(this, (function () { use strict; var e {awaitingPromise: new WeakMap, promise: new WeakMap, innerParams: new WeakMap, domCache: new WeakMap}; const t e > { const t {}; for (const o in e) teo swal2- + eo; return t }, o t(container, shown, height-auto, iosfix, popup, modal, no-backdrop, no-transition, toast, toast-shown, show, hide, close, title, html-container, actions, confirm, deny, cancel, default-outline, footer, icon, icon-content, image, input, file, range, select, radio, checkbox, label, textarea, inputerror, input-label, validation-message, progress-steps, active-progress-step, progress-step, progress-step-line, loader, loading, styled, top, top-start, top-end, top-left, top-right, center, center-start, center-end, center-left, center-right, bottom, bottom-start, bottom-end, bottom-left, bottom-right, grow-row, grow-column, grow-fullscreen, rtl, timer-progress-bar, timer-progress-bar-container, scrollbar-measure, icon-success, icon-warning, icon-info, icon-question, icon-error), n t(success, warning, info, question, error), s SweetAlert2:, a e > e.charAt(0).toUpperCase() + e.slice(1), i e > { console.warn(`${s} ${object typeof e ? e.join( ) : e}`) }, r e > { console.error(`${s} ${e}`) }, l , c (e, t) > { var o; o `${e} is deprecated and will be removed in the next major release. Please use ${t} instead.`, l.includes(o) || (l.push(o), i(o)) }, d e > function typeof e ? e() : e, u e > e && function typeof e.toPromise, p e > u(e) ? e.toPromise() : Promise.resolve(e), m e > e && Promise.resolve(e) e, w () > document.body.querySelector(`.${o.container}`), g e > { const t w(); return t ? t.querySelector(e) : null }, h e > g(`.${e}`), f () > h(o.popup), b () > h(o.icon), y () > h(o.title), v () > h(ohtml-container), x () > h(o.image), k () > h(oprogress-steps), C () > h(ovalidation-message), A () > g(`.${o.actions} .${o.confirm}`), B () > g(`.${o.actions} .${o.deny}`), P () > g(`.${o.loader}`), $ () > g(`.${o.actions} .${o.cancel}`), E () > h(o.actions), T () > h(o.footer), S () > h(otimer-progress-bar), L () > h(o.close), j () > { const e Array.from(f().querySelectorAll(tabindex:not(tabindex-1):not(tabindex0))).sort(((e, t) > { const o parseInt(e.getAttribute(tabindex)), n parseInt(t.getAttribute(tabindex)); return o > n ? 1 : o n ? -1 : 0 })), t Array.from(f().querySelectorAll(\n ahref,\n areahref,\n input:not(disabled),\n select:not(disabled),\n textarea:not(disabled),\n button:not(disabled),\n iframe,\n object,\n embed,\n tabindex0,\n contenteditable,\n audiocontrols,\n videocontrols,\n summary\n )).filter((e > -1 ! e.getAttribute(tabindex))); return (e > { const t ; for (let o 0; o e.length; o++) -1 t.indexOf(eo) && t.push(eo); return t })(e.concat(t)).filter((e > X(e))) }, O () > q(document.body, o.shown) && !q(document.body, otoast-shown) && !q(document.body, ono-backdrop), M () > f() && q(f(), o.toast), z {previousBodyPadding: null}, H (e, t) > { if (e.textContent , t) { const o (new DOMParser).parseFromString(t, text/html); Array.from(o.querySelector(head).childNodes).forEach((t > { e.appendChild(t) })), Array.from(o.querySelector(body).childNodes).forEach((t > { t instanceof HTMLVideoElement || t instanceof HTMLAudioElement ? e.appendChild(t.cloneNode(!0)) : e.appendChild(t) })) } }, q (e, t) > { if (!t) return !1; const o t.split(/\s+/); for (let t 0; t o.length; t++) if (!e.classList.contains(ot)) return !1; return !0 }, I (e, t, s) > { if (((e, t) > { Array.from(e.classList).forEach((s > { Object.values(o).includes(s) || Object.values(n).includes(s) || Object.values(t.showClass).includes(s) || e.classList.remove(s) })) })(e, t), t.customClass && t.customClasss) { if (string ! typeof t.customClasss && !t.customClasss.forEach) return void i(`Invalid type of customClass.${s}! Expected string or iterable object, got ${typeof t.customClasss}`); F(e, t.customClasss) } }, D (e, t) > { if (!t) return null; switch (t) { caseselect: casetextarea: casefile: return e.querySelector(`.${o.popup} > .${ot}`); casecheckbox: return e.querySelector(`.${o.popup} > .${o.checkbox} input`); caseradio: return e.querySelector(`.${o.popup} > .${o.radio} input:checked`) || e.querySelector(`.${o.popup} > .${o.radio} input:first-child`); caserange: return e.querySelector(`.${o.popup} > .${o.range} input`); default: return e.querySelector(`.${o.popup} > .${o.input}`) } }, V e > { if (e.focus(), file ! e.type) { const t e.value; e.value , e.value t } }, N (e, t, o) > { e && t && (string typeof t && (t t.split(/\s+/).filter(Boolean)), t.forEach((t > { Array.isArray(e) ? e.forEach((e > { o ? e.classList.add(t) : e.classList.remove(t) })) : o ? e.classList.add(t) : e.classList.remove(t) }))) }, F (e, t) > { N(e, t, !0) }, R (e, t) > { N(e, t, !1) }, U (e, t) > { const o Array.from(e.children); for (let e 0; e o.length; e++) { const n oe; if (n instanceof HTMLElement && q(n, t)) return n } }, _ (e, t, o) > { o `${parseInt(o)}` && (o parseInt(o)), o || 0 parseInt(o) ? e.stylet number typeof o ? `${o}px` : o : e.style.removeProperty(t) }, W function (e) { let t arguments.length > 1 && void 0 ! arguments1 ? arguments1 : flex; e.style.display t }, Y e > { e.style.display none }, Z (e, t, o, n) > { const s e.querySelector(t); s && (s.styleo n) }, K function (e, t) { let o arguments.length > 2 && void 0 ! arguments2 ? arguments2 : flex; t ? W(e, o) : Y(e) }, X e > !(!e || !(e.offsetWidth || e.offsetHeight || e.getClientRects().length)), J e > !!(e.scrollHeight > e.clientHeight), G e > { const t window.getComputedStyle(e), o parseFloat(t.getPropertyValue(animation-duration) || 0), n parseFloat(t.getPropertyValue(transition-duration) || 0); return o > 0 || n > 0 }, Q function (e) { let t arguments.length > 1 && void 0 ! arguments1 && arguments1; const o S(); X(o) && (t && (o.style.transition none, o.style.width 100%), setTimeout((() > { o.style.transition `width ${e / 1e3}s linear`, o.style.width 0% }), 10)) }, ee {}, te e > new Promise((t > { if (!e) return t(); const o window.scrollX, n window.scrollY; ee.restoreFocusTimeout setTimeout((() > { ee.previousActiveElement instanceof HTMLElement ? (ee.previousActiveElement.focus(), ee.previousActiveElement null) : document.body && document.body.focus(), t() }), 100), window.scrollTo(o, n) })), oe () > undefined typeof window || undefined typeof document, ne `\n div aria-labelledby${o.title} aria-describedby${ohtml-container} class${o.popup} tabindex-1>\n button typebutton class${o.close}>/button>\n ul class${oprogress-steps}>/ul>\n div class${o.icon}>/div>\n img class${o.image} />\n h2 class${o.title} id${o.title}>/h2>\n div class${ohtml-container} id${ohtml-container}>/div>\n input class${o.input} />\n input typefile class${o.file} />\n div class${o.range}>\n input typerange />\n output>/output>\n /div>\n select class${o.select}>/select>\n div class${o.radio}>/div>\n label for${o.checkbox} class${o.checkbox}>\n input typecheckbox />\n span class${o.label}>/span>\n /label>\n textarea class${o.textarea}>/textarea>\n div class${ovalidation-message} id${ovalidation-message}>/div>\n div class${o.actions}>\n div class${o.loader}>/div>\n button typebutton class${o.confirm}>/button>\n button typebutton class${o.deny}>/button>\n button typebutton class${o.cancel}>/button>\n /div>\n div class${o.footer}>/div>\n div class${otimer-progress-bar-container}>\n div class${otimer-progress-bar}>/div>\n /div>\n /div>\n `.replace(/(^|\n)\s*/g, ), se () > { ee.currentInstance.resetValidationMessage() }, ae e > { const t (() > { const e w(); return !!e && (e.remove(), R(document.documentElement, document.body, ono-backdrop, otoast-shown, ohas-column), !0) })(); if (oe()) return void r(SweetAlert2 requires document to initialize); const n document.createElement(div); n.className o.container, t && F(n, ono-transition), H(n, ne); const s string typeof (a e.target) ? document.querySelector(a) : a; var a; s.appendChild(n), (e > { const t f(); t.setAttribute(role, e.toast ? alert : dialog), t.setAttribute(aria-live, e.toast ? polite : assertive), e.toast || t.setAttribute(aria-modal, true) })(e), (e > { rtl window.getComputedStyle(e).direction && F(w(), o.rtl) })(s), (() > { const e f(), t U(e, o.input), n U(e, o.file), s e.querySelector(`.${o.range} input`), a e.querySelector(`.${o.range} output`), i U(e, o.select), r e.querySelector(`.${o.checkbox} input`), l U(e, o.textarea); t.oninput se, n.onchange se, i.onchange se, r.onchange se, l.oninput se, s.oninput () > { se(), a.value s.value }, s.onchange () > { se(), a.value s.value } })() }, ie (e, t) > { e instanceof HTMLElement ? t.appendChild(e) : object typeof e ? re(e, t) : e && H(t, e) }, re (e, t) > { e.jquery ? le(t, e) : H(t, e.toString()) }, le (e, t) > { if (e.textContent , 0 in t) for (let o 0; o in t; o++) e.appendChild(to.cloneNode(!0)); else e.appendChild(t.cloneNode(!0)) }, ce (() > { if (oe()) return !1; const e document.createElement(div), t {WebkitAnimation: webkitAnimationEnd, animation: animationend}; for (const o in t) if (Object.prototype.hasOwnProperty.call(t, o) && void 0 ! e.styleo) return to; return !1 })(), de (e, t) > { const n E(), s P(); t.showConfirmButton || t.showDenyButton || t.showCancelButton ? W(n) : Y(n), I(n, t, actions), function (e, t, n) { const s A(), a B(), i $(); ue(s, confirm, n), ue(a, deny, n), ue(i, cancel, n), function (e, t, n, s) { if (!s.buttonsStyling) return void R(e, t, n, o.styled); F(e, t, n, o.styled), s.confirmButtonColor && (e.style.backgroundColor s.confirmButtonColor, F(e, odefault-outline)); s.denyButtonColor && (t.style.backgroundColor s.denyButtonColor, F(t, odefault-outline)); s.cancelButtonColor && (n.style.backgroundColor s.cancelButtonColor, F(n, odefault-outline)) }(s, a, i, n), n.reverseButtons && (n.toast ? (e.insertBefore(i, s), e.insertBefore(a, s)) : (e.insertBefore(i, t), e.insertBefore(a, t), e.insertBefore(s, t))) }(n, s, t), H(s, t.loaderHtml), I(s, t, loader) }; function ue(e, t, n) { K(e, n`show${a(t)}Button`, inline-block), H(e, n`${t}ButtonText`), e.setAttribute(aria-label, n`${t}ButtonAriaLabel`), e.className ot, I(e, n, `${t}Button`), F(e, n`${t}ButtonClass`) } const pe (e, t) > { const n w(); n && (!function (e, t) { string typeof t ? e.style.background t : t || F(document.documentElement, document.body, ono-backdrop) }(n, t.backdrop), function (e, t) { t in o ? F(e, ot) : (i(The position parameter is not valid, defaulting to center), F(e, o.center)) }(n, t.position), function (e, t) { if (t && string typeof t) { const n `grow-${t}`; n in o && F(e, on) } }(n, t.grow), I(n, t, container)) }; const me input, file, range, select, radio, checkbox, textarea, we e > { if (!xee.input) return void r(`Unexpected type of input! Expected text, email, password, number, tel, select, radio, checkbox, textarea, file or url, got ${e.input}`); const t ye(e.input), o xee.input(t, e); W(t), setTimeout((() > { V(o) })) }, ge (e, t) > { const o D(f(), e); if (o) { (e > { for (let t 0; t e.attributes.length; t++) { const o e.attributest.name; type, value, style.includes(o) || e.removeAttribute(o) } })(o); for (const e in t) o.setAttribute(e, te) } }, he e > { const t ye(e.input); object typeof e.customClass && F(t, e.customClass.input) }, fe (e, t) > { e.placeholder && !t.inputPlaceholder || (e.placeholder t.inputPlaceholder) }, be (e, t, n) > { if (n.inputLabel) { e.id o.input; const s document.createElement(label), a oinput-label; s.setAttribute(for, e.id), s.className a, object typeof n.customClass && F(s, n.customClass.inputLabel), s.innerText n.inputLabel, t.insertAdjacentElement(beforebegin, s) } }, ye e > U(f(), oe || o.input), ve (e, t) > { string, number.includes(typeof t) ? e.value `${t}` : m(t) || i(`Unexpected type of inputValue! Expected string, number or Promise, got ${typeof t}`) }, xe {}; xe.text xe.email xe.password xe.number xe.tel xe.url (e, t) > (ve(e, t.inputValue), be(e, e, t), fe(e, t), e.type t.input, e), xe.file (e, t) > (be(e, e, t), fe(e, t), e), xe.range (e, t) > { const o e.querySelector(input), n e.querySelector(output); return ve(o, t.inputValue), o.type t.input, ve(n, t.inputValue), be(o, e, t), e }, xe.select (e, t) > { if (e.textContent , t.inputPlaceholder) { const o document.createElement(option); H(o, t.inputPlaceholder), o.value , o.disabled !0, o.selected !0, e.appendChild(o) } return be(e, e, t), e }, xe.radio e > (e.textContent , e), xe.checkbox (e, t) > { const n D(f(), checkbox); n.value 1, n.id o.checkbox, n.checked Boolean(t.inputValue); const s e.querySelector(span); return H(s, t.inputPlaceholder), n }, xe.textarea (e, t) > { ve(e, t.inputValue), fe(e, t), be(e, e, t); return setTimeout((() > { if (MutationObserver in window) { const t parseInt(window.getComputedStyle(f()).width); new MutationObserver((() > { const o e.offsetWidth + (n e, parseInt(window.getComputedStyle(n).marginLeft) + parseInt(window.getComputedStyle(n).marginRight)); var n; f().style.width o > t ? `${o}px` : null })).observe(e, {attributes: !0, attributeFilter: style}) } })), e }; const ke (t, n) > { const s v(); I(s, n, htmlContainer), n.html ? (ie(n.html, s), W(s, block)) : n.text ? (s.textContent n.text, W(s, block)) : Y(s), ((t, n) > { const s f(), a e.innerParams.get(t), i !a || n.input ! a.input; me.forEach((e > { const t U(s, oe); ge(e, n.inputAttributes), t.className oe, i && Y(t) })), n.input && (i && we(n), he(n)) })(t, n) }, Ce (e, t) > { for (const o in n) t.icon ! o && R(e, no); F(e, nt.icon), Pe(e, t), Ae(), I(e, t, icon) }, Ae () > { const e f(), t window.getComputedStyle(e).getPropertyValue(background-color), o e.querySelectorAll(class^swal2-success-circular-line, .swal2-success-fix); for (let e 0; e o.length; e++) oe.style.backgroundColor t }, Be (e, t) > { let o, n e.innerHTML; if (t.iconHtml) o $e(t.iconHtml); else if (success t.icon) o \n div classswal2-success-circular-line-left>/div>\n span classswal2-success-line-tip>/span> span classswal2-success-line-long>/span>\n div classswal2-success-ring>/div> div classswal2-success-fix>/div>\n div classswal2-success-circular-line-right>/div>\n , n n.replace(/ style.*?/g, ); else if (error t.icon) o \n span classswal2-x-mark>\n span classswal2-x-mark-line-left>/span>\n span classswal2-x-mark-line-right>/span>\n /span>\n ; else { o $e({question: ?, warning: !, info: i}t.icon) } n.trim() ! o.trim() && H(e, o) }, Pe (e, t) > { if (t.iconColor) { e.style.color t.iconColor, e.style.borderColor t.iconColor; for (const o of .swal2-success-line-tip, .swal2-success-line-long, .swal2-x-mark-line-left, .swal2-x-mark-line-right) Z(e, o, backgroundColor, t.iconColor); Z(e, .swal2-success-ring, borderColor, t.iconColor) } }, $e e > `div class${oicon-content}>${e}/div>`, Ee (e, t) > { e.className `${o.popup} ${X(e) ? t.showClass.popup : }`, t.toast ? (F(document.documentElement, document.body, otoast-shown), F(e, o.toast)) : F(e, o.modal), I(e, t, popup), string typeof t.customClass && F(e, t.customClass), t.icon && F(e, o`icon-${t.icon}`) }, Te e > { const t document.createElement(li); return F(t, oprogress-step), H(t, e), t }, Se e > { const t document.createElement(li); return F(t, oprogress-step-line), e.progressStepsDistance && _(t, width, e.progressStepsDistance), t }, Le (t, s) > { ((e, t) > { const o w(), n f(); t.toast ? (_(o, width, t.width), n.style.width 100%, n.insertBefore(P(), b())) : _(n, width, t.width), _(n, padding, t.padding), t.color && (n.style.color t.color), t.background && (n.style.background t.background), Y(C()), Ee(n, t) })(0, s), pe(0, s), ((e, t) > { const n k(); t.progressSteps && 0 ! t.progressSteps.length ? (W(n), n.textContent , t.currentProgressStep > t.progressSteps.length && i(Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)), t.progressSteps.forEach(((e, s) > { const a Te(e); if (n.appendChild(a), s t.currentProgressStep && F(a, oactive-progress-step), s ! t.progressSteps.length - 1) { const e Se(t); n.appendChild(e) } }))) : Y(n) })(0, s), ((t, o) > { const s e.innerParams.get(t), a b(); if (s && o.icon s.icon) return Be(a, o), void Ce(a, o); if (o.icon || o.iconHtml) { if (o.icon && -1 Object.keys(n).indexOf(o.icon)) return r(`Unknown icon! Expected success, error, warning, info or question, got ${o.icon}`), void Y(a); W(a), Be(a, o), Ce(a, o), F(a, o.showClass.icon) } else Y(a) })(t, s), ((e, t) > { const n x(); t.imageUrl ? (W(n, ), n.setAttribute(src, t.imageUrl), n.setAttribute(alt, t.imageAlt), _(n, width, t.imageWidth), _(n, height, t.imageHeight), n.className o.image, I(n, t, image)) : Y(n) })(0, s), ((e, t) > { const o y(); K(o, t.title || t.titleText, block), t.title && ie(t.title, o), t.titleText && (o.innerText t.titleText), I(o, t, title) })(0, s), ((e, t) > { const o L(); H(o, t.closeButtonHtml), I(o, t, closeButton), K(o, t.showCloseButton), o.setAttribute(aria-label, t.closeButtonAriaLabel) })(0, s), ke(t, s), de(0, s), ((e, t) > { const o T(); K(o, t.footer), t.footer && ie(t.footer, o), I(o, t, footer) })(0, s), function typeof s.didRender && s.didRender(f()) }; function je() { const t e.innerParams.get(this); if (!t) return; const n e.domCache.get(this); Y(n.loader), M() ? t.icon && W(b()) : Oe(n), R(n.popup, n.actions, o.loading), n.popup.removeAttribute(aria-busy), n.popup.removeAttribute(data-loading), n.confirmButton.disabled !1, n.denyButton.disabled !1, n.cancelButton.disabled !1 } const Oe e > { const t e.popup.getElementsByClassName(e.loader.getAttribute(data-button-to-replace)); t.length ? W(t0, inline-block) : X(A()) || X(B()) || X($()) || Y(e.actions) }; const Me () > A() && A().click(), ze Object.freeze({cancel: cancel, backdrop: backdrop, close: close, esc: esc, timer: timer}), He e > { e.keydownTarget && e.keydownHandlerAdded && (e.keydownTarget.removeEventListener(keydown, e.keydownHandler, {capture: e.keydownListenerCapture}), e.keydownHandlerAdded !1) }, qe (e, t, o) > { const n j(); if (n.length) return (t + o) n.length ? t 0 : -1 t && (t n.length - 1), void nt.focus(); f().focus() }, Ie ArrowRight, ArrowDown, De ArrowLeft, ArrowUp, Ve (t, o, n) > { const s e.innerParams.get(t); s && (o.isComposing || 229 o.keyCode || (s.stopKeydownPropagation && o.stopPropagation(), Enter o.key ? Ne(t, o, s) : Tab o.key ? Fe(o, s) : ...Ie, ...De.includes(o.key) ? Re(o.key) : Escape o.key && Ue(o, s, n))) }, Ne (e, t, o) > { if (d(o.allowEnterKey) && t.target && e.getInput() && t.target instanceof HTMLElement && t.target.outerHTML e.getInput().outerHTML) { if (textarea, file.includes(o.input)) return; Me(), t.preventDefault() } }, Fe (e, t) > { const o e.target, n j(); let s -1; for (let e 0; e n.length; e++) if (o ne) { s e; break } e.shiftKey ? qe(0, s, -1) : qe(0, s, 1), e.stopPropagation(), e.preventDefault() }, Re e > { const t A(), o B(), n $(); if (document.activeElement instanceof HTMLElement && !t, o, n.includes(document.activeElement)) return; const s Ie.includes(e) ? nextElementSibling : previousElementSibling; let a document.activeElement; for (let e 0; e E().children.length; e++) { if (a as, !a) return; if (a instanceof HTMLButtonElement && X(a)) break } a instanceof HTMLButtonElement && a.focus() }, Ue (e, t, o) > { d(t.allowEscapeKey) && (e.preventDefault(), o(ze.esc)) }; var _e {swalPromiseResolve: new WeakMap, swalPromiseReject: new WeakMap}; const We () > { Array.from(document.body.children).forEach((e > { e.hasAttribute(data-previous-aria-hidden) ? (e.setAttribute(aria-hidden, e.getAttribute(data-previous-aria-hidden)), e.removeAttribute(data-previous-aria-hidden)) : e.removeAttribute(aria-hidden) })) }, Ye () > { const e navigator.userAgent, t !!e.match(/iPad/i) || !!e.match(/iPhone/i), o !!e.match(/WebKit/i); if (t && o && !e.match(/CriOS/i)) { const e 44; f().scrollHeight > window.innerHeight - e && (w().style.paddingBottom `${e}px`) } }, Ze () > { const e w(); let t; e.ontouchstart e > { t Ke(e) }, e.ontouchmove e > { t && (e.preventDefault(), e.stopPropagation()) } }, Ke e > { const t e.target, o w(); return !Xe(e) && !Je(e) && (t o || !J(o) && t instanceof HTMLElement && INPUT ! t.tagName && TEXTAREA ! t.tagName && (!J(v()) || !v().contains(t))) }, Xe e > e.touches && e.touches.length && stylus e.touches0.touchType, Je e > e.touches && e.touches.length > 1, Ge () > { null z.previousBodyPadding && document.body.scrollHeight > window.innerHeight && (z.previousBodyPadding parseInt(window.getComputedStyle(document.body).getPropertyValue(padding-right)), document.body.style.paddingRight `${z.previousBodyPadding + (() > { const e document.createElement(div); e.className oscrollbar-measure, document.body.appendChild(e); const t e.getBoundingClientRect().width - e.clientWidth; return document.body.removeChild(e), t })()}px`) }; function Qe(e, t, n, s) { M() ? it(e, s) : (te(n).then((() > it(e, s))), He(ee)); /^((?!chrome|android).)*safari/i.test(navigator.userAgent) ? (t.setAttribute(style, display:none !important), t.removeAttribute(class), t.innerHTML ) : t.remove(), O() && (null ! z.previousBodyPadding && (document.body.style.paddingRight `${z.previousBodyPadding}px`, z.previousBodyPadding null), (() > { if (q(document.body, o.iosfix)) { const e parseInt(document.body.style.top, 10); R(document.body, o.iosfix), document.body.style.top , document.body.scrollTop -1 * e } })(), We()), R(document.documentElement, document.body, o.shown, oheight-auto, ono-backdrop, otoast-shown) } function et(e) { e nt(e); const t _e.swalPromiseResolve.get(this), o tt(this); this.isAwaitingPromise() ? e.isDismissed || (ot(this), t(e)) : o && t(e) } const tt t > { const o f(); if (!o) return !1; const n e.innerParams.get(t); if (!n || q(o, n.hideClass.popup)) return !1; R(o, n.showClass.popup), F(o, n.hideClass.popup); const s w(); return R(s, n.showClass.backdrop), F(s, n.hideClass.backdrop), st(t, o, n), !0 }; const ot t > { t.isAwaitingPromise() && (e.awaitingPromise.delete(t), e.innerParams.get(t) || t._destroy()) }, nt e > void 0 e ? {isConfirmed: !1, isDenied: !1, isDismissed: !0} : Object.assign({ isConfirmed: !1, isDenied: !1, isDismissed: !1 }, e), st (e, t, o) > { const n w(), s ce && G(t); function typeof o.willClose && o.willClose(t), s ? at(e, t, n, o.returnFocus, o.didClose) : Qe(e, n, o.returnFocus, o.didClose) }, at (e, t, o, n, s) > { ee.swalCloseEventFinishedCallback Qe.bind(null, e, o, n, s), t.addEventListener(ce, (function (e) { e.target t && (ee.swalCloseEventFinishedCallback(), delete ee.swalCloseEventFinishedCallback) })) }, it (e, t) > { setTimeout((() > { function typeof t && t.bind(e.params)(), e._destroy() })) }; function rt(t, o, n) { const s e.domCache.get(t); o.forEach((e > { se.disabled n })) } function lt(e, t) { if (e) if (radio e.type) { const o e.parentNode.parentNode.querySelectorAll(input); for (let e 0; e o.length; e++) oe.disabled t } else e.disabled t } const ct { title: , titleText: , text: , html: , footer: , icon: void 0, iconColor: void 0, iconHtml: void 0, template: void 0, toast: !1, showClass: {popup: swal2-show, backdrop: swal2-backdrop-show, icon: swal2-icon-show}, hideClass: {popup: swal2-hide, backdrop: swal2-backdrop-hide, icon: swal2-icon-hide}, customClass: {}, target: body, color: void 0, backdrop: !0, heightAuto: !0, allowOutsideClick: !0, allowEscapeKey: !0, allowEnterKey: !0, stopKeydownPropagation: !0, keydownListenerCapture: !1, showConfirmButton: !0, showDenyButton: !1, showCancelButton: !1, preConfirm: void 0, preDeny: void 0, confirmButtonText: OK, confirmButtonAriaLabel: , confirmButtonColor: void 0, denyButtonText: No, denyButtonAriaLabel: , denyButtonColor: void 0, cancelButtonText: Cancel, cancelButtonAriaLabel: , cancelButtonColor: void 0, buttonsStyling: !0, reverseButtons: !1, focusConfirm: !0, focusDeny: !1, focusCancel: !1, returnFocus: !0, showCloseButton: !1, closeButtonHtml: ×, closeButtonAriaLabel: Close this dialog, loaderHtml: , showLoaderOnConfirm: !1, showLoaderOnDeny: !1, imageUrl: void 0, imageWidth: void 0, imageHeight: void 0, imageAlt: , timer: void 0, timerProgressBar: !1, width: void 0, padding: void 0, background: void 0, input: void 0, inputPlaceholder: , inputLabel: , inputValue: , inputOptions: {}, inputAutoTrim: !0, inputAttributes: {}, inputValidator: void 0, returnInputValueOnDeny: !1, validationMessage: void 0, grow: !1, position: center, progressSteps: , currentProgressStep: void 0, progressStepsDistance: void 0, willOpen: void 0, didOpen: void 0, didRender: void 0, willClose: void 0, didClose: void 0, didDestroy: void 0, scrollbarPadding: !0 }, dt allowEscapeKey, allowOutsideClick, background, buttonsStyling, cancelButtonAriaLabel, cancelButtonColor, cancelButtonText, closeButtonAriaLabel, closeButtonHtml, color, confirmButtonAriaLabel, confirmButtonColor, confirmButtonText, currentProgressStep, customClass, denyButtonAriaLabel, denyButtonColor, denyButtonText, didClose, didDestroy, footer, hideClass, html, icon, iconColor, iconHtml, imageAlt, imageHeight, imageUrl, imageWidth, preConfirm, preDeny, progressSteps, returnFocus, reverseButtons, showCancelButton, showCloseButton, showConfirmButton, showDenyButton, text, title, titleText, willClose, ut {}, pt allowOutsideClick, allowEnterKey, backdrop, focusConfirm, focusDeny, focusCancel, returnFocus, heightAuto, keydownListenerCapture, mt e > Object.prototype.hasOwnProperty.call(ct, e), wt e > -1 ! dt.indexOf(e), gt e > ute, ht e > { mt(e) || i(`Unknown parameter ${e}`) }, ft e > { pt.includes(e) && i(`The parameter ${e} is incompatible with toasts`) }, bt e > { gt(e) && c(e, gt(e)) }; const yt e > { const t {}; return Object.keys(e).forEach((o > { wt(o) ? to eo : i(`Invalid parameter to update: ${o}`) })), t }; const vt e > { xt(e), delete e.params, delete ee.keydownHandler, delete ee.keydownTarget, delete ee.currentInstance }, xt t > { t.isAwaitingPromise() ? (kt(e, t), e.awaitingPromise.set(t, !0)) : (kt(_e, t), kt(e, t)) }, kt (e, t) > { for (const o in e) eo.delete(t) }; var Ct Object.freeze({ __proto__: null, hideLoading: je, disableLoading: je, getInput: function (t) { const o e.innerParams.get(t || this), n e.domCache.get(t || this); return n ? D(n.popup, o.input) : null }, close: et, isAwaitingPromise: function () { return !!e.awaitingPromise.get(this) }, rejectPromise: function (e) { const t _e.swalPromiseReject.get(this); ot(this), t && t(e) }, handleAwaitingPromise: ot, closePopup: et, closeModal: et, closeToast: et, enableButtons: function () { rt(this, confirmButton, denyButton, cancelButton, !1) }, disableButtons: function () { rt(this, confirmButton, denyButton, cancelButton, !0) }, enableInput: function () { lt(this.getInput(), !1) }, disableInput: function () { lt(this.getInput(), !0) }, showValidationMessage: function (t) { const n e.domCache.get(this), s e.innerParams.get(this); H(n.validationMessage, t), n.validationMessage.className ovalidation-message, s.customClass && s.customClass.validationMessage && F(n.validationMessage, s.customClass.validationMessage), W(n.validationMessage); const a this.getInput(); a && (a.setAttribute(aria-invalid, !0), a.setAttribute(aria-describedby, ovalidation-message), V(a), F(a, o.inputerror)) }, resetValidationMessage: function () { const t e.domCache.get(this); t.validationMessage && Y(t.validationMessage); const n this.getInput(); n && (n.removeAttribute(aria-invalid), n.removeAttribute(aria-describedby), R(n, o.inputerror)) }, update: function (t) { const o f(), n e.innerParams.get(this); if (!o || q(o, n.hideClass.popup)) return void i(Youre trying to update the closed or closing popup, that wont work. Use the update() method in preConfirm parameter or show a new popup.); const s yt(t), a Object.assign({}, n, s); Le(this, a), e.innerParams.set(this, a), Object.defineProperties(this, { params: { value: Object.assign({}, this.params, t), writable: !1, enumerable: !0 } }) }, _destroy: function () { const t e.domCache.get(this), o e.innerParams.get(this); o ? (t.popup && ee.swalCloseEventFinishedCallback && (ee.swalCloseEventFinishedCallback(), delete ee.swalCloseEventFinishedCallback), function typeof o.didDestroy && o.didDestroy(), vt(this)) : xt(this) } }); const At e > { let t f(); t || new $o, t f(); const o P(); M() ? Y(b()) : Bt(t, e), W(o), t.setAttribute(data-loading, true), t.setAttribute(aria-busy, true), t.focus() }, Bt (e, t) > { const n E(), s P(); !t && X(A()) && (t A()), W(n), t && (Y(t), s.setAttribute(data-button-to-replace, t.className)), s.parentNode.insertBefore(s, t), F(e, n, o.loading) }, Pt e > e.checked ? 1 : 0, $t e > e.checked ? e.value : null, Et e > e.files.length ? null ! e.getAttribute(multiple) ? e.files : e.files0 : null, Tt (e, t) > { const o f(), n e > { Ltt.input(o, jt(e), t) }; u(t.inputOptions) || m(t.inputOptions) ? (At(A()), p(t.inputOptions).then((t > { e.hideLoading(), n(t) }))) : object typeof t.inputOptions ? n(t.inputOptions) : r(Unexpected type of inputOptions! Expected object, Map or Promise, got + typeof t.inputOptions) }, St (e, t) > { const o e.getInput(); Y(o), p(t.inputValue).then((n > { o.value number t.input ? `${parseFloat(n) || 0}` : `${n}`, W(o), o.focus(), e.hideLoading() })).catch((t > { r(`Error in inputValue promise: ${t}`), o.value , W(o), o.focus(), e.hideLoading() })) }, Lt { select: (e, t, n) > { const s U(e, o.select), a (e, t, o) > { const s document.createElement(option); s.value o, H(s, t), s.selected Ot(o, n.inputValue), e.appendChild(s) }; t.forEach((e > { const t e0, o e1; if (Array.isArray(o)) { const e document.createElement(optgroup); e.label t, e.disabled !1, s.appendChild(e), o.forEach((t > a(e, t1, t0))) } else a(s, o, t) })), s.focus() }, radio: (e, t, n) > { const s U(e, o.radio); t.forEach((e > { const t e0, a e1, i document.createElement(input), r document.createElement(label); i.type radio, i.name o.radio, i.value t, Ot(t, n.inputValue) && (i.checked !0); const l document.createElement(span); H(l, a), l.className o.label, r.appendChild(i), r.appendChild(l), s.appendChild(r) })); const a s.querySelectorAll(input); a.length && a0.focus() } }, jt e > { const t ; return undefined ! typeof Map && e instanceof Map ? e.forEach(((e, o) > { let n e; object typeof n && (n jt(n)), t.push(o, n) })) : Object.keys(e).forEach((o > { let n eo; object typeof n && (n jt(n)), t.push(o, n) })), t }, Ot (e, t) > t && t.toString() e.toString(), Mt (t, o) > { const n e.innerParams.get(t); if (!n.input) return void r(`The input parameter is needed to be set when using returnInputValueOn${a(o)}`); const s ((e, t) > { const o e.getInput(); if (!o) return null; switch (t.input) { casecheckbox: return Pt(o); caseradio: return $t(o); casefile: return Et(o); default: return t.inputAutoTrim ? o.value.trim() : o.value } })(t, n); n.inputValidator ? zt(t, s, o) : t.getInput().checkValidity() ? deny o ? Ht(t, s) : Dt(t, s) : (t.enableButtons(), t.showValidationMessage(n.validationMessage)) }, zt (t, o, n) > { const s e.innerParams.get(t); t.disableInput(); Promise.resolve().then((() > p(s.inputValidator(o, s.validationMessage)))).then((e > { t.enableButtons(), t.enableInput(), e ? t.showValidationMessage(e) : deny n ? Ht(t, o) : Dt(t, o) })) }, Ht (t, o) > { const n e.innerParams.get(t || void 0); if (n.showLoaderOnDeny && At(B()), n.preDeny) { e.awaitingPromise.set(t || void 0, !0); Promise.resolve().then((() > p(n.preDeny(o, n.validationMessage)))).then((e > { !1 e ? (t.hideLoading(), ot(t)) : t.close({isDenied: !0, value: void 0 e ? o : e}) })).catch((e > It(t || void 0, e))) } else t.close({isDenied: !0, value: o}) }, qt (e, t) > { e.close({isConfirmed: !0, value: t}) }, It (e, t) > { e.rejectPromise(t) }, Dt (t, o) > { const n e.innerParams.get(t || void 0); if (n.showLoaderOnConfirm && At(), n.preConfirm) { t.resetValidationMessage(), e.awaitingPromise.set(t || void 0, !0); Promise.resolve().then((() > p(n.preConfirm(o, n.validationMessage)))).then((e > { X(C()) || !1 e ? (t.hideLoading(), ot(t)) : qt(t, void 0 e ? o : e) })).catch((e > It(t || void 0, e))) } else qt(t, o) }, Vt (t, o, n) > { o.popup.onclick () > { const o e.innerParams.get(t); o && (Nt(o) || o.timer || o.input) || n(ze.close) } }, Nt e > e.showConfirmButton || e.showDenyButton || e.showCancelButton || e.showCloseButton; let Ft !1; const Rt e > { e.popup.onmousedown () > { e.container.onmouseup function (t) { e.container.onmouseup void 0, t.target e.container && (Ft !0) } } }, Ut e > { e.container.onmousedown () > { e.popup.onmouseup function (t) { e.popup.onmouseup void 0, (t.target e.popup || e.popup.contains(t.target)) && (Ft !0) } } }, _t (t, o, n) > { o.container.onclick s > { const a e.innerParams.get(t); Ft ? Ft !1 : s.target o.container && d(a.allowOutsideClick) && n(ze.backdrop) } }, Wt e > e instanceof Element || (e > object typeof e && e.jquery)(e); const Yt () > { if (ee.timeout) return (() > { const e S(), t parseInt(window.getComputedStyle(e).width); e.style.removeProperty(transition), e.style.width 100%; const o t / parseInt(window.getComputedStyle(e).width) * 100; e.style.removeProperty(transition), e.style.width `${o}%` })(), ee.timeout.stop() }, Zt () > { if (ee.timeout) { const e ee.timeout.start(); return Q(e), e } }; let Kt !1; const Xt {}; const Jt e > { for (let t e.target; t && t ! document; t t.parentNode) for (const e in Xt) { const o t.getAttribute(e); if (o) return void Xte.fire({template: o}) } }; var Gt Object.freeze({ __proto__: null, isValidParameter: mt, isUpdatableParameter: wt, isDeprecatedParameter: gt, argsToParams: e > { const t {}; return object ! typeof e0 || Wt(e0) ? title, html, icon.forEach(((o, n) > { const s en; string typeof s || Wt(s) ? to s : void 0 ! s && r(`Unexpected type of ${o}! Expected string or Element, got ${typeof s}`) })) : Object.assign(t, e0), t }, getContainer: w, getPopup: f, getTitle: y, getHtmlContainer: v, getImage: x, getIcon: b, getIconContent: () > h(oicon-content), getInputLabel: () > h(oinput-label), getCloseButton: L, getActions: E, getConfirmButton: A, getDenyButton: B, getCancelButton: $, getLoader: P, getFooter: T, getTimerProgressBar: S, getFocusableElements: j, getValidationMessage: C, getProgressSteps: k, isLoading: () > f().hasAttribute(data-loading), isVisible: () > X(f()), clickConfirm: Me, clickDeny: () > B() && B().click(), clickCancel: () > $() && $().click(), fire: function () { const e this; for (var t arguments.length, o new Array(t), n 0; n t; n++) on argumentsn; return new e(...o) }, mixin: function (e) { return class extends (this) { _main(t, o) { return super._main(t, Object.assign({}, e, o)) } } }, showLoading: At, enableLoading: At, getTimerLeft: () > ee.timeout && ee.timeout.getTimerLeft(), stopTimer: Yt, resumeTimer: Zt, toggleTimer: () > { const e ee.timeout; return e && (e.running ? Yt() : Zt()) }, increaseTimer: e > { if (ee.timeout) { const t ee.timeout.increase(e); return Q(t, !0), t } }, isTimerRunning: () > ee.timeout && ee.timeout.isRunning(), bindClickHandler: function () { let e arguments.length > 0 && void 0 ! arguments0 ? arguments0 : data-swal-template; Xte this, Kt || (document.body.addEventListener(click, Jt), Kt !0) } }); class Qt { constructor(e, t) { this.callback e, this.remaining t, this.running !1, this.start() } start() { return this.running || (this.running !0, this.started new Date, this.id setTimeout(this.callback, this.remaining)), this.remaining } stop() { return this.running && (this.running !1, clearTimeout(this.id), this.remaining - (new Date).getTime() - this.started.getTime()), this.remaining } increase(e) { const t this.running; return t && this.stop(), this.remaining + e, t && this.start(), this.remaining } getTimerLeft() { return this.running && (this.stop(), this.start()), this.remaining } isRunning() { return this.running } } const eo swal-title, swal-html, swal-footer, to e > { const t {}; return Array.from(e.querySelectorAll(swal-param)).forEach((e > { co(e, name, value); const o e.getAttribute(name), n e.getAttribute(value); to boolean typeof cto ? false ! n : object typeof cto ? JSON.parse(n) : n })), t }, oo e > { const t {}; return Array.from(e.querySelectorAll(swal-function-param)).forEach((e > { const o e.getAttribute(name), n e.getAttribute(value); to new Function(`return ${n}`)() })), t }, no e > { const t {}; return Array.from(e.querySelectorAll(swal-button)).forEach((e > { co(e, type, color, aria-label); const o e.getAttribute(type); t`${o}ButtonText` e.innerHTML, t`show${a(o)}Button` !0, e.hasAttribute(color) && (t`${o}ButtonColor` e.getAttribute(color)), e.hasAttribute(aria-label) && (t`${o}ButtonAriaLabel` e.getAttribute(aria-label)) })), t }, so e > { const t {}, o e.querySelector(swal-image); return o && (co(o, src, width, height, alt), o.hasAttribute(src) && (t.imageUrl o.getAttribute(src)), o.hasAttribute(width) && (t.imageWidth o.getAttribute(width)), o.hasAttribute(height) && (t.imageHeight o.getAttribute(height)), o.hasAttribute(alt) && (t.imageAlt o.getAttribute(alt))), t }, ao e > { const t {}, o e.querySelector(swal-icon); return o && (co(o, type, color), o.hasAttribute(type) && (t.icon o.getAttribute(type)), o.hasAttribute(color) && (t.iconColor o.getAttribute(color)), t.iconHtml o.innerHTML), t }, io e > { const t {}, o e.querySelector(swal-input); o && (co(o, type, label, placeholder, value), t.input o.getAttribute(type) || text, o.hasAttribute(label) && (t.inputLabel o.getAttribute(label)), o.hasAttribute(placeholder) && (t.inputPlaceholder o.getAttribute(placeholder)), o.hasAttribute(value) && (t.inputValue o.getAttribute(value))); const n Array.from(e.querySelectorAll(swal-input-option)); return n.length && (t.inputOptions {}, n.forEach((e > { co(e, value); const o e.getAttribute(value), n e.innerHTML; t.inputOptionso n }))), t }, ro (e, t) > { const o {}; for (const n in t) { const s tn, a e.querySelector(s); a && (co(a, ), os.replace(/^swal-/, ) a.innerHTML.trim()) } return o }, lo e > { const t eo.concat(swal-param, swal-function-param, swal-button, swal-image, swal-icon, swal-input, swal-input-option); Array.from(e.children).forEach((e > { const o e.tagName.toLowerCase(); t.includes(o) || i(`Unrecognized element ${o}>`) })) }, co (e, t) > { Array.from(e.attributes).forEach((o > { -1 t.indexOf(o.name) && i(`Unrecognized attribute ${o.name} on ${e.tagName.toLowerCase()}>.`, + (t.length ? `Allowed attributes are: ${t.join(, )}` : To set the value, use HTML within the element.)) })) }, uo e > { const t w(), n f(); function typeof e.willOpen && e.willOpen(n); const s window.getComputedStyle(document.body).overflowY; go(t, n, e), setTimeout((() > { mo(t, n) }), 10), O() && (wo(t, e.scrollbarPadding, s), Array.from(document.body.children).forEach((e > { e w() || e.contains(w()) || (e.hasAttribute(aria-hidden) && e.setAttribute(data-previous-aria-hidden, e.getAttribute(aria-hidden)), e.setAttribute(aria-hidden, true)) }))), M() || ee.previousActiveElement || (ee.previousActiveElement document.activeElement), function typeof e.didOpen && setTimeout((() > e.didOpen(n))), R(t, ono-transition) }, po e > { const t f(); if (e.target ! t) return; const o w(); t.removeEventListener(ce, po), o.style.overflowY auto }, mo (e, t) > { ce && G(t) ? (e.style.overflowY hidden, t.addEventListener(ce, po)) : e.style.overflowY auto }, wo (e, t, n) > { (() > { if ((/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || MacIntel navigator.platform && navigator.maxTouchPoints > 1) && !q(document.body, o.iosfix)) { const e document.body.scrollTop; document.body.style.top -1 * e + px, F(document.body, o.iosfix), Ze(), Ye() } })(), t && hidden ! n && Ge(), setTimeout((() > { e.scrollTop 0 })) }, go (e, t, n) > { F(e, n.showClass.backdrop), t.style.setProperty(opacity, 0, important), W(t, grid), setTimeout((() > { F(t, n.showClass.popup), t.style.removeProperty(opacity) }), 10), F(document.documentElement, document.body, o.shown), n.heightAuto && n.backdrop && !n.toast && F(document.documentElement, document.body, oheight-auto) }; var ho { email: (e, t) > /^a-zA-Z0-9.+_-+@a-zA-Z0-9.-+\.a-zA-Z0-9-{2,24}$/.test(e) ? Promise.resolve() : Promise.resolve(t || Invalid email address), url: (e, t) > /^https?:\/\/(www\.)?-a-zA-Z0-9@:%._+~#{1,256}\.a-z{2,63}\b(-a-zA-Z0-9@:%_+.~#?&/*)$/.test(e) ? Promise.resolve() : Promise.resolve(t || Invalid URL) }; function fo(e) { !function (e) { e.inputValidator || Object.keys(ho).forEach((t > { e.input t && (e.inputValidator hot) })) }(e), e.showLoaderOnConfirm && !e.preConfirm && i(showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request), function (e) { (!e.target || string typeof e.target && !document.querySelector(e.target) || string ! typeof e.target && !e.target.appendChild) && (i(Target parameter is not valid, defaulting to body), e.target body) }(e), string typeof e.title && (e.title e.title.split(\n).join(br />)), ae(e) } let bo; class yo { constructor() { if (undefined typeof window) return; bo this; for (var t arguments.length, o new Array(t), n 0; n t; n++) on argumentsn; const s Object.freeze(this.constructor.argsToParams(o)); Object.defineProperties(this, {params: {value: s, writable: !1, enumerable: !0, configurable: !0}}); const a bo._main(bo.params); e.promise.set(this, a) } _main(t) { let o arguments.length > 1 && void 0 ! arguments1 ? arguments1 : {}; (e > { !1 e.backdrop && e.allowOutsideClick && i(allowOutsideClick parameter requires `backdrop` parameter to be set to `true`); for (const t in e) ht(t), e.toast && ft(t), bt(t) })(Object.assign({}, o, t)), ee.currentInstance && (ee.currentInstance._destroy(), O() && We()), ee.currentInstance bo; const n xo(t, o); fo(n), Object.freeze(n), ee.timeout && (ee.timeout.stop(), delete ee.timeout), clearTimeout(ee.restoreFocusTimeout); const s ko(bo); return Le(bo, n), e.innerParams.set(bo, n), vo(bo, s, n) } then(t) { return e.promise.get(this).then(t) } finally(t) { return e.promise.get(this).finally(t) } } const vo (t, o, n) > new Promise(((s, a) > { const i e > { t.close({isDismissed: !0, dismiss: e}) }; _e.swalPromiseResolve.set(t, s), _e.swalPromiseReject.set(t, a), o.confirmButton.onclick () > { (t > { const o e.innerParams.get(t); t.disableButtons(), o.input ? Mt(t, confirm) : Dt(t, !0) })(t) }, o.denyButton.onclick () > { (t > { const o e.innerParams.get(t); t.disableButtons(), o.returnInputValueOnDeny ? Mt(t, deny) : Ht(t, !1) })(t) }, o.cancelButton.onclick () > { ((e, t) > { e.disableButtons(), t(ze.cancel) })(t, i) }, o.closeButton.onclick () > { i(ze.close) }, ((t, o, n) > { e.innerParams.get(t).toast ? Vt(t, o, n) : (Rt(o), Ut(o), _t(t, o, n)) })(t, o, i), ((e, t, o, n) > { He(t), o.toast || (t.keydownHandler t > Ve(e, t, n), t.keydownTarget o.keydownListenerCapture ? window : f(), t.keydownListenerCapture o.keydownListenerCapture, t.keydownTarget.addEventListener(keydown, t.keydownHandler, {capture: t.keydownListenerCapture}), t.keydownHandlerAdded !0) })(t, ee, n, i), ((e, t) > { select t.input || radio t.input ? Tt(e, t) : text, email, number, tel, textarea.includes(t.input) && (u(t.inputValue) || m(t.inputValue)) && (At(A()), St(e, t)) })(t, n), uo(n), Co(ee, n, i), Ao(o, n), setTimeout((() > { o.container.scrollTop 0 })) })), xo (e, t) > { const o (e > { const t string typeof e.template ? document.querySelector(e.template) : e.template; if (!t) return {}; const o t.content; return lo(o), Object.assign(to(o), oo(o), no(o), so(o), ao(o), io(o), ro(o, eo)) })(e), n Object.assign({}, ct, t, o, e); return n.showClass Object.assign({}, ct.showClass, n.showClass), n.hideClass Object.assign({}, ct.hideClass, n.hideClass), n }, ko t > { const o { popup: f(), container: w(), actions: E(), confirmButton: A(), denyButton: B(), cancelButton: $(), loader: P(), closeButton: L(), validationMessage: C(), progressSteps: k() }; return e.domCache.set(t, o), o }, Co (e, t, o) > { const n S(); Y(n), t.timer && (e.timeout new Qt((() > { o(timer), delete e.timeout }), t.timer), t.timerProgressBar && (W(n), I(n, t, timerProgressBar), setTimeout((() > { e.timeout && e.timeout.running && Q(t.timer) })))) }, Ao (e, t) > { t.toast || (d(t.allowEnterKey) ? Bo(e, t) || qe(0, -1, 1) : Po()) }, Bo (e, t) > t.focusDeny && X(e.denyButton) ? (e.denyButton.focus(), !0) : t.focusCancel && X(e.cancelButton) ? (e.cancelButton.focus(), !0) : !(!t.focusConfirm || !X(e.confirmButton)) && (e.confirmButton.focus(), !0), Po () > { document.activeElement instanceof HTMLElement && function typeof document.activeElement.blur && document.activeElement.blur() }; Object.assign(yo.prototype, Ct), Object.assign(yo, Gt), Object.keys(Ct).forEach((e > { yoe function () { if (bo) return boe(...arguments) } })), yo.DismissReason ze, yo.version 11.6.15; const $o yo; return $o.default $o, $o })), void 0 ! this && this.Sweetalert2 && (this.swal this.sweetAlert this.Swal this.SweetAlert this.Sweetalert2), undefined ! typeof document && function (e, t) { var o e.createElement(style); if (e.getElementsByTagName(head)0.appendChild(o), o.styleSheet) o.styleSheet.disabled || (o.styleSheet.cssText t); else try { o.innerHTML t } catch (e) { o.innerText t } }(document, .swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error class^swal2-x-mark-line{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error class^swal2-x-mark-lineclass$left{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error class^swal2-x-mark-lineclass$right{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success class^swal2-success-circular-line{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success class^swal2-success-circular-lineclass$left{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-circular-lineclass$right{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-line{height:.3125em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-lineclass$tip{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success class^swal2-success-lineclass$long{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:top-start top top-end center-start center center-end bottom-start bottom-center bottom-end;grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:rgba(0,0,0,0) !important}.swal2-container.swal2-top-start,.swal2-container.swal2-center-start,.swal2-container.swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}.swal2-container.swal2-top,.swal2-container.swal2-center,.swal2-container.swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}.swal2-container.swal2-top-end,.swal2-container.swal2-center-end,.swal2-container.swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-start>.swal2-popup,.swal2-container.swal2-center-left>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-start>.swal2-popup,.swal2-container.swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-row>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none !important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:none}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styleddisabled{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}.swal2-styled:not(disabled){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:none}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:rgba(0,0,0,0);color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:rgba(0,0,0,0);color:#f27474}.swal2-close:focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-input,.swal2-file,.swal2-textarea,.swal2-select,.swal2-radio,.swal2-checkbox{margin:1em 2em 3px}.swal2-input,.swal2-file,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-input.swal2-inputerror,.swal2-file.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}.swal2-input:focus,.swal2-file:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-input::placeholder,.swal2-file::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 3px;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-radio,.swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-radio label,.swal2-checkbox label{margin:0 .6em;font-size:1.125em}.swal2-radio input,.swal2-checkbox input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:!;display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error class^swal2-x-mark-line{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error class^swal2-x-mark-lineclass$left{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error class^swal2-x-mark-lineclass$right{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success class^swal2-success-circular-line{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success class^swal2-success-circular-lineclass$left{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success class^swal2-success-circular-lineclass$right{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success class^swal2-success-line{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success class^swal2-success-lineclass$tip{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success class^swal2-success-lineclass$long{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}class^swal2{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>aria-hiddentrue{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto});/script>script> /* * Микролиба для получения gaid и yaid */ var SLGodObject window.SLGodObject || { helpers: {}, data: { counters: {} } }; SLGodObject.helpers.setYaCliendID function () { // ХЗ к какому событию можно приципиться, поэтому дёргаем раз в 1 секунду до победного var timerId setInterval(function () { if (SLGodObject.data.counters.yaClienId) { clearInterval(timerId); } else { for (var i in window) { if (/^yaCounter\d+/.test(i)) { try { SLGodObject.data.counters.yaClienId windowi.getClientID(); // console.log(yaid: + SLGodObject.data.counters.yaClienId); } catch (e) { } } } } }, 1000); }; SLGodObject.helpers.setGaCliendID function () { // ХЗ к какому событию можно приципиться, поэтому дёргаем раз в 1 секунду до победного var timerId setInterval(function () { if (SLGodObject.data.counters.gaClienId) { clearInterval(timerId); } else { try { SLGodObject.data.counters.gaClienId ga.getAll()0.get(clientId); // console.log(gaid: + SLGodObject.data.counters.gaClienId); } catch (e) { } } }, 1000); }; SLGodObject.helpers.getYaCliendID function () { // Чисто для наглядности, но можно взять прямо из data return SLGodObject.data.counters.yaClienId || null; }; SLGodObject.helpers.getGaCliendID function () { // Чисто для наглядности, но можно взять прямо из data return SLGodObject.data.counters.gaClienId || null; }; SLGodObject.helpers.setAllCliendID function () { // Получаем id со всех счётчиков (может ещё что добавиться) SLGodObject.helpers.setYaCliendID(); SLGodObject.helpers.setGaCliendID(); }; SLGodObject.helpers.setAllCliendID();/script>script> var city {id:777,name:,country:rus}; var thread {id:39971,part_id:27501,hash:null,idp:817685d2-1726-4154-8e0733dde91d1ec0,title:\u041a\u041f - \u041a\u0430\u043b\u0443\u0433\u0430 1,type:0,is_pm:0,tool_type:1,tool_id:1024,created_at:2024-01-27 11:47:45,updated_at:2024-01-27 11:53:48,archived_at:null,data:{inn:null,tel:,ogrn:null,fp_id:null,ga_id:null,mg_id:null,tt_id:null,vp_id:null,ym_id:96259463,zd_id:null,domain:healercomp.ru,gtm_id:null,city_id:auto,subid_1:null,subid_2:null,subid_3:null,yuraddr:\u041e\u0431\u043d\u0438\u043d\u0441\u043a, \u0443\u043b. \u0410\u043a\u0441\u0451\u043d\u043e\u0432\u0430, 16\u0410,yurname:\u0421\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0439 \u0446\u0435\u043d\u0442\u0440 Healercomp,lkVersion:sl,show_city:yes,direction_id:1,new_offer_id:1,trafficSources:\u0421\u0432\u043e\u0438 \u0441\u0430\u0439\u0442\u044b,use_lead_proxy:yes,form_add_modals:1,form_add_chatbot:1,form_chatbot_job:\u041c\u0430\u0441\u0442\u0435\u0440 \u043f\u043e \u0440\u0435\u043c\u043e\u043d\u0442\u0443,form_modal_delay:null,form_modal_header:null,form_modal_number:2,form_chatbot_delay:null,form_chatbot_avatar:null,form_modal_btn_text:null,form_add_phonemodals:0,form_modal_subheader:null,form_modalphone_delay:null,form_modalphone_header:null,form_modalphone_btn_text:null,form_modalphone_subheader:null,form_chatbot_active-dialog:1,form_chatbot_operator-name:\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d,form_chatbot_active-dialog_delay:null,form_chatbot_writing__operator_long_delay:null,form_chatbot_writing__operator_short_delay:null}}; var countryName city.country || rus; $(typetel).not(.nomask).each(function () { var self $(this); self.inputmask(remove); if (countryName rus || countryName kaz) { self.removeAttr(pattern); self.inputmask({ mask: +7 (999) 999-99-99, onBeforePaste: function (pastedValue, opts) { var processedValue pastedValue; var tel processedValue.replace(/^\d/g, ); if (tel.length 11 && (tel0 8 || tel0 7)) { processedValue +7 + tel.substring(1); } return processedValue; }, onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName bel) { self.removeAttr(pattern); self.inputmask(+375 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName ua) { self.removeAttr(pattern); self.inputmask(+380 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName tur) { self.removeAttr(pattern); self.inputmask(0 (999) 999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else if (countryName az) { if ( true // typeof thread ! undefined && // typeof thread.tool_id number && // thread.tool_id 1191 && // typeof thread.id number && // thread.id 33490 ) { self.prop(pattern, \\+?((994\\s*\\(?\\d{2,3}\\)?\\s*\\d{3}-*\\s*\\d{2}-*\\s*\\d{2})|(0\\s*\\(?\\d{2,3}\\)?\\s*\\d{3}-*\\s*\\d{2}-*\\s*\\d{2})|(\\(?\\d{2,3}\\)?\\s*\\d{3}-*\\s*\\d{2}-*\\s*\\d{2}))); self.inputmask({ regex: \\d\\s\\(\\)\\-\\+{9,25}, onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } else { self.inputmask(+\\9\\94 99-999-99-99, { onincomplete: function () { self.addClass(incomplete); self.removeClass(complete); }, oncomplete: function () { self.removeClass(incomplete); self.addClass(complete); } }); } } }); (function ($) { $(function () { if (window.location.hostname.endsWith(.ua)) { countryName ua; } if (window.location.hostname.endsWith(.by)) { countryName bel; } if (window.location.hostname.endsWith(.kz)) { countryName kaz; } if (window.location.hostname.endsWith(.tr)) { countryName tur; } window.convertPrices function () { if ( countryName bel || countryName ua || countryName kaz || countryName az ) { if (countryName bel) { var currName Бел.руб.; var currDelim 32; } if (countryName ua) { var currName грн.; var currDelim 2.67; } if (countryName kaz) { var currName тг; var currDelim 0.125; } if (countryName az) { var currName AZN; var currDelim 35.74; } var regex /(\d+)\s?((₽)|(ру?б?\.?)|(Ру?б?\.?))/gmi; var pretext function (priceStr) { if (priceStr.includes(от)) { if (countryName az) { priceStr priceStr.replace(от, ).trim(); priceStr priceStr.replace(currName, currName + -dən); } } return priceStr; } var convert function (m, m1, m2, offset, s) { var price Math.ceil(m1 / currDelim); if ( countryName kaz // || // countryName az ) { if (price > 100) { price Math.round(price / 100) * 100; } else { price Math.round(price / 10) * 10; } } var res price + + currName; return res; } jQuery(:contains(Руб),:contains(руб),:contains(р.),:contains(₽)).not(script,style,link).each(function () { var self jQuery(this); if (self.children().length ! 0) { return; } var text self.text(); if (regex.test(text)) { // console.log(text); text text.replace(regex, convert); // console.log(text); text pretext(text); self.text(text); } }); } } // document.addEventListener(DOMContentLoaded, convertPrices); convertPrices(); function insertParam(key, value) { key encodeURI(key); value encodeURI(value); var kvp document.location.search.substr(1).split(&); var i kvp.length; var x; while (i--) { x kvpi.split(); if (x0 key) { x1 value; kvpi x.join(); break; } } if (i 0) { kvpkvp.length key, value.join(); } document.location.search kvp.join(&); } $(#city, .city-change).change(function (e) { if ($(this).parents(.not-city-select).length ! 0) { return; } e.preventDefault(); insertParam(city_id, $(this).val()); }); $(.select__list li, .header-city a.dropdown-item, .nice-select li).click(function () { if ($(this).parents(.not-city-select).length ! 0) { return; } //e.preventDefault(); insertParam(city_id, $(this).data(value)); }); }); })(jQuery); function urlencodeFormData(fd) { if (typeof URLSearchParams function) { var params new URLSearchParams(); for (var pair of fd.entries()) { typeof pair1 string && params.append(pair0, pair1); } return params.toString(); } else { var s ; function encode(s) { return encodeURIComponent(s).replace(/%20/g, +); } for (var pair of fd.entries()) { if (typeof pair1 string) { s + (s ? & : ) + encode(pair0) + + encode(pair1); } } return s; } } (function ($) { $(function () { // находим справочные поля типа // input typehidden namework valueна сайте есть акция - Скидка до 15%> var saleInfoFields $(inputnamework); saleInfoFields.each(function () { var self $(this); var formEl self.parents(form); var commentEl formEl.find(textareanamework); // если в форме есть textareanamework - переименовываем // inputnamework в inputnamework2 if (commentEl.length ! 0) { self.prop(name, work2); } }); var forms document.getElementsByClassName(sltop__form); for (var i 0; i forms.length; i++) { formsi.addEventListener(submit, function (ev) { ev.preventDefault(); var hcaptchaField $(this).find(nameh-captcha-response); if (hcaptchaField.length ! 0 && hcaptchaField.val() ) { alert(Решите капчу.); return; } var form this; var oData new FormData(form); var popupCloseEl document.getElementsByClassName(sltop__form_close); var telEl $(this).find(namephone); var modal $(this).closest(.modal); if (form.classList.contains(loading)) { return; } // добавляем комментарий о скидке и тп if (oData.has(work2)) { oData.set(work, oData.get(work) + \n\n + oData.get(work2)); } if (!telEl.inputmask(isComplete)) { telEl.trigger(focus); // console.log(Phone not isComplete!!!); return; } if (countryName tur) { oData.set(phone, +9 + oData.get(phone)); } if ( countryName az && typeof thread ! undefined && typeof thread.tool_id number && thread.tool_id 1191 && typeof thread.id number && thread.id 33490 ) { var phoneNum oData.get(phone); phoneNum phoneNum.replace(/^\d/g, ); if (phoneNum.substring(0, 1) 0) { // если начинается с 0 // убираем 0 и добавляем +994 phoneNum +994.concat(phoneNum.substring(1, phoneNum.length)); } else { // если не с 0 if (phoneNum.substring(0, 3) 994) { phoneNum +.concat(phoneNum); } else { // добавляем +994 phoneNum +994.concat(phoneNum); } } oData.set(phone, phoneNum); // for (var pair of oData.entries()) { // console.log(pair0 + , + pair1); // } // return; } if (typeof URLSearchParams function) { const utm { utm_source: utm1, utm_medium: utm2, utm_campaign: utm3, utm_content: utm4, utm_term: utm5 }; const sub_id { sub_id1: sub_id1, sub_id2: sub_id2, sub_id3: sub_id3, sub_id4: sub_id4, sub_id5: sub_id5 }; const urlParams new URLSearchParams(window.location.search); for (var prop in utm) { if (urlParams.get(prop) ! null) { oData.append(utmprop, urlParams.get(prop)); } } for (var prop in sub_id) { if (urlParams.get(prop) ! null) { oData.set(sub_idprop, urlParams.get(prop)); } } } oData.append(hash, oData.get(view_id)); // if (parseInt(thread.type) 0) { // oData.append(directionTypeId, thread.type + 10000); // } var threadOfferId 0; var threadDirectionId 0; try { threadDirectionId parseInt(thread.data.direction_id || 0); } catch (err) { console.log(err); } try { threadOfferId parseInt(thread.data.new_offer_id || 0); } catch (err) { console.log(err); } oData.set(direction_id, threadDirectionId); oData.set(offer_id, threadOfferId); oData.set(lk, rf); // Временное исключение для новых офферов var offersSpecial { // 10: 78, // Телевизоры // 11: 78, // Телевизоры ЧМ // 14: 79, // Сантехника // 18: 79, // Сантехника ЧМ // 16: 79, // Муж на час // 20: 79, // Муж на час ЧМ 22: 56, // Клининг 23: 56, // Клининг ЧМ }; var offerId parseInt(oData.get(offer_id) || 0); if (offersSpecialofferId ! undefined) { if ( offerId 14 || offerId 18 || offerId 16 || offerId 20 ) { if (parseInt(oData.get(branch_id)) 0) { oData.set(branch_id, offersSpecialofferId); } } else { oData.set(branch_id, offersSpecialofferId); } } if (!oData.get(fullname)) { oData.set(fullname, Без имени); } try { var yaid SLGodObject.helpers.getYaCliendID(); var gaid SLGodObject.helpers.getGaCliendID(); if (yaid) { oData.set(yaid, yaid); } if (gaid) { oData.set(gaid, gaid); } } catch (e) { } var XHR (onload in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest; var xhr new XHR(); xhr.open(POST, form.action, true); xhr.onload function (oEvent) { var reponseCode 0; if (xhr.response.length > 0) { try { var result JSON.parse(xhr.response); console.info(result); reponseCode result.reponseCode; if (!result.success) { form.classList.remove(loading); form.classList.add(fail); if (typeof jQuery.fancybox object) { jQuery.fancybox.close(); } Array.from(popupCloseEl).forEach(el > el.click()); var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Veri gönderilemedi.; msg.text Lütfen tekrar deneyin veya telefonla bize ulaşın.; } else { msg.title Не удалось отправить данные.; msg.text Пожалуйста, попробуйте ещё раз или свяжитесь с нами по телефону.; } Swal.fire({ icon: error, title: msg.title, text: msg.text + \n + result.errorType + - + result.errorText, onOpen: () > { if (typeof hideKvizForm ! undefined) { hideKvizForm(); } } }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } return; } } catch { } } if (xhr.status 200 || xhr.status 202) { form.classList.remove(loading); form.classList.add(success); form.reset(); Array.from(popupCloseEl).forEach(el > el.click()); if (typeof jQuery.fancybox object) { jQuery.fancybox.close(); } if (xhr.status 200) { var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Başvuru gönderildi.; msg.text Bizimle iletişime geçtiğiniz için teşekkür ederiz, bir arama bekleyin.; } else { msg.title Заявка отправлена.; msg.text Спасибо за обращение, ожидайте звонка.; } Swal.fire({ icon: success, title: msg.title, text: msg.text, onOpen: () > { if (typeof hideKvizForm ! undefined) { hideKvizForm(); } $(.sltop__form).trigger(reset); } }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } } if (xhr.status 202 || reponseCode 202) { var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Başvuru gönderildi #202.; msg.text Bizimle iletişime geçtiğiniz için teşekkür ederiz, bir arama bekleyin.; } else { msg.title Заявка отправлена #202.; msg.text Спасибо за обращение, ожидайте звонка.; } Swal.fire({ icon: success, title: msg.title, text: msg.text }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } } if (typeof fbq function) { fbq(track, CompleteRegistration); console.log(fbq(track, CompleteRegistration)); } try { fbq(track, Lead); console.log(Success: fbq(track, Lead)); } catch (err) { console.error(Fail: fbq(track, Lead)); } try { VK.Retargeting.Event(Lead); console.log(Success: VK.Retargeting.Event(Lead)); } catch (err) { console.error(Fail: VK.Retargeting.Event(Lead)); } for (var i in window) { if (/^yaCounter\d+/.test(i)) { try { windowi.reachGoal(Lead); console.log(Success: yaCounter.reachGoal(Lead)); } catch (err) { console.error(Fail: yaCounter.reachGoal(Lead)); } } } try { gtag(event, Lead); console.log(Success: gtag(event, Lead)); } catch (err) { console.error(Fail: gtag(event, Lead)); } try { ga(send, event, null, Lead); // ga(send, event, Lead, Lead, Lead); console.log(Success: ga(send, event, null, Lead)); } catch (err) { console.error(Fail: ga(send, event, null, Lead)); } } else { console.log(Error + xhr.status); console.log(xhr.responseText); form.classList.remove(loading); form.classList.add(fail); if (typeof jQuery.fancybox object) { jQuery.fancybox.close(); } Array.from(popupCloseEl).forEach(el > el.click()); var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Veri gönderilemedi.; msg.text Lütfen tekrar deneyin veya telefonla bize ulaşın.; } else { msg.title Не удалось отправить данные.; msg.text Пожалуйста, попробуйте ещё раз или свяжитесь с нами по телефону.; } Swal.fire({ icon: error, title: msg.title, text: msg.text, onOpen: () > { if (typeof hideKvizForm ! undefined) { hideKvizForm(); } } }); if (modal.hasClass(show)) { try { modal.modal(hide); } catch { if (typeof modalHide ! undefined) { modalHide(); } } } else if (typeof modalHide ! undefined) { modalHide(); } } hcaptcha2.reset(); }; xhr.onerror function () { var msg {}; var urlParams new URLSearchParams(window.location.search); var l urlParams.get(l); if ( city.country tur && // Турция thread.tool_id 1193 && // Нерусский ленд l ! ru // не выбран русский язык ) { msg.title Bağlantı hatası.; msg.text Lütfen tekrar deneyin veya telefonla bize ulaşın.; } else { msg.title Ошибка соединения.; msg.text Пожалуйста, попробуйте ещё раз или свяжитесь с нами по телефону.; } Swal.fire({ icon: error, title: msg.title, text: msg.text }); form.classList.remove(loading); form.classList.add(fail); hcaptcha2.reset(); }; form.classList.remove(success); form.classList.remove(fail); form.classList.add(loading); xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded); xhr.send(urlencodeFormData(oData)); }, false); } }); })(jQuery);/script> div classsite-policy-line> div classsite-policy-line-inner> Информация на данном ресурсе не является публичной офертой. a hrefhttps://healercomp.ru/politika-obrabotki-personalnyh-dannyh.html target_blank> Политика конфиденциальности /a> br> Юр. наименование: Сервисный центр Healercomp Факт. адрес: Обнинск, ул. Аксёнова, 16А /div>/div>style> .site-policy-line { padding: 3px 10px; background: #eee; border-top: 1px solid #ccc; } .site-policy-line .site-policy-line-inner { max-width: 800px; margin: 0 auto; text-align: center; font-size: 12px; line-height: 18px; color: #333; } .site-policy-line .site-policy-line-inner a { color: #0036d0; text-decoration: underline; }/style> script> window.hcaptcha2 { reset: function () { } }; /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]