1// lozad// 2const observer = lozad(); 3observer.observe(); 4let header = document.querySelector(".header"); 5let mob_mini_menu = document.querySelector(".mob_mini_menu"); 6// lozad// 7 8("use strict"); 9 10function getCookie(name) { 11 return document.cookie 12 .split("; ") 13 .find((row) => row.startsWith(`${name}=`)) 14 ?.split("=")[1]; 15} 16const forms = document.querySelectorAll(".srm "); 17 18function check_ga() { 19 const dataforinp = getCookie("_ga"); 20 if (dataforinp) { 21 const forms = document.querySelectorAll("form"); 22 forms && 23 forms.length && 24 forms.forEach(function (elm) { 25 elm.insertAdjacentHTML( 26 "beforeend", 27 `<input type="hidden" class="utm" id="google_client_id" name="google_client_id" value="${dataforinp}" />`, 28 ); 29 }); 30 } else { 31 setTimeout(check_ga, 500); 32 } 33} 34function check_ya() { 35 const dataforinp = getCookie("_ym_uid") ? getCookie("_ym_uid") : null; 36 if (dataforinp) { 37 const forms = document.querySelectorAll( 38 "form:not(.searchform):not(#commentform):not(.quiz_query_items):not(.subscribe_form)", 39 ); 40 forms && 41 forms.length && 42 forms.forEach(function (elm) { 43 elm.insertAdjacentHTML( 44 "beforeend", 45 `<input type="hidden" class="utm" id="yandex_client_id" name="yandex_client_id" value="${dataforinp}" />`, 46 ); 47 }); 48 } else { 49 setTimeout(check_ya, 1000); 50 } 51} 52document.addEventListener("DOMContentLoaded", function () { 53 check_ga(); 54 check_ya(); 55}); 56 57document.addEventListener("DOMContentLoaded", () => { 58 var url = window.location.search; 59 const urlSearchParams = new URLSearchParams(window.location.search); 60 const params = Object.fromEntries(urlSearchParams.entries()); 61 var utmItems = [ 62 "utm_source", 63 "utm_medium", 64 "utm_term", 65 "utm_content", 66 "utm_campaign", 67 "matchtype", 68 "device", 69 "keyword", 70 "adgroupid", 71 "campaignid", 72 "region", 73 "_openstat", 74 "gclid", 75 "yclid", 76 "fbclid", 77 "wbraid", 78 "gad", 79 "utm_region", 80 "utm_placement", 81 "utm_device", 82 ]; 83 const fieldsForReplace = [ 84 { 85 from: "_openstat", 86 to: "openstat", 87 }, 88 { 89 from: "wbraid", 90 to: "gclid", 91 }, 92 ]; 93 if (params) { 94 for (let [key, value] of Object.entries(params)) { 95 document.cookie = key + "=" + value + "; path=/"; 96 } 97 } 98 99 if (!document.cookie.includes("utm_source")) { 100 const curReferer = document.referrer; 101 let urlHref = document.location.href; 102 urlHref = urlHref.slice(0, 90); 103 let ref; 104 105 if (curReferer.length > 0 && !curReferer.indexOf("eudoc") != -1) { 106 switch (true) { 107 case curReferer.indexOf("google") != -1: 108 document.cookie = "utm_source=google; path=/"; 109 document.cookie = "utm_medium=seo; path=/"; 110 break; 111 case curReferer.indexOf("yandex") != -1: 112 document.cookie = "utm_source=yandex; path=/"; 113 document.cookie = "utm_medium=seo; path=/"; 114 break; 115 case curReferer.indexOf("rambler") != -1: 116 document.cookie = "utm_source=rambler; path=/"; 117 document.cookie = "utm_medium=seo; path=/"; 118 break; 119 case curReferer.indexOf("bing") != -1: 120 document.cookie = "utm_source=bing; path=/"; 121 document.cookie = "utm_medium=seo; path=/"; 122 break; 123 case curReferer.indexOf("mail") != -1: 124 document.cookie = "utm_source=mail; path=/"; 125 document.cookie = "utm_medium=seo; path=/"; 126 break; 127 case curReferer.indexOf("duckduckgo") != -1: 128 document.cookie = "utm_source=duckduckgo; path=/"; 129 document.cookie = "utm_medium=seo; path=/"; 130 break; 131 case curReferer.indexOf("yahoo") != -1: 132 document.cookie = "utm_source=yahoo; path=/"; 133 document.cookie = "utm_medium=seo; path=/"; 134 break; 135 case curReferer.indexOf("chatgpt") != -1: 136 document.cookie = "utm_source=chatgpt; path=/"; 137 document.cookie = "utm_medium=seo; path=/"; 138 break; 139 case curReferer.indexOf("perplexity") != -1: 140 document.cookie = "utm_source=perplexity; path=/"; 141 document.cookie = "utm_medium=seo; path=/"; 142 break; 143 case curReferer.indexOf("centrum") != -1: 144 document.cookie = "utm_source=centrum; path=/"; 145 document.cookie = "utm_medium=seo; path=/"; 146 break; 147 case curReferer.indexOf("http://ya.ru") != -1: 148 document.cookie = "utm_source=http://ya.ru; path=/"; 149 document.cookie = "utm_medium=seo; path=/"; 150 break; 151 case curReferer.indexOf("instagram") != -1: 152 document.cookie = "utm_source=instagram; path=/"; 153 document.cookie = "utm_medium=smm; path=/"; 154 break; 155 case curReferer.indexOf("facebook") != -1: 156 document.cookie = "utm_source=facebook; path=/"; 157 document.cookie = "utm_medium=smm; path=/"; 158 break; 159 case curReferer.indexOf("vk.com") != -1: 160 document.cookie = "utm_source=vk.com; path=/"; 161 document.cookie = "utm_medium=smm; path=/"; 162 break; 163 case curReferer.indexOf("pinterest") != -1: 164 document.cookie = "utm_source=pinterest; path=/"; 165 document.cookie = "utm_medium=smm; path=/"; 166 break; 167 case curReferer.indexOf("linkedin") != -1: 168 document.cookie = "utm_source=linkedin; path=/"; 169 document.cookie = "utm_medium=smm; path=/"; 170 break; 171 case curReferer.indexOf("ok.ru") != -1: 172 document.cookie = "utm_source=ok.ru; path=/"; 173 document.cookie = "utm_medium=smm; path=/"; 174 break; 175 case curReferer.indexOf("youtube") != -1: 176 document.cookie = "utm_source=youtube; path=/"; 177 document.cookie = "utm_medium=video; path=/"; 178 break; 179 case curReferer.indexOf("tiktok") != -1: 180 document.cookie = "utm_source=tiktok; path=/"; 181 document.cookie = "utm_medium=video; path=/"; 182 break; 183 case curReferer.indexOf("rutube") != -1: 184 document.cookie = "utm_source=rutube; path=/"; 185 document.cookie = "utm_medium=video; path=/"; 186 break; 187 default: 188 document.cookie = `utm_source=${curReferer}; path=/`; 189 break; 190 } 191 document.cookie = "utm_campaign=organic; path=/"; 192 document.cookie = `utm_content=${urlHref}; path=/`; 193 } 194 } 195 196 const utmItemsFormatted = utmItems.reduce((ac, item) => { 197 const value = getCookie(item); 198 if (value) { 199 const oldUtmName = item; 200 if (fieldsForReplace.some((f) => f.from === item)) { 201 const newName = fieldsForReplace.find((f) => f.from === item); 202 newName && (item = newName.to); 203 } 204 ac.push({ name: item, oldUtmName, value }); 205 } 206 return ac; 207 }, []); 208 209 forms && 210 forms.length &&
211 forms.forEach(function (form) { 212 if (utmItemsFormatted.length) { 213 for (let utmItem of utmItemsFormatted) { 214 const currentUtmInputs = form.querySelectorAll( 215 'input[name="' + utmItem.name + '"]', 216 ); 217 218 currentUtmInputs && 219 !currentUtmInputs.length && 220 form.insertAdjacentHTML( 221 "beforeend", 222 '<input class="utm" name="' + 223 utmItem.name + 224 '" type="hidden" value="' + 225 utmItem.value + 226 '">', 227 ); 228 } 229 } 230 form.addEventListener("submit", (e) => { 231 e.preventDefault(); 232 if (form.classList.contains("form_only_phone")) { 233 form.name.value = form.phone.value.replace(/\D/g, ""); 234 form.email.value = `${form.phone.value.replace(/\D/g, "")}@noemail.com`; 235 } 236 let data = new FormData(form); 237 fetch("/wp-content/themes/EUdoc/lead.php", { 238 method: "POST", 239 body: data, 240 }) 241 .then((response) => response.json()) 242 .then((resData) => { 243 if (!resData.error) { 244 window.location.href = resData.url; 245 } else { 246 let errorName = resData.errors.name; 247 let errorEmail = resData.errors.email; 248 let errorPhone = resData.errors.phone; 249 250 if (errorName) { 251 form.querySelector("input[name=name]").classList.add("error"); 252 } else { 253 form 254 .querySelector("input[name=name]") 255 .classList.remove("error"); 256 } 257 if (errorPhone) { 258 form.querySelector("input[name=phone]").classList.add("error"); 259 } else { 260 form 261 .querySelector("input[name=phone]") 262 .classList.remove("error"); 263 } 264 if (errorEmail) { 265 form.querySelector("input[name=email]").classList.add("error"); 266 } else { 267 form 268 .querySelector("input[name=email]") 269 .classList.remove("error"); 270 } 271 } 272 }); 273 }); 274 }); 275}); 276 277// popup 278let obratPopUpOverlay = document.querySelector("#popup");
279let checkOpenModal = sessionStorage.getItem("openModal"); 280setTimeout(function show30secModal() { 281 if (!checkOpenModal) { 282 document.location = "#popup"; 283 sessionStorage.setItem("openModal", 300); 284 } 285}, 10500); 286document.addEventListener( 287 "mouseleave", 288 function (e) { 289 if (e.clientY < 0) { 290 let kb = JSON.parse(sessionStorage.getItem("openModal")); 291 if (!(kb > 0 && kb <= 300) || kb === null) { 292 document.location = "#popup"; 293 sessionStorage.setItem("openModal", 300); 294 } 295 } 296 }, 297 false, 298); 299setInterval(function checkOpenModalValue() { 300 let ka = sessionStorage.getItem("openModal"); 301 if (ka > 0) { 302 ka -= 1; 303 } 304 sessionStorage.setItem("openModal", ka); 305}, 1000); 306 307// popup 308 309// input focus 310const inputs = document.querySelectorAll("input , textarea"); 311const label = document.querySelectorAll("input + label , textarea + label"); 312inputs.forEach((input, index) => { 313 input.addEventListener("focus", () => { 314 input.classList.remove("error"); 315 if ( 316 input.nextElementSibling && 317 input.nextElementSibling.tagName === "LABEL" 318 ) { 319 input.nextElementSibling.classList.add("hidden"); 320 } 321 }); 322 input.addEventListener("blur", () => { 323 if ( 324 input.nextElementSibling && 325 input.nextElementSibling.tagName === "LABEL" 326 ) { 327 if (input.value.length == 0) { 328 input.nextElementSibling.classList.remove("hidden"); 329 } 330 } 331 }); 332}); 333// input focus 334// burger 335const burger = document.querySelector(".burger"); 336const header_wrap = document.querySelector(".header_wrap"); 337burger.addEventListener("click", () => { 338 burger.classList.toggle("active"); 339 header_wrap.classList.toggle("active"); 340}); 341// burger 342// наÑвнÑÑÑÑ ÑкÑобаÑÑ 343function checkScrollbar() { 344 if (document.body.scrollWidth > window.innerWidth) { 345 document.body.classList.add("has_scrollbar"); 346 } 347} 348 349window.addEventListener("resize", checkScrollbar); 350checkScrollbar(); 351// наÑвнÑÑÑÑ ÑкÑобаÑÑ 352 353[...document.querySelectorAll(".menu-item-has-children")].forEach((el) => { 354 el.addEventListener("click", (e) => { 355 el.classList.toggle("open"); 356 }); 357}); 358 359function freezeScroll(e) { 360 e.preventDefault(); 361} 362 363if (window.location.hash === "#popup") { 364 window.addEventListener("touchmove", freezeScroll, { passive: false }); 365} 366 367window.addEventListener("hashchange", () => { 368 if (window.location.hash === "#popup") { 369 window.addEventListener("touchmove", freezeScroll, { passive: false }); 370 } else { 371 window.removeEventListener("touchmove", freezeScroll); 372 } 373});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.