1function check_webp_feature(feature, callback) { 2 var kTestImages = { 3 lossy: "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA", 4 lossless: "UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==", 5 alpha: "UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==", 6 animation: "UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA" 7 }; 8 var img = new Image(); 9 img.onload = function () { 10 var result = (img.width > 0) && (img.height > 0); 11 callback(feature, result); 12 }; 13 img.onerror = function () { 14 callback(feature, false); 15 }; 16 img.src = "data:image/webp;base64," + kTestImages[feature]; 17} 18 19function getScreen(webp = true){ 20let reload = false; 21let root = document.getElementsByTagName('html'); 22let s = window.location.search; 23let url; 24 if ((root[0].clientWidth>=640)&&(root[0].className.indexOf('touch', 0)>-1)) { 25 if(s===''){ 26 url = window.location.href +'?screen=wide'; 27 } else { 28 url = window.location.href.replace(s,s+'&screen=wide'); 29 } 30 reload = true; 31 } 32 33 if ((root[0].clientWidth<640)&&(root[0].className.indexOf('noTouch', 0)>-1)) { 34 if(s===''){ 35 url = window.location.href +'?screen=mobile'; 36 } else { 37 url = window.location.href.replace(s,s+'&screen=mobile'); 38 } 39 reload=true; 40 } 41 42 if(reload) { 43 window.location.href = url; 44 } 45} 46 47var rem = function rem() { 48 let html = document.getElementsByTagName('html')[0]; 49 50 return function () { 51 return parseInt(window.getComputedStyle(html)['fontSize']); 52 } 53 }(); 54 55// This function will convert pixel to rem 56function toRem(length) { 57 return (parseInt(length) / rem()); 58} 59 60function insertCSS(sname){ 61 if (document.createStyleSheet){ 62 document.createStyleSheet(sname); 63 } else { 64 $("head").append($('<link rel="stylesheet" href="'+sname+'" type="text/css" media="screen">')); 65 } 66} 67 68function insertScript(sname, path,callback){ 69 path = path || false; 70 var d = document, 71 w = window, 72 n = d.getElementsByTagName("script")[0], 73 s = d.createElement("script"), 74 f = function () { n.parentNode.insertBefore(s, n); }; 75 s.type = "text/javascript"; 76 s.async = true; 77 s.onload = callback; 78 if(path){s.src = (d.location.protocol == "https:" ? "https:" : "http:") + sname;} 79 else {s.src=sname;} 80 if (w.opera == "[object Opera]") { 81 d.addEventListener("DOMContentLoaded", f, false); 82 } else { f(); } 83} 84 85check_webp_feature('lossy',function (feature, isSupported) { 86 getScreen(isSupported); 87 } 88); 89 90$(document).ready(function(){ 91 92$('html').removeClass('noJS'); 93$('a[rel~="external"]').attr('target','_blank'); 94 95$(window).resize(()=>{check_webp_feature('lossy',function (feature, isSupported) { 96 getScreen(isSupported); 97 } 98);}); 99 100//ÐагÑÑзка инпÑÑмаÑки 101if($('[type="tel"], [type="email"]').length>0){ 102insertScript('//cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/5.0.3/jquery.inputmask.min.js',true,()=>{ 103 $('[type="tel"]').inputmask({"mask": "+7 (999) 999-99-99"}); 104 $('[type="email"]').inputmask({ 105 mask: "*{1,20}[.*{1,20}][.*{1,20}][.*{1,20}]@*{1,20}[.*{2,6}][.*{1,2}]", 106 greedy: false, 107 onBeforePaste: function (pastedValue, opts) { 108 pastedValue = pastedValue.toLowerCase(); 109 return pastedValue.replace("mailto:", ""); 110 }, 111 definitions: { 112 '*': { 113 validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]", 114 casing: "lower" 115 } 116 } 117 }); 118}); 119} 120 121$(window).on('scroll',function(){ 122 var top = $('html, body').scrollTop()||$(window).scrollTop(); 123 var method = top>10?'addClass':'removeClass'; 124 $('body')[method]('scroll'); 125}); 126 127$(document).on('click','#blog .list [data-target]',function(){ 128 let lim = $('#indexBody').length>0?3:0; 129 $.ajax({ 130 url:'/ajax.json', 131 data:'action=blog&parent='+$(this).data('target')+'&limit='+lim, 132 type: 'post', 133 success: (res) => { 134 $(this).siblings().removeClass('active'); 135 $(this).addClass('active'); 136 $('#blog .data').html(res); 137 } 138 }); 139}); 140 141$(document).on('click','a',function(e){ 142 var hash = $(this).attr('href').split("#")[1]; 143 console.log(hash); 144 if(typeof(hash) !== 'undefined' && hash!==''){ 145 e.preventDefault(); 146 $([document.documentElement, document.body]).animate({ 147 scrollTop: $("#"+hash).offset().top-3*rem() 148 }, 500); 149 150 } 151}); 152 153$(document).on('click','#faq dt',function(){ 154 $(this).toggleClass('active'); 155}); 156 157$(document).on('click','.menuopen',function(){ 158 $('#mainMenu').toggleClass('active'); 159}); 160 161$(document).on('click','#blog .blogLinks a',function(e){ 162 e.preventDefault(); 163 e.stopPropagation(); 164 $.ajax({ 165 url:$(this).attr('href'), 166 type:'post', 167 success:(res)=>{ 168 $($(this).data('replace')).html(res); 169 $(this).siblings().removeClass('active'); 170 $(this).addClass('active'); 171 } 172 }); 173}); 174 175function ajaxWrapper(obj, res){ 176 switch(res.type){ 177 case 'text': alert(res.message); 178 break; 179 case 'popup': 180 $('#popUpWrapper').remove(); 181 $('body').append('<div id="popUpWrapper" class="'+obj.data('pwc')+'"></div>'); 182 $('#popUpWrapper').html(res.content); 183 break; 184 case 'replace': 185 $(obj.data('replace')).replaceWith(res.content); 186 break; 187 case 'add': 188 if(obj.parent().hasClass('viewable')){ 189 obj.parent().addClass('view'); 190 } 191 obj.parent().append(res.content); 192 break; 193 case 'values': 194 for (let key in res.values){ 195 if(res.values[key].data){ 196 $(res.values[key].selector).data(res.values[key].data.key,res.values[key].data.value); 197 } 198 if(res.values[key].value){ 199 $(res.values[key].selector).html(res.values[key].value); 200 } 201 if(res.values[key].class){ 202 $(res.values[key].selector).addClass(res.values[key].class); 203 } 204 if(res.values[key].remClass){ 205 $(res.values[key].selector).removeClass(res.values[key].remClass); 206 } 207 } 208 if(res.popup){ 209 $('#popUpWrapper').remove(); 210 $('body').append('<div id="popUpWrapper" class="'+res.popupClass+'"></div>'); 211 $('#popUpWrapper').html(res.popup); 212 } 213 break; 214 case 'reload': 215 window.location.reload(); 216 break; 217 case 'load': 218 window.location.href = res.url; 219 break; 220 } 221 if(res.script){ 222 eval(res.script); 223 } 224} 225 226$(document).on('click','.ajax',function(e){ 227 e.preventDefault(); 228 e.stopPropagation(); 229 let data=[]; 230 if($(this).data('value')){ 231 data.push('value='+$(this).data('value')); 232 } 233 $.ajax({ 234 url:$(this).attr('href'), 235 type:'post', 236 data:data.join('&'), 237 success:(res)=>{ajaxWrapper($(this),res)} 238 }); 239}); 240 241$(document).on('submit','.ajaxForm',function(e){ 242 e.preventDefault(); 243 e.stopPropagation(); 244 let obj = $(this); 245 let data = obj.serialize(); 246 grecaptcha.ready(function() { 247 grecaptcha.execute('6LffwbgUAAAAAAwEDHCwsn-GhWeSMRjZ2nn0KMch', {action: 'feedback'}).then(function(token) { 248 $('body').append('<div id="waiter"></div>'); 249 $.ajax({ 250 url:obj.attr('action'), 251 data:data+'&token='+token, 252 type:'post', 253 success:(res)=>{ajaxWrapper(obj,res);$('#waiter').remove();} 254 }); 255 }); 256 }); 257}); 258 259$(document).on('click','#popUpWrapper, #popUpWrapper .close',(e) => {$('#popUpWrapper').remove();}); 260$(document).on('click','#popUpWrapper > *',(e) => {e.stopPropagation()}); 261 262$(document).on('change','#contactForm .changer input',function(){ 263 let id = $(this).data('target'); 264 $(id).siblings('.hided').removeClass('active'); 265 $(id).addClass('active'); 266}); 267 268$(document).on('click','.galList .image',function(){ 269 $(this).siblings().removeClass('active'); 270 $(this).addClass('active'); 271 $('.galImage .img').css('background-image','url("'+$(this).data('image')+'")');
272 let num = $('.galList .active').index('.galList .image')+1; 273 let counter = $('<span class="number"></span>'); 274 counter.html('ФоÑо '+num+' из '+$('.galList .image').length); 275 $('.galImage .img').html($(this).find('.title').html()); 276 $('.galImage .img').append(counter); 277}); 278 279$(document).on('click','#galList .prev',function(){ 280 $('.galList').animate({scrollLeft: ($('.galList').scrollLeft()-200)+'px'},300); 281}); 282 283$(document).on('click','#galList .next',function(){ 284 $('.galList').animate({scrollLeft: ($('.galList').scrollLeft()+200)+'px'},300); 285}); 286 287$(document).on('click','.galImage .prev',function(){ 288 let num = $('.galList .active').index('.galList .image'); 289 if(num===0){num = $('.galList .image').length-1;}else{num--;} 290 let itm = $('.galList .image').eq(num); 291 itm.siblings().removeClass('active'); 292 itm.addClass('active'); 293 $('.galImage .img').css('background-image','url("'+itm.data('image')+'")'); 294 let counter = $('<span class="number"></span>'); 295 counter.html('ФоÑо '+(num+1)+' из '+$('.galList .image').length); 296 $('.galImage .img').html(itm.find('.title').html()); 297 $('.galImage .img').append(counter); 298}); 299 300$(document).on('click','.galImage .next',function(){ 301 let num = $('.galList .active').index('.galList .image'); 302 if(num==$('.galList .image').length-1){num = 0;}else{num++;} 303 let itm = $('.galList .image').eq(num); 304 itm.siblings().removeClass('active'); 305 itm.addClass('active'); 306 $('.galImage .img').css('background-image','url("'+itm.data('image')+'")'); 307 let counter = $('<span class="number"></span>'); 308 counter.html('ФоÑо '+(num+1)+' из '+$('.galList .image').length); 309 $('.galImage .img').html(itm.find('.title').html()); 310 $('.galImage .img').append(counter); 311}); 312 313//$('.galList').animate({scrollLeft: ($('.galList').scrollLeft()+200)+'px'},300); 314 315}); 316
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.