1if (AbcwwwMaskPhone === undefined) { 2 var AbcwwwMaskPhone = new function () { 3 this.isNum = function (value) { 4 return /\d/.test(value); 5 }; 6 this.maskEditValue = function (input, pos) { 7 let posReturn = pos; 8 let posReturnChange = true; 9 if (pos > 0) { 10 pos--; 11 } 12 13 let valueNew = ''; 14 for (let posValue = 0; posValue < pos; posValue++) { 15 valueNew += input.value.charAt(posValue); 16 } 17 18 let posMask = pos; 19 for (let posValue = pos; posValue < input.value.length; posValue++) { 20 if (posMask < input.mask.length) { 21 let simbolValue = input.value.charAt(posValue); 22 let simbolMask = input.mask.charAt(posMask); 23 24 if ( 25 simbolMask == simbolValue 26 || (simbolMask == '9' && AbcwwwMaskPhone.isNum(simbolValue)) 27 ) { 28 posReturnChange = false; 29 valueNew += simbolValue; 30 posMask++; 31 } else if ( 32 simbolMask == '9' 33 && !AbcwwwMaskPhone.isNum(simbolValue) 34 ) { 35 posReturnChange = false; 36 } else if ( 37 simbolMask != '9' 38 && AbcwwwMaskPhone.isNum(simbolValue) 39 ) { 40 valueNew += simbolMask; 41 posMask++; 42 posValue--; 43 if (posReturnChange) { 44 posReturn++; 45 } 46 if ( 47 input.valueOld.length > posReturn 48 && input.valueOld.charAt(posReturn - 1) == simbolMask 49 ) { 50 while (posReturn > 1 && !AbcwwwMaskPhone.isNum(input.valueOld.charAt(posReturn - 1))) { 51 posReturn--; 52 } 53 } 54 } else if ( 55 simbolMask != '9' 56 && !AbcwwwMaskPhone.isNum(simbolValue) 57 ) { 58 valueNew += simbolMask; 59 posMask++; 60 } 61 } 62 } 63 input.value = valueNew; 64 input.valueOld = valueNew; 65 66 let valueNotFull = ''; 67 for (let posMask = 0; posMask < input.mask.length; posMask++) { 68 let simbolMask = input.mask.charAt(posMask); 69 if (simbolMask == '9') { 70 if (input.value.length <= posMask) { 71 input.value = valueNotFull; 72 input.valueOld = valueNotFull; 73 posReturn = input.value.length; 74 } 75 break; 76 } 77 valueNotFull += simbolMask; 78 } 79 80 return posReturn; 81 }; 82 this.cursorPosition = function (input) { 83 let posMinimum = 0; 84 for (let posMask = 0; posMask < input.mask.length; posMask++) { 85 let simbolMask = input.mask.charAt(posMask); 86 if ( 87 simbolMask == '9' 88 || input.value.length <= posMask 89 ) { 90 posMinimum = posMask; 91 break; 92 } 93 } 94 if ( 95 input.selectionStart < posMinimum 96 || input.selectionEnd < posMinimum 97 ) { 98 input.selectionStart = posMinimum; 99 input.selectionEnd = posMinimum; 100 } 101 } 102 this.maskDefault = '+7 (999) 999-99-99'; 103 104 this.init = function (input, mask, placeholder) { 105 placeholder = placeholder === undefined || placeholder === true ? true : false; 106 if (!input) { 107 return false;
108 } 109 if (!input.classList.contains('is-masked')) { 110 input.mask = mask || AbcwwwMaskPhone.maskDefault; 111 input.valueOld = input.value; 112 AbcwwwMaskPhone.maskEditValue(input, 0); 113 if (input.value.length != input.mask.length) { 114 input.value = ''; 115 } 116 if (placeholder) { 117 input.setAttribute('placeholder', input.mask); 118 } 119 120 input.classList.add('is-masked'); 121 122 input.addEventListener('input', function () { 123 let posReturn = AbcwwwMaskPhone.maskEditValue(this, this.selectionStart); 124 this.selectionStart = posReturn; 125 this.selectionEnd = posReturn; 126 }); 127 input.addEventListener('focus', function () { 128 if (this.value.length <= 0) { 129 this.value = this.valueOld; 130 this.selectionStart = this.value.length; 131 this.selectionEnd = this.value.length; 132 } 133 }); 134 input.addEventListener('blur', function () { 135 if (this.value.length != this.mask.length) { 136 this.value = ''; 137 } 138 }); 139 input.addEventListener('keydown', function () { 140 let obInput = this; 141 setTimeout(function () { 142 AbcwwwMaskPhone.cursorPosition(obInput); 143 }, 10); 144 }); 145 input.addEventListener('keyup', function () { 146 AbcwwwMaskPhone.cursorPosition(this); 147 }); 148 input.addEventListener('click', function () { 149 AbcwwwMaskPhone.cursorPosition(this); 150 }); 151 } 152 }; 153 }; 154} 155 156$(document).ready(function () { 157 new isvek.Bvi({ 158 fontSize: 24, 159 theme: 'black' 160 }); 161 162 let jsTel = $('.jsTel'); 163 jsTel.each(function () { 164 AbcwwwMaskPhone.init(this, '+7 (999) 999-99-99', false); 165 }); 166 167 168 var thumbSlider = new Swiper(".small-slider", { 169 spaceBetween: 27, 170 slidesPerView: 4, 171 slidesPerGroup: 1, 172 speed: 900, 173 watchSlidesProgress: true, 174 navigation: { 175 nextEl: '.swiper-button-next', 176 prevEl: '.swiper-button-prev' 177 }, 178 breakpoints: { 179 180 0: { 181 spaceBetween: 27, 182 slidesPerView: 3, 183 }, 184 1281: { 185 spaceBetween: 27, 186 slidesPerView: 4, 187 }, 188 } 189 }); 190 var bigSlider = new Swiper(".big-slider", { 191 spaceBetween: 20, 192 slidesPerView: 1, 193 slidesPerGroup: 1, 194 speed: 900, 195 pagination: { 196 el: ".swiper-pagination", 197 clickable: true, 198 }, 199 thumbs: { 200 swiper: thumbSlider, 201 }, 202 }); 203 new Swiper(".main-slider", { 204 spaceBetween: 0, 205 slidesPerView: 1, 206 slidesPerGroup: 1, 207 speed: 800, 208 effect: 'fade', 209 //autoplay: { 210 // delay: 5000, 211 // disableOnInteraction: false, 212 //}, 213 pagination: { 214 el: ".swiper-pagination", 215 clickable: true, 216 }, 217 }); 218 219 new Swiper(".section-slider", { 220 spaceBetween: 25, 221 slidesPerView: 4, 222 slidesPerGroup: 1, 223 speed: 800, 224 navigation: { 225 nextEl: '.swiper-button-next', 226 prevEl: '.swiper-button-prev' 227 }, 228 breakpoints: { 229 0: { 230 spaceBetween: 15, 231 slidesPerView: 1.3, 232 }, 233 576: { 234 spaceBetween: 15, 235 slidesPerView: 2.3, 236 }, 237 769: { 238 spaceBetween: 25, 239 slidesPerView: 2, 240 }, 241 1281: { 242 spaceBetween: 25, 243 slidesPerView: 4, 244 }, 245 }, 246 }); 247 new Swiper(".form-slider", { 248 spaceBetween: 24, 249 slidesPerView: 10, 250 slidesPerGroup: 1,
251 speed: 800, 252 navigation: { 253 nextEl: '.swiper-button-next', 254 prevEl: '.swiper-button-prev' 255 }, 256 breakpoints: { 257 0: { 258 spaceBetween: 15, 259 slidesPerView: 2, 260 }, 261 576: { 262 spaceBetween: 24, 263 slidesPerView: 3, 264 }, 265 769: { 266 spaceBetween: 24, 267 slidesPerView: 6, 268 }, 269 1025: { 270 spaceBetween: 24, 271 slidesPerView: 8, 272 }, 273 1621: { 274 spaceBetween: 24, 275 slidesPerView: 10, 276 }, 277 }, 278 }); 279 const singleSliders = []; 280 document.querySelectorAll('.single-slider').forEach((sliderEl, index) => { 281 singleSliders[index] = new Swiper(sliderEl, { 282 spaceBetween: 20, 283 slidesPerView: 1, 284 slidesPerGroup: 1, 285 speed: 800, 286 effect: 'fade', 287 observer: true, 288 pagination: { 289 el: sliderEl.querySelector('.swiper-pagination'), 290 clickable: true, 291 }, 292 on: { 293 init: function () { 294 updateNavButtons(this); 295 }, 296 slideChange: function () { 297 updateNavButtons(this); 298 } 299 } 300 }); 301 }); 302 function updateNavButtons(swiper) { 303 const prevBtn = swiper.el.querySelector('.jsSinglePrev'); 304 const nextBtn = swiper.el.querySelector('.jsSingleNext'); 305 if (prevBtn) { 306 swiper.isBeginning ? prevBtn.classList.add('swiper-button-disabled') : prevBtn.classList.remove('swiper-button-disabled'); 307 } 308 if (nextBtn) { 309 swiper.isEnd ? nextBtn.classList.add('swiper-button-disabled') : nextBtn.classList.remove('swiper-button-disabled'); 310 } 311 } 312 $(document).on('click', '.jsSinglePrev', function () { 313 const sliderEl = $(this).closest('.single-slider')[0]; 314 const swiperInstance = singleSliders.find(swiper => swiper && swiper.el === sliderEl); 315 if (swiperInstance && !swiperInstance.isBeginning) { 316 swiperInstance.slidePrev(); 317 } 318 }); 319 $(document).on('click', '.jsSingleNext', function () { 320 const sliderEl = $(this).closest('.single-slider')[0]; 321 const swiperInstance = singleSliders.find(swiper => swiper && swiper.el === sliderEl); 322 if (swiperInstance && !swiperInstance.isEnd) { 323 swiperInstance.slideNext(); 324 } 325 }); 326 $(document).on('click', '.jsOpenFrame', function (e) { 327 let objButton = $(this); 328 e.preventDefault(); 329 $.fancybox.open({ 330 src: objButton.data('url'), 331 type: 'iframe', 332 opts: { 333 touch: false, 334 } 335 }); 336 }); 337 $(document).on('click', '.jsOpenSearch', () => { 338 $('.jsOpenSearch, .jsHeaderSearch').toggleClass('active') 339 $('.jsOpenCatalog, .jsHeaderCatalog').removeClass('active') 340 }) 341 $(document).on('click', '.jsTogglerHead', function () { 342 var togglerParent = $(this).closest('.jsTogglerParent') 343 $(this).toggleClass('active'); 344 $(this).next('.jsTogglerBody').slideToggle(); 345 if (togglerParent.length) { 346 togglerParent.toggleClass('active') 347 } 348 }) 349 $(document).on('click', '.jsOpenCatalog', function () { 350 $('.jsOpenCatalog, .jsHeaderCatalog').toggleClass('active'); 351 $('.jsOpenSearch, .jsHeaderSearch').removeClass('active') 352 if ($('.jsHeaderCatalog').hasClass('active') && window.innerWidth <= 1024) { 353 $('body').css('overflow', 'hidden'); 354 } else { 355 $('body').css('overflow', ''); 356 } 357 }) 358 $(document).on('click', '.jsTabHead', function () { 359 $(this).addClass('active').siblings().removeClass('active'); 360 let jqParent = $(this).closest('.jsTabParent'); 361 jqParent.find('.jsTabBody').eq($(this).index()).addClass('active').siblings().removeClass('active'); 362 }) 363 364 $(document).on('click', '.jsProfileBtn', function (e) { 365 e.stopPropagation(); 366 $('.jsProfileBtnParent, .jsProfileBody').toggleClass('active'); 367 $('.jsOpenSearch, .jsHeaderSearch').removeClass('active') 368 }) 369 370 $(document).on('click', function () { 371 $('.jsProfileBtnParent, .jsProfileBody').removeClass('active'); 372 }); 373 374 $(document).on('click', '.jsCounterBtn', function (e) { 375 e.stopPropagation(); 376 $('.jsCounterBtnParent, .jsCounterBody').toggleClass('active'); 377 $('.jsOpenSearch, .jsHeaderSearch').removeClass('active') 378 }) 379 380 $(document).on('click', function () { 381 $('.jsCounterBtnParent, .jsCounterBody').removeClass('active'); 382 }); 383 384 $(document).on('click', '.jsPaymentBtn', function (e) { 385 e.stopPropagation(); 386 $('.jsPaymentBtnParent, .jsPaymentBody').toggleClass('active'); 387 $('.jsOpenSearch, .jsHeaderSearch').removeClass('active') 388 }) 389 390 $(document).on('click', function () { 391 $('.jsPaymentBtnParent, .jsPaymentBody').removeClass('active'); 392 }); 393 394 $(document).on('click', '.jsRequestBtn', function (e) { 395 e.stopPropagation(); 396 $('.jsRequestBtnParent, .jsPRequestBody').toggleClass('active'); 397 $('.jsOpenSearch, .jsHeaderSearch').removeClass('active') 398 }) 399 400 $(document).on('click', function () { 401 $('.jsRequestBtnParent, .jsRequestBody').removeClass('active'); 402 }); 403 404 405 $('table:not([class])').each(function () { 406 $(this).find('td').each(function () { 407 $(this).attr('data-cell', $(this).closest('table').find('th').eq($(this).index()).text()) 408 }) 409 }) 410 411 function fixHeader() { 412 if (window.scrollY > $('.header').height()) { 413 $('.header').addClass('sticky') 414 $('main').addClass('offset') 415 } else { 416 $('.header').removeClass('sticky') 417 $('main').removeClass('offset') 418 } 419 } 420 421 $(window).on('scroll', function () { 422 fixHeader() 423 window.scrollY > 350 ? $('.jsScrollUp').addClass('active') : $('.jsScrollUp').removeClass('active') 424 }) 425 fixHeader(); 426 427 $(document).on('click', '.jsScrollUp', function () { 428 $('html, body').animate({ 429 scrollTop: 0 430 }, 800); 431 }) 432 433 $(document).on('input', '.jsRestrictInput', function () { 434 const maxLength = parseInt($(this).attr('data-max')); 435 if (this.value.length > maxLength) { 436 this.value = this.value.slice(0, maxLength); 437 } 438 }) 439 $(document).on('click', '.jsAddFields', function (e) { 440 e.preventDefault(); 441 var $fieldsParent = $(this).closest('.jsFieldsParent'); 442 var maxSliderNum = 1; 443 var maxLayoutNum = 1; 444 var maxTestimonyNum = 1; 445 var maxJSObjectNum = 1; 446 var maxDocTehNum = 1; 447 448 449 $('.jsFieldsParent').each(function () { 450 $(this).find('input[type="radio"][name^="form-slider-"]').each(function () { 451 var name = $(this).attr('name'); 452 var num = parseInt(name.replace('form-slider-', '')); 453 if (num > maxSliderNum) maxSliderNum = num; 454 }); 455 $(this).find('input[type="radio"][name^="choose-layout-"]').each(function () { 456 var name = $(this).attr('name'); 457 var num = parseInt(name.replace('choose-layout-', '')); 458 if (num > maxLayoutNum) maxLayoutNum = num; 459 }); 460 $(this).find('input[name^="user_testimony_object_number_"]').each(function () { 461 var name = $(this).attr('name'); 462 var num = parseInt(name.replace('user_testimony_object_number_', '')); 463 if (num > maxTestimonyNum) maxTestimonyNum = num; 464 }); 465 $(this).find('input[name*="user_account"]').each(function () { 466 maxJSObjectNum++; 467 }); 468 $(this).find('input[name^="file_doc_teh_"]').each(function () { 469 var name = $(this).attr('name'); 470 var num = parseInt(name.replace('file_doc_teh_', '')); 471 if (num > maxDocTehNum) maxDocTehNum = num; 472 }); 473 }); 474 475 var $clone = $fieldsParent.clone(); 476 var $clone_id = $clone.attr('data-object-id'); 477 $clone.attr('data-object-id',(Number($clone_id) + 1)); 478 $fieldsParent.addClass('jsFieldsOlder'); 479 $clone.find('input').each(function () { 480 if ($(this).attr('type') === 'radio' || $(this).attr('type') === 'checkbox') { 481 $(this).prop('checked', false); 482 } else { 483 $(this).val(''); 484 } 485 }); 486 487 $clone.find('input[name^="user_testimony_object_number_"').attr('name', 'user_testimony_object_number_' + (maxTestimonyNum + 1)); 488 $clone.find('input[name^="user_testimony_factory_number_"').attr('name', 'user_testimony_factory_number_' + (maxTestimonyNum + 1)); 489 $clone.find('input[name^="user_testimony_counter_prev_"').attr('name', 'user_testimony_counter_prev_' + (maxTestimonyNum + 1)); 490 $clone.find('input[name^="user_testimony_counter_current_"').attr('name', 'user_testimony_counter_current_' + (maxTestimonyNum + 1)); 491 492 $clone.find('input[name*="user_account"]').attr('name', 'user_object[' + (maxJSObjectNum) + '][user_account]'); 493 $clone.find('input[name*="user_locality"]').attr('name', 'user_object[' + (maxJSObjectNum) + '][user_locality]'); 494 $clone.find('input[name*="user_street"]').attr('name', 'user_object[' + (maxJSObjectNum) + '][user_street]'); 495 $clone.find('input[name*="user_house_number"]').attr('name', 'user_object[' + (maxJSObjectNum) + '][user_house_number]'); 496 $clone.find('input[name*="user_room_number"]').attr('name', 'user_object[' + (maxJSObjectNum) + '][user_room_number]'); 497 $clone.find('input.js-object-day').attr('name', 'user_object[' + (maxJSObjectNum) + '][day]'); 498 $clone.find('input.js-object-time').attr('name', 'user_object[' + (maxJSObjectNum) + '][time]'); 499 500 $clone.find('label[for^="file_doc_teh_"').attr('for', 'file_doc_teh_' + (maxDocTehNum + 1)); 501 $clone.find('input[name^="file_doc_teh_"').attr('name', 'file_doc_teh_' + (maxDocTehNum + 1)).attr('id', 'file_doc_teh_' + (maxDocTehNum + 1)); 502 503 $clone.find('input[type="radio"][name^="form-slider-"]').attr('name', 'form-slider-' + (maxSliderNum + 1)); 504 $clone.find('input[type="radio"][name^="choose-layout-"]').attr('name', 'choose-layout-' + (maxLayoutNum + 1)); 505 $clone.find('.jsFileName').text('Файл не вÑбÑан'); 506 $clone.find('.jsFileInput').val(''); 507 $fieldsParent.after($clone); 508 $(this).closest('.jsAddFieldsParent').remove(); 509 510 setTimeout(function () { 511 applyValidationToFields(); 512 var newSlider = $clone.find('.form-slider.swiper')[0]; 513 if (newSlider) { 514 new Swiper(newSlider, { 515 spaceBetween: 24, 516 slidesPerView: 10, 517 slidesPerGroup: 1,
518 speed: 800, 519 navigation: { 520 nextEl: $clone.find('.swiper-button-next')[0], 521 prevEl: $clone.find('.swiper-button-prev')[0] 522 }, 523 breakpoints: { 524 0: { 525 spaceBetween: 15, 526 slidesPerView: 2, 527 }, 528 576: { 529 spaceBetween: 24, 530 slidesPerView: 3, 531 }, 532 769: { 533 spaceBetween: 24, 534 slidesPerView: 6, 535 }, 536 1025: { 537 spaceBetween: 24, 538 slidesPerView: 8, 539 }, 540 1621: { 541 spaceBetween: 24, 542 slidesPerView: 10, 543 }, 544 }, 545 }); 546 } 547 if(typeof getDatesAndTimes === "function") { 548 getDatesAndTimes(maxJSObjectNum); 549 } 550 }, 50); 551 }); 552 553 $(document).on('click', '.jsAddFields_v2', function (e) { 554 e.preventDefault(); 555 var $fieldsParent = $(this).closest('.jsFieldsParent'); 556 var maxJSObjectNum = 1; 557 558 var $clone = $fieldsParent.clone(); 559 var $clone_id = $clone.attr('data-object-id'); 560 $clone.attr('data-object-id',(Number($clone_id) + 1)); 561 $fieldsParent.addClass('jsFieldsOlder'); 562 $clone.find('input').each(function () { 563 if ($(this).attr('type') === 'radio' || $(this).attr('type') === 'checkbox') { 564 $(this).prop('checked', false); 565 } else { 566 $(this).val(''); 567 } 568 }); 569 570 $('.jsFieldsParent').each(function () { 571 $(this).find('input[name*="user_account"]').each(function () { 572 maxJSObjectNum++; 573 }); 574 }); 575 576 $clone.find('input[name*="user_locality"]').attr('name', 'user_object[' + (Number($clone_id) + 1) + '][user_locality]'); 577 $clone.find('input[name*="model_uirg"]').attr('name', 'user_object[' + (Number($clone_id) + 1) + '][model_uirg]'); 578 $clone.find('input[name*="num_uirg"]').attr('name', 'user_object[' + (Number($clone_id) + 1) + '][num_uirg]'); 579 $clone.find('input[name*="meter_uirg"]').attr('name', 'user_object[' + (Number($clone_id) + 1) + '][meter_uirg]'); 580 $clone.find('input[name*="user_transfer"]').attr('name', 'user_object[' + (Number($clone_id) + 1) + '][user_transfer]').val('<br>'); 581 $clone.find('input[name*="need_off_meter][1]"]').attr('name', 'user_object[' + (Number($clone_id) + 1) + '][need_off_meter][1]'); 582 $clone.find('input[name*="need_off_meter][2]"]').attr('name', 'user_object[' + (Number($clone_id) + 1) + '][need_off_meter][2]'); 583 584 $fieldsParent.after($clone); 585 $(this).closest('.jsAddFieldsParent').remove(); 586 }); 587 588 $(document).on('click', '.jsDropBox', function (e) { 589 e.stopPropagation(); 590 $(this).toggleClass('active'); 591 }) 592 593 $(document).on('click', function (e) { 594 e.stopPropagation(); 595 $('.jsDropBox').removeClass('active') 596 }) 597 598 $(document).on('click', '.jsFormDrop', function (e) { 599 e.stopPropagation(); 600 $(this).closest('.jsDropBox').find('input').val($(this).text()) 601 $('.jsDropBox').removeClass('active') 602 }) 603 604 605 $(document).on('change', '.jsFileInput', function () { 606 var $fileInput = $(this); 607 var $fileBlock = $fileInput.closest('.jsFormFile'); 608 var $fileNameDisplay = $fileBlock.find('.jsFileName'); 609 var fileName = $fileInput.val().split('\\').pop(); 610 fileName ? $fileNameDisplay.text(fileName) : $fileNameDisplay.text('Файл не вÑбÑан'); 611 }); 612 613 614 $('.jsFormFile').each(function () { 615 var $fileInput = $(this).find('.jsFileInput'); 616 var $fileNameDisplay = $(this).find('.jsFileName'); 617 var fileName = $fileInput.val().split('\\').pop(); 618 $fileNameDisplay.text(fileName ? fileName : 'Файл не вÑбÑан'); 619 }); 620 621 622 623 $.fancybox.defaults.backFocus = false;
624 $.fancybox.defaults.autoFocus = false; 625 new AirDatepicker('#dateInput', { 626 multipleDatesSeparator: ' - ', 627 }); 628 $(document).on('click', '.jsOpenModal', function (e) { 629 let objButton = $(this); 630 e.preventDefault(); 631 $.fancybox.open({ 632 src: objButton.data('url'), 633 type: 'ajax', 634 opts: { 635 touch: false, 636 afterShow: function (instance, current) { 637 let objSource = current.$content; 638 let jsTel = objSource.find('.jsTel') 639 let modalFile = objSource.find('.jsFormFile') 640 jsTel.each(function () { 641 AbcwwwMaskPhone.init(this, '+7 (999) 999-99-99'); 642 }); 643 modalFile.each(function () { 644 var $fileInput = $(this).find('.jsFileInput'); 645 var $fileNameDisplay = $(this).find('.jsFileName'); 646 var fileName = $fileInput.val().split('\\').pop(); 647 $fileNameDisplay.text(fileName ? fileName : 'Файл не вÑбÑан'); 648 }); 649 new AirDatepicker('#modalCalendar', { 650 multipleDatesSeparator: ' - ', 651 container: objSource.closest('.fancybox__container')[0] || document.body, 652 autoClose: true, 653 }); 654 } 655 } 656 }); 657 }); 658 659 // ÐодалÑное окно Ñо ÑлайдеÑом 660 setTimeout(function () { 661 $.ajax({ 662 url: '/ajax/links-modal.php', 663 type: 'POST', 664 dataType: 'json', 665 success: function(response) { 666 if (response.HTML && response.HTML.trim().length > 0 && response.SHOW_HTML) { 667 console.log(response.COOKIES); 668 669 for (const [key, value] of Object.entries(response.COOKIES)) { 670 if (!getCookie(key)) { 671 setCookie(key, Date.now(), {secure: true, 'max-age': 3600}); 672 } 673 } 674 675 $.fancybox.open({ 676 src: response.HTML, 677 type: 'html', 678 opts: { 679 touch: false, 680 afterShow: function (instance, current) { 681 new Swiper(".modal-slider", { 682 spaceBetween: 24, 683 slidesPerView: 1, 684 slidesPerGroup: 1, 685 speed: 800, 686 effect: 'fade', 687 autoHeight: true, 688 autoplay: { 689 delay: 5000, 690 disableOnInteraction: false, 691 }, 692 pagination: { 693 el: ".swiper-pagination", 694 clickable: true, 695 }, 696 }); 697 } 698 } 699 }); 700 } 701 }, 702 error: function(xhr, status, error) { 703 console.log('ÐÑибка пÑи загÑÑзке Ñайла:', error); 704 } 705 }); 706 }, 2000); 707 708 $(document).on('click', '.jsAnchorLink', function () { 709 let anchor = $(this).attr('href'); 710 $('html, body').animate({ 711 scrollTop: $(anchor).offset().top - 100 712 }, 600); 713 return false; 714 }); 715 716 $(".section-togglers__body .more-btn button.btn").on("click", function() { 717 var docsItems = $(this).parents(".section-togglers__body").find(".docs__item_hidden"); 718 docsItems.each(function(index, element) { 719 $(element).removeClass("docs__item_hidden"); 720 }); 721 $(this).hide(); 722 }); 723 724 $(document).on("click", ".more-btn-photogallery span.btn", function() { 725 const curCount = $(this).attr("data-cur-count"); 726 const curIblockID = $(this).attr("data-cur-iblock"); 727 const curYear = $(this).attr("data-cur-year"); 728 729 $.ajax({ 730 url: "/local/ajax/photoGalleryList.php", 731 method: "POST", 732 dataType: "JSON", 733 data: { curCount: (curCount * 2), iblockID: curIblockID, year: curYear }, 734 success: function(data) { 735 if(data.html) { 736 $(".gallery .container").html(data.html); 737 } 738 739 $(".more-btn-photogallery span.btn").attr("data-cur-count", data.cnt); 740 $(".more-btn-photogallery span.btn").attr("data-cur-year", data.curYear); 741 } 742 }); 743 }); 744 745 $(document).on("click", ".more-btn-photogallery-element span.btn", function() { 746 const curCount = $(this).attr("data-cur-count"); 747 const curIblockID = $(this).attr("data-cur-iblock"); 748 const curSectionID = $(this).attr("data-cur-section"); 749 750 $.ajax({ 751 url: "/local/ajax/photoGalleryElement.php", 752 method: "POST", 753 dataType: "JSON", 754 data: { curCount: (curCount * 2), iblockID: curIblockID, sectionID: curSectionID }, 755 success: function(data) { 756 if(data.html) { 757 $(".gallery .container").html(data.html); 758 } 759 760 $(".more-btn-photogallery span.btn").attr("data-cur-count", data.cnt); 761 } 762 }); 763 }); 764 765 $(document).on("click", ".more-btn-videogallery-element span.btn", function() { 766 const curCount = $(this).attr("data-cur-count"); 767 const curIblockID = $(this).attr("data-cur-iblock"); 768 const curYear = $(this).attr("data-cur-year"); 769 770 $.ajax({ 771 url: "/local/ajax/videoGalleryElement.php", 772 method: "POST", 773 dataType: "JSON", 774 data: { curCount: (curCount * 2), iblockID: curIblockID, year: curYear }, 775 success: function(data) { 776 if(data.html) { 777 $(".gallery .container").html(data.html); 778 } 779 780 $(".more-btn-videogallery span.btn").attr("data-cur-count", data.cnt); 781 } 782 }); 783 }); 784 785 $(document).on("click", "#more-btn-news", function() { 786 const curCount = $(this).attr("data-cur-count"); 787 const curIblockID = $(this).attr("data-cur-iblock"); 788 const curYear = $(this).attr("data-cur-year"); 789 790 $.ajax({ 791 url: "/local/ajax/newsList.php", 792 method: "POST", 793 dataType: "JSON", 794 data: { curCount: (curCount * 2), iblockID: curIblockID, year: curYear }, 795 success: function(data) { 796 if(data.html) { 797 $(".about-page .container").html(data.html); 798 } 799 800 $("#more-btn-news").attr("data-cur-count", data.cnt); 801 } 802 }); 803 }); 804 805 var send = false;
806 $('#confirmForm a.update_code').on('click',function(e) { 807 if(!send) { 808 var fdata = $('#confirmForm').serialize(); 809 $.ajax({ 810 type: 'POST', 811 dataType: 'json', 812 url: '/ajax/sendForm.php?cmd=update_code', 813 data: fdata, 814 success: function(data) { 815 if(data.status == 'code') { 816 $.fancybox.open(` 817 <div class="modal-success-block"> 818 <p class="modal-success-text">ÐовÑй код оÑпÑавлен Ðам на ÑлекÑÑоннÑÑ Ð¿Ð¾ÑÑÑ!</p> 819 </div> 820 `); 821 send = true; 822 setTimeout(function() {send = false;}, 60000); 823 } else { 824 $.fancybox.open(` 825 <div class="modal-success-block"> 826 <p class="modal-success-text">ÐÑоизоÑла оÑибка!</p> 827 </div> 828 `); 829 } 830 } 831 }); 832 } else { 833 $.fancybox.open(` 834 <div class="modal-success-block"> 835 <p class="modal-success-text">Ðока ÐÑ Ð½Ðµ можеÑе ÑгенеÑиÑоваÑÑ Ð½Ð¾Ð²Ñй код, подождиÑе еÑе!</p> 836 </div> 837 `); 838 } 839 }); 840 841 //$("form.form").on("submit", function(e) { 842 $(document).on("submit", "form.form", function(e) { 843 e.preventDefault(); 844 845 var flag = true; 846 var curForm = $(this); 847 848 $(curForm).find("button.btn").prop("disabled", "disabled"); 849 850 $(curForm).find("input").each(function(index, element) { 851 if ($(element).prop("required")) { 852 if ($(element).prop("type") == "text" && $(element).val() == "") { 853 $(element).addClass("has-error"); 854 flag = false; 855 } 856 } 857 }); 858 859 if (flag) { 860 var formData = new FormData(curForm[0]); 861 $.ajax({ 862 url: '/ajax/sendForm.php', 863 method: 'post', 864 dataType: 'json', 865 data: formData, 866 processData: false, 867 contentType: false, 868 success: function(data) { 869 captchaReload(curForm); 870 871 if (data.status == "success") { 872 $.fancybox.open(` 873 <div class="modal-success-block"> 874 <p class="modal-success-text">` + data.text + `</p> 875 </div> 876 `); 877 878 $(curForm).find("input").each(function(index, element) { 879 if ($(element).prop("type") == "file" || $(element).prop("type") == "text" || $(element).prop("type") == "number" || $(element).prop("type") == "tel" || $(element).prop("type") == "email") { 880 $(element).val(""); 881 } 882 else if ($(element).prop("type") == "checkbox") { 883 $(element).prop("checked", ""); 884 } 885 }); 886 887 $(curForm).find("textarea").each(function(index, element) { 888 $(element).val("").html(''); 889 }); 890 891 $(curForm).find('.jsFieldsOlder').remove(); 892 893 $(curForm).find('.jsFileName').html('Файл не вÑбÑан'); 894 895 $(".form_layout_code").removeClass("active"); 896 $(".form_layout_code input").attr("required", false); 897 898 $(document).find('input[name=user_title]').val($('h1').text()); 899 $(document).find('input[name=user_service]').val($('h1').text()); 900 } 901 else if (data.status == "code") { 902 903 send = true; 904 setTimeout(function() {send = false;}, 60000); 905 906 $('#confirmForm input[name=user_element]').val(data.id); 907 908 $(".form_layout_code").addClass("active"); 909 $(".form_layout_code input").attr("required", "required"); 910 911 if (data.substatus !== undefined && data.substatus == "error") { 912 $.fancybox.open(` 913 <div class="modal-error-block"> 914 <p class="modal-error-text">` + data.text + `</p> 915 </div> 916 `); 917 } 918 else { 919 $.fancybox.open(` 920 <div class="modal-success-block"> 921 <p class="modal-success-text">Ðа поÑÑÑ Ð±Ñл оÑпÑавлен код</p> 922 </div> 923 `); 924 } 925 } 926 else { 927 var errorText = ((data.text) ? data.text : "ЧÑо-Ñо поÑло Ð
927½Ðµ Ñак"); 928 $.fancybox.open(` 929 <div class="modal-error-block"> 930 <p class="modal-error-text">` + errorText + `</p> 931 </div> 932 `); 933 } 934 935 /*if (data.status == "success") { 936 $.ajax({ 937 url: '/ajax/captchaUpdate.php', 938 method: 'post', 939 dataType: 'json', 940 data: curForm.serialize(), 941 success: function(data) { 942 $(curForm).find(".captcha img").prop("src", "/bitrix/tools/captcha.php?captcha_sid=" + data); 943 $(curForm).find(".captcha input[name='captcha_sid']").val(data); 944 } 945 }); 946 }*/ 947 } 948 }); 949 } 950 951 $(curForm).find("button.btn").prop("disabled", ""); 952 }); 953 954 function applyValidationToFields() { 955 var myInput = document.querySelectorAll('.jsForm input[data-error-message]'); 956 myInput.forEach(function (item) { 957 item.removeEventListener("invalid", validate); 958 item.removeEventListener("keyup", validate); 959 item.addEventListener("invalid", validate); 960 item.addEventListener("keyup", validate); 961 }); 962 } 963 applyValidationToFields(); 964 965 function validate() { 966 var val = this.value.length; 967 var min = parseFloat(this.min); 968 var errorMessage = $(this).attr('data-error-message'); 969 970 // ÐÑли еÑÑÑ Ð°ÑÑибÑÑ data-middle, иÑполÑзÑем ÑложнÑÑ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ 971 if (this.hasAttribute('data-middle')) { 972 var middleLength = this.dataset.middle ? parseFloat(this.dataset.middle) : null; 973 var maxLength = this.dataset.max ? parseFloat(this.dataset.max) : null; 974 975 var isValid = false; 976 977 // ÐÑовеÑÑем вÑе возможнÑе допÑÑÑимÑе Ð´Ð»Ð¸Ð½Ñ 978 if (val === min) { 979 isValid = true; 980 } 981 else if (middleLength !== null && val === middleLength) { 982 isValid = true; 983 } 984 else if (maxLength !== null && val === maxLength) { 985 isValid = true; 986 } 987 988 if (!isValid && errorMessage) { 989 this.setCustomValidity(errorMessage); 990 } else { 991 this.setCustomValidity(""); 992 } 993 } 994 // ÐÑли Ð½ÐµÑ Ð°ÑÑибÑÑа data-middle, иÑполÑзÑем пÑоÑÑÑÑ Ð²Ð°Ð»Ð¸Ð´Ð°ÑÐ¸Ñ 995 else { 996 if (val < min && errorMessage) { 997 this.setCustomValidity(errorMessage); 998 } else { 999 this.setCustomValidity(""); 1000 } 1001 } 1002 } 1003 1004 $(document).on('click', '.jsAddFields', function (e) { 1005 e.preventDefault(); 1006 var $fieldsParent = $(this).closest('.jsFieldsParent'); 1007 var maxSliderNum = 1; 1008 var maxLayoutNum = 1; 1009 1010 $('.jsFieldsParent').each(function () { 1011 $(this).find('input[type="radio"][name^="form-slider-"]').each(function () { 1012 var name = $(this).attr('name'); 1013 var num = parseInt(name.replace('form-slider-', '')); 1014 if (num > maxSliderNum) maxSliderNum = num; 1015 }); 1016 $(this).find('input[type="radio"][name^="choose-layout-"]').each(function () { 1017 var name = $(this).attr('name'); 1018 var num = parseInt(name.replace('choose-layout-', '')); 1019 if (num > maxLayoutNum) maxLayoutNum = num; 1020 }); 1021 }); 1022 1023 var $clone = $fieldsParent.clone(); 1024 $clone.find('input').each(function () { 1025 if ($(this).attr('type') === 'radio' || $(this).attr('type') === 'checkbox') { 1026 $(this).prop('checked', false); 1027 } else { 1028 $(this).val(''); 1029 } 1030 }); 1031 1032 $clone.find('input[type="radio"][name^="form-slider-"]').attr('name', 'form-slider-' + (maxSliderNum + 1)); 1033 $clone.find('input[type="radio"][name^="choose-layout-"]').attr('name', 'choose-layout-' + (maxLayoutNum + 1)); 1034 $clone.find('.jsFileName').text('Файл не вÑбÑан'); 1035 $clone.find('.jsFileInput').val(''); 1036 $fieldsParent.after($clone); 1037 $(this).closest('.jsAddFieldsParent').remove(); 1038 1039 setTimeout(function () { 1040 applyValidationToFields(); 1041 var newSlider = $clone.find('.form-slider.swiper')[0]; 1042 if (newSlider) { 1043 new Swiper(newSlider, { 1044 spaceBetween: 24, 1045 slidesPerView: 10, 1046 slidesPerGroup: 1,
1047 speed: 800, 1048 navigation: { 1049 nextEl: $clone.find('.swiper-button-next')[0], 1050 prevEl: $clone.find('.swiper-button-prev')[0] 1051 }, 1052 breakpoints: { 1053 0: { 1054 spaceBetween: 15, 1055 slidesPerView: 2, 1056 }, 1057 576: { 1058 spaceBetween: 24, 1059 slidesPerView: 3, 1060 }, 1061 769: { 1062 spaceBetween: 24, 1063 slidesPerView: 6, 1064 }, 1065 1025: { 1066 spaceBetween: 24, 1067 slidesPerView: 8, 1068 }, 1069 1621: { 1070 spaceBetween: 24, 1071 slidesPerView: 10, 1072 }, 1073 }, 1074 }); 1075 } 1076 }, 50); 1077 }); 1078}); 1079 1080function getCookie(name) { 1081 let matches = document.cookie.match(new RegExp( 1082 "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" 1083 )); 1084 1085 return matches ? decodeURIComponent(matches[1]) : undefined; 1086} 1087 1088/* ÐÑпа - ÑвелиÑение изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ */ 1089jQuery(function(){ 1090 1091 // иниÑиализаÑÐ¸Ñ Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 1092 $('.my-foto').imagezoomsl({ 1093 zoomrange: [1, 12], 1094 zoomstart: 5, 1095 innerzoom: true, 1096 magnifierborder: "none" 1097 }); 1098}); 1099 1100function setCookie(name, value, options = {}) { 1101 options = { 1102 path: '/', 1103 }; 1104 1105 if (options.expires instanceof Date) { 1106 options.expires = options.expires.toUTCString(); 1107 } 1108 1109 let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value); 1110 1111 for (let optionKey in options) { 1112 updatedCookie += "; " + optionKey; 1113 let optionValue = options[optionKey]; 1114 if (optionValue !== true) { 1115 updatedCookie += "=" + optionValue; 1116 } 1117 } 1118 1119 document.cookie = updatedCookie; 1120} 1121 1122function setVacancy(name) { 1123 $('#vacancyApplication input[name=user_vacancy]').val(name); 1124} 1125 1126function captchaReload(curForm) { 1127 $.ajax({ 1128 url: '/ajax/captchaReload.php', 1129 method: 'post', 1130 dataType: 'json', 1131 success: function(data) { 1132 if(!!data) { 1133 curForm.find('.captcha img').attr('src','/bitrix/tools/captcha.php?captcha_sid='+data); 1134 curForm.find('.captcha_sid').val(data); 1135 curForm.find('input[name=captcha_word]').val(''); 1136 } 1137 } 1138 }); 1139}
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.