1$(function() { 2 3 $(document).on('submit', '.js-form-send', function (e) { 4 e.preventDefault(); 5 6 let $form = $(this), 7 $output = $form.find('.js-output'), 8 $btn = $form.find('button[type="submit"]'); 9 10 if (!$form.hasClass('loading')) { 11 $form.addClass('loading'); 12 $btn.attr('disabled', true); 13 $output.text(''); 14 $form.removeClass('success'); 15 16 $.ajax({ 17 url: $form.data('action'), 18 data: new FormData($form[0]), 19 processData: false, 20 contentType: false, 21 type: 'POST', 22 cache: false, 23 dataType: 'json', 24 success: function (data) { 25 26 if (data.result === "success") { 27 $form[0].reset(); 28 29 Popup.openSuccess(); 30 //$output.html('СпаÑибо! ÐаÑа заÑвка оÑпÑавлена.'); 31 $form.addClass('success'); 32 33 setTimeout(function (){ 34 $output.html(''); 35 $form.removeClass('success'); 36 }, 7000) 37 38 } else { 39 40 $output.text(data.error); 41 } 42 $form.removeClass('loading'); 43 $btn.attr('disabled', false); 44 }, 45 error: function () { 46 $form.removeClass('loading'); 47 $btn.attr('disabled', false); 48 } 49 }); 50 51 } 52 }); 53 54 $(document).on('click', '.js-open-popup', function (e) { 55 e.preventDefault(); 56 57 let form_id = $(this).data('id'); 58 Popup.open(form_id); 59 }); 60 61 $(document).on('click', '.js-more-info-staff', function (e) { 62 e.preventDefault(); 63 64 //list-staff__row-detail 65 //list-staff__item 66 let $parent = $(this).parents('.list-staff__item'); 67 68 $parent.toggleClass('show'); 69 }); 70 71 $(document).on('click', '.js-popup-menu-toggle', function (e) { 72 e.preventDefault(); 73 74 $('body').toggleClass('no-scroll'); 75 }); 76 77 $(document).on('click', '#popup__overlay, #popup-menu.active1', function (e) { 78 e.preventDefault(); 79 80 setTimeout(function (){ 81 if(!$('#popup-menu').hasClass('active1')) 82 $('body').removeClass('no-scroll'); 83 }, 500); 84 }); 85 86 $(document).on('click', '.active1 a', function (e) { 87 e.preventDefault(); 88 89 window.open($(this).attr('href'),"_self"); 90 }); 91 92 $(document).on('click', '.js-close-popup', function (e) { 93 e.preventDefault(); 94 Popup.close(); 95 }); 96 97 $(document).on('click', '.js-load-more-news', function (e) { 98 e.preventDefault(); 99 100 let targetContainer = $('.js-more-container'), 101 url = $('.js-load-more-news').attr('data-url'); 102 if (url !== undefined) { 103 $.ajax({ 104 type: 'GET', 105 data: $('.js-news-filter').serialize(), 106 url: url, 107 dataType: 'html', 108 success: function (data) { 109 $('.js-load-more-news').remove(); 110 let elements = $(data).find('.js-more-item'), 111 pagination = $(data).find('.js-load-more-news'); 112 113 targetContainer.append(elements); 114 $('#load-more-append').after(pagination); 115 } 116 }) 117 } 118 }); 119 120 $(document).on('click', '.js-load-more', function (e) { 121 e.preventDefault(); 122 123 let targetContainer = $('.js-more-container'), 124 url = $('.js-load-more').attr('data-url'); 125 if (url !== undefined) { 126 $.ajax({ 127 type: 'GET', 128 url: url, 129 dataType: 'html', 130 success: function (data) { 131 $('.js-load-more').remove(); 132 //$('.js-load-more-navigation').remove(); 133 let elements = $(data).find('.js-more-item'), 134 pagination = $(data).find('.js-load-more'); 135 //navigation = $(data).find('.js-load-more-navigation'); 136 137 targetContainer.append(elements); 138 //targetContainer.after(navigation); 139 $('#load-more-append').after(pagination); 140 } 141 }) 142 } 143 }); 144 145 if($('.js-load-more').length) { 146 let $load_more = $('.js-load-more'); 147 $('#load-more-append').html($load_more) 148 } 149 150 $(document).on('change', '.js-search-files select', function (e) { 151 $(this).parents('form').trigger('submit'); 152 if ($(this).parent().hasClass('section-sort-mobile__show')) { 153 $(this).parent().removeClass('section-sort-mobile__show'); 154 } 155 if (!!$(this).parents('form').attr('data-new')) { 156 $(this).parents('form').find('.js-form-sort-reset').addClass('section-files__select-reset-show'); 157 } 158 }); 159 160 $(document).on('click', '.js-form-sort-reset', function(e){ 161 e.preventDefault(); 162 163 let targetContainer = $('.js-search-files-content'), 164 url = '/local/action/files_new.php', 165 dataSend = $(this).parents('form').serialize().replace("sort", ""), 166 sectionID = 0; 167 168 $('.select-default__dropdown .select-default__option').trigger('click'); 169 170 if ($('.js-section-item.section-item--active').length > 0) { 171 let arrData = $(this).parents('form').serialize().split('&'), 172 newData = ""; 173 174 sectionID = $('.js-section-item.section-item--active').data('section-id'); 175 176 $.each(arrData, function(index, item) { 177 if (item.length > 0) { 178 let arrItem = item.split('='); 179 if (arrItem[1].length > 0) { 180 if (arrItem[0] == 'sort') { 181 } else { 182 newData += item; 183 if (index != arrData.length-1) { 184 newData += "&"; 185 } 186 } 187 } 188 } 189 }); 190 if (newData.length > 0) { 191 dataSend = newData; 192 } 193 } 194 195 $.ajax({ 196 type: 'post', 197 url: url, 198 data: dataSend, 199 dataType: 'json', 200 success: function (data) { 201 targetContainer.html(data.html); 202 203 let topBlock = $('.section-files__table').position().top; 204 if (topBlock > 0) 205 $("html, body").animate({ scrollTop: topBlock-20 }, "slow"); 206 207 // кнопка ÑбÑоÑиÑÑ ÑилÑÑÑÑ 208 $('.js-form-sort-reset').removeClass('section-files__select-reset-show'); 209 210 if ($('.section-files__select.js-form-sort').hasClass('section-sort-mobile__show')) 211 $('.section-files__select.js-form-sort').removeClass('section-sort-mobile__show'); 212 213 if (sectionID > 0) { 214 if ($('.js-more-section[data-parent-section="'+sectionID+'"]').length > 0) 215 $('.js-more-section[data-parent-section="'+sectionID+'"]').show(); 216 $('.js-more-item').hide(); 217 if ($('.js-more-item[data-section-id="'+sectionID+'"]').length > 0) 218 $('.js-more-item[data-section-id="'+sectionID+'"]').show(); 219 } else { 220 // по ÑмолÑÐ°Ð½Ð¸Ñ 221 $('.js-more-section').show(); 222 $('.js-more-item').show(); 223 } 224 } 225 }) 226 }); 227 228 229 $(document).on('click', '.js-search-reset', function(e){e.preventDefault(); 230 231 let targetContainer = $('.js-search-files-content'), 232 url = '/local/action/files_new.php', 233 dataSend = $(this).parents('form').serialize().replace("search", ""), 234 sectionID = 0; 235 236 if ($('.js-search-reset').length > 0 && $('.js-search-reset').hasClass('section-search-reset__show')) { 237 $('.js-search-reset').removeClass('section-search-reset__show'); 238 } 239 if ($('.js-search-files').find('input[name="search"]').length > 0) { 240 if ($('.js-search-files').find('input[name="search"]').val().length > 0) { 241 $('.js-search-files').find('input[name="search"]').val(''); 242 } 243 } 244 if ($('.js-section-item.section-item--active').length > 0) { 245 let arrData = $(this).parents('form').serialize().split('&'), 246 newData = ""; 247 248 sectionID = $('.js-section-item.section-item--active').data('section-id'); 249 250 $.each(arrData, function(index, item) { 251 if (item.length > 0) { 252 let arrItem = item.split('='); 253 if (arrItem[1].length > 0) { 254 if (arrItem[0] == 'search') { 255 } else { 256 newData += item; 257 if (index != arrData.length-1) { 258 newData += "&"; 259 } 260 } 261 } 262 } 263 }); 264 if (newData.length > 0) { 265 dataSend = newData; 266 } 267 } 268 269 $.ajax({ 270 type: 'post', 271 url: url, 272 data: dataSend, 273 dataType: 'json', 274 success: function (data) { 275 targetContainer.html(data.html); 276 277 let topBlock = $('.section-files__table').position().top; 278 if (topBlock > 0) 279 $("html, body").animate({ scrollTop: topBlock-20 }, "slow"); 280 281 // кнопка ÑбÑоÑиÑÑ ÑилÑÑÑÑ 282 $('.js-form-sort-reset').removeClass('section-files__select-reset-show'); 283 284 if ($('.section-files__select.js-form-sort').hasClass('section-sort-mobile__show')) 285 $('.section-files__select.js-form-sort').removeClass('section-sort-mobile__show'); 286 287 if (sectionID > 0) { 288 if ($('.js-more-section[data-parent-section="'+sectionID+'"]').length > 0) 289 $('.js-more-section[data-parent-section="'+sectionID+'"]').show(); 290 $('.js-more-item').hide(); 291 if ($('.js-more-item[data-section-id="'+sectionID+'"]').length > 0) 292 $('.js-more-item[data-section-id="'+sectionID+'"]').show(); 293 } else { 294 // по ÑмолÑÐ°Ð½Ð¸Ñ 295 $('.js-more-section').show(); 296 $('.js-more-item').show(); 297 } 298 } 299 }) 300 }); 301 302 $(document).on('submit', '.js-search-files', function (e) { 303 e.preventDefault(); 304 305 if ($('.js-search-reset').length > 0) { 306 if ($('.js-search-reset').hasClass('section-search-reset__show')) 307 $('.js-search-reset').removeClass('section-search-reset__show'); 308 } 309 if ($(this).find('input[name="search"]').length > 0) { 310 if ($(this).find('input[name="search"]').val().length > 0) { 311 // показаÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ ÑбÑоÑиÑÑ 312 if ($('.js-search-reset').length > 0) 313 $('.js-search-reset').addClass('section-search-reset__show'); 314 } 315 } 316 317 if (!!$(this).attr('data-new')) { 318 let targetContainer = $('.js-search-files-content'), 319 url = '/local/action/files_new.php', 320 data = $(this).serialize(); 321 322 if ($('.js-section-item.section-item--active').length > 0) { 323 let arrData = data.split('&'), 324 sectionID = $('.js-section-item.section-item--active').data('section-id'), 325 newData = ""; 326 $.each(arrData, function(index, item) { 327 let arrItem = item.split('='); 328 if (arrItem[0] == 'section') { 329 newData += "section="+sectionID; 330 } else { 331 newData += item; 332 } 333 if (index != arrData.length-1) { 334 newData += "&"; 335 } 336 }); 337 if (newData.length > 0) { 338 data = newData; 339 } 340 } 341 342 $.ajax({ 343 type: 'post', 344 url: url, 345 data: data, 346 dataType: 'json', 347 success: function (data) { 348 targetContainer.html(data.html); 349 350 let topBlock = $('.section-files__table').position().top; 351 if (topBlock > 0) 352 $("html, body").animate({ scrollTop: topBlock-20 }, "slow"); 353 354 // кнопка ÑбÑоÑиÑÑ ÑилÑÑÑÑ 355 } 356 }) 357 } else { 358 let targetContainer = $('.js-search-files-content'), 359 url = '/local/action/files.php'; 360 361 $.ajax({ 362 type: 'post', 363 url: url, 364 data: $(this).serialize(), 365 dataType: 'json', 366 success: function (data) { 367 targetContainer.html(data.html); 368 } 369 }) 370 } 371 372 }); 373 374 $(document).on('submit', '.js-search-jobs', function (e) { 375 e.preventDefault(); 376 377 let targetContainer = $('.js-search-jobs-content'), 378 url = '/local/action/jobs.php'; 379 380 $.ajax({ 381 type: 'post', 382 url: url, 383 data: $(this).serialize(), 384 dataType: 'json', 385 success: function (data) { 386 targetContainer.html(data.html); 387 } 388 }) 389 390 }); 391 392 $(document).on('submit', '.js-search-docs', function (e) { 393 e.preventDefault(); 394 395 let targetContainer = $('.js-search-docs-content'), 396 url = '/local/action/docs.php'; 397 398 $.ajax({ 399 type: 'post', 400 url: url, 401 data: $(this).serialize(), 402 dataType: 'json', 403 success: function (data) { 404 targetContainer.html(data.html); 405 } 406 }) 407 408 }); 409 410 $(document).on('submit', '.js-search-staff-q', function (e) { 411 e.preventDefault(); 412 413 let q = $(this).find('[name="q"]').val(); 414 $('.js-search-staff-mobile [name="q"]').val(q); 415 $('.js-search-staff-mobile').trigger('submit'); 416 }); 417 418 $(document).on('submit', '.js-search-staff', function (e) { 419 e.preventDefault(); 420 421 let targetContainer = $('.js-search-staff-content'), 422 url = '/local/action/staff.php'; 423 424 if($(this).hasClass('js-search-staff-mobile')) { 425 426 } 427 428 $.ajax({ 429 type: 'post', 430 url: url, 431 data: $(this).serialize(), 432 dataType: 'json', 433 success: function (data) { 434 if(data.html == '') 435 targetContainer.html('<div class="not-found">Ð ÑожалениÑ, ниÑего не найдено.</div>'); 436 else 437 targetContainer.html(data.html); 438 $('#popup-filter .js-popup-filter-close').trigger('click'); 439 } 440 }) 441 442 }); 443 444 $(document).on('change', '.js-search-programs-page input[type="checkbox"], .js-search-programs-page input[type="radio"]', function (e) { 445 446 let $form = $(this).parents('form'), 447 $tags = $form.find('.js-filter-tags'), 448 $tags_html = $form.find('.js-filter-tags-html'); 449 450 $tags_html.html(''); 451 452 $form.find('input[type="checkbox"]:checked').each(function (i, el){ 453 let text = $(this).parents('.check-default').text(), 454 value = $(this).val(); 455 456 $tags_html.append('<li class="depick__item" data-value="'+value+'">\n' +
457 ' <span>'+text+'</span>\n' + 458 ' <button></button>\n' + 459 ' </li>') 460 }); 461 462 $tags.show(); 463 464 $(this).parents('form').trigger('submit'); 465 }); 466 467 $(document).on('submit', '.js-search-programs', function (e) { 468 e.preventDefault(); 469 470 let targetContainer = $('.js-more-container'), 471 url = $(this).attr('action'); 472 473 $.ajax({ 474 type: 'post', 475 url: url, 476 data: $(this).serialize(), 477 dataType: 'html', 478 success: function (data) { 479 let elements = $(data).find('.js-more-item'); 480 //targetContainer.html(elements); 481 482 if(!elements.length) 483 targetContainer.html('<div class="not-found">Ð ÑожалениÑ, ниÑего не найдено.</div>'); 484 else 485 targetContainer.html(elements); 486 487 $('#popup-filter .js-popup-filter-close').trigger('click'); 488 } 489 }) 490 491 }); 492 493 $(document).on('click', '.js-search-programs-clear', function (e) { 494 e.preventDefault(); 495 496 let $form = $('.js-search-programs'); 497 let $form2 = $('.js-search-programs-mobile'); 498 $form[0].reset(); 499 $form2[0].reset(); 500 501 setTimeout(function (){ 502 $form.eq(0).trigger('submit'); 503 }, 300) 504 505 }); 506 507 $(document).on('submit', '.js-search-programs-q', function (e) { 508 e.preventDefault(); 509 510 let q = $(this).find('[name="q"]').val(); 511 $('.js-search-programs-mobile [name="q"]').val(q); 512 $('.js-search-programs-mobile').trigger('submit'); 513 }); 514 515 $(document).on('keyup', '.js-institute-program-top [name="q"]', function (e) { 516 e.preventDefault(); 517 let q = $(this).val(); 518 $('.js-institute-program-page [name="q"]').val(q); 519 $('.js-institute-program-page').trigger('submit'); 520 }); 521 522 $(document).on('click', '.js-institute-program-top .form-search__btn-search', function (e) { 523 e.preventDefault(); 524 let q = $('.js-institute-program-top [name="q"]').val(); 525 $('.js-institute-program-page [name="q"]').val(q); 526 $('.js-institute-program-page').trigger('submit'); 527 }); 528 529 $(document).on('click', '[data-set-program]', function (e) { 530 e.preventDefault(); 531 532 if($(this).parents('.swiper-slide').hasClass('active')) 533 return; 534 535 let value = $(this).data('set-program'); 536 $('.js-institute-program-page [name="PROGRAM[]"]').val(value); 537 $('.js-institute-program-page').trigger('submit'); 538 539 //$(this).parents('.swiper')[0].swiper.slideTo($(this).index()); 540 let $slider = $(this).parents('.swiper'), 541 $slides = $slider.find('.swiper-slide'); 542 543 $slides.removeClass('active'); 544 $(this).parents('.swiper-slide').addClass('active'); 545 }); 546 547 $(document).on('submit', '.js-institute-program-page', function (e) { 548 e.preventDefault(); 549 550 let targetContainer = $('.js-more-container'), 551 url = $(this).attr('action'); 552 553 $.ajax({ 554 type: 'post', 555 url: url, 556 data: $(this).serialize(), 557 dataType: 'html', 558 success: function (data) { 559 let elements = $(data).find('.js-more-item'); 560 //targetContainer.html(elements); 561 562 if(!elements.length) 563 targetContainer.html('<div class="not-found">Ð ÑожалениÑ, ниÑего не найдено.</div>'); 564 else 565 targetContainer.html(elements); 566 567 //$('#popup-filter .js-popup-filter-close').trigger('click'); 568 } 569 }) 570 }); 571 572 $(document).on('change', '.js-institute-program-page input[type="checkbox"], .js-institute-program-page input[type="radio"]', function (e) { 573 574 let $form = $(this).parents('form'); 575 $form.trigger('submit'); 576 }); 577 578 let slider = document.getElementById('score-slider'); 579 if(slider) { 580 slider.noUiSlider.on('end', function () { 581 let $form = $('.js-search-programs-page'); 582 $form.trigger('submit'); 583 }); 584 } 585 586 let slider2 = document.getElementById('score-slider-2'); 587 if(slider) { 588 slider2.noUiSlider.on('end', function () { 589 let $form = $('.js-search-programs-mobile'); 590 $form.trigger('submit'); 591 }); 592 } 593 594 $(document).on('focusout', '.js-search-programs-page .js-number, .js-search-programs-mobile .js-number', function (e) { 595 e.preventDefault(); 596 597 let $form = $(this).parents('form'); 598 $form.trigger('submit'); 599 }); 600 601 602 603 //js-news-filter 604 $(document).on('submit', '.js-news-filter', function (e) { 605 e.preventDefault(); 606 607 let targetContainer = $('.js-more-container'), 608 url = $(this).attr('action'); 609 610 $(this).find('[name="AJAX"]').val('Y'); 611 612 $.ajax({ 613 type: 'post', 614 url: url, 615 data: $(this).serialize(), 616 dataType: 'html', 617 success: function (data) { 618 let elements = $(data).find('.js-more-item'); 619 620 if(!elements.length) 621 targetContainer.html('<div class="not-found list-events__item">Ð ÑожалениÑ, ниÑего не найдено.</div>'); 622 else 623 targetContainer.html(elements); 624 625 $('#popup-filter .js-popup-filter-close').trigger('click'); 626 } 627 }) 628 }); 629 630 $(document).on('submit', '.js-news-filter-mobile', function (e) { 631 e.preventDefault(); 632 633 let q = $(this).find('[name="q"]').val(); 634 $('.js-news-filter [name="q"]').val(q); 635 $('.js-news-filter').trigger('submit'); 636 }); 637 638 $(document).on('submit', '.js-news-filter-q', function (e) { 639 e.preventDefault(); 640 641 let $form = $(this).parents('form'); 642 $form.trigger('submit'); 643 }); 644 645 $(document).on('change', '.js-news-filter input[type="checkbox"], .js-news-filter input[type="radio"]', function (e) { 646 647 let $form = $(this).parents('form'), 648 $tags = $form.find('.js-filter-tags'), 649 $tags_html = $form.find('.js-filter-tags-html'); 650 651 $tags_html.html(''); 652 653 $form.find('input[type="checkbox"]:checked').each(function (i, el){ 654 let text = $(this).parents('.check-default').text(), 655 value = $(this).val(); 656 657 $tags_html.append('<li class="depick__item" data-value="'+value+'">\n' +
658 ' <span>'+text+'</span>\n' + 659 ' <button></button>\n' + 660 ' </li>') 661 }); 662 663 $tags.show(); 664 665 $(this).parents('form').trigger('submit'); 666 }); 667 668 669 670 $(document).on('submit', '.js-search-events', function (e) { 671 e.preventDefault(); 672 673 let targetContainer = $('.js-more-container'), 674 url = $(this).attr('action'); 675 676 $.ajax({ 677 type: 'post', 678 url: url, 679 data: $(this).serialize(), 680 dataType: 'html', 681 success: function (data) { 682 let elements = $(data).find('.js-more-item'); 683 684 if(!elements.length) 685 targetContainer.html('<div class="not-found list-events__item">Ð ÑожалениÑ, ниÑего не найдено.</div>'); 686 else 687 targetContainer.html(elements); 688 689 $('#popup-filter .js-popup-filter-close').trigger('click'); 690 } 691 }) 692 693 }); 694 695 $(document).on('submit', '.js-search-events-mobile', function (e) { 696 e.preventDefault(); 697 698 let q = $(this).find('[name="q"]').val(); 699 $('.js-search-events [name="q"]').val(q); 700 $('.js-search-events').trigger('submit'); 701 }); 702 703 $(document).on('submit', '.js-search-events-q', function (e) { 704 e.preventDefault(); 705 706 let $form = $(this).parents('form'); 707 $form.trigger('submit'); 708 }); 709 710 $(document).on('change', '.js-search-events input[type="checkbox"], .js-search-events input[type="radio"]', function (e) { 711 712 let $form = $(this).parents('form'), 713 $tags = $form.find('.js-filter-tags'), 714 $tags_html = $form.find('.js-filter-tags-html'); 715 716 $tags_html.html(''); 717 718 $form.find('input[type="checkbox"]:checked').each(function (i, el){ 719 let text = $(this).parents('.check-default').text(), 720 value = $(this).val(); 721 722 $tags_html.append('<li class="depick__item" data-value="'+value+'">\n' + 723 ' <span>'+text+'</span>\n' + 724 ' <button></button>\n' + 725 ' </li>') 726 }); 727 728 $tags.show(); 729 730 $(this).parents('form').trigger('submit'); 731 }); 732 733 $(document).on('click', '.depick__item button', function (e) { 734 e.preventDefault(); 735 736 let value = $(this).parents('.depick__item').data('value'), 737 $form = $(this).parents('form'), 738 $tags = $form.find('.js-filter-tags'), 739 $tags_html = $form.find('.js-filter-tags-html'); 740 741 $('input[type="checkbox"][value="'+value+'"]').prop('checked', false); 742 $(this).parents('.depick__item').remove(); 743 744 if(!$tags_html.find('li').length) 745 $tags.hide(); 746 747 $form.trigger('submit'); 748 }); 749 750 $(document).on('focusout', '[name="date_1"], [name="date_2"]', function (e) { 751 e.preventDefault(); 752 753 let $form = $(this).parents('form'); 754 $form.trigger('submit'); 755 }); 756 757 758 759 let $h1 = $('.intro-simple__h1'); 760 if($h1.length) { 761 let strlen_h1 = $h1.text().trim().length; 762 if(strlen_h1 >= 20) 763 $h1.addClass('intro-simple__h1-small'); 764 if(strlen_h1 >= 50) 765 $h1.addClass('intro-simple__h1-small-desktop'); 766 } 767 768 $('.vis-toggle').on('click', function(e) { 769 e.preventDefault(); 770 $(this).next().toggleClass('closed'); 771 return false; 772 }); 773 774// // ÐонÑигÑÑаÑÐ¸Ñ ÑзÑков 775// const LANGUAGES = ['ru', 'en', 'zh-CN']; 776// const LANGUAGE_TEXTS = { 'ru': 'Ru', 'en': 'En', 'zh-CN': '䏿' }; 777 778// // ÐниÑиализаÑÐ¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ пÑи загÑÑзке 779// setTimeout(function() { 780// updateLangButton(); 781// initGoogleTranslate(); // ÐниÑиализиÑÑем Google Translate 782// }, 700); 783 784// // ФÑнкÑÐ¸Ñ Ð¸Ð½Ð¸ÑиализаÑии Google Translate 785// function initGoogleTranslate() { 786// // ÐÑли Ñже загÑÑжен, ниÑего не делаем 787// if (window.googleTranslateInitialized) return; 788 789// // УдалÑем ÑÑаÑÑе ÑкÑипÑÑ 790// var oldScripts = document.querySelectorAll('script[src*="translate.google"]');
791// oldScripts.forEach(script => { 792// if (script && script.parentNode) { 793// script.parentNode.removeChild(script); 794// } 795// }); 796 797// // ÐагÑÑжаем новÑй ÑкÑÐ¸Ð¿Ñ 798// var script = document.createElement('script'); 799// script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'; 800// document.head.appendChild(script); 801 802// window.googleTranslateElementInit = function() { 803// console.log('Google Translate загÑÑжен'); 804 805// // Создаем Ð²Ð¸Ð´Ð¶ÐµÑ Ñо вÑеми ÑзÑками 806// new google.translate.TranslateElement({ 807// pageLanguage: 'ru', 808// includedLanguages: 'ru,en,zh-CN', 809// layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL, 810// autoDisplay: false 811// }, 'google_translate_element'); 812 813// // СкÑÑваем Ð²Ð¸Ð´Ð¶ÐµÑ 814// var widget = document.getElementById('google_translate_element'); 815// if (widget) { 816// widget.style.display = 'none'; 817// widget.style.position = 'absolute'; 818// widget.style.left = '-9999px'; 819// } 820 821// window.googleTranslateInitialized = true; 822// }; 823// } 824 825// // ФÑнкÑÐ¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ 826// function updateLangButton() { 827// // ÐпÑеделÑем ÑекÑÑий ÑзÑк ÑÑÑаниÑÑ 828// let currentLang = detectCurrentLanguage(); 829// console.log('ТекÑÑий ÑзÑк ÑÑÑаниÑÑ:', currentLang); 830 831// // ÐпÑеделÑем, какой ÑзÑк должен бÑÑÑ Ð½Ð° кнопке (ÑледÑÑÑий в Ñикле) 832// let nextLang = getNextLanguage(currentLang); 833 834// // ÐбновлÑем ÐºÐ½Ð¾Ð¿ÐºÑ 835// $('.js-lang-change') 836// .data('lang', nextLang) // ÐÑда бÑдем пеÑеводиÑÑ 837// .attr('data-current', currentLang) // ТекÑÑий ÑзÑк 838// .find('span').text(LANGUAGE_TEXTS[nextLang]); 839 840// // ÐбновлÑем аÑÑибÑÑ lang Ñ html 841// $('html').attr('lang', currentLang); 842// } 843 844// // ФÑнкÑÐ¸Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑекÑÑего ÑзÑка 845// function detectCurrentLanguage() { 846// // 1. ÐÑовеÑÑем кÑки Google Translate 847// let cookies = document.cookie.split(';'); 848// for (let cookie of cookies) { 849// cookie = cookie.trim(); 850// if (cookie.startsWith('googtrans=')) { 851// let value = cookie.substring(10); 852// if (value) { 853// // Ðзвлекаем ÑзÑк из ÑоÑмаÑа /ru/en 854// let parts = value.split('/'); 855// if (parts.length >= 3) { 856// let lang = parts[2]; 857// if (LANGUAGES.includes(lang)) { 858// return lang; 859// } 860// } 861// } 862// } 863// } 864 865// // 2. ÐÑовеÑÑем аÑÑибÑÑ lang Ñ html 866// let htmlLang = $('html').attr('lang'); 867// if (htmlLang && LANGUAGES.includes(htmlLang)) { 868// return htmlLang; 869// } 870 871// // 3. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÑÑкий 872// return 'ru'; 873// } 874 875// // ФÑнкÑÐ¸Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑледÑÑÑего ÑзÑка в Ñикле 876// function getNextLanguage(currentLang) { 877// let currentIndex = LANGUAGES.indexOf(currentLang); 878// if (currentIndex === -1) currentIndex = 0; 879 880// let nextIndex = (currentIndex + 1) % LANGUAGES.length; 881// return LANGUAGES[nextIndex]; 882// } 883 884// // ÐбÑабоÑÑик клика по кнопке 885// $(document).on('click', '.js-lang-change', function(e) { 886// e.preventDefault(); 887// e.stopPropagation(); 888 889// let targetLang = $(this).data('lang'); // Ðа какой ÑзÑк пеÑеводим 890// let currentLang = $(this).data('current') || detectCurrentLanguage(); 891 892// console.log('ÐеÑевод Ñ', currentLang, 'на', targetLang); 893 894// // ÐÑполнÑем пеÑевод 895// performTranslation(targetLang, currentLang); 896 897// // Ðемедленно обновлÑем ÐºÐ½Ð¾Ð¿ÐºÑ 898// updateButtonImmediately(targetLang); 899// }); 900 901// // Ðемедленное обновление кнопки 902// function updateButtonImmediately(newLang) { 903// let nextLang = getNextLanguage(newLang); 904 905// $('.js-lang-change') 906// .data('lang', nextLang) 907// .attr('data-current', newLang) 908// .find('span').text(LANGUAGE_TEXTS[nextLang]); 909 910// $('html').attr('lang', newLang); 911// } 912 913// // ФÑнкÑÐ¸Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÐµÑевода 914// function performTranslation(targetLang, currentLang) { 915// console.log('ÐÑполнÑем пеÑевод Ñ', currentLang, 'на', targetLang); 916 917// // Ð¡Ð¾Ñ ÑанÑем вÑбÑаннÑй ÑзÑк 918// saveLanguagePreference(targetLang); 919 920// // ÐÑименÑем пеÑевод ÑеÑез Google 921// applyGoogleTranslation(targetLang); 922// } 923 924// // Ð¡Ð¾Ñ Ñанение ÑзÑка в кÑки 925// function saveLanguagePreference(lang) { 926// document.cookie = `googtrans=/ru/${lang}; path=/; max-age=31536000`; 927// document.cookie = `site_lang=${lang}; path=/; max-age=31536000`; 928// } 929 930// // ÐÑименение пеÑевода ÑеÑез Google 931// function applyGoogleTranslation(lang) { 932// console.log('ÐÑименÑем Google Translate Ð´Ð»Ñ ÑзÑка:', lang); 933 934// // Ðдем пока Google Translate загÑÑзиÑÑÑ 935// var checkInterval = setInterval(function() { 936// if (typeof google !== 'undefined' && google.translate) { 937// clearInterval(checkInterval); 938// executeTranslation(lang); 939// } 940// }, 100); 941 942// // ТаймаÑÑ Ð½Ð° ÑлÑÑай еÑли Google не загÑÑзиÑÑÑ 943// setTimeout(function() { 944// clearInterval(checkInterval); 945// if (typeof google !== 'undefined' && google.translate) { 946// executeTranslation(lang); 947// } else { 948// console.error('Google Translate не загÑÑзилÑÑ'); 949// // ÐеÑезагÑÑжаем Google Translate 950// window.googleTranslateInitialized = false;
951// initGoogleTranslate(); 952 953// // ÐовÑоÑÑем попÑÑÐºÑ ÑеÑез 1 ÑекÑÐ½Ð´Ñ 954// setTimeout(function() { 955// applyGoogleTranslation(lang); 956// }, 1000); 957// } 958// }, 2000); 959// } 960 961// // ÐÑполнение пеÑевода 962// function executeTranslation(lang) { 963// console.log('ÐÑполнÑем пеÑевод на', lang); 964 965// // ÐÑовеÑÑем, еÑÑÑ Ð»Ð¸ Ð²Ð¸Ð´Ð¶ÐµÑ 966// let selectField = document.querySelector("#google_translate_element select"); 967 968// if (!selectField) { 969// console.log('Ð¡ÐµÐ»ÐµÐºÑ Ð½Ðµ найден, Ñоздаем виджеÑ...'); 970// createWidgetAndTranslate(lang); 971// return; 972// } 973 974// // ÐÑем нÑжнÑй ÑзÑк в ÑелекÑе 975// for (let i = 0; i < selectField.options.length; i++) { 976// if (selectField.options[i].value === lang) { 977// selectField.selectedIndex = i; 978// selectField.dispatchEvent(new Event('change')); 979// console.log('ÐеÑевод пÑименен'); 980// return; 981// } 982// } 983 984// // ЯзÑк не найден в ÑелекÑе 985// console.log('ЯзÑк', lang, 'не найден в ÑелекÑе, пеÑеÑоздаем виджеÑ...'); 986// createWidgetAndTranslate(lang); 987// } 988 989// // Создание виджеÑа и пеÑевод 990// function createWidgetAndTranslate(lang) { 991// // УдалÑем ÑÑаÑÑй Ð²Ð¸Ð´Ð¶ÐµÑ 992// var oldWidget = document.getElementById('google_translate_element'); 993// if (oldWidget) oldWidget.innerHTML = ''; 994 995// // Создаем новÑÑ ÑÑнкÑÐ¸Ñ Ð¸Ð½Ð¸ÑиализаÑии 996// window.googleTranslateElementInit = function() { 997// console.log('Создаем новÑй Ð²Ð¸Ð´Ð¶ÐµÑ Ð´Ð»Ñ Ð¿ÐµÑевода на', lang); 998 999// new google.translate.TranslateElement({ 1000// pageLanguage: 'ru', 1001// includedLanguages: 'ru,en,zh-CN', 1002// layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL, 1003// autoDisplay: false 1004// }, 'google_translate_element'); 1005 1006// // СкÑÑваем Ð²Ð¸Ð´Ð¶ÐµÑ 1007// var widget = document.getElementById('google_translate_element'); 1008// if (widget) { 1009// widget.style.display = 'none'; 1010// widget.style.position = 'absolute'; 1011// widget.style.left = '-9999px'; 1012// } 1013 1014// // Ðдем и пÑименÑем пеÑевод 1015// setTimeout(function() { 1016// let select = document.querySelector("#google_translate_element select"); 1017// if (select) { 1018// for (let i = 0; i < select.options.length; i++) { 1019// if (select.options[i].value === lang) { 1020// select.selectedIndex = i; 1021// select.dispatchEvent(new Event('change')); 1022// break; 1023// } 1024// } 1025// } 1026// }, 500); 1027// }; 1028 1029// // ÐагÑÑжаем ÑкÑÐ¸Ð¿Ñ Ð·Ð°Ð½Ð¾Ð²Ð¾ 1030// window.googleTranslateInitialized = false; 1031// initGoogleTranslate(); 1032// } 1033 1034// // ÐоÑÑÑановление ÑоÑÑоÑÐ½Ð¸Ñ Ð¿Ñи загÑÑзке 1035// $(document).ready(function() { 1036// console.log('ÐоÑÑÑанавливаем ÑоÑÑоÑние ÑзÑка...'); 1037 1038// // ÐÑовеÑÑем, бÑл ли вÑбÑан ÑзÑк Ñанее 1039// let savedLang = null; 1040// let cookies = document.cookie.split(';'); 1041 1042// for (let cookie of cookies) { 1043// cookie = cookie.trim(); 1044// if (cookie.startsWith('googtrans=')) { 1045// let value = cookie.substring(10); 1046// if (value && value !== '/ru/ru') { 1047// let parts = value.split('/'); 1048// if (parts.length >= 3) { 1049// savedLang = parts[2]; 1050// break; 1051// } 1052// } 1053// } else if (cookie.startsWith('site_lang=')) { 1054// savedLang = cookie.substring(10); 1055// break; 1056// } 1057// } 1058 1059// // ÐÑли еÑÑÑ ÑÐ¾Ñ ÑаненнÑй ÑзÑк 1060// if (savedLang && LANGUAGES.includes(savedLang)) { 1061// console.log('ÐоÑÑÑанавливаем ÑÐ¾Ñ ÑаненнÑй ÑзÑк:', savedLang); 1062 1063// // УÑÑанавливаем аÑÑибÑÑ lang 1064// $('html').attr('lang', savedLang); 1065 1066// // ÐÑли ÑÑо не ÑÑÑÑкий, пÑименÑем пеÑевод ÑеÑез ÑекÑÐ½Ð´Ñ 1067// if (savedLang !== 'ru') { 1068// setTimeout(() => { 1069// applyGoogleTranslation(savedLang); 1070// }, 1500); 1071// } 1072// } 1073 1074// // ÐниÑиализиÑÑем ÐºÐ½Ð¾Ð¿ÐºÑ 1075// setTimeout(updateLangButton, 1000); 1076// }); 1077 1078// // СлÑÑаÑÐµÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ URL (на ÑлÑÑай еÑли Google менÑÐµÑ Ñ ÑÑ) 1079// window.addEventListener('hashchange', function() { 1080// if (window.location.hash.includes('googtrans')) { 1081// // Google пÑименил пеÑевод, обновлÑем ÐºÐ½Ð¾Ð¿ÐºÑ ÑеÑез 0.5 Ñек 1082// setTimeout(updateLangButton, 500); 1083// } 1084// }); 1085 1086// // ÐополниÑелÑÐ½Ð°Ñ Ð¿ÑовеÑка: еÑли пеÑевод не пÑименилÑÑ ÑеÑез 2 ÑекÑÐ½Ð´Ñ 1087// setInterval(function() { 1088// // ÐÑовеÑÑем, ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ð»Ð¸ ÑекÑÑий ÑзÑк Ñ Ñем, ÑÑо должен бÑÑÑ 1089// let currentLang = detectCurrentLanguage(); 1090// let buttonLang = $('.js-lang-change').data('current'); 1091 1092// if (buttonLang && currentLang !== buttonLang) { 1093// console.log('РаÑÑ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ: кнопка показÑваеÑ', buttonLang, 'а ÑзÑк', currentLang); 1094// updateLangButton(); 1095// } 1096// }, 2000); 1097 1098 1099// $('.article-default ol').each(function (i, el){ 1100// let counts = $(el).find('> li').length; 1101// if(counts > 8) { 1102// $(el).find('> li').each(function (i2,el2) { 1103// if(i2 > 8) 1104// $(el2).addClass('li-no-counter-zero'); 1105// }) 1106// } 1107// }) 1108 1109}); 1110// ========== ÐÐÐ ÐÐÐ ÐÐÐЮЧÐÐÐЯ ЯÐЫÐÐÐ ========== 1111 1112// СоÑÑоÑние пеÑевода 1113const TranslationManager = { 1114 currentLang: 'ru', 1115 isTranslating: false, 1116 1117 // ÐÐ¾Ð´Ñ ÑзÑков Ð´Ð»Ñ Google Translate 1118 langCodes: { 1119 'ru': 'ru', 1120 'en': 'en', 1121 'zh-CN': 'zh-TW' // Google иÑполÑзÑÐµÑ zh-TW вмеÑÑо zh-CN 1122 }, 1123 1124 // ÐбÑаÑное ÑопоÑÑавление (код Google -> Ð½Ð°Ñ ÐºÐ¾Ð´) 1125 googleToOurLang: { 1126 'ru': 'ru', 1127 'en': 'en', 1128 'zh-TW': 'zh-CN', 1129 'zh': 'zh-CN', 1130 'zh-CN': 'zh-CN' 1131 }, 1132 1133 init: function() { 1134 console.log('ÐниÑиализаÑÐ¸Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑа пеÑевода'); 1135 this.loadState(); 1136 this.updateUI(); 1137 1138 // ÐагÑÑжаем Google Translate 1139 this.loadGoogleTranslate(); 1140 1141 // ÐÑименÑем ÑÐ¾Ñ ÑаненнÑй пеÑевод еÑли нÑжно 1142 if (this.currentLang !== 'ru') { 1143 setTimeout(() => { 1144 this.applyTranslation(this.currentLang); 1145 }, 2000); 1146 } 1147 }, 1148 1149 loadState: function() { 1150 // ÐÑовеÑÑем кÑки Google Translate 1151 const cookies = document.cookie.split(';'); 1152 let googleLang = 'ru'; 1153 1154 for(let cookie of cookies) { 1155 cookie = cookie.trim(); 1156 if(cookie.startsWith('googtrans=')) { 1157 const value = cookie.substring(10); 1158 if(value && value !== '/ru/ru') { 1159 const parts = value.split('/'); 1160 if(parts.length >= 3) { 1161 googleLang = parts[2]; 1162 break; 1163 } 1164 } 1165 } 1166 } 1167 1168 // ÐÑеобÑазÑем код Google в Ð½Ð°Ñ ÐºÐ¾Ð´ 1169 this.currentLang = this.googleToOurLang[googleLang] || 'ru'; 1170 this.isTranslating = this.currentLang !== 'ru'; 1171 1172 // ÐÑовеÑÑем наÑÑ ÐºÐ°ÑÑомнÑÑ ÐºÑÐºÑ 1173 for(let cookie of cookies) { 1174 cookie = cookie.trim(); 1175 if(cookie.startsWith('site_lang=')) { 1176 const lang = cookie.substring(10); 1177 if(lang === 'en' || lang === 'zh-CN' || lang === 'ru') { 1178 this.currentLang = lang; 1179 this.isTranslating = lang !== 'ru'; 1180 break; 1181 } 1182 } 1183 } 1184 1185 // ÐбновлÑем аÑÑибÑÑ lang Ñ html 1186 document.documentElement.lang = this.currentLang; 1187 1188 console.log('ÐагÑÑжено ÑоÑÑоÑние: Ð½Ð°Ñ ÐºÐ¾Ð´', this.currentLang, 'Google код', googleLang, 'пеÑевод:', this.isTranslating); 1189 }, 1190 1191 saveState: function(lang) { 1192 this.currentLang = lang; 1193 this.isTranslating = lang !== 'ru'; 1194 1195 // ÐÑеобÑазÑем Ð½Ð°Ñ ÐºÐ¾Ð´ в код Google 1196 const googleLang = this.langCodes[lang] || lang; 1197 1198 // Ð¡Ð¾Ñ ÑанÑем в кÑки 1199 if (lang === 'ru') { 1200 // ÐÑиÑаем пеÑевод 1201 document.cookie = "googtrans=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; 1202 } else { 1203 // УÑÑанавливаем пеÑевод 1204 document.cookie = `googtrans=/ru/${googleLang}; path=/; max-age=31536000`; 1205 } 1206 1207 // ÐÑегда ÑÐ¾Ñ ÑанÑем ÑзÑк ÑайÑа 1208 document.cookie = `site_lang=${lang}; path=/; max-age=31536000`; 1209 1210 // ÐбновлÑем аÑÑибÑÑ lang Ñ html 1211 document.documentElement.lang = lang; 1212 1213 console.log('Ð¡Ð¾Ñ Ñанено ÑоÑÑоÑние: Ð½Ð°Ñ ÐºÐ¾Ð´', lang, 'Google код', googleLang); 1214 }, 1215 1216 updateUI: function() { 1217 console.log('Ðбновление UI, ÑзÑк:', this.currentLang); 1218 1219 // Снимаем акÑивноÑÑÑ Ñо вÑÐµÑ ÐºÐ½Ð¾Ð¿Ð¾Ðº 1220 $('.js-lang-change, .js-chinese-translate').removeClass('active'); 1221 1222 // ÐкÑивиÑÑем нÑжнÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ 1223 if (this.currentLang === 'en') { 1224 $('.js-lang-change').addClass('active'); 1225 } else if (this.currentLang === 'zh-CN') { 1226 $('.js-chinese-translate').addClass('active'); 1227 } 1228 // ÐÐ»Ñ ÑÑÑÑкого обе кнопки не акÑÐ¸Ð²Ð½Ñ 1229 }, 1230 1231 loadGoogleTranslate: function() { 1232 // ÐÑовеÑÑем, не загÑÑжен ли Ñже Google Translate 1233 if (typeof google !== 'undefined' && google.translate) { 1234 return; 1235 } 1236 1237 // Создаем конÑÐµÐ¹Ð½ÐµÑ Ð´Ð»Ñ Ð²Ð¸Ð´Ð¶ÐµÑа 1238 if (!document.getElementById('google_translate_element')) { 1239 const widgetDiv = document.createElement('div'); 1240 widgetDiv.id = 'google_translate_element'; 1241 widgetDiv.style.cssText = 'position:absolute; left:-9999px; top:-9999px; width:0; height:0; overflow:hidden;'; 1242 document.body.appendChild(widgetDiv); 1243 } 1244 1245 // УдалÑем ÑÑаÑÑе ÑкÑипÑÑ 1246 document.querySelectorAll('script[src*="translate.google.com"]').forEach(script => { 1247 script.parentNode.removeChild(script); 1248 }); 1249 1250 // Создаем новÑÑ ÑÑнкÑÐ¸Ñ Ð¸Ð½Ð¸ÑиализаÑии 1251 window.googleTranslateElementInit = () => { 1252 console.log('Google Translate иниÑиализиÑован'); 1253 1254 try { 1255 // ÐклÑÑаем нÑжнÑе ÑзÑки 1256 new google.translate.TranslateElement({ 1257 pageLanguage: 'ru', 1258 includedLanguages: 'en,zh-TW', 1259 layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL, 1260 autoDisplay: false 1261 }, 'google_translate_element'); 1262 1263 // СкÑÑваем Ð±Ð°Ð½Ð½ÐµÑ 1264 setTimeout(() => { 1265 const banner = document.querySelector('.goog-te-banner-frame'); 1266 if (banner) { 1267 banner.style.display = 'none'; 1268 } 1269 }, 1000); 1270 } catch (error) { 1271 console.error('ÐÑибка иниÑиализаÑии Google Translate:', error); 1272 } 1273 }; 1274 1275 // ÐагÑÑжаем ÑкÑÐ¸Ð¿Ñ 1276 const script = document.createElement('script'); 1277 script.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'; 1278 document.head.appendChild(script); 1279 }, 1280 1281 toggleTranslation: function(lang) { 1282 console.log('ÐеÑеклÑÑение на ÑзÑк:', lang, 'ÑекÑÑий ÑзÑк:', this.currentLang); 1283 1284 // ÐÑовеÑÑем ÑекÑÑий ÑеалÑнÑй ÑзÑк ÑеÑез Google кÑки 1285 const realCurrentLang = this.getRealCurrentLang(); 1286 console.log('РеалÑнÑй ÑекÑÑий ÑзÑк:', realCurrentLang); 1287 1288 if ((this.currentLang === lang && realCurrentLang === lang) || 1289 (lang === 'zh-CN' && realCurrentLang === 'zh-CN')) { 1290 // ÐÑли нажимаем на Ñже акÑивнÑй ÑзÑк - возвÑаÑаем к ÑÑÑÑÐºÐ¾Ð¼Ñ 1291 console.log('ÐозвÑÐ°Ñ Ðº ÑÑÑÑÐºÐ¾Ð¼Ñ Ð¸Ð·', lang); 1292 this.returnToRussian(); 1293 } else { 1294 // ÐклÑÑаем дÑÑгой ÑзÑк 1295 console.log('ÐклÑÑение ÑзÑка:', lang); 1296 this.enableTranslation(lang); 1297 } 1298 }, 1299 1300 getRealCurrentLang: function() { 1301 // ÐÑовеÑÑем кÑки Google Translate 1302 const cookies = document.cookie.split(';'); 1303 1304 for(let cookie of cookies) { 1305 cookie = cookie.trim(); 1306 if(cookie.startsWith('googtrans=')) { 1307 const value = cookie.substring(10); 1308 if(value && value !== '/ru/ru') { 1309 const parts = value.split('/'); 1310 if(parts.length >= 3) { 1311 const googleLang = parts[2]; 1312 return this.googleToOurLang[googleLang] || 'ru'; 1313 } 1314 } 1315 } 1316 } 1317 1318 return 'ru'; 1319 }, 1320 1321 enableTranslation: function(lang) { 1322 this.saveState(lang); 1323 this.updateUI(); 1324 this.applyTranslation(lang); 1325 }, 1326 1327 returnToRussian: function() { 1328 console.log('ÐозвÑÐ°Ñ Ðº ÑÑÑÑÐºÐ¾Ð¼Ñ ÑзÑкÑ'); 1329 1330 // Ð¡Ð¾Ñ ÑанÑем ÑоÑÑоÑние 1331 this.saveState('ru'); 1332 this.updateUI(); 1333 1334 // ÐÑклÑÑаем пеÑевод ÑеÑез Google 1335 this.disableGoogleTranslation(); 1336 1337 // ÐÑинÑдиÑелÑно пеÑезагÑÑжаем ÑÑÑаниÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑбÑоÑа 1338 setTimeout(() => { 1339 console.log('ÐÑинÑдиÑелÑÐ½Ð°Ñ Ð¿ÐµÑезагÑÑзка Ð´Ð»Ñ ÑбÑоÑа пеÑевода'); 1340 window.location.href = window.location.pathname + window.location.search; 1341 }, 300); 1342 }, 1343 1344 applyTranslation: function(lang) { 1345 console.log('ÐÑименение пеÑевода на', lang); 1346 1347 const apply = () => { 1348 const select = document.querySelector("#google_translate_element select"); 1349 if (!select) { 1350 c
1350onsole.log('Ð¡ÐµÐ»ÐµÐºÑ Ð½Ðµ найден, пеÑеÑоздаем виджеÑ'); 1351 this.recreateWidget(lang); 1352 return; 1353 } 1354 1355 // ÐолÑÑаем код Google Ð´Ð»Ñ Ð½Ð°Ñего ÑзÑка 1356 const googleLang = this.langCodes[lang] || lang; 1357 console.log('ÐоиÑк кода Google:', googleLang, 'в ÑелекÑе'); 1358 1359 // ÐÑем нÑжнÑй ÑзÑк в ÑелекÑе 1360 for (let i = 0; i < select.options.length; i++) { 1361 const optionValue = select.options[i].value; 1362 1363 if (optionValue === googleLang) { 1364 select.selectedIndex = i; 1365 select.dispatchEvent(new Event('change')); 1366 console.log('ÐеÑевод пÑименен:', optionValue, 'Ð´Ð»Ñ Ð½Ð°Ñего ÑзÑка', lang); 1367 1368 // ÐоказÑваем Ð±Ð°Ð½Ð½ÐµÑ Google 1369 setTimeout(() => { 1370 const banner = document.querySelector('.goog-te-banner-frame'); 1371 if (banner) { 1372 banner.style.display = 'block'; 1373 banner.style.zIndex = '999999'; 1374 } 1375 }, 500); 1376 1377 return; 1378 } 1379 } 1380 1381 // ЯзÑк не найден 1382 console.log('Ðод Google', googleLang, 'не найден в ÑелекÑе'); 1383 console.log('ÐоÑÑÑпнÑе ÑзÑки в ÑелекÑе:'); 1384 for (let i = 0; i < select.options.length; i++) { 1385 console.log(` ${select.options[i].value} - ${select.options[i].text}`); 1386 } 1387 }; 1388 1389 // Ðдем загÑÑзки Google Translate 1390 if (typeof google !== 'undefined' && google.translate) { 1391 apply(); 1392 } else { 1393 console.log('Google Translate не загÑÑжен, ждем...'); 1394 const check = setInterval(() => { 1395 if (typeof google !== 'undefined' && google.translate) { 1396 clearInterval(check); 1397 apply(); 1398 } 1399 }, 100); 1400 1401 // ТаймаÑÑ 1402 setTimeout(() => { 1403 clearInterval(check); 1404 console.log('ТаймаÑÑ Ð·Ð°Ð³ÑÑзки Google Translate'); 1405 this.loadGoogleTranslate(); 1406 setTimeout(() => this.applyTranslation(lang), 1000); 1407 }, 3000); 1408 } 1409 }, 1410 1411 disableGoogleTranslation: function() { 1412 console.log('ÐÑклÑÑение Google Translate'); 1413 1414 const disable = () => { 1415 try { 1416 const select = document.querySelector("#google_translate_element select"); 1417 if (select) { 1418 // ÐÑем ÑÑÑÑкий ÑзÑк 1419 for (let i = 0; i < select.options.length; i++) { 1420 if (select.options[i].value === 'ru') { 1421 select.selectedIndex = i; 1422 select.dispatchEvent(new Event('change')); 1423 console.log('Google Translate оÑклÑÑен (пеÑеклÑÑен на ÑÑÑÑкий)'); 1424 1425 // СкÑÑваем Ð±Ð°Ð½Ð½ÐµÑ 1426 setTimeout(() => { 1427 const banner = document.querySelector('.goog-te-banner-frame'); 1428 if (banner) { 1429 banner.style.display = 'none'; 1430 } 1431 }, 300); 1432 1433 break; 1434 } 1435 } 1436 } 1437 } catch (error) { 1438 console.error('ÐÑибка пÑи оÑклÑÑении Google Translate:', error); 1439 } 1440 }; 1441 1442 if (typeof google !== 'undefined' && google.translate) { 1443 disable(); 1444 } 1445 }, 1446 1447 recreateWidget: function(lang) { 1448 console.log('ÐеÑеÑоздание виджеÑа Ð´Ð»Ñ ÑзÑка:', lang); 1449 1450 // УдалÑем ÑÑаÑÑй Ð²Ð¸Ð´Ð¶ÐµÑ 1451 const widget = document.getElementById('google_translate_element'); 1452 if (widget) { 1453 widget.innerHTML = ''; 1454 } 1455 1456 // УдалÑем вÑе ÑкÑипÑÑ Google Translate 1457 document.querySelectorAll('script[src*="translate.google.com"]').forEach(script => { 1458 script.parentNode.removeChild(script); 1459 }); 1460 1461 // ÐолÑÑаем код Google Ð´Ð»Ñ Ð½Ð°Ñего ÑзÑка 1462 const googleLang = this.langCodes[lang] || lang; 1463 1464 // Создаем новÑÑ ÑÑнкÑÐ¸Ñ Ð¸Ð½Ð¸ÑиализаÑии 1465 window.googleTranslateElementInit = () => { 1466 console.log('ÐниÑиализаÑÐ¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ виджеÑа длÑ', lang, '(Google код:', googleLang, ')'); 1467 1468 try { 1469 new google.translate.TranslateElement({ 1470 pageLanguage: 'ru', 1471 includedLanguages: 'en,' + googleLang, 1472 layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL, 1473 autoDisplay: false 1474 }, 'google_translate_element'); 1475 1476 // Ðдем и пÑименÑем пеÑевод 1477 setTimeout(() => { 1478 const select = document.querySelector("#google_translate_element select"); 1479 if (select) { 1480 for (let i = 0; i < select.options.length; i++) { 1481 if (select.options[i].value === googleLang) { 1482 select.selectedIndex = i; 1483 select.dispatchEvent(new Event('change')); 1484 console.log('ÐеÑевод пÑименен ÑеÑез новÑй виджеÑ:', googleLang); 1485 return; 1486 } 1487 } 1488 } 1489 }, 800); 1490 } catch (error) { 1491 console.error('ÐÑибка иниÑиализаÑии нового виджеÑа:', error); 1492 } 1493 }; 1494 1495 // ÐагÑÑжаем ÑкÑÐ¸Ð¿Ñ 1496 this.loadGoogleTranslate(); 1497 } 1498}; 1499 1500// ÐниÑиализаÑÐ¸Ñ Ð¿Ñи загÑÑзке 1501$(document).ready(function() { 1502 console.log('ÐокÑÐ¼ÐµÐ½Ñ Ð³Ð¾Ñов, запÑÑк менеджеÑа пеÑевода'); 1503 TranslationManager.init(); 1504}); 1505 1506// ÐбÑабоÑÑики кликов 1507$(document).on('click', '.js-lang-change', function(e) { 1508 e.preventDefault(); 1509 e.stopPropagation(); 1510 console.log('Ðлик по английÑкой кнопке'); 1511 TranslationManager.toggleTranslation('en'); 1512}); 1513 1514$(document).on('click', '.js-chinese-translate', function(e) { 1515 e.preventDefault(); 1516 e.stopPropagation(); 1517 console.log('Ðлик по киÑайÑкой кнопке'); 1518 TranslationManager.toggleTranslation('zh-CN'); 1519}); 1520 1521// ÐониÑоÑинг изменений 1522$(document).ready(function() { 1523 // ÐÑÑлеживаем Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² кÑÐºÐ°Ñ 1524 let lastCookie = document.cookie; 1525 1526 setInterval(() => { 1527 if (document.cookie !== lastCookie) { 1528 lastCookie = document.cookie; 1529 1530 // ÐÑовеÑÑем кÑÐºÑ googtrans 1531 const cookies = document.cookie.split(';'); 1532 let googleLang = 'ru'; 1533 1534 for(let cookie of cookies) { 1535 cookie = cookie.trim(); 1536 if(cookie.startsWith('googtrans=')) { 1537 const value = cookie.substring(10); 1538 if(value && value !== '/ru/ru') { 1539 const parts = value.split('/'); 1540 if(parts.length >= 3) { 1541 googleLang = parts[2]; 1542 break; 1543 } 1544 } 1545 } 1546 } 1547 1548 // ÐÑеобÑазÑем код Google в Ð½Ð°Ñ ÐºÐ¾Ð´ 1549 const ourLang = TranslationManager.googleToOurLang[googleLang] || 'ru'; 1550 1551 // ÐÑли ÑзÑк изменилÑÑ 1552 if (ourLang !== TranslationManager.currentLang) { 1553 console.log('ÐбнаÑÑжено изменение ÑзÑка: Google код', googleLang, 'Ð½Ð°Ñ ÐºÐ¾Ð´', ourLang); 1554 1555 TranslationManager.currentLang = ourLang; 1556 TranslationManager.updateUI(); 1557 } 1558 } 1559 }, 1000); 1560 1561 // ÐÑÑлеживаем Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð°ÑÑибÑÑа lang Ñ html 1562 const observer = new MutationObserver(function(mutations) { 1563 mutations.forEach(function(mutation) { 1564 if (mutation.type === 'attributes' && mutation.attributeName === 'lang') { 1565 const newLang = document.documentElement.lang; 1566 console.log('Ðзменен аÑÑибÑÑ lang:', newLang); 1567 1568 // Ð¡Ð¸Ð½Ñ ÑонизиÑÑем ÑоÑÑоÑние еÑли нÑжно 1569 if (newLang !== TranslationManager.currentLang) { 1570 TranslationManager.currentLang = newLang; 1571 TranslationManager.updateUI(); 1572 } 1573 } 1574 }); 1575 }); 1576 1577 observer.observe(document.documentElement, { 1578 attributes: true, 1579 attributeFilter: ['lang'] 1580 }); 1581}); 1582 1583// ========== ÐÐÐÐЦ ÐÐÐÐ ÐÐÐ ÐÐÐЮЧÐÐÐЯ ЯÐЫÐÐÐ ========== 1584function formatDate(date) { 1585 var d = new Date(date),
1586 month = '' + (d.getMonth() + 1), 1587 day = '' + d.getDate(), 1588 year = d.getFullYear(); 1589 1590 if (month.length < 2) 1591 month = '0' + month; 1592 if (day.length < 2) 1593 day = '0' + day; 1594 1595 return [year, month, day].join('/'); 1596}
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.