1/* PLUGINS */ 2// graph-tabs 3class GraphTabs { 4 constructor(selector, options) { 5 let defaultOptions = { 6 isChanged: () => {} 7 } 8 this.options = Object.assign(defaultOptions, options); 9 this.selector = selector; 10 this.tabs = document.querySelector(`[data-tabs="${selector}"]`); 11 if (this.tabs) { 12 this.tabList = this.tabs.querySelector('.tabs__nav'); 13 this.tabsBtns = this.tabList.querySelectorAll('.tabs__nav-btn'); 14 this.tabsPanels = this.tabs.querySelectorAll('.tabs__panel'); 15 } else { 16 // console.error('СелекÑÐ¾Ñ data-tabs не ÑÑÑеÑÑвÑеÑ!'); 17 return; 18 } 19 20 this.check(); 21 this.init(); 22 this.events(); 23 } 24 25 check() { 26 if (document.querySelectorAll(`[data-tabs="${this.selector}"]`).length > 1) { 27 console.error('ÐолиÑеÑÑво ÑлеменÑов Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñм data-tabs болÑÑе одного!'); 28 return; 29 } 30 31 if (this.tabsBtns.length !== this.tabsPanels.length) { 32 console.error('ÐолиÑеÑÑво кнопок и ÑлеменÑов Ñабов не ÑовпадаеÑ!'); 33 return; 34 } 35 } 36 37 init() { 38 this.tabList.setAttribute('role', 'tablist'); 39 40 this.tabsBtns.forEach((el, i) => { 41 el.setAttribute('role', 'tab'); 42 el.setAttribute('tabindex', '-1'); 43 el.setAttribute('id', `${this.selector}${i + 1}`); 44 el.classList.remove('tabs__nav-btn--active'); 45 }); 46 47 this.tabsPanels.forEach((el, i) => { 48 el.setAttribute('role', 'tabpanel'); 49 el.setAttribute('tabindex', '-1'); 50 el.setAttribute('aria-labelledby', this.tabsBtns[i].id); 51 el.classList.remove('tabs__panel--active'); 52 }); 53 54 this.tabsBtns[0].classList.add('tabs__nav-btn--active'); 55 this.tabsBtns[0].removeAttribute('tabindex'); 56 this.tabsBtns[0].setAttribute('aria-selected', 'true'); 57 this.tabsPanels[0].classList.add('tabs__panel--active'); 58 } 59 60 events() { 61 this.tabsBtns.forEach((el, i) => { 62 el.addEventListener('click', (e) => { 63 let currentTab = this.tabList.querySelector('[aria-selected]'); 64 65 if (e.currentTarget !== currentTab) { 66 this.switchTabs(e.currentTarget, currentTab); 67 } 68 }); 69 70 el.addEventListener('keydown', (e) => { 71 let index = Array.prototype.indexOf.call(this.tabsBtns, e.currentTarget); 72 73 let dir = null; 74 75 if (e.which === 37) { 76 dir = index - 1; 77 } else if (e.which === 39) { 78 dir = index + 1; 79 } else if (e.which === 40) { 80 dir = 'down'; 81 } else { 82 dir = null; 83 } 84 85 if (dir !== null) { 86 if (dir === 'down') { 87 this.tabsPanels[i].focus(); 88 } else if (this.tabsBtns[dir]) { 89 this.switchTabs(this.tabsBtns[dir], e.currentTarget); 90 } 91 } 92 }); 93 }); 94 } 95 96 switchTabs(newTab, oldTab = this.tabs.querySelector('[aria-selected]')) { 97 newTab.focus(); 98 newTab.removeAttribute('tabindex'); 99 newTab.setAttribute('aria-selected', 'true'); 100 101 oldTab.removeAttribute('aria-selected'); 102 oldTab.setAttribute('tabindex', '-1'); 103 104 let index = Array.prototype.indexOf.call(this.tabsBtns, newTab); 105 let oldIndex = Array.prototype.indexOf.call(this.tabsBtns, oldTab); 106 107 this.tabsPanels[oldIndex].classList.remove('tabs__panel--active'); 108 this.tabsPanels[index].classList.add('tabs__panel--active'); 109 110 this.tabsBtns[oldIndex].classList.remove('tabs__nav-btn--active'); 111 this.tabsBtns[index].classList.add('tabs__nav-btn--active'); 112 113 this.options.isChanged(this); 114 } 115}; 116// lazysizes 117/*! lazysizes - v5.3.2 */ 118 119!function(e){var t=function(u,D,f){"use strict";var k,H;if(function(){var e;var t={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:true,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:true,ricTimeout:0,throttleDelay:125};H=u.lazySizesConfig||u.lazysizesConfig||{};for(e in t){if(!(e in H)){H[e]=t[e]}}}(),!D||!D.getElementsByClassName){return{init:function(){},cfg:H,noSupport:true}}var O=D.documentElement,i=u.HTMLPictureElement,P="addEventListener",$="getAttribute",q=u[P].bind(u),I=u.setTimeout,U=u.requestAnimationFrame||I,o=u.requestIdleCallback,j=/^picture$/i,r=["load","error","lazyincluded","_lazyloaded"],a={},G=Array.prototype.forEach,J=function(e,t){if(!a[t]){a[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")}return a[t].test(e[$]("class")||"")&&a[t]},K=function(e,t){if(!J(e,t)){e.setAttribute("class",(e[$]("class")||"").trim()+" "+t)}},Q=function(e,t){var a;if(a=J(e,t)){e.setAttribute("class",(e[$]("class")||"").replace(a," "))}},V=function(t,a,e){var i=e?P:"removeEventListener";if(e){V(t,a)}r.forEach(function(e){t[i](e,a)})},X=function(e,t,a,i,r){var n=D.createEvent("Event");
vendor: 5,660 bytes, line 119
119if(!a){a={}}a.instance=k;n.initEvent(t,!i,!r);n.detail=a;e.dispatchEvent(n);return n},Y=function(e,t){var a;if(!i&&(a=u.picturefill||H.pf)){if(t&&t.src&&!e[$]("srcset")){e.setAttribute("srcset",t.src)}a({reevaluate:true,elements:[e]})}else if(t&&t.src){e.src=t.src}},Z=function(e,t){return(getComputedStyle(e,null)||{})[t]},s=function(e,t,a){a=a||e.offsetWidth;while(a<H.minSize&&t&&!e._lazysizesWidth){a=t.offsetWidth;t=t.parentNode}return a},ee=function(){var a,i;var t=[];var r=[];var n=t;var s=function(){var e=n;n=t.length?r:t;a=true;i=false;while(e.length){e.shift()()}a=false};var e=function(e,t){if(a&&!t){e.apply(this,arguments)}else{n.push(e);if(!i){i=true;(D.hidden?I:U)(s)}}};e._lsFlush=s;return e}(),te=function(a,e){return e?function(){ee(a)}:function(){var e=this;var t=arguments;ee(function(){a.apply(e,t)})}},ae=function(e){var a;var i=0;var r=H.throttleDelay;var n=H.ricTimeout;var t=function(){a=false;i=f.now();e()};var s=o&&n>49?function(){o(t,{timeout:n});if(n!==H.ricTimeout){n=H.ricTimeout}}:te(function(){I(t)},true);return function(e){var t;if(e=e===true){n=33}if(a){return}a=true;t=r-(f.now()-i);if(t<0){t=0}if(e||t<9){s()}else{I(s,t)}}},ie=function(e){var t,a;var i=99;var r=function(){t=null;e()};var n=function(){var e=f.now()-a;if(e<i){I(n,i-e)}else{(o||r)(r)}};return function(){a=f.now();if(!t){t=I(n,i)}}},e=function(){var v,m,c,h,e;var y,z,g,p,C,b,A;var n=/^img$/i;var d=/^iframe$/i;var E="onscroll"in u&&!/(gle|ing)bot/.test(navigator.userAgent);var _=0;var w=0;var M=0;var N=-1;var L=function(e){M--;if(!e||M<0||!e.target){M=0}};var x=function(e){if(A==null){A=Z(D.body,"visibility")=="hidden"}return A||!(Z(e.parentNode,"visibility")=="hidden"&&Z(e,"visibility")=="hidden")};var W=function(e,t){var a;var i=e;var r=x(e);g-=t;b+=t;p-=t;C+=t;while(r&&(i=i.offsetParent)&&i!=D.body&&i!=O){r=(Z(i,"opacity")||1)>0;if(r&&Z(i,"overflow")!="visible"){a=i.getBoundingClientRect();r=C>a.left&&p<a.right&&b>a.top-1&&g<a.bottom+1}}return r};var t=function(){var e,t,a,i,r,n,s,o,l,u,f,c;var d=k.elements;if((h=H.loadMode)&&M<8&&(e=d.length)){t=0;N++;for(;t<e;t++){if(!d[t]||d[t]._lazyRace){continue}if(!E||k.prematureUnveil&&k.prematureUnveil(d[t])){R(d[t]);continue}if(!(o=d[t][$]("data-expand"))||!(n=o*1)){n=w}if(!u){u=!H.expand||H.expand<1?O.clientHeight>500&&O.clientWidth>500?500:370:H.expand;k._defEx=u;f=u*H.expFactor;c=H.hFac;A=null;if(w<f&&M<1&&N>2&&h>2&&!D.hidden){w=f;N=0}else if(h>1&&N>1&&M<6){w=u}else{w=_}}if(l!==n){y=innerWidth+n*c;z=innerHeight+n;s=n*-1;l=n}a=d[t].getBoundingClientRect();if((b=a.bottom)>=s&&(g=a.top)<=z&&(C=a.right)>=s*c&&(p=a.left)<=y&&(b||C||p||g)&&(H.loadHidden||x(d[t]))&&(m&&M<3&&!o&&(h<3||N<4)||W(d[t],n))){R(d[t]);r=true;if(M>9){break}}else if(!r&&m&&!i&&M<4&&N<4&&h>2&&(v[0]||H.preloadAfterLoad)&&(v[0]||!o&&(b||C||p||g||d[t][$](H.sizesAttr)!="auto"))){i=v[0]||d[t]}}if(i&&!r){R(i)}}};var a=ae(t);var S=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}L(e);K(t,H.loadedClass);Q(t,H.loadingClass);V(t,B);X(t,"lazyloaded")};var i=te(S);var B=function(e){i({target:e.target})};var T=function(e,t){var a=e.getAttribute("data-load-mode")||H.iframeLoadMode;if(a==0){e.contentWindow.location.replace(t)}else if(a==1){e.src=t}};var F=function(e){var t;var a=e[$](H.srcsetAttr);if(t=H.customMedia[e[$]("data-media")||e[$]("media")]){e.setAttribute("media",t)}if(a){e.setAttribute("srcset",a)}};var s=te(function(t,e,a,i,r){var n,s,o,l,u,f;if(!(u=X(t,"lazybeforeunveil",e)).defaultPrevented){if(i){if(a){K(t,H.autosizesClass)}else{t.setAttribute("sizes",i)}}s=t[$](H.srcsetAttr);n=t[$](H.srcAttr);if(r){o=t.parentNode;l=o&&j.test(o.nodeName||"")}f=e.firesLoad||"src"in t&&(s||n||l);u={target:t};K(t,H.loadingClass);if(f){clearTimeout(c);c=I(L,2500);V(t,B,true)}if(l){G.call(o.getElementsByTagName("source"),F)}if(s){t.setAttribute("srcset",s)}else if(n&&!l){if(d.test(t.nodeName)){T(t,n)}else{t.src=n}}if(r&&(s||l)){Y(t,{src:n})}}if(t._lazyRace){delete t._lazyRace}Q(t,H.lazyClass);ee(function(){var e=t.complete&&t.naturalWidth>1;if(!f||e){if(e){K(t,H.fastLoadedClass)}S(u);t._lazyCache=true;I(function(){if("_lazyCache"in t){delete t._lazyCache}},9)}if(t.loading=="lazy"){M--}},true)});var R=function(e){if(e._lazyRace){return}var t;var a=n.test(e.nodeName);var i=a&&(e[$](H.sizesAttr)||e[$]("sizes"));var r=i=="auto";if((r||!m)&&a&&(e[$]("src")||e.srcset)&&!e.complete&&!J(e,H.errorClass)&&J(e,H.lazyClass)){return}t=X(e,"lazyunveilread").detail;if(r){re.updateElem(e,true,e.offsetWidth)}e._lazyRace=true;M++;s(e,t,r,i,a)};var r=ie(function(){H.loadMode=3;a()});var o=function(){if(H.loadMode==3){H.loadMode=2}r()};var l=function(){if(m){return}if(f.now()-e<999){I(l,999);return}m=true;H.loadMode=3;a();q("scroll",o,true)};return{_:function(){e=f.now();k.elements=D.getElementsByClassName(H.lazyClass);v=D.getElementsByClassName(H.lazyClass+" "+H.preloadClass);q("scroll",a,true);q("resize",a,true);q("pageshow",function(e){if(e.persisted){var t=D.querySelectorAll("."+H.loadingClass);if(t.length&&t.forEach){U(function(){t.forEach(function(e){if(e.complete){R(e)}})})}}});if(u.MutationObserver){new MutationObserver(a).observe(O,{childList:true,subtree:true,attributes:true})}else{O[P]("DOMNodeInserted",a,true);O[P]("DOMAttrModified",a,true);setInterval(a,999)}q("hashchange",a,true);["focus","mouseover","click","load","transitionend","animationend"].forEach(function(e){D[P](e,a,true)});if(/d$|^c/.test(D.readyState)){l()}else{q("load",l);D[P]("DOMContentLoaded",a);I(l,2e4)}if(k.elements.length){t();ee._lsFlush()}else{a()}},checkElems:a,unveil:R,_aLSL:o}}(),re=function(){var a;var n=te(function(e,t,a,i){var r,n,s;e._lazysizesWidth=i;i+="px";e.setAttribute("sizes",i);
119if(j.test(t.nodeName||"")){r=t.getElementsByTagName("source");for(n=0,s=r.length;n<s;n++){r[n].setAttribute("sizes",i)}}if(!a.detail.dataAttr){Y(e,a.detail)}});var i=function(e,t,a){var i;var r=e.parentNode;if(r){a=s(e,r,a);i=X(e,"lazybeforesizes",{width:a,dataAttr:!!t});if(!i.defaultPrevented){a=i.detail.width;if(a&&a!==e._lazysizesWidth){n(e,r,i,a)}}}};var e=function(){var e;var t=a.length;if(t){e=0;for(;e<t;e++){i(a[e])}}};var t=ie(e);return{_:function(){a=D.getElementsByClassName(H.autosizesClass);q("resize",t)},checkElems:t,updateElem:i}}(),t=function(){if(!t.i&&D.getElementsByClassName){t.i=true;re._();e._()}};return I(function(){H.init&&t()}),k={cfg:H,autoSizer:re,loader:e,init:t,uP:Y,aC:K,rC:Q,hC:J,fire:X,gW:s,rAF:ee}}(e,e.document,Date);e.lazySizes=t,"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:{});; 120/*! lazysizes - v5.3.2 */ 121 122!function(e,t){var a=function(){t(e.lazySizes),e.removeEventListener("lazyunveilread",a,!0)};t=t.bind(null,e,e.document),"object"==typeof module&&module.exports?t(require("lazysizes")):"function"==typeof define&&define.amd?define(["lazysizes"],t):e.lazySizes?a():e.addEventListener("lazyunveilread",a,!0)}(window,function(e,z,c){"use strict";var g,y,b,f,r,l,s,v,m;e.addEventListener&&(g=c.cfg,y=/\s+/g,b=/\s*\|\s+|\s+\|\s*/g,f=/^(.+?)(?:\s+\[\s*(.+?)\s*\])(?:\s+\[\s*(.+?)\s*\])?$/,r=/^\s*\(*\s*type\s*:\s*(.+?)\s*\)*\s*$/,l=/\(|\)|'/,s={contain:1,cover:1},v=function(e,t){var a;t&&((a=t.match(r))&&a[1]?e.setAttribute("type",a[1]):e.setAttribute("media",g.customMedia[t]||t))},m=function(e){var t,a,r,i,s;e.target._lazybgset&&(a=(t=e.target)._lazybgset,(r=t.currentSrc||t.src)&&(i=l.test(r)?JSON.stringify(r):r,(s=c.fire(a,"bgsetproxy",{src:r,useSrc:i,fullSrc:null})).defaultPrevented||(a.style.backgroundImage=s.detail.fullSrc||"url("+s.detail.useSrc+")")),t._lazybgsetLoading&&(c.fire(a,"_lazyloaded",{},!1,!0),delete t._lazybgsetLoading))},addEventListener("lazybeforeunveil",function(e){var t,a,r,i,s,l,n,d,u,o;!e.defaultPrevented&&(t=e.target.getAttribute("data-bgset"))&&(u=e.target,(o=z.createElement("img")).alt="",o._lazybgsetLoading=!0,e.detail.firesLoad=!0,a=t,r=u,i=o,s=z.createElement("picture"),l=r.getAttribute(g.sizesAttr),n=r.getAttribute("data-ratio"),d=r.getAttribute("data-optimumx"),r._lazybgset&&r._lazybgset.parentNode==r&&r.removeChild(r._lazybgset),Object.defineProperty(i,"_lazybgset",{value:r,writable:!0}),Object.defineProperty(r,"_lazybgset",{value:s,writable:!0}),a=a.replace(y," ").split(b),s.style.display="none",i.className=g.lazyClass,1!=a.length||l||(l="auto"),a.forEach(function(e){var t,a=z.createElement("source");l&&"auto"!=l&&a.setAttribute("sizes",l),(t=e.match(f))?(a.setAttribute(g.srcsetAttr,t[1]),v(a,t[2]),v(a,t[3])):a.setAttribute(g.srcsetAttr,e),s.appendChild(a)}),l&&(i.setAttribute(g.sizesAttr,l),r.removeAttribute(g.sizesAttr),r.removeAttribute("sizes")),d&&i.setAttribute("data-optimumx",d),n&&i.setAttribute("data-ratio",n),s.appendChild(i),r.appendChild(s),setTimeout(function(){c.loader.unveil(o),c.rAF(function(){c.fire(o,"_lazyloaded",{},!0,!0),o.complete&&m({target:o})})}))}),z.addEventListener("load",m,!0),e.addEventListener("lazybeforesizes",function(e){var t,a,r,i;e.detail.instance==c&&e.target._lazybgset&&e.detail.dataAttr&&(t=e.target._lazybgset,r=t,i=(getComputedStyle(r)||{getPropertyValue:function(){}}).getPropertyValue("background-size"),!s[i]&&s[r.style.backgroundSize]&&(i=r.style.backgroundSize),s[a=i]&&(e.target._lazysizesParentFit=a,c.rAF(function(){e.target.setAttribute("data-parent-fit",a),e.target._lazysizesParentFit&&delete e.target._lazysizesParentFit})))},!0),z.documentElement.addEventListener("lazybeforesizes",function(e){var t,a;!e.defaultPrevented&&e.target._lazybgset&&e.detail.instance==c&&(e.detail.width=(t=e.target._lazybgset,a=c.gW(t,t.parentNode),(!t._lazysizesWidth||a>t._lazysizesWidth)&&(t._lazysizesWidth=a),t._lazysizesWidth))}))});; 123// accordion 124// accordion 125const accordions = document.querySelectorAll('.accordion'); 126accordions.forEach(el => { 127 el.addEventListener('click', (e) => { 128 const self = e.currentTarget; 129 const control = self.querySelector('.accordion__control'); 130 const content = self.querySelector('.accordion__content'); 131 132 self.classList.toggle('open'); 133 134 // еÑли оÑкÑÑÑ Ð°ÐºÐºÐ¾Ñдеон 135 if (self.classList.contains('open')) { 136 control.setAttribute('aria-expanded', true); 137 content.setAttribute('aria-hidden', false); 138 content.style.maxHeight = content.scrollHeight + 'px'; 139 } else { 140 control.setAttribute('aria-expanded', false); 141 content.setAttribute('aria-hidden', true); 142 content.style.maxHeight = null; 143 } 144 });
145});; 146/* graph-modal */ 147class GraphModal { 148 constructor(options) { 149 let defaultOptions = { 150 isOpen: () => {}, 151 isClose: () => {}, 152 } 153 this.options = Object.assign(defaultOptions, options); 154 this.modal = document.querySelector('.graph-modal'); 155 this.speed = 300; 156 this.animation = 'fade'; 157 this._reOpen = false; 158 this._nextContainer = false; 159 this.modalContainer = false; 160 this.isOpen = false; 161 this.previousActiveElement = false; 162 this._focusElements = [ 163 'a[href]', 164 'input', 165 'select', 166 'textarea', 167 'button', 168 'iframe', 169 '[contenteditable]', 170 '[tabindex]:not([tabindex^="-"])' 171 ]; 172 this._fixBlocks = document.querySelectorAll('.fix-block'); 173 this.events(); 174 } 175 176 events() { 177 if (this.modal) { 178 document.addEventListener('click', function (e) { 179 const clickedElement = e.target.closest(`[data-graph-path]`); 180 if (clickedElement) { 181 let target = clickedElement.dataset.graphPath; 182 let animation = clickedElement.dataset.graphAnimation; 183 let speed = clickedElement.dataset.graphSpeed; 184 this.animation = animation ? animation : 'fade'; 185 this.speed = speed ? parseInt(speed) : 300; 186 this._nextContainer = document.querySelector(`[data-graph-target="${target}"]`); 187 this.open(); 188 return; 189 } 190 191 if (e.target.closest('.js-modal-close')) { 192 this.close(); 193 return; 194 } 195 }.bind(this)); 196 197 window.addEventListener('keydown', function (e) { 198 if (e.keyCode == 27 && this.isOpen) { 199 this.close(); 200 } 201 202 if (e.which == 9 && this.isOpen) { 203 this.focusCatch(e); 204 return; 205 } 206 }.bind(this)); 207 208 document.addEventListener('click', function (e) { 209 if (e.target.classList.contains('graph-modal') && e.target.classList.contains("is-open")) { 210 this.close(); 211 } 212 }.bind(this)); 213 } 214 215 } 216 217 open(selector) { 218 this.previousActiveElement = document.activeElement; 219 220 if (this.isOpen) { 221 this.reOpen = true; 222 this.close(); 223 return; 224 } 225 226 this.modalContainer = this._nextContainer; 227 228 if (selector) { 229 this.modalContainer = document.querySelector(`[data-graph-target="${selector}"]`); 230 } 231 232 this.modalContainer.scrollTo(0, 0) 233 234 this.modal.style.setProperty('--transition-time', `${this.speed / 1000}s`); 235 this.modal.classList.add('is-open'); 236 237 document.body.style.scrollBehavior = 'auto'; 238 document.documentElement.style.scrollBehavior = 'auto'; 239 240 this.disableScroll(); 241 242 this.modalContainer.classList.add('graph-modal-open'); 243 this.modalContainer.classList.add(this.animation); 244 245 setTimeout(() => { 246 this.options.isOpen(this); 247 this.modalContainer.classList.add('animate-open'); 248 this.isOpen = true; 249 this.focusTrap(); 250 }, this.speed); 251 } 252 253 close() { 254 if (this.modalContainer) { 255 this.modalContainer.classList.remove('animate-open'); 256 this.modalContainer.classList.remove(this.animation); 257 this.modal.classList.remove('is-open'); 258 this.modalContainer.classList.remove('graph-modal-open'); 259 260 this.enableScroll(); 261 262 document.body.style.scrollBehavior = 'auto'; 263 document.documentElement.style.scrollBehavior = 'auto'; 264 265 this.options.isClose(this); 266 this.isOpen = false; 267 this.focusTrap(); 268 269 if (this.reOpen) { 270 this.reOpen = false; 271 this.open(); 272 } 273 } 274 } 275 276 focusCatch(e) { 277 const nodes = this.modalContainer.querySelectorAll(this._focusElements); 278 const nodesArray = Array.prototype.slice.call(nodes); 279 const focusedItemIndex = nodesArray.indexOf(document.activeElement) 280 if (e.shiftKey && focusedItemIndex === 0) { 281 nodesArray[nodesArray.length - 1].focus(); 282 e.preventDefault(); 283 } 284 if (!e.shiftKey && focusedItemIndex === nodesArray.length - 1) { 285 nodesArray[0].focus(); 286 e.preventDefault(); 287 } 288 } 289 290 focusTrap() { 291 const nodes = this.modalContainer.querySelectorAll(this._focusElements); 292 if (this.isOpen) { 293 if (nodes.length) nodes[0].focus(); 294 } else { 295 this.previousActiveElement.focus(); 296 } 297 } 298 299 disableScroll() { 300 let pagePosition = window.scrollY; 301 this.lockPadding(); 302 if ($(window).width() < 900) { 303 document.body.classList.add('disable-scroll'); 304 document.body.dataset.position = pagePosition; 305 document.body.style.top = -pagePosition + 'px'; 306 } 307 } 308 309 enableScroll() { 310 let pagePosition = parseInt(document.body.dataset.position, 10); 311 this.unlockPadding(); 312 document.body.style.top = 'auto'; 313 document.body.classList.remove('disable-scroll'); 314 window.scrollTo({ 315 top: pagePosition, 316 left: 0 317 });
318 document.body.removeAttribute('data-position'); 319 } 320 321 lockPadding() { 322 let paddingOffset = window.innerWidth - document.body.offsetWidth + 'px'; 323 this._fixBlocks.forEach((el) => { 324 el.style.paddingRight = paddingOffset; 325 }); 326 document.body.style.paddingRight = paddingOffset; 327 } 328 329 unlockPadding() { 330 this._fixBlocks.forEach((el) => { 331 el.style.paddingRight = '0px'; 332 }); 333 document.body.style.paddingRight = '0px'; 334 } 335} 336 337// lazymap 338 339if(document.querySelector(".lazy-map-container")) { 340 const mapContainer = document.querySelector(".lazy-map-container"); 341 const spinner = mapContainer.querySelector('.loader'); 342 let mapLoaded = false; 343 344 function initMap() { 345 if (mapLoaded) return; 346 347 ymaps.ready(init); 348 mapLoaded = true; 349 } 350 351 function checkMapVisibility() { 352 const rect = mapContainer.getBoundingClientRect(); 353 const isVisible = ( 354 rect.top <= window.innerHeight && 355 rect.bottom >= 0 356 ); 357 358 if (isVisible && !mapLoaded) { 359 // ÐагÑÑжаем API ЯндекÑ.ÐаÑÑ ÑолÑко когда каÑÑа видна 360 loadScript("https://api-maps.yandex.ru/2.1/?lang=ru_RU", initMap); 361 window.removeEventListener('scroll', checkMapVisibility); 362 } 363 } 364 365 // ÐÑовеÑÑем пÑи загÑÑзке ÑÑÑаниÑÑ 366 checkMapVisibility(); 367 // РпÑи ÑкÑолле 368 window.addEventListener('scroll', checkMapVisibility); 369 370 // ФÑнкÑÐ¸Ñ Ð·Ð°Ð³ÑÑзки ÑкÑипÑа 371 function loadScript(url, callback) { 372 var script = document.createElement("script"); 373 script.onload = function() { 374 callback(); 375 }; 376 script.src = url; 377 document.head.appendChild(script); 378 } 379 380 // ÐниÑиализаÑÐ¸Ñ ÐºÐ°ÑÑÑ 381 function init() { 382 var myMap = new ymaps.Map('map', { 383 center: [55.780975, 37.613861], 384 zoom: 16, 385 controls: [] 386 }); 387 388 var myPlacemark = new ymaps.Placemark([55.780975, 37.613861], { 389 hintContent: 'г. ÐоÑква, Ñл. Щепкина, д.28, оÑÐ¸Ñ 413', 390 balloonContent: 'г. ÐоÑква, Ñл. Щепкина, д.28, оÑÐ¸Ñ 413' 391 }, { 392 iconLayout: 'default#image', 393 iconImageHref: 'images/dist/map.png', 394 iconImageSize: [62, 62], 395 iconImageOffset: [-15, -42] 396 }); 397 398 var zoomControl = new ymaps.control.ZoomControl({ 399 options: { 400 size: "auto", 401 position: { 402 top: 120, 403 left: 15 404 } 405 } 406 }); 407 408 myMap.controls.add(zoomControl); 409 myMap.geoObjects.add(myPlacemark); 410 411 // Ðдем загÑÑзки Ñайлов 412 var layer = myMap.layers.get(0).get(0); 413 waitForTilesLoad(layer).then(function() { 414 spinner.classList.remove('is-active'); 415 }); 416 }; 417 418 function waitForTilesLoad(layer) { 419 return new ymaps.vow.Promise(function(resolve, reject) { 420 var tc = getTileContainer(layer), 421 readyAll = true; 422 tc.tiles.each(function(tile, number) { 423 if (!tile.isReady()) { 424 readyAll = false; 425 } 426 }); 427 if (readyAll) { 428 resolve(); 429 } else { 430 tc.events.once("ready", function() { 431 resolve(); 432 }); 433 } 434 }); 435 } 436 437 function getTileContainer(layer) { 438 for (var k in layer) { 439 if (layer.hasOwnProperty(k)) { 440 if ( 441 layer[k] instanceof ymaps.layer.tileContainer.CanvasContainer || 442 layer[k] instanceof ymaps.layer.tileContainer.DomContainer 443 ) { 444 return layer[k]; 445 } 446 } 447 } 448 return null; 449 } 450} 451 452 453/* smooth scroll */ 454// ÑобиÑаем вÑе ÑкоÑÑ; ÑÑÑанавливаем вÑÐµÐ¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñии и колиÑеÑÑво кадÑов 455const anchors = [].slice.call(document.querySelectorAll('a[href*="#"]')), 456animationTime = 300, 457framesCount = 20;
458anchors.forEach(function(item) { 459// ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑкоÑÑ Ð¿ÑиÑваиваем обÑабоÑÑик ÑобÑÑÐ¸Ñ 460item.addEventListener('click', function(e) { 461// ÑбиÑаем ÑÑандаÑÑное поведение 462e.preventDefault(); 463// Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑкоÑÑ Ð±ÐµÑем ÑооÑвеÑÑÑвÑÑÑий ÐµÐ¼Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸ опÑеделÑем его кооÑдинаÑÑ Y 464let coordY = document.querySelector(item.getAttribute('href')).getBoundingClientRect().top + window.pageYOffset; 465// запÑÑкаем инÑеÑвал, в коÑоÑом 466let scroller = setInterval(function() { 467// ÑÑиÑаем на ÑколÑко ÑкÑоллиÑÑ Ð·Ð° 1 ÑÐ°ÐºÑ 468let scrollBy = coordY / framesCount; 469// еÑли к-во пикÑелей Ð´Ð»Ñ ÑкÑолла за 1 ÑÐ°ÐºÑ Ð±Ð¾Ð»ÑÑе ÑаÑÑÑоÑÐ½Ð¸Ñ Ð´Ð¾ ÑлеменÑа 470// и дно ÑÑÑаниÑÑ Ð½Ðµ доÑÑигнÑÑо 471if(scrollBy > window.pageYOffset - coordY && window.innerHeight + window.pageYOffset < document.body.offsetHeight) { 472 // Ñо ÑкÑоллим на к-во пикÑелей, коÑоÑое ÑооÑвеÑÑÑвÑÐµÑ Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑакÑÑ 473 window.scrollBy(0, scrollBy); 474 } else { 475 // инаÑе добиÑаемÑÑ Ð´Ð¾ ÑлеменÑа и вÑÑ Ð¾Ð´Ð¸Ð¼ из инÑеÑвала 476 window.scrollTo(0, coordY); 477 clearInterval(scroller); 478 } 479 // вÑÐµÐ¼Ñ Ð¸Ð½ÑеÑвала ÑавнÑеÑÑÑ ÑаÑÑÐ½Ð¾Ð¼Ñ Ð¾Ñ Ð²Ñемени анимаÑии и к-ва кадÑов 480 }, animationTime / framesCount); 481 }); 482});; 483/* alt ref */ 484function altRef($link) 485{ 486 window.open($link); 487}; 488 489 490/* SECTIONS */ 491// not jQuery 492document.addEventListener('DOMContentLoaded', () => { 493 /* ---------------------- MENU ---------------------------- */ 494 /* ---------------------- MENU ---------------------------- */ 495if(document.querySelector('.header__toggle-burger')){ 496 let burgerIcon = document.querySelector('.header__toggle-burger'); 497 let closeIcon = document.querySelector('.header__toggle-close'); 498 let menu = document.querySelector('.header__panel'); 499 let scrollObject = document.querySelector('.header__panel'); 500 burgerIcon.addEventListener('click', function(){ 501 closeIcon.classList.remove('hidden'); 502 burgerIcon.classList.add('hidden'); 503 menu.classList.add('header__panel--open'); 504 // scrollLock.disablePageScroll(scrollObject); 505 }) 506 closeIcon.addEventListener('click', function(){ 507 closeIcon.classList.add('hidden'); 508 burgerIcon.classList.remove('hidden'); 509 menu.classList.remove('header__panel--open'); 510 // scrollLock.enablePageScroll(scrollObject); 511 }) 512 // dropdown 513 let dropdowns = document.querySelectorAll('.nav__dropdown'); 514 dropdowns.forEach(dropdown => { 515 document.addEventListener('click', (e) => { 516 if(!e.composedPath().includes(dropdown)){ 517 dropdown.classList.remove('nav__dropdown--open'); 518 } 519 }); 520 dropdown.addEventListener('click', function(){ 521 dropdown.classList.toggle('nav__dropdown--open'); 522 }); 523 }); 524} 525 /* ---------------------- TELEGRAM POPUP ---------------------------- */ 526 function getCookie(name) { 527 let cookie_arr = document.cookie.split('; '); 528 let cookie_obj = {}; 529 530 for (let i=0; i<cookie_arr.length; i++) { 531 let nv = cookie_arr[i].split('='); 532 cookie_obj[nv[0]] = nv[1]; 533 } 534 535 return cookie_obj[name]; 536} 537 538let overlay_div = document.getElementById('tg-alert'); 539 540if ( getCookie('hide_popup') == 'yes' ) { 541 overlay_div.style.display='none'; 542} 543 544// ÐÑи нажаÑии на ÐºÐ½Ð¾Ð¿ÐºÑ ÑÑавим cookie, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿ÑеÑаÑÑ Ð¿Ð¾ÐºÐ°Ð· 545// модалÑного окна 546document.getElementById('hide_popup') 547.addEventListener('click', function() { 548 // СÑавим cookie на минÑÑÑ. 549 var date = new Date(new Date().getTime() + 60 * 1000 * 43200);
550 document.cookie = "hide_popup=yes; path=/; expires=" + date.toUTCString(); 551 552 // и ÑÑÐ°Ð·Ñ Ð¶Ðµ ÑкÑÑваем окно 553 overlay_div.style.display='none'; 554});; 555 /* ---------------------- PROT TABS ---------------------------- */ 556 const tabs1 = new GraphTabs('tab', { 557 isChanged: (tabs) => { 558 console.log(tabs); 559 } 560});; 561 /* ---------------------- SERVICES ---------------------------- */ 562 let serviceTabsSelectHeader = document.querySelector('.service__tabs-select-header'); 563let serviceTabsSelectBody = document.querySelector('.service__tabs-select-body'); 564let serviceTabsSelectDesc = document.querySelector('.service__tabs-select-desc'); 565let thisTabClicked; 566 567 568serviceTabsSelectHeader.addEventListener('click', function(){ 569 serviceTabsSelectBody.classList.toggle('service__tabs-select-body_active'); 570 serviceTabsSelectHeader.classList.toggle('service__tabs-select-header_active'); 571}); 572 573 574const tabsService = new GraphTabs('service-tab', { 575 isChanged: (tabs) => { 576 clickedTabContent = document.querySelector('.service .tabs__nav-btn--active').innerHTML; 577 clickedTabDescription = document.querySelector('.service .tabs__panel--active .service__tabs-item-title').innerHTML; 578 serviceTabsSelectHeader.innerHTML = clickedTabContent; 579 serviceTabsSelectDesc.innerHTML = clickedTabDescription; 580 581 serviceTabsSelectBody.classList.remove('service__tabs-select-body_active'); 582 serviceTabsSelectHeader.classList.remove('service__tabs-select-header_active'); 583 584 if (document.documentElement.clientWidth < 768) { 585 document.querySelector('.service').scrollIntoView(); 586 } 587 } 588}); 589 590 591 592 593if (document.documentElement.clientWidth < 768) { 594 const sAccordions = document.querySelectorAll('.service__item'); 595 sAccordions.forEach(el => { 596 el.addEventListener('click', (e) => { 597 const self = e.currentTarget; 598 const control = self.querySelector('.service__item-top'); 599 const content = self.querySelector('.service__item-content'); 600 601 self.classList.toggle('service__item_open'); 602 603 // еÑли оÑкÑÑÑ Ð°ÐºÐºÐ¾Ñдеон 604 if (self.classList.contains('service__item_open')) { 605 control.setAttribute('aria-expanded', true); 606 content.setAttribute('aria-hidden', false); 607 content.style.maxHeight = content.scrollHeight + 'px'; 608 } else { 609 control.setAttribute('aria-expanded', false); 610 content.setAttribute('aria-hidden', true); 611 content.style.maxHeight = null; 612 } 613 }); 614 }); 615 616 617 var timeout_id = setTimeout(function(){ 618 let serviceTabsSelect = document.querySelector('.service__tabs-select'); 619 serviceTabsSelect.classList.remove('service__tabs-select_start'); 620 let serviceSection = document.querySelector('.service'); 621 let serviceSectionOffset = serviceSection.offsetTop; 622 let serviceBox = document.querySelectorAll('.service__box'); 623 let posTop; 624 625 document.addEventListener('scroll', function(){ 626 posTop = window.pageYOffset; 627 if(posTop >= (serviceSectionOffset)){ 628 serviceTabsSelect.classList.add('service__tabs-select_fixed'); 629 for(let i = 0; serviceBox.length > i; i++){ 630 serviceBox[i].classList.add('service__box_open'); 631 } 632 } 633 else if(posTop <= (serviceSectionOffset)) { 634 serviceTabsSelect.classList.remove('service__tabs-select_fixed'); 635 for(let i = 0; serviceBox.length > i; i++){ 636 serviceBox[i].classList.remove('service__box_open'); 637 } 638 } 639 }); 640 }, 2000); 641 642}; 643 /* ROLL NETWORK */ 644 // roll-network 645let icoRollNetwork = document.querySelector('.ico-roll-network'); 646let blockRoll = document.querySelector('.block-roll'); 647let messageList = document.querySelector('.message-list'); 648let chatChatIcon = document.querySelector('.chat-chat-icon'); 649 650icoRollNetwork.addEventListener('click', function () { 651 blockRoll.classList.toggle("open-is"); 652 return false; 653}); 654messageList.addEventListener('click', function () { 655 blockRoll.classList.remove("open-is"); 656 return false; 657}); 658chatChatIcon.addEventListener('click', function () { 659 blockRoll.classList.remove("open-is"); 660 return false; 661}); 662 663let rollNetwork = document.querySelector('.roll-network'); 664function getScrollPercentage() { 665 let scrollTop = window.pageYOffset || document.documentElement.scrollTop; 666 let windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; 667 let documentHeight = Math.max( 668 document.body.scrollHeight, document.body.offsetHeight, document.body.clientHeight, 669 document.documentElement.scrollHeight, document.documentElement.offsetHeight, document.documentElement.clientHeight 670 ); 671 return ((scrollTop / (documentHeight - windowHeight)) * 100); 672} 673document.addEventListener("DOMContentLoaded", function() { 674 window.onscroll = function() { 675 if(getScrollPercentage() > 97){ 676 rollNetwork.classList.add('roll-network_scrollbottom'); 677 } 678 if(getScrollPercentage() < 97){ 679 rollNetwork.classList.remove('roll-network_scrollbottom'); 680 } 681 }; 682});; 683 /* */ 684 const pricenew2Tabs = new GraphTabs('pricenew2-tabs', { 685 isChanged: (tabs) => { 686 console.log(tabs); 687 } 688});; 689 690 691 692 let $modalScroll = document.querySelector('.graph-modal'); 693 const modal = new GraphModal({ 694 isOpen: (modal) => { 695 // scrollLock.disablePageScroll($modalScroll); 696 }, 697 isClose: () => { 698 // scrollLock.enablePageScroll($modalScroll); 699 } 700 }); 701}); 702// jQuery 703$(document).ready(function() { 704 /* SCRIPTS */
705 // refcookies 706 /** 707 * Minified by jsDelivr using Terser v3.14.1. 708 * Original file: /npm/[email protected]/src/js.cookie.js 709 * 710 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files 711 */ 712!function(e){var n;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var t=window.Cookies,o=window.Cookies=e();o.noConflict=function(){return window.Cookies=t,o}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var t=arguments[e];for(var o in t)n[o]=t[o]}return n}function n(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function t(o){function r(){}function i(n,t,i){if("undefined"!=typeof document){"number"==typeof(i=e({path:"/"},r.defaults,i)).expires&&(i.expires=new Date(1*new Date+864e5*i.expires)),i.expires=i.expires?i.expires.toUTCString():"";try{var c=JSON.stringify(t);/^[\{\[]/.test(c)&&(t=c)}catch(e){}t=o.write?o.write(t,n):encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var f="";for(var u in i)i[u]&&(f+="; "+u,!0!==i[u]&&(f+="="+i[u].split(";")[0]));return document.cookie=n+"="+t+f}}function c(e,t){if("undefined"!=typeof document){for(var r={},i=document.cookie?document.cookie.split("; "):[],c=0;c<i.length;c++){var f=i[c].split("="),u=f.slice(1).join("=");t||'"'!==u.charAt(0)||(u=u.slice(1,-1));try{var a=n(f[0]);if(u=(o.read||o)(u,a)||n(u),t)try{u=JSON.parse(u)}catch(e){}if(r[a]=u,e===a)break}catch(e){}}return e?r[e]:r}}return r.set=i,r.get=function(e){return c(e,!1)},r.getJSON=function(e){return c(e,!0)},r.remove=function(n,t){i(n,"",e(t,{expires:-1}))},r.defaults={},r.withConverter=t,r}(function(){})}); 713//# sourceMappingURL=/sm/b0ce608ffc029736e9ac80a8dd6a7db2da8e1d45d2dcfc92043deb2214aa30d8.map; 714 //ÐолÑÑаем GET 715 function getGet(name) { 716 var s = window.location.search; 717 s = s.match(new RegExp(name + '=([^&=]+)')); 718 return s ? s[1] : false; 719 } 720 if (getGet('ref')) { 721 var ref = getGet('ref'); 722 Cookies.set('ref', ref, { 723 domain: '.botfaqtor.ru', 724 expires: 30 725 }); 726 } 727 var cookiesRef = Cookies.get('ref'); 728 $(".header__connect").click(function () { 729 if (cookiesRef) { 730 location.href = 'https://my.botfaqtor.ru/signin?service=yandex-clickfraud'; 731 //location.href='https://my.botfaqtor.ru/signin?service=yandex-clickfraud&ref='+cookiesRef; 732 } else { 733 location.href = 'https://my.botfaqtor.ru/signin?service=yandex-clickfraud'; 734 } 735 return false; 736 }); 737 // РезÑлÑÑÐ°Ñ Ð·Ð°Ð¼ÐµÑа иÑÑоÑников ÑÑаÑика 738 $.getJSON("json/top-direct-platforms.json", function (data) { 739 $.each(data.Items, function (i, Items) { 740 var i = i+1; 741 742 var HumanPercent = Items.HumanPercent; 743 var UntargetedPercent = Items.UntargetedPercent; 744 var BotPercent = Items.BotPercent; 745 var FraudPercent = Items.FraudPercent; 746 747 748 $(".jsplatforms").append('<tr>' 749 + '<td>'+i+'</td>' 750 + '<td><div class="lable"><label class="checkbox favicon"><img alt=""src="https://s2.googleusercontent.com/s2/favicons?domain_url=' + Items.UtmKey + '"></label></div><label class="text-labl">' + Items.UtmKey + '</label></td>' 751 + '<td class="text-center">' + Math.round(HumanPercent) + '%</td>' 752 + '<td class="text-center">' + Math.round(UntargetedPercent) + '%</td>' 753 + '<td class="text-center">' + Math.round(FraudPercent) + '%</td>' 754 + '<td class="text-center">' + Math.round(BotPercent) + '%</td>' 755 + '</tr>'); 756 }); 757 }); 758 759 $(".calculator input").keyup(function () { 760 $(this).val(thousandSeparator($(this).val().replace(/[^0-9]/g, ""))); 761 var yandex = $("[name='yandex']").val().replace(/\s/g, ''); 762 var google = $("[name='google']").val().replace(/\s/g, ''); 763 var vk = $("[name='vk']").val().replace(/\s/g, ''); 764 var priceyandex = $("[name='priceyandex']").val().replace(/\s/g, ''); 765 var pricegoogle = $("[name='pricegoogle']").val().replace(/\s/g, ''); 766 var pricevk = $("[name='pricevk']").val().replace(/\s/g, ''); 767 //var theme = $(".theme option").prop('selected', true).change().attr('data'); 768 var theme = ""; 769 770 $( ".calculator select option:selected" ).each(function() { 771 theme += $( this ).attr('data') + " "; 772 });
773 774 775 776 if(priceyandex == ''){ 777 if(theme == undefined){ 778 resultyandex = (yandex / 100 * theme)*50; 779 }else{ 780 resultyandex = (yandex / 100 * 25)*50; 781 } 782 }else{ 783 if(theme == undefined){ 784 resultyandex = (yandex / 100 * theme)*priceyandex; 785 }else{ 786 resultyandex = (yandex / 100 * 25)*priceyandex; 787 } 788 } 789 790 if(pricegoogle == ''){ 791 if(theme == undefined){ 792 resultgoogle = (google / 100 * theme)*50; 793 }else{ 794 resultgoogle = (google / 100 * 25)*50; 795 } 796 }else{ 797 if(theme == undefined){ 798 resultgoogle = (google / 100 * theme)*pricegoogle; 799 }else{ 800 resultgoogle = (google / 100 * 25)*pricegoogle; 801 } 802 } 803 804 if(pricevk == ''){ 805 if(theme == undefined){ 806 resultvk = (vk / 100 * theme)*50; 807 }else{ 808 resultvk = (vk / 100 * 25)*50; 809 } 810 }else{ 811 if(theme == undefined){ 812 resultvk = (vk / 100 * theme)*pricevk; 813 }else{ 814 resultvk = (vk / 100 * 25)*pricevk; 815 } 816 } 817 818 819 820 resultSUM = resultyandex+resultgoogle+resultvk; 821 var sumyear = resultSUM*12 822 823 824 if(sumyear || resultSUM){ 825 $('.year span').text(thousandSeparator(Math.ceil(sumyear))); 826 $('.month span').text(thousandSeparator(Math.ceil(resultSUM))); 827 }else{ 828 $('.year span').text('0'); 829 $('.month span').text('0'); 830 } 831 832}); 833 834 835 836 837$(function () { 838 var $calc = $('.calc__wrapper'); // еÑли Ñ Ð²Ð°Ñ Ð¾Ð±ÑÑÑка .calculator â замениÑе ÑелекÑÐ¾Ñ 839 840 function thousandSeparator(str) { 841 var parts = (str + '').split('.'), 842 main = parts[0], 843 len = main.length, 844 output = '', 845 i = len - 1; 846 847 while (i >= 0) { 848 output = main.charAt(i) + output; 849 if ((len - i) % 3 === 0 && i > 0) { 850 output = ' ' + output; 851 } 852 --i; 853 } 854 855 if (parts.length > 1) { 856 output += '.' + parts[1]; 857 } 858 859 return output; 860 } 861 862 function toNumber(value) { 863 return parseFloat(String(value).replace(/\s/g, '').replace(',', '.')) || 0; 864 } 865 866 function recalc() { 867 var yandex = toNumber($("[name='yandex']", $calc).val()); 868 var priceyandex = toNumber($("[name='priceyandex']", $calc).val()); 869 870 var theme = parseFloat( 871 $("select[name='theme'] option:selected", $calc).attr('data') 872 ) || 0; 873 874 if (!theme) { 875 $('.year span', $calc).text('0'); 876 $('.month span', $calc).text('0'); 877 return; 878 } 879 880 // ÐÑли Ñена клика не заполнена â беÑÑм 50, как бÑло в ÑÑаÑом ÑкÑипÑе 881 var clickPrice = priceyandex || 50; 882 883 var resultyandex = (yandex / 100 * theme) * clickPrice; 884 885 var resultSUM = resultyandex; 886 var sumyear = resultSUM * 12; 887 888 if (sumyear || resultSUM) { 889 $('.year span', $calc).text(thousandSeparator(Math.ceil(sumyear))); 890 $('.month span', $calc).text(thousandSeparator(Math.ceil(resultSUM))); 891 } else { 892 $('.year span', $calc).text('0'); 893 $('.month span', $calc).text('0'); 894 } 895 } 896 897 $calc.on( 898 'change input', 899 "select[name='theme'], input[name='yandex'], input[name='priceyandex']", 900 recalc 901 ); 902 903 recalc(); 904}); 905 906 /* BFQUIZ */ 907 const fbTabs = new GraphTabs('bfquiz__fb-tab', { 908 isChanged: (tabs) => { 909 console.log(tabs); 910 } 911}); 912 913setTimeout(function() { 914 $bfquizOpenButton = document.querySelector('.bfquiz-open-button'); 915 $bfquizOpenButton.click(); 916}, 15000); 917 918/* MAILER */ 919var getUrlParameter = function getUrlParameter(sParam) { 920 var sPageURL = window.location.search.substring(1), 921 sURLVariables = sPageURL.split('&'), 922 sParameterName, 923 i; 924 925 for (i = 0; i < sURLVariables.length; i++) { 926 sParameterName = sURLVariables[i].split('='); 927 928 if (sParameterName[0] === sParam) { 929 return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); 930 } 931 } 932}; 933function getFormData($form) { 934 var config = {}; 935 $form.serializeArray().map(function (item) { 936 if (config[item.name]) { 937 if (typeof (config[item.name]) === "string") { 938 config[item.name] = [config[item.name]]; 939 } 940 config[item.name].push(item.value); 941 } else { 942 config[item.name] = item.value; 943 } 944 }); 945 var Id = getUrlParameter("id");
946 config["Id"] = Id; 947 var Id = getUrlParameter("h"); 948 config["Href"] = Id; 949 var Id = getUrlParameter("r"); 950 config["Ref"] = Id; 951 return config; 952} 953$('#bfContactsForm').submit(function (e) { 954 $form = $(this); 955 var formData = JSON.stringify(getFormData($form)); 956 formData = JSON.parse(formData); 957 formData.Phone = '+' + formData.Phone.replace(/\D/g,''); 958 959 ym(49731991, 'getClientID', function(clientID) { 960 formData.YandexClientId = clientID; 961 formData = JSON.stringify(formData); 962 $.ajax({ 963 type: 'POST', 964 url: 'https://server.botfaqtor.ru/api/Account/quiz-connection-request', 965 contentType: 'application/json; charset=utf-8', 966 cache: false, 967 data: formData, 968 success: function () { 969 window.location.replace("https://my.botfaqtor.ru/yandex-clickfraud-v3/ty.html"); 970 }, 971 statusCode: { 972 400: function(){ 973 alert('ÐолÑзоваÑÐµÐ»Ñ Ñ Ñаким email Ñже ÑÑÑеÑÑвÑеÑ'); 974 } 975 } 976 }); 977 }); 978 e.preventDefault(); 979}); 980$('#bfContactsForm2').submit(function (e) { 981 $form = $(this); 982 var formData = JSON.stringify(getFormData($form)); 983 formData = JSON.parse(formData); 984 formData.Phone = '+' + formData.Phone.replace(/\D/g,''); 985 986 ym(49731991, 'getClientID', function(clientID) { 987 formData.YandexClientId = clientID; 988 formData = JSON.stringify(formData); 989 $.ajax({
990 type: 'POST', 991 url: 'https://server.botfaqtor.ru/api/Account/quiz-connection-request', 992 contentType: 'application/json; charset=utf-8', 993 cache: false, 994 data: formData, 995 success: function () { 996 window.location.replace("https://my.botfaqtor.ru/yandex-clickfraud-v3/ty.html"); 997 }, 998 statusCode: { 999 400: function(){ 1000 alert('ÐолÑзоваÑÐµÐ»Ñ Ñ Ñаким email Ñже ÑÑÑеÑÑвÑеÑ'); 1001 } 1002 } 1003 }); 1004 }); 1005 e.preventDefault(); 1006}); 1007$('#bfContactsForm3').submit(function (e) { 1008 $form = $(this); 1009 var formData = JSON.stringify(getFormData($form)); 1010 formData = JSON.parse(formData); 1011 formData.Phone = '+' + formData.Phone.replace(/\D/g,''); 1012 1013 ym(49731991, 'getClientID', function(clientID) { 1014 formData.YandexClientId = clientID; 1015 formData = JSON.stringify(formData); 1016 $.ajax({
1017 type: 'POST', 1018 url: 'https://server.botfaqtor.ru/api/Account/quiz-connection-request', 1019 contentType: 'application/json; charset=utf-8', 1020 cache: false, 1021 data: formData, 1022 success: function () { 1023 window.location.replace("https://my.botfaqtor.ru/yandex-clickfraud-v3/ty.html"); 1024 }, 1025 statusCode: { 1026 400: function(){ 1027 alert('ÐолÑзоваÑÐµÐ»Ñ Ñ Ñаким email Ñже ÑÑÑеÑÑвÑеÑ'); 1028 } 1029 } 1030 }); 1031 }); 1032 e.preventDefault(); 1033});; 1034});
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.