1(function (window, document) { 2 let cookiePolicyAccepted = null 3 4 /** 5 * @returns {boolean} 6 */ 7 window.isCookiePolicyAccepted = () => { 8 return cookiePolicyAccepted ??= document.cookie.match(/applyCookiePolicy=[^;]+/g) !== null 9 || document.cookie.match(/MANGO_GUEST_ID=[^;]+/g) !== null 10 || ((location.hostname.match(/mango-office.ru+/g) === null && document.cookie.match(/skip_captcha=1;+/g) !== null)) 11 } 12 13 /** 14 * Callback ÑÑнкÑии пÑи пÑинÑÑии полиÑики ÑабоÑÑ Ñ cookie. 15 * @callback CookiePolicyAcceptedCallback 16 */ 17 18 /** 19 * ÐÑзов callback ÑÑнкÑии пÑи пÑинÑÑии полиÑики ÑабоÑÑ Ñ cookie. 20 * ÐÑли полиÑика Ñже пÑинÑÑа, Ñо callback ÑÑнкÑÐ¸Ñ Ð²ÑзÑваеÑÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾. 21 * @param {CookiePolicyAcceptedCallback} callback 22 */ 23 window.onCookiePolicyAccepted = (callback) => { 24 if (isCookiePolicyAccepted()) { 25 callback() 26 return 27 } 28 29 addEventListener('onCookiePolicyAccepted', () => { 30 callback() 31 }) 32 } 33 34 function initCookieApply() { 35 console.log('initCookieApply'); 36 if (window.isCookiePolicyAccepted()) { 37 return 38 } 39 40 if (!document.querySelector('#applyCookiePolicyModal')) { 41 let popup = document.createElement('div'); 42 popup.classList.add('cookies'); 43 popup.id = 'applyCookiePolicyModal'; 44 popup.innerHTML = '' + 45 ' ÐÑÐ¾Ð´Ð¾Ð»Ð¶Ð°Ñ Ð¿ÑоÑмоÑÑ ÑÑого ÑайÑа, ÐÑ ÑоглаÑаеÑеÑÑ\n' + 46 ' на обÑабоÑÐºÑ Ñайлов cookie в ÑооÑвеÑÑÑвии Ñ\n' + 47 ' <b>ÐолиÑикой иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐÐР«ÐÐÐÐРТÐÐÐÐÐл Ñайлов cookie.</b>\n' + 48 ' <div class="cookies__btns">\n' + 49 ' <a href="/policies/cookie/">УзнаÑÑ Ð¿Ð¾Ð´Ñобнее</a>\n' + 50 ' <button class="button cookies__btn js-apply-cookie-policy">ÐÑинÑÑÑ</button>\n' + 51 ' </div>'; 52 53 document.querySelector('body').append(popup); 54 55 popup.classList.add('cookies--active'); 56 57 window.applyCookiePolicy = function () { 58 popup.querySelector('.cookies__btn').disabled = true 59 let data = {'action': 'applyCookiePolicy'}; 60 fetch('/ajax_new/applyCookiePolicy.php', { 61 method: 'POST', 62 headers: { 63 'Content-Type': 'application/json', 64 'X-Requested-With': 'XMLHttpRequest' 65 }, 66 body: JSON.stringify(data), 67 }).then(function (response) { 68 response.json().then((data) => { 69 popup.querySelector('.cookies__btn').disabled = false 70 cookiePolicyAccepted = data.status === 'success' 71 if (cookiePolicyAccepted) { 72 popup.classList.remove('cookies--active'); 73 dispatchEvent(new CustomEvent('onCookiePolicyAccepted', {bubbles: true})) 74 } 75 }) 76 }).catch(function (err) { 77 console.error(err); 78 popup.querySelector('.cookies__btn').disabled = false 79 }); 80 } 81 82 addListener(); 83 } 84 } 85 86 function addListener() { 87 let plate = document.querySelector('.js-apply-cookie-policy'); 88 if (!plate) { 89 return; 90 } 91 92 plate.addEventListener('click', () => { 93 applyCookiePolicy(); 94 }); 95 } 96 97 if (window.frameCacheVars !== undefined) { 98 BX.addCustomEvent('onFrameDataReceived', () => { 99 initCookieApply(); 100 }); 101 BX.addCustomEvent('onFrameDataRequestFail', () => { 102 initCookieApply(); 103 }); 104 } else { 105 initCookieApply(); 106 } 107})(window, document);
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.