function t121_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t121');
var videoLazy = rec.querySelector('.t-video-lazyload');
if (videoLazy) {
t_onFuncLoad('t_video_lazyload__setHeight', function () {
var videoHeight = videoLazy.getAttribute('data-videolazy-height');
if (videoHeight !== '540px') return;
t_video_lazyload__setHeight(videoLazy);
window.addEventListener('resize', function () {
t_video_lazyload__setHeight(videoLazy);
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
t_video_lazyload__setHeight(videoLazy);
});
});
}
var videoCarrier = rec.querySelector('.t-video-carier');
if (!videoCarrier) return;
var screenMin = rec.getAttribute('data-screenmin');
var screenMax = rec.getAttribute('data-screenmax');
var isLoad = false;
if (window.innerWidth < parseInt(screenMin, 10) || window.innerWidth > parseInt(screenMax, 10)) return;
window.addEventListener(
'scroll',
t_throttle(function () {
if (!isLoad) {
var videoCarrierOffsetTop = videoCarrier.getBoundingClientRect().top + window.pageYOffset;
var videoCarrierHeight = parseInt(window.getComputedStyle(videoCarrier).height, 10);
var windowScrollTop = window.pageYOffset;
var windowHeight = window.innerHeight;
if (
windowScrollTop + windowHeight > videoCarrierOffsetTop - 500 &&
windowScrollTop < videoCarrierOffsetTop + videoCarrierHeight + 501
) {
t_onFuncLoad('processYoutubeVideo', function () {
processYoutubeVideo(videoCarrier, videoCarrier.style.height);
});
isLoad = true;
}
}
})
);
var event = document.createEvent('HTMLEvents');
event.initEvent('scroll', true, false);
window.dispatchEvent(event);
}
function t071_unifyHeights(recid) {
$('#rec' + recid + ' .t071 .t-container').each(function () {
var highestBox = 0;
$('.t071__wrapper', this).each(function () {
if ($(this).height() > highestBox) highestBox = $(this).height();
});
if ($(window).width() >= 960) {
$('.t071__wrapper', this).css('height', highestBox);
} else {
$('.t071__wrapper', this).css('height', 'auto');
}
});
}
function t106_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t113_highlight(recid) {
var url = window.location.href;
var pathname = window.location.pathname;
if (url.substr(url.length - 1) == '/') {
url = url.slice(0, -1);
}
if (pathname.substr(pathname.length - 1) == '/') {
pathname = pathname.slice(0, -1);
}
if (pathname.charAt(0) == '/') {
pathname = pathname.slice(1);
}
if (pathname == '') {
pathname = '/';
}
$(".t113__list_item a[href='" + url + "']").addClass('t-active');
$(".t113__list_item a[href='" + url + "/']").addClass('t-active');
$(".t113__list_item a[href='" + pathname + "']").addClass('t-active');
$(".t113__list_item a[href='/" + pathname + "']").addClass('t-active');
$(".t113__list_item a[href='" + pathname + "/']").addClass('t-active');
$(".t113__list_item a[href='/" + pathname + "/']").addClass('t-active');
}
function t113_showMenu(recid, pageid) {
var $flagmenudo = '2ok';
$(window).bind('scroll', function () {
if ($(window).scrollTop() > 200) {
if ($flagmenudo != '1ok') {
$flagmenudo = '1';
}
} else {
if ($flagmenudo != '2ok') {
$flagmenudo = '2';
}
}
if ($flagmenudo == '1') {
$('.t113').addClass('t113__fixed');
$('.t113').css('display', 'none');
$('.t113').fadeIn('slow');
$('#rec' + recid)
.find('.t113__space')
.hide();
$flagmenudo = '1ok';
}
if ($flagmenudo == '2') {
$('.t113').removeClass('t113__fixed');
$('#rec' + recid)
.find('.t113__space')
.show();
$flagmenudo = '2ok';
}
});
var current_path = window.location.pathname.split('/').pop();
if (current_path == 'page' + pageid + '.html') {
$('#t113linktopage' + pageid).css('opacity', '.7');
}
}
function t113_setWidth(recid) {
var t113timer;
var el = $('#rec' + recid);
$(window).resize(function () {
if (t113timer) {
window.clearTimeout(t113timer);
}
t113timer = window.setTimeout(function () {
if ($(window).width() > 640) {
var w1 = el.find('div[data-hook-left]').width() + 20 + 50;
el.find('.t113__list').css('padding-right', w1 + 'px');
} else {
el.find('.t113__list').css('padding-right', 10 + 'px');
}
}, 100);
});
$(window).resize();
}
function t126_unifyHeights() {
$('.t126 .t-container').each(function () {
var highestBox = 0;
$('.t126__title', this).each(function () {
$(this).css('height', 'auto');
if ($(this).height() > highestBox) highestBox = $(this).height();
});
if ($(window).width() >= 960) {
$('.t126__title', this).css('height', highestBox);
} else {
$('.t126__title', this).css('height', 'auto');
}
var highestBox = 0;
$('.t126__descr', this).each(function () {
if ($(this).height() > highestBox) highestBox = $(this).height();
});
if ($(window).width() >= 960) {
$('.t126__descr', this).css('height', highestBox);
} else {
$('.t126__descr', this).css('height', 'auto');
}
});
}
function t131_unifyHeights() {
$('.t131 .t-container').each(function () {
var highestBox = 0;
$('.t131__title', this).each(function () {
if ($(this).height() > highestBox) highestBox = $(this).height();
});
if ($(window).width() >= 960) {
$('.t131__title', this).css('height', highestBox);
} else {
$('.t131__title', this).css('height', 'auto');
}
highestBox = 0;
$('.t131__descr', this).each(function () {
if ($(this).height() > highestBox) highestBox = $(this).height();
});
if ($(window).width() >= 960) {
$('.t131__descr', this).css('height', highestBox);
} else {
$('.t131__descr', this).css('height', 'auto');
}
});
}
function t132_unifyHeights() {
var wrappers = document.querySelectorAll('.t132__box .t132__wrappper');
for (var i = 0; i < wrappers.length; i++) {
var wrapper = wrappers[i];
var textWrapper = wrapper.querySelector('a div');
var wrapperWidth = wrapper.offsetWidth - 1;
var wrapperHeight = wrapper.offsetHeight - 40;
textWrapper.style.width = wrapperWidth + 'px';
textWrapper.style.height = wrapperHeight + 'px';
}
}
function t214__updateLazyLoad(recid) {
var scrollContainer = document.querySelector('#rec' + recid + ' .t214__container_mobile-flex');
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
})
);
}
}
if (!window.yashare2scriptLoaded) {
var scriptService = document.createElement('script');
scriptService.src = 'https://yastatic.net/share2/share.js';
scriptService.type = 'text/javascript';
scriptService.charset = 'UTF-8';
//document.documentElement.appendChild(scriptService);
window.yashare2scriptLoaded = true;
}
function t179_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var playBtn = rec.querySelector('.t179__playbutton');
var errorScreen = rec.querySelector('.t179__error-screen');
var videoWrap = rec.querySelector('.t179__wrap-video');
playBtn.addEventListener(
'click',
function () {
playBtn.remove();
videoWrap.style.display = 'block';
if (!errorScreen) {
t_onFuncLoad('t_video_lazyload__addVideo', function () {
var video = videoWrap.querySelector('.t-video-lazyload');
t_video_lazyload__addVideo(video);
});
}
},
{ once: true }
);
}
function t190_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
rec.addEventListener('click', function (e) {
if (e.target.closest('.t190__button')) {
t190_scrollToTop();
}
});
}
function t190_scrollToTop() {
var duration = 700;
var start = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0);
var change = 0 - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
document.body.setAttribute('data-scrollable', 'true');
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
if (isSafari) {
t190__animateScrollPolyfill(0);
} else {
t190__animateScroll();
}
/* easeInOutCubic animation included in the library */
function t190__easeInOutCubic(currentTime) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t190__animateScroll() {
currentTime += increment;
window.scrollTo(0, t190__easeInOutCubic(currentTime));
if (currentTime < duration) {
setTimeout(t190__animateScroll, increment);
} else {
document.body.removeAttribute('data-scrollable');
}
}
}
function t190__animateScrollPolyfill(target) {
var documentHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
var bottomViewportPoint = documentHeight - document.documentElement.clientHeight;
if (target > bottomViewportPoint) target = bottomViewportPoint;
if (target === window.pageYOffset) return false;
var currentPosition = window.pageYOffset;
var step = (target - currentPosition) / 30;
var difference = window.pageYOffset;
var timerID = setInterval(function () {
difference += step;
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (
(target - currentPosition < 0 && window.pageYOffset <= target) ||
(target - currentPosition > 0 && window.pageYOffset >= target)
) {
clearInterval(timerID);
document.body.removeAttribute('data-scrollable');
}
}, 10);
}
function t199_showMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menuList = rec.querySelectorAll('.t199__js__menu');
var togglerList = rec.querySelectorAll('.t199__js__menu-toggler');
var burger = rec.querySelector('.t-menuburger');
var burgerOpenClass = 't-menuburger-opened';
Array.prototype.forEach.call(menuList, function (menu) {
var menuItemList = menu.querySelectorAll('.t199__menu-item');
Array.prototype.forEach.call(menuItemList, function (menuItem) {
var href = menuItem.getAttribute('href');
if (href && href.indexOf('#') !== -1 && href.substring(0, 9) !== '#submenu:') {
menuItem.addEventListener('click', function () {
document.body.classList.remove('t199__is__menu');
});
}
});
var menuLinkList = menu.querySelectorAll('.t199__menu-item-wrap .t-menusub__link-item');
Array.prototype.forEach.call(menuLinkList, function (menuLink) {
menuLink.addEventListener('click', function () {
document.body.classList.remove('t199__is__menu');
});
});
});
Array.prototype.forEach.call(togglerList, function (toggler) {
toggler.addEventListener('click', function (e) {
e.stopPropagation();
e.preventDefault();
document.body.classList.toggle('t199__is__menu');
burger.classList.contains(burgerOpenClass)
? burger.classList.remove(burgerOpenClass)
: burger.classList.add(burgerOpenClass);
});
});
document.addEventListener('click', function (e) {
if (!e.target.closest('.t199__js__menu') && !e.target.closest('.t-menusub__menu--fullscreen__nav-arrow')) {
document.body.classList.remove('t199__is__menu');
}
});
var allMenu = document.querySelectorAll('.t199__mmenu');
Array.prototype.forEach.call(allMenu, function (menu) {
menu.addEventListener('clickedAnchorInTooltipMenu', function () {
document.body.classList.remove('t199__is__menu');
});
});
}
function t199_positionHeader(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var header = rec.querySelector('.t199__js__header');
var bgColor = header ? header.style.backgroundColor || window.getComputedStyle(header).backgroundColor : '';
t199_positionHeaderOnScroll(header, bgColor);
window.addEventListener('scroll', function () {
t199_positionHeaderOnScroll(header, bgColor);
});
}
function t199_positionHeaderOnScroll(header, bgColor) {
if (window.pageYOffset <= 0) {
if (header) header.classList.remove('t199__is__active');
if (header) header.style.backgroundColor = bgColor;
} else if (header && !header.classList.contains('t199__is__active')) {
header.classList.add('t199__is__active');
header.style.backgroundColor = '';
}
}
function t204_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recid);
});
var allRec = document.getElementById('allrecords');
var burger = rec.querySelector('.t204__burger');
var menu = rec.querySelector('.t204__menu');
var closeElements = rec.querySelectorAll('.t204__closelayer, .t204__close');
var links = rec.querySelectorAll('.t204__item a');
var isLazy = allRec ? allRec.getAttribute('data-tilda-lazy') === 'yes' : false;
if (menu) menu.style.transition = '0.3s ease all';
if (menu) menu.style.opacity = '0';
if (menu) menu.style.right = '-300px';
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) {
t204_hideMenu(recid);
}
});
if (burger) {
burger.addEventListener('click', function () {
t204_showMenu(recid);
if (window.lazy === 'y' || isLazy) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
burger.addEventListener('clickedAnchorInTooltipMenu', function () {
t204_hideMenu(recid);
});
}
Array.prototype.forEach.call(closeElements, function (element) {
element.addEventListener('click', function () {
t204_hideMenu(recid);
});
});
Array.prototype.forEach.call(links, function (link) {
link.addEventListener('click', function () {
if (link.closest('.t794__tm-link, .t978__tm-link, .t966__tm-link')) return;
t204_hideMenu(recid);
});
});
}
function t204_showMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t204__menu');
var closeLayer = rec.querySelector('.t204__closelayer');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t204__body_menushowed');
if (menu) menu.style.visibility = 'visible';
if (menu) menu.style.opacity = '1';
if (menu) menu.style.right = '0';
if (closeLayer) closeLayer.style.visibility = 'visible';
}
function t204_hideMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t204__menu');
var closeLayer = rec.querySelector('.t204__closelayer');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t204__body_menushowed');
if (menu) menu.style.visibility = 'hidden';
if (menu) menu.style.opacity = '0';
if (menu) menu.style.right = '-300px';
if (closeLayer) closeLayer.style.visibility = 'hidden';
}
/* old function */
function t204_clickBurger(recid) {
var allRec = document.getElementById('allrecords');
var burger = document.getElementById('t204__burger');
var closeLayer = document.getElementById('t204__closelayer');
var isLazy = allRec ? allRec.getAttribute('data-tilda-lazy') === 'yes' : false;
if (burger && burger.closest('#rec' + recid)) {
burger.addEventListener('click', function () {
t204_showMenu(recid);
if (window.lazy === 'y' || isLazy) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
if (closeLayer && closeLayer.closest('#rec' + recid)) {
closeLayer.addEventListener('click', function () {
t204_hideMenu(recid);
});
}
var menuList = document.querySelectorAll('.t204__burger');
Array.prototype.forEach.call(menuList, function (menu) {
menu.addEventListener('clickedAnchorInTooltipMenu', function () {
t204_hideMenu(recid);
});
});
}
function t213_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = document.getElementById('t213-marker' + recId);
if (!container) return;
var minScreenWidth = rec.getAttribute('data-screen-min');
var maxScreenWidth = rec.getAttribute('data-screen-max');
var windowWidth = window.innerWidth;
if (minScreenWidth && windowWidth < parseInt(minScreenWidth, 10)) return;
if (maxScreenWidth && windowWidth > parseInt(maxScreenWidth, 10)) return;
var timer;
var bgColor = container.getAttribute('data-bg-color');
var documentBody = document.body;
documentBody.style.transition = 'background-color 1s linear';
if (window.t213higher === undefined) {
window.t213higher = 1000000;
}
var containerOffsetTop = container.getBoundingClientRect().top + window.pageYOffset;
if (window.t213higher > containerOffsetTop) {
window.t213higher = containerOffsetTop;
window.t213higher_id = recId;
}
var bodyDefBgColor = getComputedStyle(documentBody, null).backgroundColor || '';
var timerCount = 0;
function t213__scrollEvent() {
if (timer) {
window.clearTimeout(timer);
if (timerCount >= 15) {
t213_timer_do(container, bgColor, bodyDefBgColor, recId);
}
timerCount++;
}
timer = window.setTimeout(function () {
t213_timer_do(container, bgColor, bodyDefBgColor, recId);
timerCount = 0;
}, 100);
}
window.addEventListener('scroll', t213__scrollEvent);
t213__scrollEvent();
}
function t213_timer_do(container, bgColor, bodyDefBgColor, recId) {
var top = container.getBoundingClientRect().top + window.pageYOffset;
var scrollTop = window.pageYOffset;
var windowHeight = window.innerHeight;
var documentBody = document.body;
if (scrollTop + windowHeight >= top) {
documentBody.style.backgroundColor = bgColor;
} else if (window.t213higher_id == recId) {
documentBody.style.backgroundColor = bodyDefBgColor;
}
}
function t219_showcomments(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var disqusButton = rec.querySelector('.t-btn');
var disqusTitle = rec.querySelector('.t219__blocktitle');
if (disqusButton) disqusButton.style.display = 'none';
if (disqusTitle) disqusTitle.style.display = 'block';
var disqusDataShortname = rec.querySelector('.t219__disqusthread');
if (!disqusDataShortname) return;
var disqusShortname = disqusDataShortname.getAttribute('data-disqus-shortname');
var disqus = document.createElement('script');
disqus.type = 'text/javascript';
disqus.async = true;
if (disqusShortname.indexOf('.disqus.com') !== -1) {
disqus.src = '//' + disqusShortname + '/embed.js';
} else {
disqus.src = '//' + disqusShortname + '.disqus.com/embed.js';
}
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(disqus);
}
function t223_initThumbnail(rec) {
t_onFuncLoad('t223_setThumbnailHeight', function () {
t223_setThumbnailHeight(rec);
});
t_onFuncLoad('t223_setThumbnail', function () {
t223_setThumbnail(rec);
});
t_onFuncLoad('t223_setYouTubeIframeHeight', function () {
t223_setYouTubeIframeHeight(rec);
});
}
function t223_setThumbnail(rec) {
var thumbnails = rec.querySelectorAll('.t223__video-thumbnail');
if (!thumbnails.length) return;
Array.prototype.forEach.call(thumbnails, function (thumbnail) {
var blockTop = thumbnail.getBoundingClientRect().top;
var windowHeight = document.documentElement.clientHeight;
var scrollDiffHeigth = 400;
if (window.pageYOffset > blockTop - windowHeight - scrollDiffHeigth) {
var youTubeID = thumbnail.getAttribute('data-youtube-id').trim();
thumbnail.style.backgroundImage = 'url("https://img.youtube.com/vi/' + youTubeID + '/sddefault.jpg")';
thumbnail.addEventListener('click', function (event) {
event.preventDefault();
var youTubeWrapper = thumbnail.parentNode;
var youTubeIframe =
'VIDEO ';
thumbnail.innerHTML = youTubeIframe;
t223_setYouTubeIframeHeight(rec);
});
}
});
}
function t223_setThumbnailHeight(rec) {
var thumbnail = rec.querySelectorAll('.t223__video-thumbnail');
if (!thumbnail.length) return;
Array.prototype.forEach.call(thumbnail, function (image) {
var imageWidth = image.offsetWidth;
var computedHeight = imageWidth / (16 / 9);
image.style.height = computedHeight + 'px';
});
}
function t223_setYouTubeIframeHeight(rec) {
var youTubeIframes = rec.querySelectorAll('iframe');
if (!youTubeIframes.length) return;
Array.prototype.forEach.call(youTubeIframes, function (youTubeIframe) {
var iframeParent = youTubeIframe.parentNode;
var iframeParentWidth = iframeParent.offsetWidth;
var computedHeight = iframeParentWidth / (16 / 9);
youTubeIframe.height = computedHeight;
});
}
/**
* Wrapper for @t226_floating_inner_init function.
* SetTimeout is needed to wait while other scripts are being executed.
* When the event loop reaches @t226_floating_init, a check will take place: is it a block with text or an image?
* If there is an image, we need to wait again while image has been loaded.
* If there is a text, run the function immediately.
* But we need second SetTimeout for case when an image will load faster than text.
*
* To remove this wrapper, need to call function from HTML not on ready() but on window.onload
*/
function t226_floating_init(elementOnInput) {
setTimeout(function () {
var element = elementOnInput[0] ? elementOnInput[0] : elementOnInput;
var image = element.querySelector('img');
if (image) {
image.onload = function () {
t226_floating_inner_init(element);
};
} else {
t226_floating_inner_init(element);
}
}, 100);
}
function t226_floating_inner_init(element) {
setTimeout(function () {
var localWindow = window;
var column = element.parentNode;
var elementDimensions = t226_getElementDimension(element);
element.style.maxWidth = elementDimensions.width + 'px';
element.style.width = '100%';
column.style.minHeight = elementDimensions.height + 'px';
var timer;
var timerCount = 0;
var timerReact = 5;
localWindow.addEventListener('scroll', function () {
if (timer) {
window.clearTimeout(timer);
if (timerCount >= timerReact) {
t226_floating_scroll(element, localWindow, column);
timerCount = 0;
}
timerCount++;
}
timer = window.setTimeout(function () {
t226_floating_scroll(element, localWindow, column);
timerCount = 0;
}, 50);
});
localWindow.addEventListener('resize', function () {
localWindow.dispatchEvent(new CustomEvent('scroll'));
});
localWindow.dispatchEvent(new CustomEvent('scroll'));
}, 100);
}
function t226_floating_scroll(element, localWindow, column) {
var windowWidth = localWindow.innerWidth;
var elementDimensions = t226_getElementDimension(element);
var columnDimensions = t226_getElementDimension(column);
if (windowWidth <= 1024) {
element.classList.remove('t226__fixedTop');
element.classList.remove('t226__fixedBottom');
element.classList.remove('t226__floating');
return '';
}
element.style.maxWidth = columnDimensions.width + 'px';
if (columnDimensions.height < elementDimensions.height && columnDimensions.height > 0) {
column.style.height = element.style.height;
}
var elementHeight = elementDimensions.height;
var columnTop = column.getBoundingClientRect().top + window.pageYOffset;
var columnHeight = columnDimensions.height;
var columnBottom = columnTop + columnHeight;
var windowTop = localWindow.pageYOffset;
if (windowTop + elementHeight + 50 >= columnBottom) {
element.classList.add('t226__fixedBottom');
element.classList.remove('t226__fixedTop');
element.classList.remove('t226__floating');
} else if (windowTop + 50 > columnTop) {
element.classList.add('t226__floating');
element.classList.remove('t226__fixedBottom');
element.classList.remove('t226__fixedTop');
} else {
element.classList.add('t226__fixedTop');
element.classList.remove('t226__fixedBottom');
element.classList.remove('t226__floating');
}
}
function t226_getElementDimension(element) {
return {
height: Math.round(parseFloat(getComputedStyle(element).height.replace('px', ''), 10)),
width: Math.round(parseFloat(getComputedStyle(element).width.replace('px', ''), 10)),
};
}
function t228__init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menuBlock = rec.querySelector('.t228');
var mobileMenu = rec.querySelector('.t228__mobile');
var menuSubLinkItems = rec.querySelectorAll('.t-menusub__link-item');
var rightBtn = rec.querySelector('.t228__right_buttons_but .t-btn');
var mobileMenuPosition = mobileMenu
? mobileMenu.style.position || window.getComputedStyle(mobileMenu).position
: '';
var mobileMenuDisplay = mobileMenu ? mobileMenu.style.display || window.getComputedStyle(mobileMenu).display : '';
var isFixedMobileMenu = mobileMenuPosition === 'fixed' && mobileMenuDisplay === 'block';
var overflowEvent = document.createEvent('Event');
var noOverflowEvent = document.createEvent('Event');
overflowEvent.initEvent('t228_overflow', true, true);
noOverflowEvent.initEvent('t228_nooverflow', true, true);
if (menuBlock) {
menuBlock.addEventListener('t228_overflow', function () {
t228_checkOverflow(recid);
});
menuBlock.addEventListener('t228_nooverflow', function () {
t228_checkNoOverflow(recid);
});
}
rec.addEventListener('click', function (e) {
var targetLink = e.target.closest('.t-menusub__target-link');
if (targetLink && window.isMobile && window.innerWidth <= 980) {
if (targetLink.classList.contains('t-menusub__target-link_active')) {
if (menuBlock) menuBlock.dispatchEvent(overflowEvent);
} else {
if (menuBlock) menuBlock.dispatchEvent(noOverflowEvent);
}
}
var currentLink = e.target.closest(
'.t-menu__link-item:not(.tooltipstered):not(.t-menusub__target-link):not(.t794__tm-link):not(.t966__tm-link):not(.t978__tm-link):not(.t978__menu-link)'
);
if (currentLink && mobileMenu && isFixedMobileMenu) mobileMenu.click();
});
Array.prototype.forEach.call(menuSubLinkItems, function (linkItem) {
linkItem.addEventListener('click', function () {
if (mobileMenu && isFixedMobileMenu) mobileMenu.click();
});
});
if (rightBtn) {
rightBtn.addEventListener('click', function () {
if (mobileMenu && isFixedMobileMenu) mobileMenu.click();
});
}
if (menuBlock) {
menuBlock.addEventListener('showME601a', function () {
var menuLinks = rec.querySelectorAll('.t966__menu-link');
Array.prototype.forEach.call(menuLinks, function (menuLink) {
menuLink.addEventListener('click', function () {
if (mobileMenu && isFixedMobileMenu) mobileMenu.click();
});
});
});
}
t_onFuncLoad('t_throttle', function () {
var onResizeThrottled = t_throttle(function () {
t228_setWidth(recid);
}, 50);
window.addEventListener('resize', onResizeThrottled);
});
}
function t228_checkOverflow(recid) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t228') : null;
if (!menu) return;
var mobileContainer = document.querySelector('.t228__mobile_container');
var mobileContainerHeight = t228_getFullHeight(mobileContainer);
var windowHeight = document.documentElement.clientHeight;
var menuPosition = menu.style.position || window.getComputedStyle(menu).position;
if (menuPosition === 'fixed') {
menu.classList.add('t228__overflow');
menu.style.setProperty('height', windowHeight - mobileContainerHeight + 'px', 'important');
}
}
function t228_checkNoOverflow(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var menu = rec.querySelector('.t228');
var menuPosition = menu ? menu.style.position || window.getComputedStyle(menu).position : '';
if (menuPosition === 'fixed') {
if (menu) menu.classList.remove('t228__overflow');
if (menu) menu.style.height = 'auto';
}
}
function t228_setWidth(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menuCenterSideList = rec.querySelectorAll('.t228__centerside');
Array.prototype.forEach.call(menuCenterSideList, function (menuCenterSide) {
menuCenterSide.classList.remove('t228__centerside_hidden');
});
if (window.innerWidth <= 980) return;
var menuBlocks = rec.querySelectorAll('.t228');
Array.prototype.forEach.call(menuBlocks, function (menu) {
var maxWidth;
var centerWidth = 0;
var paddingWidth = 40;
var leftSide = menu.querySelector('.t228__leftside');
var rightSide = menu.querySelector('.t228__rightside');
var menuList = menu.querySelector('.t228__list');
var mainContainer = menu.querySelector('.t228__maincontainer');
var leftContainer = menu.querySelector('.t228__leftcontainer');
var rightContainer = menu.querySelector('.t228__rightcontainer');
var centerContainer = menu.querySelector('.t228__centercontainer');
var centerContainerLi = centerContainer ? centerContainer.querySelectorAll('li') : [];
var leftContainerWidth = t228_getFullWidth(leftContainer);
var rightContainerWidth = t228_getFullWidth(rightContainer);
var mainContainerWidth = mainContainer ? mainContainer.offsetWidth : 0;
var dataAlign = menu.getAttribute('data-menu-items-align');
var isDataAlignCenter = dataAlign === 'center' || dataAlign === null;
maxWidth = leftContainerWidth >= rightContainerWidth ? leftContainerWidth : rightContainerWidth;
maxWidth = Math.ceil(maxWidth);
Array.prototype.forEach.call(centerContainerLi, function (li) {
centerWidth += t228_getFullWidth(li);
});
leftSide.style.minWidth = '';
rightSide.style.minWidth = '';
if (mainContainerWidth - (maxWidth * 2 + paddingWidth * 2) > centerWidth + 20) {
if (isDataAlignCenter) {
if (leftSide) leftSide.style.minWidth = maxWidth + 'px';
if (rightSide) rightSide.style.minWidth = maxWidth + 'px';
}
} else {
if (leftSide) leftSide.style.minWidth = maxWidth + '';
if (rightSide) rightSide.style.minWidth = maxWidth + '';
}
if (menuList && menuList.classList.contains('t228__list_hidden'))
menuList.classList.remove('t228__list_hidden');
});
}
function t228_getFullWidth(el) {
if (!el) return 0;
var marginLeft = el.style.marginLeft || window.getComputedStyle(el).marginLeft;
var marginRight = el.style.marginRight || window.getComputedStyle(el).marginRight;
marginLeft = parseInt(marginLeft, 10) || 0;
marginRight = parseInt(marginRight, 10) || 0;
return el.offsetWidth + marginLeft + marginRight;
}
function t228_getFullHeight(el) {
if (!el) return 0;
var marginTop = el.style.marginTop || window.getComputedStyle(el).marginTop;
var marginBottom = el.style.marginBottom || window.getComputedStyle(el).marginBottom;
marginTop = parseInt(marginTop, 10) || 0;
marginBottom = parseInt(marginBottom, 10) || 0;
return el.offsetHeight + marginTop + marginBottom;
}
function t230_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t230');
var videoLazy = rec.querySelector('.t-video-lazyload');
if (videoLazy) {
t_onFuncLoad('t_video_lazyload__setHeight', function () {
t_video_lazyload__setHeight(videoLazy);
window.addEventListener('resize', function () {
t_video_lazyload__setHeight(videoLazy);
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
t_video_lazyload__setHeight(videoLazy);
});
});
}
}
function t235__next() {
var cur = parseInt($('.t235').attr('data-slide-count'), 10);
var event = document.createEvent('Event');
event.initEvent('displayChanged', true, true);
if (cur + 1 >= $('.r').not('[data-t263-block-notslide=yes]').size()) return;
cur++;
$('.r')
.not('[data-t263-block-notslide=yes]')
.each(function (i) {
if (cur - 1 == i) {
var el = $(this);
var trans_out_y = '-100px';
if (el.height() + 100 > $(window).height()) trans_out_y = '0px';
el.transition(
{
y: trans_out_y,
opacity: 0,
},
250,
'out',
function () {
el.css('display', 'none');
}
);
}
if (cur == i) {
var el = $(this);
el.css('display', 'none');
var trans_in_y = '50px';
if (el.height() + 100 > $(window).height()) trans_in_y = '0px';
el.transition(
{
y: trans_in_y,
},
1,
'ease',
function () {}
);
el.animate(
{
opacity: '0',
},
300,
function () {
el.css('display', 'block');
el.css('opacity', '0');
el.transition(
{
y: '0px',
opacity: 1,
},
500,
'ease',
function () {}
);
$('.r').removeClass('t235__active');
el.addClass('t235__active');
var els = document.querySelectorAll(
'.t117, .t121, .t132, .t223, .t226, .t228, .t229, .t230, .t268, .t279, .t341, .t346, .t347, .t349, .t351, .t353, .t384, .t385, .t386, .t396, .t400, .t404, .t409, .t410, .t412, .t418, .t422, .t425, .t428, .t433, .t448, .t456, .t477, .t478, .t480, .t486, .t498, .t504, .t506, .t509, .t511, .t517, .t518, .t519, .t520, .t532, .t533, .t538, .t539, .t544, .t545, .t552, .t554, .t569, .t570, .t577, .t592, .t598, .t599, .t601, .t604, .t605, .t609, .t615, .t616, .t650, .t659, .t670, .t675, .t686, .t688, .t694, .t698, .t700, .t726, .t728, .t730, .t734, .t738, .t740, .t744, .t754, .t760, .t762, .t764, .t774, .t776, .t778, .t780, .t786, .t798, .t799, .t801, .t813, .t814, .t822, .t826, .t827, .t829, .t842, .t843, .t849, .t850, .t851, .t856, .t858, .t859, .t860, .t881, .t889, .t902, .t912, .t923, .t937, .t959, .t979, .t982, .t983, .t989, .t994, .t1069, .t1071'
);
Array.prototype.forEach.call(els, function (child) {
child.dispatchEvent(event);
});
if (window.lazy === 'y' || $('#allrecords').attr('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
);
if (el.height() > $(window).height()) {
$('#t235__scrldonwicon').fadeIn('slow', function () {
$('#t235__scrldonwicon').delay(1000).fadeOut('slow');
});
}
var bg = el.attr('data-bg-color');
if (bg !== undefined && bg !== 'none') {
$('#allrecordstable').css('background-color', bg);
} else {
$('#allrecordstable').css('background-color', '');
}
}
});
$('.t235').attr('data-slide-count', cur);
t235__update();
}
function t235__prev() {
var cur = parseInt($('.t235').attr('data-slide-count'), 10);
var event = document.createEvent('Event');
event.initEvent('displayChanged', true, true);
if (cur - 1 == -1) return;
cur--;
$('.r')
.not('[data-t263-block-notslide=yes]')
.each(function (i) {
if (cur + 1 == i) {
var el = $(this);
el.css('display', 'none');
}
if (cur == i) {
var el = $(this);
el.css('display', 'block');
el.css('opacity', '0');
el.transition(
{
y: '0px',
},
1,
'easeOutSine'
);
el.animate(
{
opacity: '1',
},
50,
function () {}
);
$('.r').removeClass('t235__active');
el.addClass('t235__active');
var bg = el.attr('data-bg-color');
if (bg !== undefined && bg !== 'none') {
$('#allrecordstable').css('background-color', bg);
} else {
$('#allrecordstable').css('background-color', '');
}
var els = document.querySelectorAll(
'.t117, .t121, .t132, .t223, .t226, .t228, .t229, .t230, .t268, .t279, .t341, .t346, .t347, .t349, .t351, .t353, .t384, .t385, .t386, .t396, .t400, .t404, .t409, .t410, .t412, .t418, .t422, .t425, .t428, .t433, .t448, .t456, .t477, .t478, .t480, .t486, .t498, .t504, .t506, .t509, .t511, .t517, .t518, .t519, .t520, .t532, .t533, .t538, .t539, .t544, .t545, .t552, .t554, .t569, .t570, .t577, .t592, .t598, .t599, .t601, .t604, .t605, .t609, .t615, .t616, .t650, .t659, .t670, .t675, .t686, .t688, .t694, .t698, .t700, .t726, .t728, .t730, .t734, .t738, .t740, .t744, .t754, .t760, .t762, .t764, .t774, .t776, .t778, .t780, .t786, .t798, .t799, .t801, .t813, .t814, .t822, .t826, .t827, .t829, .t842, .t843, .t849, .t850, .t851, .t856, .t858, .t859, .t860, .t881, .t889, .t902, .t912, .t923, .t937, .t959, .t979, .t982, .t983, .t989, .t994, .t1071'
);
Array.prototype.forEach.call(els, function (child) {
child.dispatchEvent(event);
});
}
});
$('.t235').attr('data-slide-count', cur);
t235__update();
}
function t235__galnext() {
var elactive = $('.t235__active');
var tplid = elactive.attr('data-record-type');
if (tplid == '5') elactive.find('[data-slide=next]').trigger('click');
}
function t235__update() {
var cur = parseInt($('.t235').attr('data-slide-count'), 10);
var c = cur + 1;
var t = $('.r').not('[data-t263-block-notslide=yes]').size();
$('.t235__count').html(c + '/' + t);
if (window.lazy === 'y' || $('#allrecords').attr('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t235__init() {
$('#allrecords').wrap(
"
"
);
$('#allrecords').css('width', $(window).width() + 'px');
var wnd = $(window);
$('.r')
.not('[data-t263-block-notslide=yes]')
.each(function () {
var el = $(this);
el.css('padding', '0px');
if (el.height() > wnd.height() && el.find('.t396__artboard_scale').length === 0) {
el.css('padding-top', '150px');
el.css('padding-bottom', '150px');
}
el.css('display', 'none');
el.css('opacity', '');
el.css('background-color', '');
});
$(window).on('resize', function () {
$('#allrecords').css('width', $(window).width() + 'px');
});
var cur = -1;
var slideCount = $('.t235').attr('data-slide-count');
if (typeof slideCount !== 'undefined') {
cur = parseInt(slideCount, 10);
} else {
$('.t235').attr('data-slide-count', cur);
}
if (!isNaN(cur)) {
$('.t235')
.find('.t235__next')
.on('click', function () {
t235__next();
});
$('.t235')
.find('.t235__prev')
.on('click', function () {
t235__prev();
});
t235__next();
$('#tildacopy').css('display', 'none');
$('.t235').css('right', '-=100');
setTimeout(function () {
$('.t235').addClass('t235_anim');
$('.t235').css('right', '+=100');
}, 800);
$(document).keydown(function (e) {
switch (e.which) {
case 38:
t235__prev();
break;
case 40:
t235__next();
break;
case 33:
t235__prev();
break;
case 34:
t235__next();
break;
case 32:
t235__next();
break;
case 190:
t235__galnext();
break;
default:
return;
}
if (e.which != 190) {
e.preventDefault();
}
});
}
$('#allrecordstable').css('transition', 'background-color 500ms linear');
$('.t-cover__carrier').css('background-attachment', 'scroll');
}
function t232_expandtext(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var text = rec.querySelector('.t232__text');
if (!text) return;
if (text.style.display === 'block' || !text.style.display) {
text.style.display = 'none';
} else {
text.style.display = 'block';
}
}
window.requestAnimationFrame = (function () {
return (
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (callback) {
window.setTimeout(callback, 1000 / 60);
}
);
})();
function t270_scroll(hash, offset) {
if (!hash) return;
t270_checkLoad(hash, offset);
var excludeHashes = ['#!/tproduct/', '#!/tab/', '#opencart'];
if (excludeHashes.includes(hash)) {
return true;
}
var isHistoryChangeAllowed = window.location.hash !== hash;
var wrapperBlock = document.querySelector('.t270');
var dontChangeHistory = wrapperBlock ? Boolean(wrapperBlock.getAttribute('data-history-disabled')) : false;
t270_scrollToEl(hash, offset);
if (!dontChangeHistory && isHistoryChangeAllowed) {
if (history.pushState) {
history.pushState(null, null, hash);
} else {
window.location.hash = hash;
}
isHistoryChangeAllowed = false;
}
return true;
}
function t270_checkLoad(hash, offset) {
if (window.t270_loadChecked) return;
var sliderWrappers = document.body.querySelectorAll('.t-slds__items-wrapper');
if (!sliderWrappers.length) return;
var lastWrapper = sliderWrappers[sliderWrappers.length - 1];
var sliderImgs = lastWrapper ? lastWrapper.querySelectorAll('.t-slds__bgimg') : [];
var lastImg = sliderImgs[sliderImgs.length - 1];
var imageUrl = lastImg ? window.getComputedStyle(lastImg).backgroundImage : '';
imageUrl = imageUrl.substring(5, imageUrl.length - 2);
var preloaderImg = document.createElement('img');
preloaderImg.src = imageUrl ? imageUrl : '';
preloaderImg.addEventListener('load', function () {
t270_scroll(hash, offset);
window.t270_loadChecked = true;
});
}
function t270_scrollToEl(hash, offset) {
var SCROLL_DURATION_MS = 500;
var body = document.body;
if (body.getAttribute('data-scroll')) return;
var scrollTargetY = t270_getTarget(hash, offset);
if (isNaN(scrollTargetY)) return;
var canSmoothScroll =
window.CSS &&
window.CSS.supports('scroll-behavior', 'smooth') &&
'scrollBehavior' in document.documentElement.style;
// На андройде не всегда срабатывает скролл на мобильных устройствах.
// Если скролл происходит через раскрытое на фулскрин меню, то скролл не сработает.
// Поэтому нам нужно использовать кастомную реализацию плавного скролла на андройд.
var userAgent = navigator.userAgent.toLowerCase();
var isAndroid = userAgent.indexOf('android') !== -1;
if (window.isMobile && !isAndroid && canSmoothScroll) {
body.setAttribute('data-scroll', 'true');
window.scrollTo({
left: 0,
top: scrollTargetY,
behavior: 'smooth',
});
setTimeout(function () {
body.removeAttribute('data-scroll');
}, SCROLL_DURATION_MS);
} else {
t270_smoothScrollTo(scrollTargetY, SCROLL_DURATION_MS);
}
}
function t270_smoothScrollTo(targetY, duration = 500) {
var body = document.body;
var startY = window.scrollY || window.pageYOffset;
var deltaY = targetY - startY;
var startTime = performance.now();
function easeInOutQuad(t) {
return Math.pow(t, 2);
}
function scroll() {
var currentTime = performance.now();
var elapsedTime = Math.min((currentTime - startTime) / duration, 1);
var ease = easeInOutQuad(elapsedTime);
window.scrollTo(0, startY + deltaY * ease);
if (elapsedTime < 1) {
requestAnimationFrame(scroll);
} else {
body.removeAttribute('data-scroll');
body.removeAttribute('data-scrollable');
window.scrollTo(0, targetY);
}
}
body.setAttribute('data-scroll', 'true');
body.setAttribute('data-scrollable', 'true');
requestAnimationFrame(scroll);
}
function t270_getTarget(hash, offset) {
var target;
try {
if (hash.substring(0, 1) === '#') {
target = document.getElementById(hash.substring(1));
} else {
target = document.querySelector(hash);
}
} catch (event) {
console.log('Exception t270: ' + event.message);
return;
}
if (!target) {
target = document.querySelector('a[name="' + hash.substr(1) + '"], div[id="' + hash.substr(1) + '"]');
if (!target) return;
}
target = parseInt(target.getBoundingClientRect().top + window.pageYOffset - offset, 10);
target = Math.max(target, 0);
return target;
}
window.t256showvideo = function (recid) {
if (document.readyState !== 'loading') {
t256_showVideo(recid);
} else {
document.addEventListener('DOMContentLoaded', function () {
t256_showVideo(recid);
});
}
function t256_showVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t256__video-container');
var videoCover = rec.querySelector('.t256__cover');
var videoCarrierYouTube = rec.querySelector('.t256__video-carier');
var videoCarrierVimeo = rec.querySelector('.t256__video-vimeo');
var videoCarrierHTML5 = rec.querySelector('.t256__video-html5');
if (videoCarrierYouTube) {
var youTubeID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-youtube') : '';
if (!youTubeID) return;
var youTubeURL = youTubeID ? 'https://www.youtube.com/embed/' + youTubeID : '';
t256_toggleClasses(videoCover, videoContainer);
videoCarrierYouTube.innerHTML =
' ';
}
if (videoCarrierVimeo) {
var vimeoID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-vimeo') : '';
if (!vimeoID) return;
var vimeoPrivacyHash = videoContainer
? videoContainer.getAttribute('data-content-popup-video-hash-vimeo')
: '';
var vimeoURL = '';
if (vimeoPrivacyHash) {
vimeoURL = vimeoID
? 'https://player.vimeo.com/video/' + vimeoID + '?' + vimeoPrivacyHash + '&autoplay=1'
: '';
} else {
vimeoURL = vimeoID ? 'https://player.vimeo.com/video/' + vimeoID + '?autoplay=1' : '';
}
t256_toggleClasses(videoCover, videoContainer);
videoCarrierVimeo.innerHTML =
'' +
'';
}
if (videoCarrierHTML5) {
var html5URL = videoContainer.getAttribute('data-content-popup-video-url-html5');
if (!html5URL) return;
t256_toggleClasses(videoCover, videoContainer);
videoCarrierHTML5.innerHTML =
'' +
'' +
'Your browser does not support the video tag' +
' ' +
' ' +
' ' +
' ';
}
}
function t256_toggleClasses(videoCover, videoContainer) {
document.body.classList.add('t256__overflow');
if (videoCover) videoCover.classList.add('t256__hidden');
if (videoContainer) videoContainer.classList.remove('t256__hidden');
}
};
window.t256hidevideo = function (recid) {
if (document.readyState !== 'loading') {
t256_hideVideo(recid);
} else {
document.addEventListener('DOMContentLoaded', function () {
t256_hideVideo(recid);
});
}
function t256_hideVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t256__video-container');
var videoCover = rec.querySelector('.t256__cover');
var videoCarrier =
rec.querySelector('.t256__video-carier') ||
rec.querySelector('.t256__video-vimeo') ||
rec.querySelector('.t256__video-html5');
document.body.classList.remove('t256__overflow');
if (videoCover) videoCover.classList.remove('t256__hidden');
if (videoContainer) videoContainer.classList.add('t256__hidden');
if (videoCarrier) videoCarrier.innerHTML = '
';
}
};
function t260_init() {
$('.t260').each(function () {
var el = $(this);
if (el.attr('data-block-init') == 'yes') {
} else {
el.attr('data-block-init', 'yes');
var toggler = el.find('.t260__header');
var content = el.find('.t260__content');
toggler.click(function () {
$(this).toggleClass('t260__opened');
if ($(this).hasClass('t260__opened') == true) {
content.slideDown();
} else {
content.slideUp();
}
});
}
});
}
function t262_appendGoogleMap(recid, key) {
var grecid = recid;
if (typeof google === 'object' && typeof google.maps === 'object') {
t262_handleGoogleApiReady(grecid);
} else {
if (window.googleapiiscalled !== true) {
var runfunc =
'window.t262_handleGoogleApiReady_' +
grecid +
' = function () { t262_handleGoogleApiReady("' +
grecid +
'") }';
eval(runfunc);
var script = document.createElement('script');
script.type = 'text/javascript';
script.src =
'//maps.google.com/maps/api/js?key=' +
jQuery.trim(key) +
'&callback=t262_handleGoogleApiReady_' +
grecid;
document.body.appendChild(script);
window.googleapiiscalled = true;
} else {
setTimeout(function () {
t262_appendGoogleMap(grecid, key);
}, 200);
}
}
}
function t262_setMapHeight(recid) {
var el = $('#rec' + recid);
var map = el.find('.t262__map');
var textwrapper = el.find('.t262__col_text').height();
map.css('height', textwrapper);
}
function t262_handleGoogleApiReady(recid) {
$('#rec' + recid)
.find('.t262__map')
.each(function (index, Element) {
var el = $(Element);
var arMarkers = window['arMapMarkers' + recid];
window.isDragMap = $isMobile ? false : true;
var myLatLng =
arMarkers.length > 0
? new google.maps.LatLng(parseFloat(arMarkers[0].lat), parseFloat(arMarkers[0].lng))
: false;
var myOptions = {
zoom: parseInt(el.attr('data-map-zoom')),
center: myLatLng,
scrollwheel: false,
draggable: window.isDragMap,
zoomControl: true,
};
var map = new google.maps.Map(Element, myOptions);
var i;
var mrk;
var marker;
var markers = [];
var infowindow;
var bounds = new google.maps.LatLngBounds();
for (i in arMarkers) {
mrk = arMarkers[i];
myLatLng = new google.maps.LatLng(parseFloat(mrk.lat), parseFloat(mrk.lng));
marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: mrk.title,
});
bounds.extend(myLatLng);
if (mrk.descr > '') {
attachInfoMessage(marker, mrk.descr);
} else {
attachInfoMessage(marker, mrk.title);
}
markers[markers.length] = marker;
infowindow = '';
marker = '';
}
function attachInfoMessage(marker, descr) {
var infowindow = new google.maps.InfoWindow({
content: $('').html(descr).text(),
});
marker.addListener('click', function () {
infowindow.open(marker.get('map'), marker);
});
}
if (arMarkers.length > 1) {
map.fitBounds(bounds);
if (map.getZoom() > parseInt(el.attr('data-map-zoom'))) {
map.setZoom(parseInt(el.attr('data-map-zoom')));
}
}
// Resizing the map for responsive design
google.maps.event.addDomListener(window, 'resize', function () {
var center = map.getCenter();
google.maps.event.trigger(map, 'resize');
map.setCenter(center);
});
// DBL Click - activate on mobile
if ($isMobile) {
google.maps.event.addDomListener(window, 'dblclick', function () {
if (window.isDragMap) {
window.isDragMap = false;
} else {
window.isDragMap = true;
}
map.setOptions({ draggable: window.isDragMap });
});
}
});
}
function t262_appendYandexMap(recid, key) {
var yarecid = recid;
if (typeof ymaps === 'object' && typeof ymaps.Map === 'function') {
t262_handleYandexApiReady(recid);
} else {
if (window.yandexmapsapiiscalled !== true) {
var runfunc =
'window.t262_handleYandexApiReady_' +
yarecid +
' = function () { return t262_handleYandexApiReady("' +
yarecid +
'") }';
eval(runfunc);
var script = document.createElement('script');
script.type = 'text/javascript';
script.src =
'https://api-maps.yandex.ru/2.1/?lang=ru-RU&coordorder=latlong&onload=t262_handleYandexApiReady_' +
yarecid;
if (key > '') {
script.src = script.src + '&apikey=' + key;
}
document.body.appendChild(script);
window.yandexmapsapiiscalled = true;
} else {
setTimeout(function () {
t262_appendYandexMap(yarecid, key);
}, 200);
}
}
}
function t262_handleYandexApiReady(recid) {
$('#rec' + recid)
.find('.t262__map')
.each(function (index, Element) {
var el = $(Element);
var arMarkers = window['arMapMarkers' + recid];
window.isDragMap = $isMobile ? false : true;
if (el.attr('data-map-style') != '') {
var mapstyle = eval(el.attr('data-map-style'));
} else {
var mapstyle = '[]';
}
var myLatlng = arMarkers.length > 0 ? [parseFloat(arMarkers[0].lat), parseFloat(arMarkers[0].lng)] : false;
var myStates = {
zoom: parseInt(el.attr('data-map-zoom')),
center: myLatlng,
scrollZoom: false,
controls: ['typeSelector', 'zoomControl'],
drag: window.isDragMap,
};
var map = new ymaps.Map(Element, myStates);
var i;
var mrk;
var marker;
var myGroup = new ymaps.GeoObjectCollection({});
map.behaviors.disable('scrollZoom');
for (i in arMarkers) {
mrk = arMarkers[i];
myLatlng = [parseFloat(mrk.lat), parseFloat(mrk.lng)];
myGroup.add(
new ymaps.Placemark(myLatlng, {
hintContent: mrk.title,
balloonContent: mrk.descr > '' ? $('').html(mrk.descr).text() : mrk.title,
})
);
}
map.geoObjects.add(myGroup);
if (arMarkers.length > 1) {
map.setBounds(myGroup.getBounds(), { checkZoomRange: true });
}
$(window).resize(function () {
map.container.fitToViewport();
});
// DBL Click - activate on mobile
if ($isMobile) {
$(window).dblclick(function () {
if (window.isDragMap) {
window.isDragMap = false;
} else {
window.isDragMap = true;
}
if (window.isDragMap) {
map.behaviors.enable('drag');
} else {
map.behaviors.disable('drag');
}
});
}
});
}
window.t266showvideo = function (recid) {
if (document.readyState !== 'loading') {
t266_showVideo(recid);
} else {
document.addEventListener('DOMContentLoaded', function () {
t266_showVideo(recid);
});
}
function t266_showVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t266__video-container');
var videoCover = rec.querySelector('.t266__cover');
var youTubeCarrier = rec.querySelector('.t266__video-carier');
var vimeoCarrier = rec.querySelector('.t266__video-vimeo');
var htmlvideoCarrier = rec.querySelector('.t266__video-html5');
if (youTubeCarrier) {
t266_toggleClasses(videoCover, videoContainer);
var youTubeID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-youtube') : '';
if (!youTubeID) return;
var videoURL = youTubeID ? 'https://www.youtube.com/embed/' + youTubeID : '';
var iframe = document.createElement('iframe');
iframe.id = 'youtubeiframe' + recid;
iframe.classList.add('t266__iframe');
iframe.width = '100%';
iframe.height = '540';
iframe.src = videoURL + '?rel=0&autoplay=1';
iframe.frameBorder = '0';
iframe.setAttribute('allowfullscreen', '');
var closeLink = document.createElement('a');
closeLink.classList.add('t266__close-link');
closeLink.href = "javascript:t266hidevideo('" + recid + "');";
var closeLinkContent = document.createElement('button');
closeLinkContent.setAttribute('type', 'button');
closeLinkContent.classList.add('t266__close');
closeLink.insertAdjacentElement('beforeend', closeLinkContent);
youTubeCarrier.innerHTML = '';
youTubeCarrier.insertAdjacentElement('beforeend', iframe);
youTubeCarrier.insertAdjacentElement('beforeend', closeLink);
}
if (vimeoCarrier) {
var vimeoID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-vimeo') : '';
if (!vimeoID) return;
var vimeoPrivacyHash = videoContainer
? videoContainer.getAttribute('data-content-popup-video-hash-vimeo')
: '';
var vimeoURL = '';
if (vimeoPrivacyHash) {
vimeoURL = vimeoID
? 'https://player.vimeo.com/video/' + vimeoID + '?' + vimeoPrivacyHash + '&autoplay=1'
: '';
} else {
vimeoURL = vimeoID ? 'https://player.vimeo.com/video/' + vimeoID + '?autoplay=1' : '';
}
t266_toggleClasses(videoCover, videoContainer);
vimeoCarrier.innerHTML =
'' +
'' +
' ' +
' ';
}
if (htmlvideoCarrier) {
var html5URL = videoContainer.getAttribute('data-content-popup-video-url-html5');
if (!html5URL) return;
t266_toggleClasses(videoCover, videoContainer);
htmlvideoCarrier.innerHTML =
'' +
'' +
'Your browser does not support the video tag' +
' ' +
'' +
' ' +
' ';
}
}
function t266_toggleClasses(videoCover, videoContainer) {
document.body.classList.add('t266__overflow');
if (videoCover) videoCover.classList.add('t266__hidden');
if (videoContainer) videoContainer.classList.remove('t266__hidden');
}
};
window.t266hidevideo = function (recid) {
if (document.readyState !== 'loading') {
t266_hideVideo(recid);
} else {
document.addEventListener('DOMContentLoaded', function () {
t266_hideVideo(recid);
});
}
function t266_hideVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t266__video-container');
var videoCover = rec.querySelector('.t256__cover');
var videoCarrier =
rec.querySelector('.t266__video-carier') ||
rec.querySelector('.t266__video-vimeo') ||
rec.querySelector('.t266__video-html5');
document.body.classList.remove('t266__overflow');
if (videoCover) videoCover.classList.remove('t266__hidden');
if (videoContainer) videoContainer.classList.add('t266__hidden');
if (videoCarrier) videoCarrier.innerHTML = '
';
}
};
function t268_init(recId) {
var rec = document.getElementById('rec' + recId);
var container = rec.querySelector('.t268');
t268_setHeight(recId);
window.addEventListener('resize', function () {
t268_setHeight(recId);
});
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', function () {
t268_setHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t268_setHeight(recId);
});
}
}
function t268_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t268');
if (!container) return;
var colRight = rec.querySelector('.t268__col-right');
var colLeft = rec.querySelector('.t268__col-left');
var colStyle = getComputedStyle(colRight, null);
var colPaddingTop = parseInt(colStyle.paddingTop) || 0;
var colPaddingBottom = parseInt(colStyle.paddingBottom) || 0;
var colHeight = colRight.clientHeight - (colPaddingTop + colPaddingBottom);
colLeft.style.height = colHeight + 'px';
}
function t186C_init(recid) {
var t186C_el = $('#rec' + recid);
var t186C_btn = t186C_el.find('.t-submit');
t186C_btn.click(function () {
setTimeout(function () {
t186C_checkSuccess(t186C_el);
}, 100);
setTimeout(function () {
t186C_checkSuccess(t186C_el);
}, 300);
setTimeout(function () {
t186C_checkSuccess(t186C_el);
}, 700);
setTimeout(function () {
t186C_checkSuccess(t186C_el);
}, 1500);
});
}
function t186C_checkSuccess(t186C_el) {
var t186C_formWrapper = t186C_el.find('.t186C__wrapper');
if (
t186C_el.find('.js-form-proccess').hasClass('js-send-form-success') &&
!t186C_formWrapper.hasClass('t186C__hiding')
) {
t186C_formWrapper.addClass('t186C__hiding');
var t186C_root = $('html, body');
var t186C_targetOffset = t186C_el.find('.t186C__blockinput-success').offset().top;
if ($(window).width() > 960) {
var t186C_target = t186C_targetOffset - 200;
} else {
var t186C_target = t186C_targetOffset - 100;
}
if (t186C_targetOffset > $(window).scrollTop()) {
t186C_formWrapper.addClass('t186C__wrapper_hidden');
} else {
t186C_root.animate({ scrollTop: t186C_target }, 400);
setTimeout(function () {
t186C_formWrapper.addClass('t186C__wrapper_hidden');
}, 400);
}
}
}
function t300_init() {
var tooltipBlocks = document.querySelectorAll('.t300');
Array.prototype.forEach.call(tooltipBlocks, function (tooltip) {
var hook = tooltip.getAttribute('data-tooltip-hook');
var tooltipId = tooltip.getAttribute('data-tooltip-id');
if (hook !== '') {
if (typeof window['tooltipster'] !== 'undefined') {
var links = document.querySelectorAll('a[href="' + hook + '"]:not(.tooltipstered)');
} else {
if (typeof jQuery !== 'undefined') {
var links = $('a[href="' + hook + '"]:not(.tooltipstered)');
}
}
if (!links || links.length === 0) return;
var content = tooltip.querySelector('.t300__content').innerHTML;
var touchDevices = !1;
if (hook.charAt(0) == '#') {
touchDevices = !0;
}
var position = tooltip.getAttribute('data-tooltip-position');
if (position === '') {
position = 'top';
}
t_onFuncLoad('tooltipster', function () {
window.tooltipster(links, {
theme: 't300__tooltipster-noir t300__tooltipster-noir_' + tooltipId + '',
contentAsHTML: true,
content: content,
interactive: true,
touchDevices: touchDevices,
position: position,
});
});
t300__getLinksArray(links).forEach(function (link) {
t300__createLinkEvents(link);
});
}
});
}
function t300__getLinksArray(links) {
var linksArray = [];
for (var i = 0; i < links.length; i++) {
linksArray.push(links[i]);
}
return linksArray;
}
function t300__createLinkEvents(link) {
link.addEventListener('tildatooltip:show', function () {
var popup = link.closest('.t-popup');
if (!popup) return;
var style = document.createElement('style');
style.id = 't300TooltipStyle';
style.innerHTML = '.tooltipster-base {z-index: 10000001;}';
document.head.append(style);
});
link.addEventListener('tildatooltip:hide', function () {
var style = document.getElementById('t300TooltipStyle');
if (style) style.remove();
});
if (link.closest('.t706__cartpage')) {
link.addEventListener('click', function (event) {
event.preventDefault();
});
}
}
t_onReady(function () {
t300_init();
if ('MutationObserver' in window) {
setTimeout(function () {
var stores = document.querySelectorAll('body .t-store');
Array.prototype.forEach.call(stores, function (store) {
new MutationObserver(function (mutationsList) {
for (var mutation in mutationsList) {
var event = mutationsList[mutation];
if (event.type === 'attributes') {
if (event.target.className.indexOf('t-popup_show') != -1) {
t300_init();
}
}
}
}).observe(store, {
attributes: true,
attributeFilter: ['class'],
subtree: true,
});
});
t300_init();
}, 500);
}
});
function t279__equalheight(recid) {
var currentTallest = 0;
var currentRowStart = 0;
var rowDivs = [];
var $el;
var topPosition = 0;
$('#rec' + recid + ' .t279__textwrapper').each(function () {
$el = $(this);
$($el).height('auto');
topPostion = $el.position().top;
if (currentRowStart != topPostion) {
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
rowDivs.length = 0;
currentRowStart = topPostion;
currentTallest = $el.height();
rowDivs.push($el);
} else {
rowDivs.push($el);
currentTallest = currentTallest < $el.height() ? $el.height() : currentTallest;
}
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
});
}
function t280_showMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
var isAndroid = /(android)/i.test(navigator.userAgent);
var menu = rec.querySelector('.t280');
var menuItems = rec.querySelectorAll('.t280__menu__item');
var menuLinks = rec.querySelectorAll('.t978__menu-link');
var menuContainer = rec.querySelector('.t280__menu');
var menuBurger = menu ? menu.querySelector('.t-menuburger') : null;
var clickElementsList = rec.querySelectorAll(
'.t280 .t-menuburger, .t280__menu__bg, .t280__menu__link:not(.tooltipstered):not(.t280__menu__link_submenu), .t978__tooltip-menu_mobile'
);
Array.prototype.forEach.call(clickElementsList, function (clickElement) {
clickElement.addEventListener('click', function () {
if (clickElement.closest('.t280__menu__link.tooltipstered') || clickElement.closest('.t794__tm-link'))
return;
if (isChrome && isAndroid && menuItems.length > 10 && window.location.hash) {
setTimeout(function () {
var hash = window.location.hash;
window.location.hash = '';
window.location.hash = hash;
}, 50);
}
if (!clickElement.closest('.t978__tm-link, .t966__tm-link')) {
document.body.classList.toggle('t280_opened');
if (menu) menu.classList.toggle('t280__main_opened');
}
if (clickElement.classList.contains('t-menuburger')) {
var expandedStatus = clickElement.classList.contains('t-menuburger-opened');
clickElement.setAttribute('aria-expanded', expandedStatus);
}
t280_changeSize(recid);
t280_highlight(recid);
});
});
document.addEventListener('click', function (e) {
if (
e.target.closest(
'.t978__tm-link, .t966__tm-link, .t-menusub__target-link, .t978__menu-link_hook, .t978__menu-item'
)
) {
setTimeout(function () {
t280_changeSize(recid);
if (menuContainer) menuContainer.style.transition = 'none';
}, 200);
}
});
Array.prototype.forEach.call(menuLinks, function (link) {
link.addEventListener('click', function () {
t280_changeSize(recid);
});
});
if (menu) {
menu.addEventListener('clickedAnchorInTooltipMenu', function () {
document.body.classList.remove('t280_opened');
menu.classList.remove('t280__main_opened');
});
}
var submenuLinks = rec.querySelectorAll('.t-menusub__link-item');
Array.prototype.forEach.call(submenuLinks, function (link) {
link.addEventListener('click', function () {
// Не закрываем меню при клике на триггеры многоуровневого меню или tooltip-ссылки
if (
link.hasAttribute('data-menu-submenu-hook') ||
link.classList.contains('t794__tm-link') ||
link.hasAttribute('data-tooltip-menu-id')
) {
return;
}
document.body.classList.remove('t280_opened');
if (menu) menu.classList.remove('t280__main_opened');
if (menuBurger) {
menuBurger.classList.remove('t-menuburger-opened');
menuBurger.setAttribute('aria-expanded', false);
}
});
});
if (submenuLinks.length > 0) {
document.addEventListener('submenuShow', function () {
t280_changeSize(recid);
});
}
}
function t280_changeSize(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t280__menu');
var menuBottom = rec.querySelector('.t280__bottom');
var menuContainer = rec.querySelector('.t280__container');
var menuWrapper = rec.querySelector('.t280__menu__wrapper');
var menuHeight = menu ? menu.offsetHeight : 0;
var menuBottomHeight = menuBottom ? menuBottom.offsetHeight : 0;
var menuContainerHeight = menuContainer ? menuContainer.offsetHeight : 0;
var padding = 140;
if (menuHeight > document.documentElement.clientHeight - (menuBottomHeight + menuContainerHeight + padding)) {
if (menuWrapper) menuWrapper.classList.add('t280__menu_static');
if (menu) menu.style.paddingTop = (menuContainerHeight || 0) + 'px';
} else {
if (menuWrapper) menuWrapper.classList.remove('t280__menu_static');
if (menu) menu.style.paddingTop = '';
}
}
function t280_changeBgOpacityMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menuBlocks = rec.querySelectorAll('.t280__container__bg');
Array.prototype.forEach.call(menuBlocks, function (menu) {
var bgColor = menu.getAttribute('data-bgcolor-rgba');
var bgColorAfterScroll = menu.getAttribute('data-bgcolor-rgba-afterscroll');
var bgOpacity = menu.getAttribute('data-bgopacity');
var bgOpacityTwo = menu.getAttribute('data-bgopacity2');
var menuShadowOpacity = parseInt(menu.getAttribute('data-menushadow'), 10) || 0;
menuShadowOpacity /= 100;
var menuShadowCSS = menu.getAttribute('data-menushadow-css');
menu.style.backgroundColor = window.pageYOffset > 20 ? bgColorAfterScroll : bgColor;
if (
(window.pageYOffset > 20 && bgOpacityTwo === '0') ||
(window.pageYOffset <= 20 && (bgOpacity === '0.0' || bgOpacity === '0')) ||
(!menuShadowOpacity && !menuShadowCSS)
) {
menu.style.boxShadow = 'none';
} else if (menuShadowCSS) {
menu.style.boxShadow = menuShadowCSS;
} else if (menuShadowOpacity) {
menu.style.boxShadow = '0px 1px 3px rgba(0,0,0,' + menuShadowOpacity + ')';
}
});
}
function t280_appearMenu() {
var menuBlocks = document.querySelectorAll('.t280');
Array.prototype.forEach.call(menuBlocks, function (menuBlock) {
var menu = menuBlock.querySelector('.t280__positionfixed');
if (menu) {
var appearOffset = menuBlock.getAttribute('data-appearoffset');
if (appearOffset && appearOffset.indexOf('vh') !== -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
var menuHeight = menu.clientHeight;
if (isNaN(appearOffset)) return;
if (window.pageYOffset >= appearOffset) {
if (menu.style.transform === 'translateY(-' + menuHeight + 'px)') {
t280_slideUpElement(menu, menuHeight, 'toBottom');
}
} else if (menu.style.transform === 'translateY(0px)') {
t280_slideUpElement(menu, menuHeight, 'toTop');
} else {
menu.style.transform = 'translateY(-' + menuHeight + 'px)';
menu.style.opacity = '0';
}
}
});
}
function t280_slideUpElement(menu, menuHeight, direction) {
var diff = direction === 'toTop' ? 0 : menuHeight;
var diffOpacity = direction === 'toTop' ? 1 : 0;
var timerID = setInterval(function () {
menu.style.transform = 'translateY(-' + diff + 'px)';
menu.style.opacity = diffOpacity.toString();
diffOpacity = direction === 'toTop' ? diffOpacity - 0.1 : diffOpacity + 0.1;
diff = direction === 'toTop' ? diff + menuHeight / 20 : diff - menuHeight / 20;
if (direction === 'toTop' && diff >= menuHeight) {
menu.style.transform = 'translateY(-' + menuHeight + 'px)';
menu.style.opacity = '0';
clearInterval(timerID);
}
if (direction === 'toBottom' && diff <= 0) {
menu.style.transform = 'translateY(0px)';
menu.style.opacity = '1';
clearInterval(timerID);
}
}, 10);
}
function t280_highlight(recid) {
var url = window.location.href;
var pathname = window.location.pathname;
var hash = window.location.hash;
if (url.substr(url.length - 1) === '/') {
url = url.slice(0, -1);
}
if (pathname.substr(pathname.length - 1) === '/') {
pathname = pathname.slice(0, -1);
}
if (pathname.charAt(0) === '/') {
pathname = pathname.slice(1);
}
if (pathname === '') {
pathname = '/';
}
var shouldBeActiveElements = document.querySelectorAll(
".t280__menu a[href='" +
url +
"'], " +
".t280__menu a[href='" +
url +
"/'], " +
".t280__menu a[href='" +
pathname +
"'], " +
".t280__menu a[href='/" +
pathname +
"'], " +
".t280__menu a[href='" +
pathname +
"/'], " +
".t280__menu a[href='/" +
pathname +
"/']" +
(hash ? ", .t280__menu a[href='" + hash + "']" : '') +
(hash ? ", .t280__menu a[href='/" + hash + "']" : '') +
(hash ? ", .t280__menu a[href='" + hash + "/']" : '') +
(hash ? ", .t280__menu a[href='/" + hash + "/']" : '')
);
var rec = document.getElementById('rec' + recid);
var menuLinks = rec ? rec.querySelectorAll('.t280__menu a') : [];
Array.prototype.forEach.call(menuLinks, function (link) {
link.classList.remove('t-active');
});
Array.prototype.forEach.call(shouldBeActiveElements, function (link) {
link.classList.add('t-active');
});
}
function t312_initPopup() {
var links = document.querySelectorAll('a[href*="typeform.com"]');
for (var i = 0; i < links.length; i++) {
var link = links[i];
link.setAttribute('data-mode', '1');
link.setAttribute('target', '_blank');
if (window.innerWidth > 980) {
link.removeEventListener('click', t312_initEventClick);
link.addEventListener('click', t312_initEventClick);
}
}
}
function t312_initEventClick(event) {
var url = this.href;
t312_showPopup(url);
t312_resizePopup();
event.preventDefault();
}
function t312_showPopup(url) {
var containers = document.querySelectorAll('.t312');
var windowHeight = window.innerHeight - 100;
var iframe = document.createElement('iframe');
iframe.id = 'typeform-full';
iframe.width = '100%';
iframe.height = '100%';
iframe.src = url;
iframe.setAttribute('frameborder', '0');
iframe.setAttribute('data-hook-iframe', 't312');
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js?v=1';
if (containers.length > 0) document.body.classList.add('t312__body_popupshowed');
for (var i = 0; i < containers.length; i++) {
var container = containers[i];
var popup = container.querySelector('.t312__popup');
var closeButtons = container.querySelectorAll('.t312__close, .t312__bg');
var content = container.querySelector('[data-hook-typeform-carrier]');
content.innerHTML = '';
content.appendChild(iframe);
content.appendChild(script);
container.querySelector('[data-hook-iframe]').style.height = windowHeight + 'px';
if (popup.getAttribute('style')) popup.removeAttribute('style');
container.classList.add('t312__popup_show');
for (var j = 0; j < closeButtons.length; j++) {
var closeButton = closeButtons[j];
closeButton.removeEventListener('click', t312_closePopup);
closeButton.addEventListener('click', t312_closePopup);
}
}
}
function t312_closePopup() {
var container = document.querySelector('.t312.t312__popup_show');
document.body.classList.remove('t312__body_popupshowed');
if (container) container.classList.remove('t312__popup_show');
}
function t312_resizePopup() {
var popups = document.querySelectorAll('.t312__content');
var main = document.querySelector('.t312__mainblock');
var windowHeight = window.innerHeight;
var mainHeight = 0;
if (main) {
var mainStyle = getComputedStyle(main, null);
var mainPaddingTop = parseInt(mainStyle.paddingTop) || 0;
var mainPaddingBottom = parseInt(mainStyle.paddingBottom) || 0;
mainHeight = main.clientHeight - (mainPaddingTop + mainPaddingBottom);
}
if (mainHeight > windowHeight) {
for (var i = 0; i < popups.length; i++) {
popups[i].classList.add('t312__content_static');
}
} else {
for (var i = 0; i < popups.length; i++) {
popups[i].classList.remove('t312__content_static');
}
}
}
function t315_showcomments(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var commentsButton = rec.querySelector('.t-btn');
var commentsTitle = rec.querySelector('.t315__blocktitle');
var commentsRawHTML = rec.querySelector('.t315__blockhtml');
if (commentsButton) commentsButton.style.display = 'none';
if (commentsTitle) commentsTitle.style.display = 'block';
if (commentsRawHTML) commentsRawHTML.style.display = 'block';
}
function t281_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t281');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.setAttribute('data-popup-subscribe-inited', 'y');
rec.style.opacity = 1;
var documentBody = document.body;
var hrefs = rec.querySelectorAll('a[href*="#"]');
var popup = rec.querySelector('.t-popup');
var popupCloseBtn = popup.querySelector('.t-popup__close');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var analitics = popup.getAttribute('data-track-popup');
if (popupTooltipHook) {
var recBlocks = document.querySelectorAll('.r');
for (var i = 0; i < recBlocks.length; i++) {
recBlocks[i].addEventListener('click', function (event) {
var target = event.target;
var href = target.closest('a[href="' + popupTooltipHook + '"]') ? target : false;
if (!href) return;
event.preventDefault();
t281_showPopup(recId);
t281_resizePopup(recId);
t281__lazyLoad();
if (analitics) {
Tilda.sendEventToStatistics(analitics, popupTooltipHook);
}
});
}
}
popup.addEventListener(
'scroll',
t_throttle(function () {
t281__lazyLoad();
})
);
popup.addEventListener('click', function (event) {
if (event.target === this) t281_closePopup();
});
popupCloseBtn.addEventListener('click', t281_closePopup);
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].addEventListener('click', function () {
var url = this.getAttribute('href');
if (!url || (url.substring(0, 7) != '#price:' && url.substring(0, 7) != '#order:')) {
t281_closePopup();
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
documentBody.classList.add('t-body_popupshowed');
}, 300);
}
}
});
}
}
function t281_lockScroll() {
var documentBody = document.body;
if (!documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop =
typeof window.pageYOffset !== 'undefined'
? window.pageYOffset
: (document.documentElement || documentBody.parentNode || documentBody).scrollTop;
documentBody.classList.add('t-body_scroll-locked');
documentBody.style.top = '-' + bodyScrollTop + 'px';
documentBody.setAttribute('data-popup-scrolltop', bodyScrollTop);
}
}
function t281_unlockScroll() {
var documentBody = document.body;
if (documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop = documentBody.getAttribute('data-popup-scrolltop');
documentBody.classList.remove('t-body_scroll-locked');
documentBody.style.top = null;
documentBody.removeAttribute('data-popup-scrolltop');
document.documentElement.scrollTop = parseInt(bodyScrollTop);
}
}
function t281_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t281');
if (!container) return;
var popup = rec.querySelector('.t-popup');
var popupContainer = popup.querySelector('.t-popup__container');
var documentBody = document.body;
popup.style.display = 'block';
setTimeout(function () {
popupContainer.classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
}, 50);
documentBody.classList.add('t-body_popupshowed');
documentBody.classList.add('t281__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
setTimeout(function () {
t281_lockScroll();
}, 500);
}
document.addEventListener('keydown', t281_escClosePopup);
}
function t281_escClosePopup(event) {
if (event.key === 'Escape') t281_closePopup();
}
function t281_closePopup() {
var popupAll = document.querySelectorAll('.t-popup');
document.body.classList.remove('t-body_popupshowed');
document.body.classList.remove('t281__body_popupshowed');
for (var i = 0; i < popupAll.length; i++) {
popupAll[i].classList.remove('t-popup_show');
}
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
t281_unlockScroll();
}
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t281_escClosePopup);
}
function t281_resizePopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var popupContainer = rec.querySelector('.t-popup__container');
if (!popupContainer) return;
var popupStyle = getComputedStyle(popupContainer, null);
var popupPaddingTop = parseInt(popupStyle.paddingTop) || 0;
var popupPaddingBottom = parseInt(popupStyle.paddingBottom) || 0;
var popupHeight = popupContainer.clientHeight - (popupPaddingTop + popupPaddingBottom);
if (popupHeight > window.innerHeight - 120) {
popupContainer.classList.add('t-popup__container-static');
} else {
popupContainer.classList.remove('t-popup__container-static');
}
}
function t281__lazyLoad() {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t282_showMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t282');
var submenu = rec.querySelector('.t-menusub__container');
var allRec = document.getElementById('allrecords');
var isEdit = allRec ? allRec.getAttribute('data-tilda-mode') === 'edit' : false;
if (isEdit && submenu) {
submenu.style.position = 'relative';
submenu.style.zIndex = '10';
submenu.style.pointerEvents = 'none';
}
var menuLinks = rec.querySelectorAll('.t-menusub__link-item');
var menuContainer = rec.querySelector('.t282__container');
var menuAndOverlay = rec.querySelectorAll('.t282__container, .t282__menu__container, .t282__overlay');
var canBeClickedItems = rec.querySelectorAll(
'.t282 .t-menuburger, .t282__menu__link:not(.tooltipstered):not(.t282__menu__link_submenu), .t282__overlay'
);
var menuBlock = rec.querySelector('.t282__menu__container');
var menuWrapper = menu.querySelector('.t282__menu__wrapper');
var menuContainerHeight = menuContainer ? menuContainer.getBoundingClientRect().height : 0;
var menuBurger = menu ? menu.querySelector('.t-menuburger') : null;
Array.prototype.forEach.call(canBeClickedItems, function (element) {
element.addEventListener('click', function () {
if (
(element.classList.contains('t282__overlay') && element.classList.contains('t282__closed')) ||
element.closest('.t282__menu__link.tooltipstered, .t794__tm-link, .t978__tm-link, .t966__tm-link')
)
return;
if (document.body.classList.contains('t282_opened')) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t282_opened');
} else {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t282_opened');
}
Array.prototype.forEach.call(menuAndOverlay, function (el) {
el.style.transform = '';
if (
element.closest('.t-menuburger') &&
el.closest('.t282__menu__container') &&
el.classList.contains('t282__closed') &&
!window.isMobile
) {
el.style.pointerEvents = 'none';
setTimeout(function () {
el.style.pointerEvents = '';
}, 500);
}
var menuContainerHeight = menuContainer ? menuContainer.getBoundingClientRect().height : 0;
if (
element.closest('.t-menuburger') &&
menuWrapper.clientHeight > menuBlock.clientHeight &&
!el.classList.contains('t282__closed') &&
!el.classList.contains('t282__container')
) {
el.style.transform = 'translateY(calc(-100% - ' + menuContainerHeight + 'px))';
}
el.classList.toggle('t282__closed');
});
if (menuBlock) menuBlock.style.top = menuContainerHeight + 'px';
var menuBurger = rec.querySelector('.t-menuburger');
if (menuBurger)
menuBurger.classList.toggle('t-menuburger-opened', document.body.classList.contains('t282_opened'));
if (element.classList.contains('t-menuburger')) {
var expandedStatus = element.classList.contains('t-menuburger-opened');
element.setAttribute('aria-expanded', expandedStatus);
}
t282_highlight(recid);
});
});
menu.addEventListener('clickedAnchorInTooltipMenu', function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t282_opened');
Array.prototype.forEach.call(menuAndOverlay, function (el) {
el.classList.add('t282__closed');
});
});
Array.prototype.forEach.call(menuLinks, function (link) {
link.addEventListener('click', function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t282_opened');
Array.prototype.forEach.call(menuAndOverlay, function (el) {
el.classList.add('t282__closed');
if (menuBurger) {
menuBurger.classList.remove('t-menuburger-opened');
menuBurger.setAttribute('aria-expanded', false);
}
});
});
});
}
function t282_changeSize(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t282__container');
var menuContainer = rec.querySelector('.t282__menu__container');
var menuWrapper = document.getElementById('nav' + recid);
var menuHeight = menu ? menu.offsetHeight : 0;
var menuContainerHeight = menuContainer ? menuContainer.offsetHeight : 0;
if (menuHeight > document.documentElement.clientHeight - menuContainerHeight) {
if (menuWrapper) menuWrapper.classList.add('t282__menu_static');
} else {
if (menuWrapper) menuWrapper.classList.remove('t282__menu_static');
}
}
function t282_changeBgOpacityMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menuBlocks = rec.querySelectorAll('.t282__container__bg');
Array.prototype.forEach.call(menuBlocks, function (menu) {
var bgColor = menu.getAttribute('data-bgcolor-rgba');
var bgColorAfterScroll = menu.getAttribute('data-bgcolor-rgba-afterscroll');
var bgOpacity = menu.getAttribute('data-bgopacity');
var bgOpacityTwo = menu.getAttribute('data-bgopacity2');
var menuShadowOpacity = parseInt(menu.getAttribute('data-menushadow'), 10) || 0;
menuShadowOpacity /= 100;
var menuShadowCSS = menu.getAttribute('data-menushadow-css');
menu.style.backgroundColor = window.pageYOffset > 20 ? bgColorAfterScroll : bgColor;
if (
(window.pageYOffset > 20 && bgOpacityTwo === '0') ||
(window.pageYOffset <= 20 && (bgOpacity === '0.0' || bgOpacity === '0')) ||
(!menuShadowOpacity && !menuShadowCSS)
) {
menu.style.boxShadow = 'none';
} else if (menuShadowCSS) {
menu.style.boxShadow = menuShadowCSS;
} else if (menuShadowOpacity) {
menu.style.boxShadow = '0px 1px 3px rgba(0,0,0,' + menuShadowOpacity + ')';
}
});
}
function t282_highlight(recid) {
var url = window.location.href;
var pathname = window.location.pathname;
var hash = window.location.hash;
if (url.substr(url.length - 1) === '/') {
url = url.slice(0, -1);
}
if (pathname.substr(pathname.length - 1) === '/') {
pathname = pathname.slice(0, -1);
}
if (pathname.charAt(0) === '/') {
pathname = pathname.slice(1);
}
if (pathname === '') {
pathname = '/';
}
var shouldBeActiveElements = document.querySelectorAll(
".t282__menu a[href='" +
url +
"'], " +
".t282__menu a[href='" +
url +
"/'], " +
".t282__menu a[href='" +
pathname +
"'], " +
".t282__menu a[href='/" +
pathname +
"'], " +
".t282__menu a[href='" +
pathname +
"/'], " +
".t282__menu a[href='/" +
pathname +
"/']" +
(hash ? ", .t282__menu a[href='" + hash + "']" : '') +
(hash ? ", .t282__menu a[href='/" + hash + "']" : '') +
(hash ? ", .t282__menu a[href='" + hash + "/']" : '') +
(hash ? ", .t282__menu a[href='/" + hash + "/']" : '')
);
var rec = document.getElementById('rec' + recid);
var menuLinks = rec ? rec.querySelectorAll('.t282__menu a') : [];
Array.prototype.forEach.call(menuLinks, function (link) {
link.classList.remove('t-active');
});
Array.prototype.forEach.call(shouldBeActiveElements, function (link) {
link.classList.add('t-active');
});
}
function t282_appearMenu(recid) {
var record = document.getElementById('rec' + recid);
var menuBlock = record.querySelector('.t282');
var fixedMenu = menuBlock ? menuBlock.querySelector('.t282__positionfixed') : null;
if (!fixedMenu) return;
var appearOffset = menuBlock.getAttribute('data-appearoffset');
if (appearOffset && appearOffset.indexOf('vh') !== -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
var menuHeight = fixedMenu.clientHeight;
if (typeof appearOffset === 'number' && window.pageYOffset >= appearOffset) {
if (fixedMenu.style.transform === 'translateY(-' + menuHeight + 'px)') {
t282_slideUpElement(fixedMenu, menuHeight, 'toBottom');
}
} else if (fixedMenu.style.transform === 'translateY(0px)') {
t282_slideUpElement(fixedMenu, menuHeight, 'toTop');
} else {
fixedMenu.style.transform = 'translateY(-' + menuHeight + 'px)';
fixedMenu.style.opacity = '0';
}
}
function t282_slideUpElement(menu, menuHeight, direction) {
var diff = direction === 'toTop' ? 0 : menuHeight;
var diffOpacity = direction === 'toTop' ? 1 : 0;
var timerID = setInterval(function () {
menu.style.transform = 'translateY(-' + diff + 'px)';
menu.style.opacity = diffOpacity.toString();
diffOpacity = direction === 'toTop' ? diffOpacity - 0.1 : diffOpacity + 0.1;
diff = direction === 'toTop' ? diff + menuHeight / 20 : diff - menuHeight / 20;
if (direction === 'toTop' && diff >= menuHeight) {
menu.style.transform = 'translateY(-' + menuHeight + 'px)';
menu.style.opacity = '0';
clearInterval(timerID);
}
if (direction === 'toBottom' && diff <= 0) {
menu.style.transform = 'translateY(0px)';
menu.style.opacity = '1';
clearInterval(timerID);
}
}, 10);
}
function t330_showPopup(recid) {
var el = $('#rec' + recid);
var popup = el.find('.t-popup');
popup.css('display', 'block');
setTimeout(function () {
popup.find('.t-popup__container').addClass('t-popup__container-animated');
popup.addClass('t-popup_show');
}, 50);
$('body').addClass('t-body_popupshowed t330__body_popupshowed');
el.find('.t-popup').click(function (e) {
if (e.target == this) {
t330_closePopup();
}
});
el.find('.t-popup__close').click(function (e) {
t330_closePopup();
});
el.find('a[href*=#]').click(function (e) {
var url = $(this).attr('href');
if (!url || url.substring(0, 7) != '#price:') {
t330_closePopup();
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
$('body').addClass('t-body_popupshowed');
}, 300);
}
}
});
$(document).keydown(function (e) {
if (e.keyCode == 27) {
t330_closePopup();
}
});
}
function t330_closePopup() {
$('body').removeClass('t-body_popupshowed t330__body_popupshowed');
$('.t-popup').removeClass('t-popup_show');
setTimeout(function () {
$('.t-popup').not('.t-popup_show').css('display', 'none');
}, 300);
}
function t330_resizePopup(recid) {
var el = $('#rec' + recid);
var div = el.find('.t-popup__container').height();
var win = $(window).height() - 120;
var popup = el.find('.t-popup__container');
if (div > win) {
popup.addClass('t-popup__container-static');
} else {
popup.removeClass('t-popup__container-static');
}
}
function t330_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) == '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (window.Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t330_initPopup(recid) {
$('#rec' + recid).attr('data-animationappear', 'off');
$('#rec' + recid).css('opacity', '1');
var el = $('#rec' + recid).find('.t-popup');
var hook = el.attr('data-tooltip-hook');
var analitics = el.attr('data-track-popup');
if (hook !== '') {
var obj = $('a[href="' + hook + '"]');
obj.click(function (e) {
t330_showPopup(recid);
t330_resizePopup(recid);
e.preventDefault();
if (window.lazy == 'y') {
t_lazyload_update();
}
if (analitics == 'yes') {
t330_sendPopupEventToStatistics(hook);
}
});
}
}
function t331_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return false;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var currentBlock = rec.querySelector('.t-popup');
var currentHook = currentBlock ? currentBlock.getAttribute('data-tooltip-hook') : '';
var currentAnalitics = currentBlock ? currentBlock.getAttribute('data-track-popup') : '';
if (!currentHook) return false;
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(currentHook);
});
document.addEventListener('click', function (e) {
var href = e.target.closest('a[href$="' + currentHook + '"]');
if (href) {
e.preventDefault();
t331_showPopup(recId);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
if (currentAnalitics) {
var virtTitle = currentHook;
if (virtTitle.substring(0, 7) === '#popup:') virtTitle = virtTitle.substring(7);
Tilda.sendEventToStatistics(currentAnalitics, virtTitle);
}
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, currentHook);
});
}
function t331_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var popup = rec.querySelector('.t-popup');
var video = rec.querySelector('.t-video-lazyload');
var videoIframe = video.querySelector('iframe');
if (!videoIframe) {
t_onFuncLoad('t_video_lazyload__addVideo', function () {
t_video_lazyload__addVideo(video);
});
}
if (popup) popup.style.display = 'block';
t331_setHeight(recid);
setTimeout(function () {
var popupContainer = popup ? popup.querySelector('.t-popup__container') : null;
if (popupContainer) popupContainer.classList.add('t-popup__container-animated');
if (popup) popup.classList.add('t-popup_show');
popup.focus();
t_onFuncLoad('t_popup__trapFocus', function () {
t_popup__trapFocus(popup);
});
}, 50);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
document.body.classList.add('t331__body_popupshowed');
if (popup) {
popup.addEventListener('click', function (e) {
if (e.target === popup) t331_popup_close(recid);
});
}
var popupClose = popup ? popup.querySelector('.t-popup__close') : null;
if (popupClose) {
popupClose.addEventListener('click', function () {
t331_popup_close(recid);
});
}
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) t331_popup_close(recid);
});
}
function t331_popup_close(recid) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
document.body.classList.remove('t331__body_popupshowed');
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var popup = rec.querySelector('.t-popup');
if (popup) popup.classList.remove('t-popup_show');
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var video = rec.querySelector('.t-video-lazyload');
if (video) {
t_onFuncLoad('t_video_lazyload__removeVideo', function () {
t_video_lazyload__removeVideo(video);
});
}
if (popup && !popup.classList.contains('t-popup_show')) {
popup.style.display = 'none';
}
}, 300);
}
function t331_setHeight(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var videoWrap = rec.querySelector('.t331__wrap-video');
var videoLazy = rec.querySelector('.t-video-lazyload');
var dataVideoWidth = videoWrap.getAttribute('data-video-width');
var dataVideoHeight = videoWrap.getAttribute('data-video-height');
var calculatedHeight = videoLazy.offsetWidth * 0.5625;
if (dataVideoHeight) {
if (dataVideoHeight.indexOf('vh') !== -1) {
calculatedHeight = (parseInt(dataVideoHeight, 10) * window.innerHeight) / 100;
} else {
calculatedHeight = parseInt(dataVideoHeight, 10);
}
}
videoWrap.style.height = calculatedHeight + 'px';
videoLazy.style.height = calculatedHeight + 'px';
}
/* deprecated */
function t331_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) === '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (ga) {
if (window.mainTracker !== 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
function t334_init(recid) {
if (
$('#rec' + recid)
.find('.t-container')
.attr('data-show-button') == 'true'
) {
$('#rec' + recid)
.find('.t334__cell')
.each(function () {
var sizer = $(this).find('.t334__button-container').height();
$(this)
.find('.t334__textwrapper__content')
.css({ 'padding-bottom': sizer + 'px' });
$(this).find('.t334__button-container').addClass('t334__button-container_show');
});
} else {
$('#rec' + recid)
.find('.t334__cell')
.hover(
function () {
var sizer = $(this).find('.t334__button-container').height();
$(this)
.find('.t334__textwrapper__content')
.css({ 'padding-bottom': sizer + 'px' });
$(this).find('.t334__button-container').addClass('t334__button-container_show');
},
function () {
$(this).find('.t334__textwrapper__content').css('padding-bottom', '0');
$(this).find('.t334__button-container').removeClass('t334__button-container_show');
}
);
}
}
function t335_init(recid) {
$('#rec' + recid)
.find('.t335__cell')
.hover(
function () {
var sizer = $(this).find('.t335__button-container').height();
$(this)
.find('.t335__textwrapper__content')
.css({ 'padding-bottom': sizer + 'px' });
$(this).find('.t335__button-container').addClass('t335__button-container_show');
},
function () {
$(this).find('.t335__textwrapper__content').css('padding-bottom', '0');
$(this).find('.t335__button-container').removeClass('t335__button-container_show');
}
);
}
var t336 = {};
t336.initeffect = function (recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var cell = rec.querySelector('.t336__cell');
if (!cell) return;
var button = cell.querySelector('.t336__button-container');
if (!button) return;
var textWrapper = cell.querySelector('.t336__textwrapper__content');
var buttonHeight = 0;
t336__getPadding();
if (!window.isMobile) {
cell.addEventListener('mouseenter', function () {
if (buttonHeight === 0) t336__getPadding();
textWrapper.style.paddingBottom = buttonHeight + 'px';
button.classList.add('t336__button-container_show');
});
cell.addEventListener('mouseleave', function () {
textWrapper.style.paddingBottom = null;
button.classList.remove('t336__button-container_show');
});
var cardLink = rec.querySelector('.t-card__link');
if (cardLink) {
cardLink.addEventListener('focus', function () {
if (buttonHeight === 0) t336__getPadding();
textWrapper.style.paddingBottom = buttonHeight + 'px';
button.classList.add('t336__button-container_show');
});
cardLink.addEventListener('blur', function () {
textWrapper.style.paddingBottom = null;
button.classList.remove('t336__button-container_show');
});
}
} else {
textWrapper.style.paddingBottom = buttonHeight + 'px';
button.classList.add('t336__button-container_show');
}
function t336__getPadding() {
var buttonStyle = getComputedStyle(button, null);
var buttonPaddingTop = parseInt(buttonStyle.paddingTop) || 0;
var buttonPaddingBottom = parseInt(buttonStyle.paddingBottom) || 0;
buttonHeight = button.clientHeight - (buttonPaddingTop + buttonPaddingBottom);
}
};
function t336_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t341_showCaptions(recid) {
var el = $('#t-carousel' + recid);
var caption = el.find('.item:nth-child(1) .t-carousel__caption-inside');
var captioncontainer = el.find('.t-carousel__caption__container');
captioncontainer.html(caption.html());
caption.css('display', 'none');
$('#t-carousel' + recid).on('slide.bs.carousel', function (evt) {
var el = $('#t-carousel' + recid);
var caption = el.find(
'.item:nth-child(' + ($(evt.relatedTarget).index() + 1) + ') .t-carousel__caption-inside'
);
var captioncontainer = el.find('.t-carousel__caption__container');
captioncontainer.html(caption.html());
caption.css('display', 'none');
});
}
function t341_checkSize(recid) {
var el = $('#rec' + recid);
var containerinside = el.find('.t-carousel__arrows__container_inside');
var containeroutside = el.find('.t-carousel__arrows__container_outside');
var inner = el.find('.t-carousel__inner');
var arrowleft = el.find('.t-carousel__arrow_left');
var arrowright = el.find('.t-carousel__arrow_right');
containeroutside.css({ 'max-width': arrowleft.width() + arrowright.width() + inner.width() + 60 + 'px' });
containerinside.css({ 'max-width': inner.width() + 'px' });
var sizer = el.find('.t-carousel__height');
var height = sizer.height();
var width = sizer.width();
if (width == 0) {
var width = $(window).width();
}
var ratio = width / height;
var gallerywrapper = el.find('.t-carousel__checksize');
var gallerywidth = gallerywrapper.width();
if (height != $(window).height()) {
gallerywrapper.css({ height: gallerywidth / ratio + 'px' });
}
}
function t341_sendPaymentEventToStatistics(product, price) {
if (Tilda && typeof Tilda.sendEventToStatistics == 'function') {
var virtPage = '/tilda/payment/?product=' + product + '&price=' + price;
var virtTitle = 'Order: ' + product + ' = ' + price;
Tilda.sendEventToStatistics(virtPage, virtTitle, '', price);
} else {
var virtPage = '/tilda/order/?product=' + product + '&price=' + price;
var virtTtitle = 'Order: ' + product + ' = ' + price;
if (ga) {
if (window.mainTracker == 'tilda') {
ga('tilda.send', { hitType: 'pageview', page: virtPage, title: virtTtitle });
} else {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTtitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTtitle, referer: window.location.href });
}
}
}
function t341_initStripePayment(recid, publishableapi, companyname, logo) {
if (typeof StripeCheckout === 'object') {
t341_handleStripeApiReady(recid, publishableapi, companyname, logo);
} else {
if (window.stripeapiiscalled !== true) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://checkout.stripe.com/checkout.js';
document.body.appendChild(script);
window.stripeapiiscalled = true;
}
setTimeout(function () {
t341_initStripePayment(recid, publishableapi, companyname, logo);
}, 10);
}
}
function t341_handleStripeApiReady(recid, publishableapi, companyname, logo) {
if (!window.stripehandler) {
window.stripehandler = StripeCheckout.configure({
key: publishableapi,
image: logo,
name: companyname ? companyname : window.location.host,
locale: 'auto',
token: function (token) {
if (token && token.id) {
t341_sendPaymentEventToStatistics(
$('#rec' + recid + ' .js-product-name').val(),
parseInt($('#rec' + recid + ' .js-amount').val()) * 100
);
var data = {};
data.projectid = $('#allrecords').attr('data-tilda-project-id');
data.token = token.id;
if (token.email) {
data.email = token.email;
}
data.amount = parseInt($('#rec' + recid + ' .js-amount').val()) * 100;
data.products = [
{
product: $('#rec' + recid + ' .js-product-name').val(),
amount: parseInt($('#rec' + recid + ' .js-amount').val()) * 100,
},
];
data.currency = $('#rec' + recid + ' .js-currency').val();
$.post('https://forms.tildacdn.com/payment/stripe/', data, function (json) {}, 'json');
if ($('#rec' + recid + ' .js-success-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-success-url').val();
} else {
$('#rec' + recid + ' .t341__submit').val('Payed');
}
}
},
});
// Close Checkout on page navigation:
$(window).on('popstate', function () {
window.stripehandler.close();
});
}
$('#rec' + recid + ' .t341__submit').on('click', function (e) {
e.preventDefault();
// Open Checkout with further options:
window.stripehandler.open({
name: companyname,
image: logo,
description: $('#rec' + recid + ' .js-product-name').val(),
amount: parseInt($('#rec' + recid + ' .js-amount').val() * 100),
currency: $('#rec' + recid + ' .js-currency').val(),
shippingAddress: $('#rec' + recid + ' .js-need-shipping').val() == '1' ? true : false,
billingAddress: $('#rec' + recid + ' .js-need-shipping').val() == '1' ? true : false,
});
});
}
function t341_initCloudPayments(recid, publishableapi) {
if (typeof cp == 'object' && typeof cp.CloudPayments == 'function') {
t341_handleCloudPaymentsApiReady(recid, publishableapi);
} else {
if (window.cloudpaymentsapiiscalled !== true) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://widget.cloudpayments.ru/bundles/cloudpayments';
document.body.appendChild(script);
window.cloudpaymentsapiiscalled = true;
}
setTimeout(function () {
t341_initCloudPayments(recid, publishableapi);
}, 10);
}
}
function t341_handleCloudPaymentsApiReady(recid, publishableapi) {
$('#rec' + recid + ' .t341__submit').on('click', function (e) {
e.preventDefault();
var currency = $('#rec' + recid + ' .js-currency').val();
if (!window.cloudpaymentshandler) {
var lang = '';
if ($('#rec' + recid + ' .js-language').length > 0) {
lang = $('#rec' + recid + ' .js-language').val();
}
if (lang == '') {
lang = currency == 'RUB' || currency == 'BYR' ? 'ru-RU' : 'en-US';
}
window.cloudpaymentshandler = new cp.CloudPayments({ language: lang });
}
/* Open Checkout with further options:*/
window.cloudpaymentshandler.charge(
{
publicId: publishableapi,
description: $('#rec' + recid + ' .js-product-name').val(),
amount: parseFloat($('#rec' + recid + ' .js-amount').val()),
currency: currency,
},
function (options) {
/* success*/
//действие при успешной оплате
t341_sendPaymentEventToStatistics(
$('#rec' + recid + ' .js-product-name').val(),
parseInt($('#rec' + recid + ' .js-amount').val())
);
if ($('#rec' + recid + ' .js-success-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-success-url').val();
} else {
$('#rec' + recid + ' .t341__submit').val('Payed');
}
},
function (reason, options) {
// fail
if ($('#rec' + recid + ' .js-failure-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-failure-url').val();
}
}
);
});
}
function t342_sendPaymentEventToStatistics(product, price) {
if (Tilda && typeof Tilda.sendEventToStatistics == 'function') {
var virtPage = '/tilda/payment/?product=' + product + '&price=' + price;
var virtTitle = 'Order: ' + product + ' = ' + price;
Tilda.sendEventToStatistics(virtPage, virtTitle, '', price);
} else {
var virtPage = '/tilda/order/?product=' + product + '&price=' + price;
var virtTitle = 'Order: ' + product + ' = ' + price;
if (window.ga && window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t342_initStripePayment(recid, publishableapi, companyname, logo) {
if (typeof StripeCheckout === 'object') {
t342_handleStripeApiReady(recid, publishableapi, companyname, logo);
} else {
if (window.stripeapiiscalled !== true) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://checkout.stripe.com/checkout.js';
document.body.appendChild(script);
window.stripeapiiscalled = true;
}
setTimeout(function () {
t342_initStripePayment(recid, publishableapi, companyname, logo);
}, 10);
}
}
function t342_handleStripeApiReady(recid, publishableapi, companyname, logo) {
if (!window.stripehandler) {
window.stripehandler = StripeCheckout.configure({
key: publishableapi,
image: logo,
name: companyname ? companyname : window.location.host,
locale: 'auto',
});
// Close Checkout on page navigation:
$(window).on('popstate', function () {
window.stripehandler.close();
});
}
$('[href^="#price"]').click(function (e) {
e.preventDefault();
var t342click = $(this);
var tmp = $(this).attr('href');
// format: #price:Cost:Product name
var arParam = tmp.split(':');
var productprice = parseInt(arParam[1].replace(/[^0-9\.]/g, ''));
var productname = arParam[2];
if (!productname) {
var tmp = $(this).closest('.r').find('.title');
if (tmp.length > 0) {
productname = tmp.text();
}
productname = $(this).text();
}
window.stripehandler.open({
name: companyname,
image: logo,
description: productname,
amount: parseInt(productprice) * 100,
currency: $('#rec' + recid + ' .js-stripe-currency').val(),
shippingAddress: $('#rec' + recid + ' .js-stripe-need-shipping').val() == '1' ? true : false,
billingAddress: $('#rec' + recid + ' .js-stripe-need-shipping').val() == '1' ? true : false,
token: function (token, args) {
if (token && token.id) {
t342_sendPaymentEventToStatistics(productname, productprice * 100);
var data = {};
data.projectid = $('#allrecords').attr('data-tilda-project-id');
data.token = token.id;
if (token.email) {
data.email = token.email;
}
data.amount = parseInt(productprice) * 100;
data.products = [
{
product: productname,
amount: parseInt(productprice) * 100,
},
];
data.currency = $('#rec' + recid + ' .js-stripe-currency').val();
$.post(
'https://forms.tildacdn.com/payment/stripe/',
data,
function (json) {
if ($('#rec' + recid + ' .js-success-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-success-url').val();
} else {
t342click.html('Payed ');
}
},
'json'
).fail(function () {
if ($('#rec' + recid + ' .js-success-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-success-url').val();
} else {
t342click.html('Try, again ');
}
});
}
},
});
});
}
function t342_initCloudPayments(recid, publishableapi) {
if (typeof cp == 'object' && typeof cp.CloudPayments == 'function') {
t342_handleCloudPaymentsApiReady(recid, publishableapi);
} else {
if (window.cloudpaymentsapiiscalled !== true) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://widget.cloudpayments.ru/bundles/cloudpayments';
document.body.appendChild(script);
window.cloudpaymentsapiiscalled = true;
}
setTimeout(function () {
t342_initCloudPayments(recid, publishableapi);
}, 10);
}
}
function t342_handleCloudPaymentsApiReady(recid, publishableapi) {
$('[href^="#price"]').click(function (e) {
e.preventDefault();
var currency = $('#rec' + recid + ' .js-currency').val();
if (!window.cloudpaymentshandler) {
var lang = '';
if ($('#rec' + recid + ' .js-language').length > 0) {
lang = $('#rec' + recid + ' .js-language').val();
}
if (lang == '') {
lang = currency == 'RUB' || currency == 'BYR' ? 'ru-RU' : 'en-US';
}
window.cloudpaymentshandler = new cp.CloudPayments({ language: lang });
}
var t342click = $(this);
var tmp = $(this).attr('href');
// format: #price:Cost:Product name
var arParam = tmp.split(':');
var productprice = parseFloat(arParam[1].replace(/[^0-9\.]/g, ''));
var productname = arParam[2];
if (!productname) {
var tmp = $(this).closest('.r').find('.title');
if (tmp.length > 0) {
productname = tmp.text();
}
productname = $(this).text();
}
/* Open Checkout with further options:*/
window.cloudpaymentshandler.charge(
{
publicId: publishableapi,
description: productname,
amount: productprice,
currency: currency,
},
function (options) {
/* success*/
//действие при успешной оплате
t342_sendPaymentEventToStatistics(productname, productprice);
if ($('#rec' + recid + ' .js-success-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-success-url').val();
} else {
t342click.html('OK');
}
},
function (reason, options) {
// fail
if ($('#rec' + recid + ' .js-failure-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-failure-url').val();
}
}
);
});
}
function t342_initPayment(recid) {
if ($('#allrecords').find('.t362').length == 0) {
if ($('.js-stripe-publishable-key').length > 0) {
t342_initStripePayment(
recid,
$('.js-stripe-publishable-key').val(),
$('.js-stripe-company-name').val(),
$('.js-stripe-logo').val()
);
} else {
if ($('.js-cp-key').length > 0) {
t342_initCloudPayments(recid, $('.js-cp-key').val());
} else {
$('[href^="#price"]').click(function (e) {
e.preventDefault();
var tmp = $(this).attr('href');
// format: #price:Cost:Product name
var arParam = tmp.split(':');
var price = parseInt(arParam[1].replace(/[^0-9\.]/g, ''));
var name = arParam[2];
if (!name) {
var tmp = $(this).closest('.r').find('.title');
if (tmp.length > 0) {
name = tmp.text();
}
name = $(this).text();
}
var $form = $('#formpayment' + recid);
$form.find('.js_payment_product').val(name);
$form.find('.js_payment_price').val(price);
var $yabox = $('.js-yapayment-paymentbox');
if ($yabox.length > 0) {
var $parent = $(this).parent();
$($parent).css('position', 'relative');
$('.js-yapayment-paymentbox').appendTo($parent);
$('.js-yapayment-paymentbox').show();
$('.r').click(function () {
$('.js-yapayment-paymentbox').hide();
$('.r').off('click');
return false;
});
$('.js-yapayment-paymentbox a').click(function () {
$form.find('input[name=paymentType]').val($(this).data('payment-currency'));
var $ctrl = $form.find('[name=customerNumber]');
if ($ctrl.length > 0) {
$ctrl.val(new Date().getTime());
}
t342_sendPaymentEventToStatistics(name, price);
$form.submit();
return false;
});
} else {
t342_sendPaymentEventToStatistics(name, price);
$form.submit();
}
return false;
});
}
}
}
}
function t347_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t347');
var playBtn = rec.querySelector('.t347__play-icon');
var errorScreen = rec.querySelector('.t347__error-screen');
var videoWrap = rec.querySelector('.t347__wrap-video');
var videoLazy = videoWrap.querySelector('.t-video-lazyload');
var videoHeight = videoLazy ? videoLazy.getAttribute('data-videolazy-height') : '';
playBtn.addEventListener(
'click',
function () {
playBtn.remove();
videoWrap.style.display = 'block';
if (errorScreen) return;
t_onFuncLoad('t_video_lazyload__addVideo', function () {
t_video_lazyload__addVideo(videoLazy);
if (videoHeight !== '540px') return;
window.addEventListener('resize', function () {
t_video_lazyload__setHeight(videoLazy);
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
t_video_lazyload__setHeight(videoLazy);
});
});
},
{ once: true }
);
if (videoHeight !== '540px') return;
t347_setHeight(rec);
window.addEventListener('resize', function () {
t347_setHeight(rec);
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
t347_setHeight(rec);
});
}
function t347_setHeight(rec) {
var table = rec.querySelector('.t347__table');
if (!table) return;
var tableWidth = table.offsetWidth;
var tableHeight = tableWidth * 0.5625;
table.style.height = tableHeight + 'px';
}
function t349_floating_init(recid) {
if (window.isMobile) {
return;
}
$('#rec' + recid + " .t349__floatable[data-floating='yes']").each(function () {
var el = $(this);
var wnd = $(window);
var col = el.parent();
el.css('max-width', el.width());
el.css('width', '100%');
col.css('min-height', el.height());
window.setTimeout(function () {
col.css('min-height', el.height());
}, 300);
var timer;
var timer_count = 0;
var timer_react = 5;
wnd.scroll(function () {
if (timer) {
window.clearTimeout(timer);
if (timer_count >= timer_react) {
t349_floating_scroll(el, wnd, col);
timer_count = 0;
}
timer_count++;
}
timer = window.setTimeout(function () {
t349_floating_scroll(el, wnd, col);
timer_count = 0;
}, 50);
});
wnd.resize(function () {
wnd.scroll();
});
wnd.scroll();
});
}
function t349_floating_scroll(el, wnd, col) {
var wnd_height = wnd.height();
var wnd_width = wnd.width();
if (wnd_width <= 1024) {
el.removeClass('t349__fixedTop');
el.removeClass('t349__fixedBottom');
el.removeClass('t349__floating');
return '';
}
el.css('max-width', col.width());
if (col.height() < el.height() && col.height() > 0) {
col.height(el.height());
}
var el_height = el.height();
var col_top = col.offset().top;
var col_width = col.width();
var col_height = col.height();
var col_bottom = col_top + col_height;
var wnd_top = wnd.scrollTop();
var wnd_bottom = wnd_top + wnd_height;
if (wnd_top + el_height + 50 >= col_bottom) {
//console.log('fixedbottom');
el.addClass('t349__fixedBottom');
el.removeClass('t349__fixedTop');
el.removeClass('t349__floating');
} else if (wnd_top + 50 > col_top) {
//console.log('floating');
el.addClass('t349__floating');
el.removeClass('t349__fixedBottom');
el.removeClass('t349__fixedTop');
} else {
//console.log('fixedtop');
el.addClass('t349__fixedTop');
el.removeClass('t349__fixedBottom');
el.removeClass('t349__floating');
}
}
function t351_setSize(recid) {
var el = $('#rec' + recid);
var height = el.find('.t351__sizer').height();
var width = el.find('.t351__sizer').width();
var ratio = width / height;
var imgwrapper = el.find('.t351__imgwrapper');
var imgwidth = imgwrapper.width();
imgwrapper.css({ height: imgwidth / ratio + 'px' });
}
function t353_setSize(recid) {
var el = $('#rec' + recid);
var height = el.find('.t353__sizer').height();
var width = el.find('.t353__sizer').width();
var ratio = width / height;
var imgwrapper = el.find('.t353__imgwrapper');
var imgwidth = imgwrapper.width();
imgwrapper.css({ height: imgwidth / ratio + 'px' });
}
function t353_setHeight(recid) {
var currentTallest = 0;
var currentRowStart = 0;
var rowDivs = new Array();
var $el;
var topPosition = 0;
$('#rec' + recid + ' .t353__textwrapper').each(function () {
$el = $(this);
$($el).height('auto');
topPostion = $el.position().top;
if (currentRowStart != topPostion) {
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
rowDivs.length = 0;
currentRowStart = topPostion;
currentTallest = $el.height();
rowDivs.push($el);
} else {
rowDivs.push($el);
currentTallest = currentTallest < $el.height() ? $el.height() : currentTallest;
}
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
});
$('#rec' + recid + ' .t353__wrapper').each(function () {
$el = $(this);
$($el).height('auto');
topPostion = $el.position().top;
if (currentRowStart != topPostion) {
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
rowDivs.length = 0;
currentRowStart = topPostion;
currentTallest = $el.height();
rowDivs.push($el);
} else {
rowDivs.push($el);
currentTallest = currentTallest < $el.height() ? $el.height() : currentTallest;
}
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
});
}
function t354_createCookie(cookieName, cookieValue, cookieDays) {
var expires = '';
if (cookieDays) {
if (Number(cookieDays) > 9999999) {
cookieDays = 9999999;
}
var date = new Date();
date.setTime(date.getTime() + cookieDays * 24 * 60 * 60 * 1000);
expires = '; expires=' + date.toGMTString();
}
document.cookie = cookieName + '=' + cookieValue + expires + '; path=/';
}
function t354_readCookie(cookieName) {
cookieName = cookieName + '=';
var allCookies = document.cookie.split(';');
for (var i = 0; i < allCookies.length; i++) {
var cookie = allCookies[i];
while (cookie.charAt(0) === ' ') {
cookie = cookie.substring(1, cookie.length);
}
if (cookie.indexOf(cookieName) === 0) {
return cookie.substring(cookieName.length, cookie.length);
}
}
return null;
}
function t354_checkPosition(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (typeof screenMin === 'string') {
if (windowWidth < parseInt(screenMin, 10)) {
return true;
}
}
if (typeof screenMax === 'string') {
if (windowWidth > parseInt(screenMax, 10)) {
return true;
}
}
var openerLink = rec.querySelector('.t354__opener');
if (!t354_isPopupRecVisible(openerLink)) return;
var cookieName = openerLink.getAttribute('data-cookie-name');
var cookieTime = openerLink.getAttribute('data-cookie-time');
var cookieValue = 't354cookie';
var multiplier = openerLink.getAttribute('data-trigger-position');
var position = window.innerHeight * multiplier;
var cookie = t354_readCookie(cookieName);
var wrapperBlock = rec.querySelector('.t354');
if (!wrapperBlock) return;
if (cookie) {
wrapperBlock.innerHTML = '';
} else if (openerLink) {
var scrollOffset = document.scrollingElement.scrollTop + position;
var openerLinkOffset = openerLink.getBoundingClientRect().top + window.pageYOffset;
if (scrollOffset >= openerLinkOffset) {
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
openerLink.dispatchEvent(event);
wrapperBlock.innerHTML = '';
t354_createCookie(cookieName, cookieValue, cookieTime);
}
}
}
function t354_isPopupRecVisible(openerLink) {
if (openerLink) {
var linkText = openerLink.getAttribute('href');
var popupElement = document.querySelector('.t-popup[data-tooltip-hook="' + linkText + '"]');
if (popupElement) {
var popupElementRec = popupElement.closest('.r');
var minScreen = popupElementRec.getAttribute('data-screen-min');
if (minScreen && minScreen !== '') {
minScreen = minScreen.replace('px', '');
if (parseInt(minScreen, 10) > window.innerWidth) {
return false;
}
}
}
return true;
}
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
function t358_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return false;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var currentBlock = rec.querySelector('.t-popup');
var currentHook = currentBlock ? currentBlock.getAttribute('data-tooltip-hook') : '';
var currentAnalitics = currentBlock ? currentBlock.getAttribute('data-track-popup') : '';
if (!currentHook) return false;
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(currentHook);
});
document.addEventListener('click', function (e) {
var href = e.target.closest('a[href="' + currentHook + '"]');
if (href) {
e.preventDefault();
t358_showPopup(recId);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
if (currentAnalitics) {
var virtTitle = currentHook;
if (virtTitle.substring(0, 7) === '#popup:') virtTitle = virtTitle.substring(7);
Tilda.sendEventToStatistics(currentAnalitics, virtTitle);
}
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, currentHook);
});
}
function t358_setHeight(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var videoCarrier = rec.querySelector('.t358__video-carier');
var carrierParent = videoCarrier ? videoCarrier.parentNode : null;
var videoWidth = videoCarrier ? videoCarrier.offsetWidth : 0;
var calculatedHeight = videoWidth * 0.5625;
if (videoCarrier) videoCarrier.style.height = calculatedHeight + 'px';
if (carrierParent) carrierParent.style.height = calculatedHeight + 'px';
}
function t358_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var popup = rec.querySelector('.t-popup');
var videoContainer = rec.querySelector('.t358__vimeo');
var videoCarrier = rec.querySelector('.t358__video-carier');
var isVideoCarrierExist = !!videoCarrier.querySelector('iframe');
if (isVideoCarrierExist) return;
var videoID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-vimeo') : '';
var videoHash = videoContainer ? videoContainer.getAttribute('data-content-popup-video-hash-vimeo') : '';
var videoHashStr = videoHash ? 'h=' + videoHash + '&' : '';
var videoURL = videoID ? 'https://player.vimeo.com/video/' + videoID : '';
if (videoCarrier) {
var iframe = document.createElement('iframe');
iframe.id = 'vimeoiframe' + recid;
iframe.classList.add('t358__iframe');
iframe.width = '100%';
iframe.height = '100%';
iframe.src = videoURL + '?' + videoHashStr + 'title=0&byline=0&portrait=0&badge=0&color=ffffff&autoplay=1';
iframe.frameBorder = '0';
iframe.setAttribute('allowfullscreen', '');
iframe.setAttribute('webkitallowfullscreen', '');
iframe.setAttribute('mozallowfullscreen', '');
videoCarrier.insertAdjacentElement('beforeend', iframe);
}
if (popup) popup.style.display = 'block';
t358_setHeight(recid);
setTimeout(function () {
var popupContainer = popup ? popup.querySelector('.t-popup__container') : null;
if (popupContainer) popupContainer.classList.add('t-popup__container-animated');
if (popup) popup.classList.add('t-popup_show');
popup.focus();
t_onFuncLoad('t_popup__trapFocus', function () {
t_popup__trapFocus(popup);
});
}, 50);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
document.body.classList.add('t358__body_popupshowed');
if (popup) {
popup.addEventListener('click', function (e) {
if (e.target === popup) t358_popup_close(recid);
});
}
var popupClose = popup ? popup.querySelector('.t-popup__close') : null;
if (popupClose) {
popupClose.addEventListener('click', function () {
t358_popup_close(recid);
});
}
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) t358_popup_close(recid);
});
}
function t358_popup_close(recid) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
document.body.classList.remove('t358__body_popupshowed');
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var popup = rec.querySelector('.t-popup');
var videoCarrier = rec.querySelector('.t358__video-carier');
if (popup) popup.classList.remove('t-popup_show');
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
if (videoCarrier) videoCarrier.innerHTML = '';
if (popup && !popup.classList.contains('t-popup_show')) {
popup.style.display = 'none';
}
}, 300);
}
/* deprecated */
function t358_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) === '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (ga) {
if (window.mainTracker !== 'tilda') {
ga('send', {
hitType: 'pageview',
page: virtPage,
title: virtTitle,
});
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, {
title: virtTitle,
referer: window.location.href,
});
}
}
function t359_initPopup(recid) {
$('#rec' + recid).attr('data-animationappear', 'off');
$('#rec' + recid).css('opacity', '1');
var el = $('#rec' + recid).find('.t-popup');
var hook = el.attr('data-tooltip-hook');
var analitics = el.attr('data-track-popup');
if (hook !== '') {
var obj = $('a[href="' + hook + '"]');
obj.click(function (e) {
t359_showPopup(recid);
t359_resizePopup(recid);
e.preventDefault();
if (analitics == 'yes') {
t359_sendPopupEventToStatistics(hook);
}
t359_positionArrows(recid);
});
}
}
function t359_showPopup(recid) {
var el = $('#rec' + recid);
var popup = el.find('.t-popup');
popup.css('display', 'block');
t359_resizeGallery(recid);
setTimeout(function () {
popup.find('.t-popup__container').addClass('t-popup__container-animated');
popup.addClass('t-popup_show');
}, 50);
$('body').addClass('t-body_popupshowed');
el.find('.t-popup').click(function (e) {
if (e.target == this) {
t359_closePopup();
}
});
el.find('.t-popup__close').click(function (e) {
t359_closePopup();
});
$(document).keydown(function (e) {
if (e.keyCode == 27) {
t359_closePopup();
}
});
}
function t359_closePopup() {
$('body').removeClass('t-body_popupshowed');
$('.t-popup').removeClass('t-popup_show');
setTimeout(function () {
$('.t-popup').not('.t-popup_show').css('display', 'none');
}, 300);
}
function t359_resizePopup(recid) {
var el = $('#rec' + recid);
var div = el.find('.t-popup__container').height();
var win = $(window).height() - 120;
var popup = el.find('.t-popup__container');
if (div > win) {
popup.addClass('t-popup__container-static');
} else {
popup.removeClass('t-popup__container-static');
}
}
function t359_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) == '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
function t359_showCaptions(recid) {
var el = $('#t-carousel' + recid);
var caption = el.find('.item:nth-child(1) .t-carousel__caption-inside');
var captioncontainer = el.find('.t-carousel__caption__container');
captioncontainer.html(caption.html());
caption.css('display', 'none');
$('#t-carousel' + recid).on('slide.bs.carousel', function (evt) {
var el = $('#t-carousel' + recid);
var caption = el.find(
'.item:nth-child(' + ($(evt.relatedTarget).index() + 1) + ') .t-carousel__caption-inside'
);
var captioncontainer = el.find('.t-carousel__caption__container');
captioncontainer.html(caption.html());
caption.css('display', 'none');
});
}
function t359_positionArrows(recid) {
var el = $('#rec' + recid);
var containerinside = el.find('.t-carousel__arrows__container_inside');
var containeroutside = el.find('.t-carousel__arrows__container_outside');
var inner = el.find('.t-carousel__inner');
var arrowleft = el.find('.t-carousel__arrow_left');
var arrowright = el.find('.t-carousel__arrow_right');
containeroutside.css({ 'max-width': arrowleft.width() + arrowright.width() + inner.width() + 60 + 'px' });
containerinside.css({ 'max-width': inner.width() + 'px' });
}
function t359_resizeGallery(recid) {
var el = $('#rec' + recid);
var element = el.find('.t-carousel__checksize');
var sizer = el.find('.t-carousel__height');
if (window.matchMedia('(max-width: 800px)').matches) {
var ratio = 0.9;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 700px)').matches) {
var ratio = 0.8;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 600px)').matches) {
var ratio = 0.7;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 500px)').matches) {
var ratio = 0.6;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 400px)').matches) {
var ratio = 0.5;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(min-width: 800px)').matches) {
element.height(sizer.height());
}
}
function t362_sendPopupEventToStatistics(link_recid, popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Payment popup: ';
if (popupname.substring(0, 7) == '#price:') {
popupname = popupname.substring(7);
}
virtPage = virtPage + link_recid + '/';
virtTitle += popupname;
if (Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (window.ga && window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t362_sendPaymentEventToStatistics(product, price) {
if (Tilda && typeof Tilda.sendEventToStatistics == 'function') {
var virtPage = '/tilda/payment/?product=' + product + '&price=' + price;
var virtTitle = 'Order: ' + product + ' = ' + price;
Tilda.sendEventToStatistics(virtPage, virtTitle, '', price);
} else {
var virtPage = '/tilda/order/?product=' + product + '&price=' + price;
var virtTitle = 'Order: ' + product + ' = ' + price;
if (window.ga && window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t362_showPopup(recid, name, price) {
var el = $('#rec' + recid);
var popup = el.find('.t-popup');
popup.css('display', 'block');
el.find('.js-product-title').html(name + ' = ' + price);
el.find('.js-successbox').hide();
setTimeout(function () {
popup.find('.t-popup__container').addClass('t-popup__container-animated');
popup.addClass('t-popup_show');
}, 50);
$('body').addClass('t-body_popupshowed t362__body_popupshowed');
el.find('.t-popup').click(function (e) {
if (e.target == this) {
t362_closePopup();
}
});
el.find('.t-popup__close').click(function (e) {
t362_closePopup();
});
}
function t362_closePopup() {
$('body').removeClass('t-body_popupshowed t362__body_popupshowed');
$('.t-popup').removeClass('t-popup_show');
setTimeout(function () {
$('.t-popup').not('.t-popup_show').css('display', 'none');
}, 300);
}
function t362_resizePopup(recid) {
var el = $('#rec' + recid);
var div = el.find('.t-popup__container').height();
var win = $(window).height() - 120;
var popup = el.find('.t-popup__container');
if (div > win) {
popup.addClass('t-popup__container-static');
} else {
popup.removeClass('t-popup__container-static');
}
}
window.t362_sendPaymentForm = function ($form) {
var recid = $form.attr('id').replace('form', '');
var $paymentForm = $('#formpayment' + recid);
if ($paymentForm.length == 0) {
if ($form.data('success-url') > '') {
window.location.href = $form.data('success-url');
}
return false;
}
var name = $paymentForm.find('.js_payment_product').val();
var price = $paymentForm.find('.js_payment_price').val();
if ($form.data('success-url') > '') {
$paymentForm.find('.js_payment_successurl').val($form.data('success-url'));
}
if ($paymentForm.find('.js_payment_successurl').val() == '') {
$paymentForm.find('.js_payment_successurl').val(window.location.href);
}
if ($('#rec' + recid).find('.js-payment-type').length > 0) {
$paymentForm.find('input[name=paymentType]').val(
$('#rec' + recid)
.find('.js-payment-type')
.val()
);
}
var $ctrl = $paymentForm.find('[name=customerNumber]');
var tildaformresult = $form.data('tildaformresult');
if (tildaformresult && tildaformresult.tranid > '0') {
if ($ctrl.length > 0) {
$ctrl.val(tildaformresult.tranid); /* dataid */
}
$ctrl = $paymentForm.find('.js_payment_ordernumber');
if ($ctrl.length > 0) {
if (tildaformresult.orderid > '0') {
$ctrl.val(tildaformresult.orderid);
} else {
$ctrl.val('');
}
}
} else {
if ($ctrl.length > 0) {
$ctrl.val('');
}
}
t362_sendPaymentEventToStatistics(name, price);
var actionUrl = $paymentForm.attr('action');
if (actionUrl && actionUrl.indexOf('eshop.xml') > 0) {
var allData = '';
$form.find('input[type=text]').each(function () {
var str = $(this).val();
var cssclass = $(this).attr('class');
if (!cssclass || cssclass.indexOf('js_pay') == -1) {
allData = allData + '' + str + '; ';
}
if (str > '' && str.indexOf('@') > 0) {
var $jqemail = $paymentForm.find('input[name=custEmail]');
if (!$jqemail || $jqemail.length == 0) {
$paymentForm.append(" ");
} else {
$jqemail.val(str);
}
$jqemail = $paymentForm.find('input[name=cps_email]');
if (!$jqemail || $jqemail.length == 0) {
$paymentForm.append(" ");
} else {
$jqemail.val(str);
}
if ($paymentForm.find('input[name=business]').length > 0) {
var $jqemail = $paymentForm.find('input[name=email]');
if (!$jqemail || $jqemail.length == 0) {
$paymentForm.append(" ");
} else {
$jqemail.val(str);
}
}
}
});
var $jqord = $paymentForm.find('input[name=orderDetails]');
if ($jqord && $jqord.length > 0 && allData > '') {
$jqord.val($jqord.val() + ' [' + allData + ']');
}
}
$paymentForm.submit();
};
function t362_proccessError($form, recid) {
var $recbox = $('#rec' + recid);
$form.find('.js-errorbox-all').hide();
$form.find('.js-rule-error').hide();
$form.find('.js-error-rule-all').html('');
$form.find('.js-successbox').hide();
$form.find('.js-error-control-box').removeClass('js-error-control-box');
$form.removeClass('js-send-form-error');
$form.removeClass('js-send-form-success');
var arError = validateForm($form);
var $blockinput = '';
if (arError && arError.length > 0) {
var clsInputBoxSelector = $form.data('inputbox');
if (!clsInputBoxSelector) {
clsInputBoxSelector = '.blockinput';
}
for (var i = 0; i < arError.length; i++) {
if (!arError[i] || !arError[i].obj) {
continue;
}
arError[i].obj.closest(clsInputBoxSelector).addClass('js-error-control-box');
for (j = 0; j < arError[i].type.length; j++) {
error = arError[i].type[j];
var $errItem = $form.find('.js-rule-error-' + error);
if ($errItem.length > 0) {
$errItem.css('display', 'block').show();
}
}
}
$form.find('.js-errorbox-all').css('display', 'block').show();
return false;
} else {
return true;
}
}
function t362_initPopup(recid) {
$('#rec' + recid).attr('data-animationappear', 'off');
$('#rec' + recid).css('opacity', '1');
var el = $('#rec' + recid).find('.t362');
$('[href^="#price"]').click(function (e) {
t362_closePopup();
e.preventDefault();
var tmp = $(this).attr('href');
// format: #price:Cost:Product name
var arParam = tmp.split(':');
var price = arParam[1].replace(',', '.');
price = parseInt(price.replace(/[^0-9\.]/g, ''));
var pricetext = arParam[1];
var name = arParam[2];
var link_recid = '0';
var $link_rec = $(this).closest('.r');
var htmlpayment = '';
if ($link_rec.length > 0) {
link_recid = $link_rec.attr('id');
if (!name) {
var tmp = $link_rec.find('.t-title');
if (tmp.length > 0) {
name = tmp.text();
}
name = $(this).text();
}
}
var $recbox = $('#rec' + recid);
$recbox.find('.js_payment_product').val(name);
$recbox.find('.js_payment_price').val(price);
$recbox.find('#form' + recid).show();
if (window.tilda_payment_type > '') {
$recbox.find('.js-tilda-payment').remove();
/* если Я.Касса подключенная по HTTP */
if (window.tilda_payment_type == 'yakassa_http') {
var strvalue = '';
htmlpayment =
' ';
htmlpayment =
htmlpayment +
' ';
htmlpayment =
htmlpayment +
' ';
htmlpayment =
htmlpayment +
' ';
strvalue = window.location.href;
strvalue = strvalue.substring(0, 250);
htmlpayment =
htmlpayment +
' ';
strvalue = document.referrer ? document.referrer : '';
strvalue = strvalue.substring(0, 250);
htmlpayment =
htmlpayment +
' ';
htmlpayment =
htmlpayment +
' ';
strvalue = document.cookie ? document.cookie : '';
strvalue = strvalue.substring(0, 250);
htmlpayment =
htmlpayment +
' ';
var $paymentForm = $('#formpayment' + recid);
$paymentForm.append(htmlpayment);
htmlpayment = '';
/* заменяем обработчик формы на свой */
$('#form' + recid)
.removeClass('js-form-proccess')
.data('success-callback', '');
$('#form' + recid).addClass('js-form-yakassa-proccess');
function t362_YaKassaPayment(e) {
if (!$(this).hasClass('js-form-yakassa-proccess')) {
return;
}
var $recbox = $('#rec' + recid);
var $paymentForm = $('#formpayment' + recid);
//var htmlpayment = '';
e.stopPropagation();
e.preventDefault();
if (t362_proccessError($(this))) {
var i;
var arFormElements = $('#form' + recid).serializeArray();
var iCntSrv = 0;
for (i in arFormElements) {
var elemvalue = arFormElements[i].value;
var elemname = arFormElements[i].name;
if (
elemname == 'productprice' ||
elemname == 'productname' ||
elemname == 'form-spec-comments' ||
elemname == 'tildaspec-cookie'
) {
continue;
}
if (elemvalue > '' && elemvalue.indexOf('@') > 0) {
var $jqemail;
/*
$jqemail = $paymentForm.find('input[name=custEmail]');
if (!$jqemail || $jqemail.length == 0) {
$paymentForm.append(" ");
} else {
$jqemail.val(elemvalue);
}
*/
$jqemail = $paymentForm.find('input[name=cps_email]');
if (!$jqemail || $jqemail.length == 0) {
$paymentForm.append(" ");
} else {
$jqemail.val(elemvalue);
}
$jqemail = $paymentForm.find('input[name=customerNumber]');
if (!$jqemail || $jqemail.length == 0) {
$paymentForm.append(
" "
);
} else {
$jqemail.val(elemvalue);
}
elemname = elemname.replace('[', '_');
elemname = elemname.replace(']', '_');
/* htmlpayment = htmlpayment + ' '; */
htmlpayment =
htmlpayment +
' ';
} else {
if (arFormElements[i].name == 'formservices[]') {
htmlpayment =
htmlpayment +
' ';
iCntSrv = parseInt(iCntSrv) + 1;
} else {
elemname = elemname.replace('[', '_');
elemname = elemname.replace(']', '_');
/*
htmlpayment = htmlpayment + ' ';
*/
htmlpayment =
htmlpayment +
' ';
}
}
}
if ($paymentForm.find('input[name=customerNumber]').val() == '') {
var t = new Date();
t = t.getTime();
$paymentForm.find('input[name=customerNumber]').val(t);
}
if ($paymentForm.find('input[name=orderNumber]').val() == '') {
$paymentForm.find('input[name=orderNumber]').remove();
}
if ($(this).data('success-url') > '') {
$paymentForm.find('.js_payment_successurl').val($(this).data('success-url'));
} else {
if ($paymentForm.find('.js_payment_successurl').val() == '') {
$paymentForm.find('.js_payment_successurl').val(window.location.href);
}
}
if ($paymentForm.find('.js_payment_failurl').val() == '') {
$paymentForm.find('.js_payment_failurl').val(window.location.href);
}
if ($recbox.find('.js-payment-type').length > 0) {
$paymentForm.find('input[name=paymentType]').val($recbox.find('.js-payment-type').val());
}
$paymentForm.append(htmlpayment);
$paymentForm.submit();
}
}
$('#rec' + recid + ' .js-form-yakassa-proccess').off('submit');
$('#rec' + recid + ' .js-form-yakassa-proccess').on('submit', t362_YaKassaPayment);
} else {
if (window.tilda_payment_type == 'robokassa') {
/* заменяем обработчик формы на свой */
$('#form' + recid)
.removeClass('js-form-proccess')
.data('success-callback', '');
$('#form' + recid).addClass('js-form-robokassa-proccess');
$('#rec' + recid + ' .js-form-robokassa-proccess').off('submit');
$('#rec' + recid + ' .js-form-robokassa-proccess').on('submit', function (e) {
e.preventDefault();
$('#rec' + recid)
.find('.js-btn-robokassa')
.trigger('click');
return false;
});
$('#rec' + recid)
.find('.js-btn-robokassa')
.off('click');
$('#rec' + recid)
.find('.js-btn-robokassa')
.on('click', function (e) {
e.preventDefault();
var $recbox = $('#rec' + recid);
var btnformsubmit = $(this);
var $form = $(this).closest('form');
if (!$form || $form.length == 0) {
return false;
}
if (!$form.hasClass('js-form-robokassa-proccess')) {
return;
}
var btnstatus = btnformsubmit.data('form-sending-status');
if (btnstatus >= '1') {
/* 0 - могу отправлять, 1 - отправляю, как только отправлено снова в ставим в 0 */
return false;
}
btnformsubmit.addClass('t-btn_sending');
btnformsubmit.data('form-sending-status', '1');
btnformsubmit.data('submitform', $form);
var $errBox = $form.find('.js-errorbox-all');
if ($errBox && $errBox.length > 0) {
$errBox.hide();
}
if (t362_proccessError($form)) {
var $elem = $form.find('input[name=tildaspec-cookie]');
if (!$elem || $elem.length == 0) {
$form.append(' ');
$elem = $form.find('input[name=tildaspec-cookie]');
}
if ($elem.length > 0) {
$elem.val(document.cookie);
}
$elem = $form.find('input[name=tildaspec-referer]');
if (!$elem || $elem.length == 0) {
$form.append(' ');
$elem = $form.find('input[name=tildaspec-referer]');
}
if ($elem.length > 0) {
$elem.val(window.location.href);
}
$elem = $form.find('input[name=tildaspec-projectid]');
if (!$elem || $elem.length == 0) {
$form.append(
' '
);
}
$elem = $form.find('input[name=tildaspec-hash]');
if (!$elem || $elem.length == 0) {
console.log('Empty hash for payment form');
return false;
}
var amount = $form.find('.js_payment_price').val();
Tilda.robokassaPayment($form, btnformsubmit, '', amount);
} else {
btnformsubmit.removeClass('t-btn_sending');
btnformsubmit.data('form-sending-status', '0');
btnformsubmit.data('submitform', $form);
}
return false;
});
} else {
var htmlpayment =
' ';
htmlpayment =
htmlpayment +
' ';
htmlpayment =
htmlpayment +
' ';
htmlpayment =
htmlpayment +
' ';
$('#form' + recid).append(htmlpayment);
}
}
}
t362_showPopup(recid, name, pricetext);
t362_sendPopupEventToStatistics(link_recid, name);
t362_resizePopup(recid);
if ($recbox.find('.js-stripe-publishable-key').length > 0) {
var companyname = $recbox.find('.js-stripe-company-name').val();
if (!window.stripehandler) {
window.stripehandler = StripeCheckout.configure({
key: $recbox.find('.js-stripe-publishable-key').val(),
image: $recbox.find('.js-stripe-logo').val(),
name: companyname ? companyname : window.location.host,
locale: 'auto',
});
/* Close Checkout on page navigation:*/
$(window).on('popstate', function () {
window.stripehandler.close();
});
}
/* заменяем обработчик формы на свой */
$('#form' + recid)
.removeClass('js-form-proccess')
.data('success-callback', '');
//$('#rec'+recid).off('submit','.js-form-proccess');
if ($('#formpayment' + recid).attr('action') > '') {
$('#form' + recid).data('success-url', $('#formpayment' + recid).attr('action'));
}
$('#form' + recid).addClass('js-form-stripe-proccess');
function t362_stripePayment(e) {
if (!$(this).hasClass('js-form-stripe-proccess')) {
return;
}
var $recbox = $('#rec' + recid);
e.stopPropagation();
e.preventDefault();
if (t362_proccessError($(this), recid)) {
window.stripehandler.open({
name: $recbox.find('.js-stripe-company-name').val(),
image: $recbox.find('.js-stripe-logo').val(),
description: $recbox.find('.js_payment_product').val(),
amount: $recbox.find('.js_payment_price').val() * 100,
currency: $recbox.find('.js-stripe-currency').val(),
shippingAddress: $recbox.find('.js-stripe-need-shipping').val() == '1' ? true : false,
token: function (token, args) {
if (token && token.id) {
t362_sendPaymentEventToStatistics(name, price * 100);
$('#form' + recid).removeClass('js-form-stripe-proccess');
$('#form' + recid).off('submit', t362_stripePayment);
var htmlpayment =
' ';
if (token.email) {
htmlpayment =
htmlpayment +
' ';
}
htmlpayment =
htmlpayment +
' ';
$('#form' + recid)
.find('.js-stripe-tokenoptions')
.remove();
$('#form' + recid).append(htmlpayment);
$('#form' + recid)
.addClass('js-form-proccess')
.submit();
}
},
});
}
return false;
}
$('#rec' + recid + ' .js-form-stripe-proccess').on('submit', t362_stripePayment);
}
if ($recbox.find('.js-cp-key').length > 0) {
/* заменяем обработчик формы на свой */
$('#form' + recid)
.removeClass('js-form-proccess')
.data('success-callback', '');
//$('#rec'+recid).off('submit','.js-form-proccess');
if ($('#formpayment' + recid).attr('action') > '') {
$('#form' + recid).data('success-url', $('#formpayment' + recid).attr('action'));
}
$('#form' + recid).addClass('js-form-cp-proccess');
function t362_cloudPayments(e) {
if (!$(this).hasClass('js-form-cp-proccess')) {
return;
}
var $recbox = $('#rec' + recid);
e.stopPropagation();
e.preventDefault();
var currency = $('#rec' + recid + ' .js-currency').val();
if (!window.cloudpaymentshandler) {
var lang = '';
if ($('#rec' + recid + ' .js-language').length > 0) {
lang = $('#rec' + recid + ' .js-language').val();
}
if (lang == '') {
lang = currency == 'RUB' || currency == 'BYR' ? 'ru-RU' : 'en-US';
}
window.cloudpaymentshandler = new cp.CloudPayments({ language: lang });
}
if (t362_proccessError($(this), recid)) {
$recbox.find('.t-popup').css('z-index', '8000');
var $paymentForm = $('#formpayment' + recid);
var $form = $('#form' + recid);
var email;
var allData = {};
$form.find('input,textarea').each(function () {
var str = $(this).val();
var ctrlname = $(this).attr('name');
if (ctrlname.substring(0, 8) != 'formserv' && ctrlname != 'form-spec-comments' && str > '') {
allData[ctrlname] = str;
}
if (str > '' && str.indexOf('@') > 0) {
var $jqemail = $paymentForm.find('input[name=accountId]');
if (!$jqemail || $jqemail.length == 0) {
$paymentForm.append(" ");
} else {
$jqemail.val(str);
}
}
});
email = $paymentForm.find('input[name=accountId]').val();
if ($paymentForm.data('recurrent') == 1) {
allData.cloudPayments = { recurrent: { interval: 'Month', period: 1 } };
if ($paymentForm.data('recurrent-interval') > '') {
allData.cloudPayments.recurrent.interval = $paymentForm.data('recurrent-interval');
}
if ($paymentForm.data('recurrent-period') > '') {
allData.cloudPayments.recurrent.period = parseInt($paymentForm.data('recurrent-period'));
}
}
/* $('#rec'+recid).find('.t-popup').css('z-index','8000');*/
window.cloudpaymentshandler.charge(
{
publicId: $recbox.find('.js-cp-key').val(),
description: $recbox.find('.js_payment_product').val(),
amount: parseFloat($recbox.find('.js_payment_price').val()),
currency: $recbox.find('.js-currency').val(),
accountId: email ? email : '',
data: allData,
},
function (options) {
/* success*/
//действие при успешной оплате
t362_sendPaymentEventToStatistics(name, price);
$('#form' + recid).removeClass('js-form-cp-proccess');
$('#form' + recid).off('submit', t362_cloudPayments);
$('#form' + recid)
.addClass('js-form-proccess')
.submit();
$recbox.find('.t-popup').css('z-index', '');
},
function (reason, options) {
// fail
if ($('#rec' + recid + ' .js-failure-url').val() > '') {
window.location.href = $('#rec' + recid + ' .js-failure-url').val();
}
$recbox.find('.t-popup').css('z-index', '');
}
);
}
return false;
}
$('#rec' + recid + ' .js-form-cp-proccess').on('submit', t362_cloudPayments);
}
return false;
});
if ($('#rec' + recid).find('[name=tildaspec-cookie]').length > 0) {
$('#rec' + recid)
.find('[name=tildaspec-cookie]')
.val(document.cookie);
}
if ($('#rec' + recid).find('.js-stripe-publishable-key').length > 0 && window.stripeapiiscalled !== true) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://checkout.stripe.com/checkout.js';
document.body.appendChild(script);
window.stripeapiiscalled = true;
}
if ($('#rec' + recid).find('.js-cp-key').length > 0 && window.cloudpaymentsapiiscalled !== true) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://widget.cloudpayments.ru/bundles/cloudpayments';
document.body.appendChild(script);
window.cloudpaymentsapiiscalled = true;
}
}
function t364_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t364');
if (!container) return;
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var popupAnalitics = popup.getAttribute('data-track-popup');
var popupCookieExist = popup.getAttribute('data-cookies-exist');
var cookie = '';
var popupCloseBtn = popup.querySelector('.t-popup__close');
var text = rec.querySelector('.t364__text');
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
if (popupCookieExist === 'yes') {
cookie = t364_readCookie('t364closefb');
} else {
cookie = t364_readCookie('');
}
if (popupTooltipHook && cookie !== 'yes') {
var hrefs = document.querySelectorAll('a[href="' + popupTooltipHook + '"]');
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(popupTooltipHook);
});
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].addEventListener('click', function (event) {
t364_showPopup(recId);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
event.preventDefault();
if (popupAnalitics) {
var virtTitle = popupTooltipHook;
if (virtTitle.substring(0, 7) == '#popup:') {
virtTitle = virtTitle.substring(7);
}
Tilda.sendEventToStatistics(popupAnalitics, virtTitle);
}
});
// a11y: add class to the trigger buttin for focus
hrefs[i].addEventListener('keydown', function (event) {
if (event.keyCode === 13) {
if (!window.isMobile) this.classList.add('t-popup__triggered-btn');
}
});
}
}
popup.addEventListener('click', function (event) {
if (event.target === this) t364_closePopup();
});
if (text) {
text.addEventListener('click', function () {
t364_closePopup();
t364_createCookie('t364closefb', 'yes', 30);
});
}
popupCloseBtn.addEventListener('click', t364_closePopup);
}
function t364_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t364');
if (!container) return;
var popup = rec.querySelector('.t-popup');
var hrefs = rec.querySelectorAll('a[href*="#"]');
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].removeEventListener('click', t364_hrefClickEvent);
hrefs[i].addEventListener('click', t364_hrefClickEvent);
}
document.addEventListener('keydown', t364_escClosePopup);
}
function t364_hrefClickEvent() {
var url = this.getAttribute('href');
if (!url || url.substring(0, 7) != '#price:') {
t364_closePopup();
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
}, 300);
}
}
}
function t364_escClosePopup(event) {
if (event.key === 'Escape') t364_closePopup();
}
function t364_closePopup() {
var popupAll = document.querySelectorAll('.t-popup');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
for (var i = 0; i < popupAll.length; i++) {
popupAll[i].classList.remove('t-popup_show');
}
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t364_escClosePopup);
}
/* deprecated */
function t364_sendPopupEventToStatistics(popupName) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupName.substring(0, 7) == '#popup:') {
popupName = popupName.substring(7);
}
virtPage += popupName;
virtTitle += popupName;
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
function t364_createCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
var expires = '; expires=' + date.toGMTString();
} else {
var expires = '';
}
document.cookie = name + '=' + value + expires + '; path=/';
}
function t364_readCookie(name) {
var nameEQ = name + '=';
var arrCookie = document.cookie.split(';');
for (var i = 0; i < arrCookie.length; i++) {
var cookie = arrCookie[i];
while (cookie.charAt(0) == ' ') {
cookie = cookie.substring(1, cookie.length);
}
if (cookie.indexOf(nameEQ) == 0) {
return cookie.substring(nameEQ.length, cookie.length);
}
}
return null;
}
function t365_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t365');
if (!container) return;
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var popupAnalitics = popup.getAttribute('data-track-popup');
var popupCookieExist = popup.getAttribute('data-cookies-exist');
var cookie = '';
var text = rec.querySelector('.t365__text');
var popupCloseBtn = popup.querySelector('.t-popup__close');
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
if (popupCookieExist === 'yes') {
cookie = t365_readCookie('t365closefb');
} else {
cookie = t365_readCookie('');
}
if (popupTooltipHook && cookie !== 'yes') {
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(popupTooltipHook);
});
var hrefs = document.querySelectorAll('a[href="' + popupTooltipHook + '"]');
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].addEventListener('click', function (event) {
t365_showPopup(recId);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
event.preventDefault();
if (popupAnalitics) {
var virtTitle = popupTooltipHook;
if (virtTitle.substring(0, 7) == '#popup:') {
virtTitle = virtTitle.substring(7);
}
Tilda.sendEventToStatistics(popupAnalitics, virtTitle);
}
});
// a11y: add class to the trigger buttin for focus
hrefs[i].addEventListener('keydown', function (event) {
if (event.keyCode === 13) {
if (!window.isMobile) this.classList.add('t-popup__triggered-btn');
}
});
}
}
popup.addEventListener('click', function (event) {
if (event.target === this) t365_closePopup();
});
if (text) {
text.addEventListener('click', function () {
t365_closePopup();
t365_createCookie('t365closefb', 'yes', 30);
});
}
popupCloseBtn.addEventListener('click', t365_closePopup);
}
function t365_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t365');
if (!container) return;
var popup = rec.querySelector('.t-popup');
var hrefs = rec.querySelectorAll('a[href*="#"]');
/* fix for Chrome, where VK widget set height = 0px; 250px - standart height from settings */
var popupVK = document.getElementById('vk_groups_' + recId);
if (popupVK && popupVK.style.height === '0px') {
popupVK.style.height = '250px';
var iframe = popupVK.querySelector('iframe');
if (iframe) iframe.style.height = '250px';
}
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].removeEventListener('click', t365_hrefClickEvent);
hrefs[i].addEventListener('click', t365_hrefClickEvent);
}
document.addEventListener('keydown', t365_escClosePopup);
}
function t365_hrefClickEvent() {
var url = this.getAttribute('href');
if (!url || url.substring(0, 7) != '#price:') {
t364_closePopup();
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
}, 300);
}
}
}
function t365_escClosePopup(event) {
if (event.key === 'Escape') t365_closePopup();
}
function t365_closePopup() {
var popupAll = document.querySelectorAll('.t-popup');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
for (var i = 0; i < popupAll.length; i++) {
popupAll[i].classList.remove('t-popup_show');
}
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t365_escClosePopup);
}
/* deprecated */
function t365_sendPopupEventToStatistics(popupName) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupName.substring(0, 7) == '#popup:') {
popupName = popupName.substring(7);
}
virtPage += popupName;
virtTitle += popupName;
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
function t365_createCookie(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
var expires = '; expires=' + date.toGMTString();
} else {
var expires = '';
}
document.cookie = name + '=' + value + expires + '; path=/';
}
function t365_readCookie(name) {
var nameEQ = name + '=';
var arrCookie = document.cookie.split(';');
for (var i = 0; i < arrCookie.length; i++) {
var cookie = arrCookie[i];
while (cookie.charAt(0) == ' ') {
cookie = cookie.substring(1, cookie.length);
}
if (cookie.indexOf(nameEQ) == 0) {
return cookie.substring(nameEQ.length, cookie.length);
}
}
return null;
}
function t366_showPopup(recid) {
var el = $('#rec' + recid);
var popup = el.find('.t-popup');
popup.css('display', 'block');
t366_resizeGallery(recid);
setTimeout(function () {
popup.find('.t-popup__container').addClass('t-popup__container-animated');
popup.addClass('t-popup_show');
}, 50);
$('body').addClass('t-body_popupshowed');
el.find('.t-popup').click(function (e) {
if (e.target == this) {
t366_closePopup();
}
});
el.find('.t-popup__close').click(function (e) {
t366_closePopup();
});
el.find('a[href*=#]:not(.carousel-control,.t-carousel__control)').click(function (e) {
var url = $(this).attr('href');
if (!url || url.substring(0, 7) != '#price:') {
t366_closePopup();
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
$('body').addClass('t-body_popupshowed');
}, 300);
}
}
});
$(document).keydown(function (e) {
if (e.keyCode == 27) {
t366_closePopup();
}
});
}
function t366_closePopup() {
$('body').removeClass('t-body_popupshowed');
$('.t-popup').removeClass('t-popup_show');
setTimeout(function () {
$('.t-popup').not('.t-popup_show').css('display', 'none');
}, 300);
}
function t366_resizePopup(recid) {
var el = $('#rec' + recid);
var div = el.find('.t-popup__container').height();
var win = $(window).height() - 120;
var popup = el.find('.t-popup__container');
if (div > win) {
popup.addClass('t-popup__container-static');
} else {
popup.removeClass('t-popup__container-static');
}
}
function t366_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) == '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (window.Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t366_initPopup(recid) {
$('#rec' + recid).attr('data-animationappear', 'off');
$('#rec' + recid).css('opacity', '1');
var el = $('#rec' + recid).find('.t-popup');
var hook = el.attr('data-tooltip-hook');
var analitics = el.attr('data-track-popup');
if (hook !== '') {
var obj = $('a[href="' + hook + '"]');
obj.click(function (e) {
t366_showPopup(recid);
t366_resizePopup(recid);
e.preventDefault();
if (window.lazy == 'y') {
t_lazyload_update();
}
if (analitics == 'yes') {
t366_sendPopupEventToStatistics(hook);
}
});
}
}
function t366_resizeGallery(recid) {
var el = $('#rec' + recid);
var element = el.find('.t-carousel__checksize');
var sizer = el.find('.t-carousel__height');
if (window.matchMedia('(max-width: 800px)').matches) {
var ratio = 0.9;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 700px)').matches) {
var ratio = 0.8;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 600px)').matches) {
var ratio = 0.7;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 500px)').matches) {
var ratio = 0.6;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 400px)').matches) {
var ratio = 0.5;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(min-width: 800px)').matches) {
element.height(sizer.height());
}
}
function t367_createCookie(cookieName, cookieValue, cookieTime) {
var expires = '';
if (cookieTime) {
if (Number(cookieTime) > 9999999) {
cookieTime = 9999999;
}
var date = new Date();
date.setTime(date.getTime() + cookieTime * 24 * 60 * 60 * 1000);
expires = '; expires=' + date.toGMTString();
}
document.cookie = cookieName + '=' + cookieValue + expires + '; path=/';
}
function t367_readCookie(cookieName) {
cookieName = cookieName + '=';
var allCookies = document.cookie.split(';');
for (var i = 0; i < allCookies.length; i++) {
var cookie = allCookies[i];
while (cookie.charAt(0) === ' ') {
cookie = cookie.substring(1, cookie.length);
}
if (cookie.indexOf(cookieName) === 0) {
return cookie.substring(cookieName.length, cookie.length);
}
}
return null;
}
function checkIsValidLink(link) {
try {
const url = new URL(link, window.location.href);
return ['http:', 'https:'].includes(url.protocol);
} catch {
return false;
}
}
function t367_autoInit(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
var windowWidth = window.innerWidth;
if (typeof screenMin === 'string') {
if (windowWidth < parseInt(screenMin, 10)) {
return true;
}
}
if (typeof screenMax === 'string') {
if (windowWidth > parseInt(screenMax, 10)) {
return true;
}
}
var openerLink = rec.querySelector('.t367__opener');
if (!t367_isPopupRecVisible(openerLink)) return;
var linkhook = openerLink.getAttribute('href');
if (!linkhook) return;
var cookieName = openerLink.getAttribute('data-cookie-name');
var cookieTime = openerLink.getAttribute('data-cookie-time');
var cookieValue = 't367cookie';
var cookie = t367_readCookie(cookieName);
var timeout = parseInt(openerLink.getAttribute('data-trigger-time'), 10) * 1000;
var wrapperBlock = rec.querySelector('.t367');
if (!wrapperBlock) return;
if (cookie) {
wrapperBlock.innerHTML = '';
} else if (openerLink && checkIsValidLink(openerLink)) {
setTimeout(function () {
openerLink.click();
wrapperBlock.innerHTML = '';
t367_createCookie(cookieName, cookieValue, cookieTime);
}, timeout);
}
}
function t367_isPopupRecVisible(openerLink) {
if (openerLink) {
var linkText = openerLink.getAttribute('href');
var popupElement = document.querySelector('.t-popup[data-tooltip-hook="' + linkText + '"]');
if (popupElement) {
var popupElementRec = popupElement.closest('.r');
var minScreen = popupElementRec.getAttribute('data-screen-min');
if (minScreen && minScreen !== '') {
minScreen = minScreen.replace('px', '');
if (parseInt(minScreen, 10) > window.innerWidth) {
return false;
}
}
var maxScreen = popupElementRec.getAttribute('data-screen-max');
if (maxScreen && maxScreen !== '') {
maxScreen = maxScreen.replace('px', '');
if (parseInt(maxScreen, 10) < window.innerWidth) {
return false;
}
}
}
return true;
}
}
function t368_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var text = rec.querySelector('.t368__text');
if (text) t368_alignVertical(rec);
var wrapperBlock = rec.querySelector('.t368');
var videoLazy = rec.querySelector('.t-video-lazyload');
if (!videoLazy) return;
var videoHeight = videoLazy.getAttribute('data-videolazy-height');
if (!videoHeight) {
t_onFuncLoad('t_video_lazyload__setHeight', function () {
t_video_lazyload__setHeight(videoLazy);
window.addEventListener('resize', function () {
t_video_lazyload__setHeight(videoLazy);
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
t_video_lazyload__setHeight(videoLazy);
});
});
}
}
function t368_alignVertical(rec) {
var videoWrap = rec.querySelector('.t368__wrap-video');
var videoBlock = videoWrap.closest('.t-col');
var textBlock = rec.querySelector('.t368__text');
t368_calcPaddingBottom(videoBlock, textBlock);
window.addEventListener('resize', function () {
t368_calcPaddingBottom(videoBlock, textBlock);
});
}
function t368_calcPaddingBottom(videoBlock, textBlock) {
var extraIndent = 12;
var textBlockHeight = textBlock ? textBlock.offsetHeight : 0;
if (videoBlock) {
if (window.innerWidth > 960) {
videoBlock.style.paddingBottom = textBlockHeight + extraIndent + 'px';
} else {
videoBlock.style.paddingBottom = '';
}
}
}
function t369_init(recid) {
t_sldsInit(recid);
setTimeout(function () {
t_prod__init(recid);
}, 500);
$('#rec' + recid)
.find('.t744')
.bind('displayChanged', function () {
t744_updateSlider(recid);
});
}
function t369_showPopup(recid) {
var el = $('#rec' + recid);
var popup = el.find('.t-popup');
popup.css('display', 'block');
t369_resizeGallery(recid);
setTimeout(function () {
popup.find('.t-popup__container').addClass('t-popup__container-animated');
popup.addClass('t-popup_show');
}, 50);
$('body').addClass('t-body_popupshowed');
el.find('.t-popup').click(function (e) {
if (e.target == this) {
t369_closePopup();
}
});
el.find('.t-popup__close').click(function (e) {
t369_closePopup();
});
el.find('a[href*=#]:not(.carousel-control,.t-carousel__control)').click(function (e) {
var url = $(this).attr('href');
if (!url || url.substring(0, 7) != '#price:') {
t369_closePopup();
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
$('body').addClass('t-body_popupshowed');
}, 300);
}
}
});
$(document).keydown(function (e) {
if (e.keyCode == 27) {
t369_closePopup();
}
});
}
function t369_closePopup() {
$('body').removeClass('t-body_popupshowed');
$('.t-popup').removeClass('t-popup_show');
setTimeout(function () {
$('.t-popup').not('.t-popup_show').css('display', 'none');
}, 300);
}
function t369_resizePopup(recid) {
var el = $('#rec' + recid);
var div = el.find('.t-popup__container').height();
var win = $(window).height() - 120;
var popup = el.find('.t-popup__container');
if (div > win) {
popup.addClass('t-popup__container-static');
} else {
popup.removeClass('t-popup__container-static');
}
}
function t369_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) == '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (window.Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t369_initPopup(recid) {
$('#rec' + recid).attr('data-animationappear', 'off');
$('#rec' + recid).css('opacity', '1');
var el = $('#rec' + recid).find('.t-popup');
var hook = el.attr('data-tooltip-hook');
var analitics = el.attr('data-track-popup');
if (hook !== '') {
var obj = $('a[href="' + hook + '"]');
obj.click(function (e) {
t369_showPopup(recid);
t369_resizePopup(recid);
e.preventDefault();
if (window.lazy == 'y') {
t_lazyload_update();
}
if (analitics == 'yes') {
t369_sendPopupEventToStatistics(hook);
}
});
}
}
function t369_resizeGallery(recid) {
var el = $('#rec' + recid);
var element = el.find('.t-carousel__checksize');
var sizer = el.find('.t-carousel__height');
if (window.matchMedia('(max-width: 800px)').matches) {
var ratio = 0.9;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 700px)').matches) {
var ratio = 0.8;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 600px)').matches) {
var ratio = 0.7;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 500px)').matches) {
var ratio = 0.6;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(max-width: 400px)').matches) {
var ratio = 0.5;
element.height(sizer.height() * ratio);
}
if (window.matchMedia('(min-width: 800px)').matches) {
element.height(sizer.height());
}
}
function t376_setbg() {
var recs = document.querySelectorAll('.r');
var background = 'no';
for (var i = 0; i < recs.length; i++) {
var rec = recs[i];
var container = rec.querySelector('.t376');
if (container) {
background = container.getAttribute('data-section-bg-color');
}
if (!rec.getAttribute('data-bg-color')) {
var bgManualSetted = rec.getAttribute('data-t376-bg-manual-setted');
if (background !== 'no') {
if (!bgManualSetted || (bgManualSetted && bgManualSetted !== background)) {
rec.style.backgroundColor = background;
rec.setAttribute('data-t376-bg-manual-setted', background);
}
}
if (background === 'no' && bgManualSetted) {
rec.style.backgroundColor = '';
rec.removeAttribute('data-t376-bg-manual-setted');
}
}
}
}
function t381_appearMenu(recId) {
if (window.innerWidth > 980) {
var recs = document.querySelectorAll('.t381');
var scrollTop = window.pageYOffset;
var body = document.body;
var html = document.documentElement;
var documentHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
for (var i = 0; i < recs.length; i++) {
var rec = recs[i];
var appearOffset = rec.getAttribute('data-appearoffset');
var hideOffset = rec.getAttribute('data-hideoffset');
if (appearOffset) {
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (scrollTop >= appearOffset) {
if (rec.style.visibility === 'hidden') {
rec.style.visibility = 'visible';
t381__fadeIn(rec);
}
} else {
rec.style.visibility = 'hidden';
}
}
if (hideOffset) {
if (hideOffset.indexOf('vh') > -1) {
hideOffset = Math.floor(window.innerHeight * (parseInt(hideOffset) / 100));
}
hideOffset = parseInt(hideOffset, 10);
if (scrollTop + window.innerHeight >= documentHeight - hideOffset) {
if (rec.style.visibility !== 'hidden') {
rec.style.visibility = 'hidden';
}
} else if (appearOffset) {
if (scrollTop >= appearOffset) {
rec.style.visibility = 'visible';
}
} else {
rec.style.visibility = 'visible';
}
}
}
}
}
function t381__fadeIn(el) {
if (el.style.display === 'block') return;
var opacity = 0;
el.style.opacity = opacity;
el.style.display = 'block';
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity += 0.1;
if (opacity >= 1.0) {
clearInterval(timer);
el.style.display = '';
}
}, 30);
}
function t383_highlight(link) {
if (link) {
var links = document.querySelectorAll('a[href="' + link + '"]');
Array.prototype.forEach.call(links, function (link) {
link.classList.add('t-active');
link.setAttribute('data-highlighted-by-user', 'y');
});
}
}
function t384_checkSize(recid) {
var el = $('#rec' + recid);
var sizer = el.find('.t-carousel__height');
var height = sizer.height();
var width = sizer.width();
var ratio = width / height;
var gallerywrapper = el.find('.t-carousel__checksize');
var gallerywidth = gallerywrapper.width();
if (height != $(window).height()) {
gallerywrapper.css({ height: gallerywidth / ratio + 'px' });
}
}
var t385 = {};
t385.equalheight = function (recid) {
var currentTallest = 0;
var currentRowStart = 0;
var rowDivs = new Array();
var $el;
var topPosition = 0;
$('#rec' + recid + ' .t385__textwrapper').each(function () {
$el = $(this);
$($el).height('auto');
topPostion = $el.position().top;
if (currentRowStart != topPostion) {
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
rowDivs.length = 0;
currentRowStart = topPostion;
currentTallest = $el.height();
rowDivs.push($el);
} else {
rowDivs.push($el);
currentTallest = currentTallest < $el.height() ? $el.height() : currentTallest;
}
for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
rowDivs[currentDiv].height(currentTallest);
}
});
};
var t386 = {};
t386.equalheight = function (recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var textWrappers = rec.querySelectorAll('.t386__textwrapper');
var maxHeight = 0;
for (var i = 0; i < textWrappers.length; i++) {
textWrappers[i].style.height = '';
}
for (var i = 0; i < textWrappers.length; i++) {
var element = textWrappers[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < textWrappers.length; i++) {
textWrappers[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < textWrappers.length; i++) {
textWrappers[i].style.height = 'auto';
}
}
};
function t389_scrollToTop() {
var duration = 700;
var difference = window.pageYOffset;
var step = (10 * difference) / duration;
var timer = setInterval(function () {
difference -= step;
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (window.pageYOffset === 0) {
document.body.removeAttribute('data-scrollable');
clearInterval(timer);
}
}, 10);
}
function t390_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t390');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var analitics = popup.getAttribute('data-track-popup');
var popupCloseBtn = popup.querySelector('.t-popup__close');
var hrefs = rec.querySelectorAll('a[href*="#"]');
/* It is necessary to save the function call through the bind, for deletion later */
var escapeEvent = t390_escClosePopup.bind(this, recId);
if (popupTooltipHook) {
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(popupTooltipHook);
});
document.addEventListener('click', function (event) {
var target = event.target;
var href = target.closest('a[href="' + popupTooltipHook + '"]') ? target : false;
if (!href) return;
event.preventDefault();
t390_showPopup(recId, escapeEvent);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
t390__lazyLoad();
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, popupTooltipHook);
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, popupTooltipHook);
});
}
popup.addEventListener(
'scroll',
t_throttle(function () {
t390__lazyLoad();
})
);
popup.addEventListener('click', function (event) {
if (event.target === this) t390_closePopup(recId, escapeEvent);
});
popupCloseBtn.addEventListener('click', function () {
t390_closePopup(recId, escapeEvent);
});
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].addEventListener('click', function () {
var url = this.getAttribute('href');
if (!url || url.substring(0, 7) != '#price:') {
t390_closePopup(recId, escapeEvent);
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
}, 300);
}
}
});
}
var curPath = window.location.pathname;
var curFullPath = window.location.origin + curPath;
/* Fix for Android unable to scroll to anchor point from "ScrollView" */
var isAndroid = /(android)/i.test(navigator.userAgent);
if (isAndroid) {
var selects =
'a[href^="#"]:not([href="#"]):not([href^="#price"]):not([href^="#popup"]):not([href^="#prodpopup"]):not([href^="#order"]):not([href^="#!"]),' +
'a[href^="' +
curPath +
'#"]:not([href*="#!/tproduct/"]):not([href*="#!/tab/"]):not([href*="#popup"]),' +
'a[href^="' +
curFullPath +
'#"]:not([href*="#!/tproduct/"]):not([href*="#!/tab/"]):not([href*="#popup"])';
var selectors = rec.querySelectorAll(selects);
for (var i = 0; i < selectors.length; i++) {
selectors[i].addEventListener('click', function (event) {
var hash = this.hash.trim();
if (window.location.hash) {
setTimeout(function () {
window.location.href = hash;
}, 50);
}
});
}
}
function t390_escClosePopup(recId) {
if (arguments[1].key === 'Escape') t390_closePopup(recId, escapeEvent);
}
}
function t390_showPopup(recId, escapeEvent) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t390');
if (!container) return;
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (screenMin && windowWidth < parseInt(screenMin, 10)) return;
if (screenMax && windowWidth > parseInt(screenMax, 10)) return;
var popup = rec.querySelector('.t-popup');
var documentBody = document.body;
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
documentBody.classList.add('t-body_popupshowed');
documentBody.classList.add('t390__body_popupshowed');
document.addEventListener('keydown', escapeEvent);
}
function t390_closePopup(recId, escapeEvent) {
var rec = document.getElementById('rec' + recId);
var popup = rec.querySelector('.t-popup');
var popupActive = document.querySelector('.t-popup.t-popup_show');
if (popup === popupActive) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
document.body.classList.remove('t390__body_popupshowed');
}
popup.classList.remove('t-popup_show');
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', escapeEvent);
}
/* deprecated */
function t390_sendPopupEventToStatistics(popupName) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupName.substring(0, 7) == '#popup:') {
popupName = popupName.substring(7);
}
virtPage += popupName;
virtTitle += popupName;
if (window.Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t390__lazyLoad() {
var allRecords = document.getElementById('allrecords');
if (window.lazy === 'y' || (allRecords && allRecords.getAttribute('data-tilda-lazy') === 'yes')) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t391_checkSize(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var cover = rec.querySelector('.t-cover');
var carrier = rec.querySelector('.t-cover__carrier');
var filter = rec.querySelector('.t-cover__filter');
var firstCol = rec.querySelector('.t391__firstcol');
var secondCol = rec.querySelector('.t391__secondcol');
var firstColHeight = firstCol ? firstCol.offsetHeight : 0;
var secondColHeight = secondCol ? secondCol.offsetHeight : 0;
var height = firstColHeight + secondColHeight;
if (
document.documentElement.clientWidth < 960 &&
height &&
cover &&
height > parseInt(getComputedStyle(cover).height, 10)
) {
if (cover) cover.style.height = height + 'px';
if (carrier) carrier.style.height = height + 'px';
if (filter) filter.style.height = height + 'px';
}
}
function t393_appearMenu(recId) {
if (window.innerWidth > 980) {
var recs = document.querySelectorAll('.t393');
var scrollTop = window.pageYOffset;
var body = document.body;
var html = document.documentElement;
var documentHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
for (var i = 0; i < recs.length; i++) {
var rec = recs[i];
var appearOffset = rec.getAttribute('data-appearoffset');
var hideOffset = rec.getAttribute('data-hideoffset');
if (appearOffset) {
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (scrollTop >= appearOffset) {
if (rec.style.visibility === 'hidden') {
rec.style.visibility = 'visible';
t393__fadeIn(rec);
}
} else {
rec.style.visibility = 'hidden';
}
}
if (hideOffset) {
if (hideOffset.indexOf('vh') > -1) {
hideOffset = Math.floor(window.innerHeight * (parseInt(hideOffset) / 100));
}
hideOffset = parseInt(hideOffset, 10);
if (scrollTop + window.innerHeight >= documentHeight - hideOffset) {
if (rec.style.visibility !== 'hidden') {
rec.style.visibility = 'hidden';
}
} else if (appearOffset) {
if (scrollTop >= appearOffset) {
rec.style.visibility = 'visible';
}
} else {
rec.style.visibility = 'visible';
}
}
}
}
}
function t393__fadeIn(el) {
if (el.style.display === 'block') return;
var opacity = 0;
el.style.opacity = opacity;
el.style.display = 'block';
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity += 0.1;
if (opacity >= 1.0) {
clearInterval(timer);
el.style.display = '';
}
}, 30);
}
function t395_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var allRecords = document.getElementById('allrecords');
var tildaMode = allRecords ? allRecords.getAttribute('data-tilda-mode') : '';
var tildaLazyMode = allRecords ? allRecords.getAttribute('data-tilda-lazy') : '';
var tabs = rec ? rec.querySelectorAll('.t395__tab') : [];
if (tildaMode !== 'edit' && tildaMode !== 'preview') {
setTimeout(function () {
t395_scrollToTabs(recid);
// a11y: добавляю a11y-атрибуты к активной кнопке при заходе на страницу
var activeTab = rec.querySelector('.t395__tab_active');
if (activeTab) {
var currentButton = activeTab.querySelector('.t395__title');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
}
var currentTabIndex = activeTab.getAttribute('data-tab-number');
var wrapper = rec.querySelector('.t395__wrapper');
wrapper.setAttribute('data-tab-current', currentTabIndex);
}
}, 300);
}
t395_addAttributesToBlocksInsideTabs(recid, tabs);
Array.prototype.forEach.call(tabs, function (tab, i) {
tab.addEventListener('click', function (event) {
var tabNumber = i + 1;
var targetTab = event.target.closest('.t395__tab');
if (targetTab && targetTab.classList.contains('t395__tab_active') && !event.isTrusted) return;
t395_switchBetweenTabs(recid, tabNumber, targetTab, tildaMode, tildaLazyMode);
});
tab.addEventListener('keydown', function (event) {
var currentIndex = Number(rec.querySelector('.t395__wrapper').getAttribute('data-tab-current'));
var targetTab = event.target.closest('.t395__tab');
if (targetTab && targetTab.classList.contains('t395__tab_active') && !event.isTrusted) return;
var prevent = false;
switch (event.key) {
case 'Left':
case 'ArrowLeft':
currentIndex = currentIndex === 1 ? tabs.length : currentIndex - 1;
targetTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
t395_switchBetweenTabs(recid, currentIndex, targetTab, tildaMode, tildaLazyMode);
t395_showActiveTabFromKeyboard(recid, currentIndex, tabs);
prevent = true;
break;
case 'Right':
case 'ArrowRight':
currentIndex = currentIndex === tabs.length ? 1 : currentIndex + 1;
targetTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
t395_switchBetweenTabs(recid, currentIndex, targetTab, tildaMode, tildaLazyMode);
t395_showActiveTabFromKeyboard(recid, currentIndex, tabs);
prevent = true;
break;
default:
break;
}
if (prevent) {
event.stopPropagation();
event.preventDefault();
}
});
});
if (tabs.length) {
t395_alltabs_updateContent(recid);
t395_updateContentBySelect(recid);
var bgColor = rec ? rec.style.backgroundColor : '#ffffff';
var bgColorTargets = rec.querySelectorAll('.t395__select, .t395__firefoxfix');
Array.prototype.forEach.call(bgColorTargets, function (target) {
target.style.background = bgColor;
});
}
/* Scroll and open proper tab on a valid link click */
document.addEventListener('click', function (e) {
if (e.target.closest('[href*="#!/tab/' + recid + '"]')) {
var currentLink = e.target.closest('[href*="#!/tab/' + recid + '"]');
var hash = currentLink.hash;
t395_scrollToTabs(recid, hash);
}
});
}
function t395_addAttributesToBlocksInsideTabs(recid, tabs) {
if (tabs.length > 0) {
Array.prototype.forEach.call(tabs, function (tab, i) {
var firstBlockInsideTabId = tab.getAttribute('data-tab-rec-ids').split(',')[0];
var firstBlockInsideTab = document.querySelector('#rec' + firstBlockInsideTabId);
if (firstBlockInsideTab && !firstBlockInsideTab.getAttribute('aria-labelledby')) {
firstBlockInsideTab.setAttribute('aria-labelledby', 'tab' + (i + 1) + '_' + recid);
}
// Пока оставляю решение, что атрибуты вышаются на первый блок в табе
if (firstBlockInsideTab && !firstBlockInsideTab.getAttribute('role')) {
firstBlockInsideTab.setAttribute('role', 'tabpanel');
}
if (firstBlockInsideTab && !firstBlockInsideTab.getAttribute('tabindex')) {
firstBlockInsideTab.setAttribute('tabindex', '0');
}
});
}
}
function t395_switchBetweenTabs(recid, tabNumber, targetTab, tildaMode, tildaLazyMode) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var activeTab = rec.querySelector('.t395__tab_active');
if (activeTab) {
activeTab.classList.remove('t395__tab_active');
var activeButton = activeTab.querySelector('.t395__title');
if (activeButton) {
activeButton.setAttribute('tabindex', -1);
activeButton.setAttribute('aria-selected', false);
}
}
targetTab.classList.add('t395__tab_active');
var targetButton = targetTab.querySelector('.t395__title');
if (targetButton) {
targetButton.setAttribute('tabindex', 0);
targetButton.setAttribute('aria-selected', true);
}
t395_removeUrl();
if (tildaMode !== 'edit' && tildaMode !== 'preview' && tabNumber && typeof history.replaceState !== 'undefined') {
try {
window.history.replaceState('', '', window.location.href + '#!/tab/' + recid + '-' + tabNumber);
} catch (err) {}
}
/* set current tab index */
rec.querySelector('.t395__wrapper').setAttribute('data-tab-current', tabNumber);
t395_alltabs_updateContent(recid);
t395_updateSelect(recid);
var hookBlocks = targetTab.getAttribute('data-tab-rec-ids').split(',');
var event = document.createEvent('Event');
event.initEvent('displayChanged', true, true);
/*if tabs placed inside other tabs, find active records and trigger them*/
var hooksCopy = hookBlocks.slice();
hooksCopy.forEach(function (recid) {
var currentRec = document.getElementById('rec' + recid);
if (!currentRec) return;
var recordType = currentRec.getAttribute('data-parenttplid') || currentRec.getAttribute('data-record-type');
if (recordType === '395' || recordType === '397') {
var selector = '.t' + recordType + '__tab_active';
var activeIDs = currentRec.querySelector(selector).getAttribute('data-tab-rec-ids');
activeIDs = activeIDs.split(',');
hookBlocks = hookBlocks.concat(activeIDs);
}
});
hookBlocks.forEach(function (curRecid) {
var currentRec = document.getElementById('rec' + curRecid);
if (!currentRec) return;
/* TODO: old */
var currentRecChildren = currentRec.querySelectorAll(
'.t-feed, .t-store, .t-store__product-snippet, .t117, .t121, .t132, .t223, .t226, .t228, .t229, .t230, .t268, .t279, .t341, .t346, .t347, .t349, .t351, .t353, .t384, .t385, .t386, .t396, .t400, .t404, .t409, .t410, .t412, .t418, .t422, .t425, .t428, .t433, .t448, .t456, .t477, .t478, .t480, .t486, .t498, .t504, .t506, .t509, .t511, .t517, .t518, .t519, .t520, .t532, .t533, .t538, .t539, .t544, .t545, .t552, .t554, .t569, .t570, .t577, .t592, .t598, .t599, .t601, .t604, .t605, .t609, .t615, .t616, .t650, .t659, .t670, .t675, .t686, .t688, .t694, .t698, .t700, .t726, .t728, .t730, .t734, .t738, .t740, .t744, .t754, .t760, .t762, .t764, .t774, .t776, .t778, .t780, .t786, .t798, .t799, .t801, .t813, .t814, .t822, .t826, .t827, .t829, .t842, .t843, .t849, .t850, .t851, .t856, .t858, .t859, .t860, .t881, .t889, .t902, .t912, .t923, .t937, .t958, .t959, .t979, .t982, .t983, .t989, .t994, .t1053, .t1067, .t1068, .t1069, .t1070, .t1071, .t1072, .t1186, .t368'
);
Array.prototype.forEach.call(currentRecChildren, function (child) {
child.dispatchEvent(event);
});
var displayChangedBlock = currentRec.querySelector('[data-display-changed="true"]');
if (displayChangedBlock) displayChangedBlock.dispatchEvent(event);
});
var galaxyEffectBlocks = document.querySelectorAll('.t826');
Array.prototype.forEach.call(galaxyEffectBlocks, function (galaxyEffectBlock) {
galaxyEffectBlock.dispatchEvent(event);
});
if (window.lazy === 'y' || tildaLazyMode === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t395_showActiveTabFromKeyboard(recid, currentIndex, tabs) {
var rec = document.querySelector('#rec' + recid);
var currentTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
if (!currentTab) return;
var currentButton = currentTab.querySelector('.t395__title');
/* a11y: change attrs for current tab */
if (currentButton) {
currentButton.focus();
}
var tabList = rec.querySelector('.t395__wrapper');
if (tabList) tabList.setAttribute('data-tab-current', currentIndex);
}
function t395_alltabs_updateContent(recid) {
var rec = document.getElementById('rec' + recid);
var activeTabs = rec ? rec.querySelectorAll('.t395__tab_active') : null;
var select = rec ? rec.querySelector('.t395__select') : null;
var tabs = rec.querySelectorAll('.t395__tab');
if (activeTabs.length !== 1) return false;
var activeTab = activeTabs[0];
var hookBlocks = activeTab.getAttribute('data-tab-rec-ids').split(',');
var noActive = [];
var popupBlocks = [
190, 217, 312, 331, 358, 364, 365, 390, 702, 706, 746, 750, 756, 768, 862, 868, 890, 945, 1013, 1014,
];
Array.prototype.forEach.call(tabs, function (tab) {
if (tab !== activeTab) {
var noActiveHooks = tab.getAttribute('data-tab-rec-ids').split(',');
noActiveHooks.forEach(function (hook) {
if (noActive.indexOf(hook) === -1 && hookBlocks.indexOf(hook) === -1) noActive.push(hook);
});
}
});
if (t395_checkVisibillityEl(activeTab) || t395_checkVisibillityEl(select)) {
hookBlocks.forEach(function (hook) {
if (hook) {
var hookEl = document.getElementById('rec' + hook);
var hookElRecordType = hookEl
? hookEl.getAttribute('data-parenttplid') || hookEl.getAttribute('data-record-type')
: '';
if (hookEl) {
hookEl.classList.remove('t395__off');
hookEl.classList.remove('t397__off');
hookEl.setAttribute('aria-hidden', false);
hookEl.style.opacity = '';
}
t395_updateTabsByHook(hookElRecordType, hookEl, hook, recid);
}
});
} else {
hookBlocks.forEach(function (hook) {
var hookEl = document.getElementById('rec' + hook);
var hookElRecordType = hookEl
? hookEl.getAttribute('data-parenttplid') || hookEl.getAttribute('data-record-type')
: '';
var isPopupBlock = popupBlocks.some(function (id) {
return hookElRecordType == id;
});
if (hookEl && !isPopupBlock) {
hookEl.setAttribute('data-animationappear', 'off');
hookEl.classList.add('t395__off');
hookEl.setAttribute('aria-hidden', true);
}
t395_updateTabsByHook(hookElRecordType, hookEl, hook, recid);
});
}
noActive.forEach(function (noActiveID) {
if (!noActiveID) return;
var hookEl = document.getElementById('rec' + noActiveID);
var hookElRecordType = hookEl
? hookEl.getAttribute('data-parenttplid') || hookEl.getAttribute('data-record-type')
: '';
var isPopupBlock = popupBlocks.some(function (id) {
return hookElRecordType == id;
});
if (hookEl && !isPopupBlock) {
hookEl.setAttribute('data-connect-with-tab', 'yes');
hookEl.setAttribute('data-animationappear', 'off');
hookEl.classList.add('t395__off');
hookEl.setAttribute('aria-hidden', true);
}
t395_updateTabsByHook(hookElRecordType, hookEl, noActiveID, recid);
});
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
if (scrollHeight - window.innerHeight < window.pageYOffset) {
window.scrollTo(0, 0);
}
}
function t395_updateTabsByHook(hookElRecordType, hookEl, currentID, recid) {
var hookElTab;
switch (hookElRecordType) {
case '395':
if (window.t395_alltabs_updateContent && window.t395_updateSelect && recid !== currentID) {
window.t395_alltabs_updateContent(currentID);
window.t395_updateSelect(currentID);
hookElTab = hookEl ? hookEl.querySelector('.t395__tab') : null;
if (hookElTab) hookElTab.click();
}
break;
case '397':
if (t397_alltabs_updateContent && t397_updateSelect && recid !== currentID) {
t397_alltabs_updateContent(currentID);
t397_updateSelect(currentID);
hookElTab = hookEl ? hookEl.querySelector('.t397__tab') : null;
if (hookElTab) hookElTab.click();
}
break;
}
}
function t395_checkVisibillityEl(el) {
return !!(el && (el.offsetWidth || el.offsetHeight || el.getClientRects().length));
}
function t395_updateContentBySelect(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var select = rec.querySelector('.t395__select');
if (select) {
select.addEventListener('change', function () {
var currentValue = select.value;
var tabIndex = rec.querySelector(".t395__tab[data-tab-rec-ids='" + currentValue + "']");
if (tabIndex) tabIndex.click();
});
}
}
function t395_updateSelect(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var activeTab = rec.querySelector('.t395__tab_active');
var currentTabHooks = activeTab ? activeTab.getAttribute('data-tab-rec-ids') : '';
var select = rec.querySelector('.t395__select');
if (select) select.value = currentTabHooks;
}
function t395_scrollToTabs(recid, hash) {
var rec = document.getElementById('rec' + recid);
// decodeURI() necessary when clicking on link with hash from VK and OK
var curUrl = hash || decodeURI(window.location.href);
var tabIndexNumber = curUrl.indexOf('#!/tab/');
if (tabIndexNumber === -1) return false;
var tabIndexNumberStart = curUrl.indexOf('tab/');
var firstOptionSelect = rec ? rec.querySelector('.t395__wrapper_mobile .t395__select option') : null;
if (firstOptionSelect) firstOptionSelect.selected = false;
var tabRec = curUrl.substring(tabIndexNumberStart + 4, tabIndexNumberStart + 4 + recid.length);
if (tabRec !== recid) return false;
var tabBlock = rec ? rec.querySelector('.t395') : null;
var tabNumber = parseInt(curUrl.slice(tabIndexNumberStart + 4 + recid.length + 1), 10);
var tabs = rec.querySelectorAll('.t395__tab');
Array.prototype.forEach.call(tabs, function (tab, i) {
if (i === tabNumber - 1) {
tab.click();
tab.classList.add('t395__tab_active');
} else {
tab.classList.remove('t395__tab_active');
}
});
var tabsMob = rec.querySelectorAll('.t395__wrapper_mobile .t395__select option');
var activeTabMob = tabsMob.length ? tabsMob[tabNumber - 1] : null;
if (activeTabMob) activeTabMob.selected = true;
var targetOffset = tabBlock.getBoundingClientRect().top + window.pageYOffset;
var target = window.innerWidth > 960 ? targetOffset - 200 : targetOffset - 100;
if (target < 0) target = 0;
t395_scrollToEl(target);
}
function t395_scrollToEl(elTopPos) {
if (elTopPos === window.pageYOffset) return false;
var duration = 300;
var difference = window.pageYOffset;
var cashedDiff = window.pageYOffset;
var step = (10 * (elTopPos || window.pageYOffset)) / duration;
var timer = setInterval(function () {
if (cashedDiff > elTopPos) {
difference -= step;
} else {
difference += step;
}
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (
(cashedDiff > elTopPos && window.pageYOffset <= elTopPos) ||
(cashedDiff <= elTopPos && window.pageYOffset >= elTopPos)
) {
document.body.removeAttribute('data-scrollable');
clearInterval(timer);
}
}, 10);
var timer2 = setTimeout(function () {
clearInterval(timer);
document.body.removeAttribute('data-scrollable');
clearTimeout(timer2);
}, duration * 2);
}
function t395_removeUrl() {
var curUrl = window.location.href;
var indexToRemove = curUrl.indexOf('#!/tab/');
if (indexToRemove === -1) {
indexToRemove = curUrl.indexOf('%23!/tab/');
}
curUrl = curUrl.substring(0, indexToRemove);
if (indexToRemove !== -1) {
if (typeof history.replaceState != 'undefined') {
try {
window.history.replaceState('', '', curUrl);
} catch (err) {}
}
}
}
function t397_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var allRecords = document.getElementById('allrecords');
var tildaMode = allRecords ? allRecords.getAttribute('data-tilda-mode') : '';
var tildaLazyMode = allRecords ? allRecords.getAttribute('data-tilda-lazy') : '';
var tabs = rec ? rec.querySelectorAll('.t397__tab') : [];
if (tildaMode !== 'edit' && tildaMode !== 'preview') {
t397_scrollToTabs(recid);
// a11y: добавляю a11y-атрибуты к активной кнопке при заходе на страницу
var activeTab = rec.querySelector('.t397__tab_active');
if (activeTab) {
var currentButton = activeTab.querySelector('.t397__title');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
}
var currentTabIndex = activeTab.getAttribute('data-tab-number');
var wrapper = rec.querySelector('.t397__wrapper');
wrapper.setAttribute('data-tab-current', currentTabIndex);
}
}
t397_addAttributesToBlocksInsideTabs(recid, tabs);
Array.prototype.forEach.call(tabs, function (tab, i) {
tab.setAttribute('data-tab-index', i);
tab.addEventListener('click', function (event) {
var tabNumber = i + 1;
var targetTab = event.target.closest('.t397__tab');
if (targetTab && targetTab.classList.contains('t397__tab_active') && !event.isTrusted) return;
t397_switchBetweenTabs(recid, tabNumber, targetTab, tildaMode, tildaLazyMode);
});
tab.addEventListener('keydown', function (event) {
var currentIndex = Number(rec.querySelector('.t397__wrapper').getAttribute('data-tab-current'));
var targetTab = event.target.closest('.t397__tab');
if (targetTab && targetTab.classList.contains('t397__tab_active') && !event.isTrusted) return;
var prevent = false;
switch (event.key) {
case 'Left':
case 'ArrowLeft':
currentIndex = currentIndex === 1 ? tabs.length : currentIndex - 1;
targetTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
t397_switchBetweenTabs(recid, currentIndex, targetTab, tildaMode, tildaLazyMode);
t397_showActiveTabFromKeyboard(recid, currentIndex, tabs);
prevent = true;
break;
case 'Right':
case 'ArrowRight':
currentIndex = currentIndex === tabs.length ? 1 : currentIndex + 1;
targetTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
t397_switchBetweenTabs(recid, currentIndex, targetTab, tildaMode, tildaLazyMode);
t397_showActiveTabFromKeyboard(recid, currentIndex, tabs);
prevent = true;
break;
default:
break;
}
if (prevent) {
event.stopPropagation();
event.preventDefault();
}
});
});
if (tabs.length) {
t397_alltabs_updateContent(recid);
t397_updateContentBySelect(recid);
var bgColor = rec ? rec.style.backgroundColor : '#ffffff';
var bgColorTargets = rec.querySelectorAll('.t397__select, .t397__firefoxfix');
Array.prototype.forEach.call(bgColorTargets, function (target) {
target.style.background = bgColor;
});
}
/* Scroll and open proper tab on a valid link click */
document.addEventListener('click', function (e) {
if (e.target.closest('[href*="#!/tab/' + recid + '"]')) {
var currentLink = e.target.closest('[href*="#!/tab/' + recid + '"]');
var hash = currentLink.hash;
t397_scrollToTabs(recid, hash);
}
});
}
function t397_addAttributesToBlocksInsideTabs(recid, tabs) {
if (tabs.length > 0) {
Array.prototype.forEach.call(tabs, function (tab, i) {
var firstBlockInsideTabId = tab.getAttribute('data-tab-rec-ids').split(',')[0];
var firstBlockInsideTab = document.querySelector('#rec' + firstBlockInsideTabId);
if (firstBlockInsideTab && !firstBlockInsideTab.getAttribute('aria-labelledby')) {
firstBlockInsideTab.setAttribute('aria-labelledby', 'tab' + (i + 1) + '_' + recid);
}
// Пока оставляю решение, что атрибуты вышаются на первый блок в табе
if (firstBlockInsideTab && !firstBlockInsideTab.getAttribute('role')) {
firstBlockInsideTab.setAttribute('role', 'tabpanel');
}
if (firstBlockInsideTab && !firstBlockInsideTab.getAttribute('tabindex')) {
firstBlockInsideTab.setAttribute('tabindex', '0');
}
});
}
}
function t397_switchBetweenTabs(recid, tabNumber, targetTab, tildaMode, tildaLazyMode) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var activeTab = rec.querySelector('.t397__tab_active');
if (activeTab) {
activeTab.classList.remove('t397__tab_active');
var activeButton = activeTab.querySelector('.t397__title');
if (activeButton) {
activeButton.setAttribute('tabindex', -1);
activeButton.setAttribute('aria-selected', false);
}
}
targetTab.classList.add('t397__tab_active');
var targetButton = targetTab.querySelector('.t397__title');
if (targetButton) {
targetButton.setAttribute('tabindex', 0);
targetButton.setAttribute('aria-selected', true);
}
t397_removeUrl();
if (tildaMode !== 'edit' && tildaMode !== 'preview' && tabNumber && typeof history.replaceState !== 'undefined') {
try {
window.history.replaceState(
'',
'',
window.location.origin + window.location.pathname + '#!/tab/' + recid + '-' + tabNumber
);
} catch (err) {}
}
/* set current tab index */
rec.querySelector('.t397__wrapper').setAttribute('data-tab-current', tabNumber);
t397_alltabs_updateContent(recid);
t397_updateSelect(recid);
var hookBlocks = targetTab.getAttribute('data-tab-rec-ids').split(',');
var event = document.createEvent('Event');
event.initEvent('displayChanged', true, true);
/*if tabs placed inside other tabs, find active records and trigger them*/
var hooksCopy = hookBlocks.slice();
hooksCopy.forEach(function (recid) {
var currentRec = document.getElementById('rec' + recid);
if (!currentRec) return;
var recordType = currentRec.getAttribute('data-parenttplid') || currentRec.getAttribute('data-record-type');
if (recordType === '395' || recordType === '397') {
var selector = '.t' + recordType + '__tab_active';
var activeIDs = currentRec.querySelector(selector).getAttribute('data-tab-rec-ids');
activeIDs = activeIDs.split(',');
hookBlocks = hookBlocks.concat(activeIDs);
}
});
hookBlocks.forEach(function (curRecid) {
var currentRec = document.getElementById('rec' + curRecid);
if (!currentRec) return;
/* TODO: old */
var currentRecChildren = currentRec.querySelectorAll(
'.t-feed, .t-store, .t-store__product-snippet, .t117, .t121, .t132, .t223, .t226, .t228, .t229, .t230, .t268, .t279, .t341, .t346, .t347, .t349, .t351, .t353, .t384, .t385, .t386, .t396, .t400, .t404, .t409, .t410, .t412, .t418, .t422, .t425, .t428, .t433, .t448, .t456, .t477, .t478, .t480, .t486, .t498, .t504, .t506, .t509, .t511, .t517, .t518, .t519, .t520, .t532, .t533, .t538, .t539, .t544, .t545, .t552, .t554, .t569, .t570, .t577, .t592, .t598, .t599, .t601, .t604, .t605, .t609, .t615, .t616, .t650, .t659, .t670, .t675, .t686, .t688, .t694, .t698, .t700, .t726, .t728, .t730, .t734, .t738, .t740, .t744, .t754, .t760, .t762, .t764, .t774, .t776, .t778, .t780, .t786, .t798, .t799, .t801, .t813, .t814, .t822, .t826, .t827, .t829, .t842, .t843, .t849, .t850, .t851, .t856, .t858, .t859, .t860, .t881, .t889, .t902, .t912, .t923, .t937, .t958, .t959, .t979, .t982, .t983, .t989, .t994, .t1067, .t1068, .t1069, .t1070, .t1071, .t1072, .t1053, .t1186, .t368'
);
Array.prototype.forEach.call(currentRecChildren, function (child) {
child.dispatchEvent(event);
});
var displayChangedBlock = currentRec.querySelector('[data-display-changed="true"]');
if (displayChangedBlock) displayChangedBlock.dispatchEvent(event);
});
var galaxyEffectBlocks = document.querySelectorAll('.t826');
Array.prototype.forEach.call(galaxyEffectBlocks, function (galaxyEffectBlock) {
galaxyEffectBlock.dispatchEvent(event);
});
if (window.lazy === 'y' || tildaLazyMode === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t397_showActiveTabFromKeyboard(recid, currentIndex, tabs) {
var rec = document.querySelector('#rec' + recid);
var currentTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
if (!currentTab) return;
var currentButton = currentTab.querySelector('.t397__title');
if (currentButton) {
currentButton.focus();
}
var tabList = rec.querySelector('.t397__wrapper');
if (tabList) tabList.setAttribute('data-tab-current', currentIndex);
}
function t397_alltabs_updateContent(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var tabs = Array.prototype.slice.call(rec.querySelectorAll('.t397__tab:not(.t397__tab_active)'));
var activeTab = rec.querySelector('.t397__tab_active');
var select = rec.querySelector('.t397__select');
if (!activeTab) return;
var hookBlocks = activeTab.getAttribute('data-tab-rec-ids').split(',');
var noActive = [];
var popupBlocks = [
190, 217, 312, 331, 358, 364, 365, 390, 702, 706, 746, 750, 756, 768, 862, 868, 890, 945, 1013, 1014,
];
Array.prototype.forEach.call(tabs, function (tab) {
if (tab !== activeTab) {
var noActiveHooks = tab.getAttribute('data-tab-rec-ids').split(',');
noActiveHooks.forEach(function (hook) {
if (noActive.indexOf(hook) === -1 && hookBlocks.indexOf(hook) === -1) noActive.push(hook);
var tabBlock = document.getElementById('rec' + hook);
var tabBlockId = tabBlock
? tabBlock.getAttribute('data-parenttplid') || tabBlock.getAttribute('data-record-type')
: null;
if (tabBlockId === '397' || tabBlockId === '395') {
var activeTab = tabBlock.querySelector('.t397__tab_active, .t395__tab_active');
if (activeTab) {
var noActiveSubHooks = activeTab.getAttribute('data-tab-rec-ids').split(',');
noActiveSubHooks.forEach(function (subhook) {
if (noActive.indexOf(subhook) === -1 && hookBlocks.indexOf(subhook) === -1)
noActive.push(subhook);
});
}
}
});
}
});
if (t397_checkVisibillityEl(activeTab) || t397_checkVisibillityEl(select)) {
hookBlocks.forEach(function (hook) {
if (!hook) return;
var hookEl = document.getElementById('rec' + hook);
var hookElRecordType = hookEl
? hookEl.getAttribute('data-parenttplid') || hookEl.getAttribute('data-record-type')
: '';
if (hookEl) {
hookEl.classList.remove('t397__off');
hookEl.classList.remove('t395__off');
hookEl.setAttribute('aria-hidden', false);
hookEl.style.opacity = '';
}
t397_updateTabsByHook(hookElRecordType, hookEl, hook, recid);
});
} else {
hookBlocks.forEach(function (hook) {
var hookEl = document.getElementById('rec' + hook);
var hookElRecordType = hookEl
? hookEl.getAttribute('data-parenttplid') || hookEl.getAttribute('data-record-type')
: '';
var isPopupBlock = popupBlocks.some(function (id) {
return hookElRecordType == id;
});
if (hookEl && !isPopupBlock) {
hookEl.setAttribute('data-animationappear', 'off');
hookEl.classList.add('t397__off');
hookEl.setAttribute('aria-hidden', true);
}
t397_updateTabsByHook(hookElRecordType, hookEl, hook, recid);
});
}
noActive.forEach(function (noActiveID) {
if (!noActiveID) return;
var hookEl = document.getElementById('rec' + noActiveID);
var hookElRecordType = hookEl
? hookEl.getAttribute('data-parenttplid') || hookEl.getAttribute('data-record-type')
: '';
var isPopupBlock = popupBlocks.some(function (id) {
return hookElRecordType == id;
});
if (hookEl && !isPopupBlock) {
hookEl.setAttribute('data-connect-with-tab', 'yes');
hookEl.setAttribute('data-animationappear', 'off');
hookEl.classList.add('t397__off');
hookEl.setAttribute('aria-hidden', true);
}
t397_updateTabsByHook(hookElRecordType, hookEl, noActiveID, recid);
});
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
if (scrollHeight - window.innerHeight < window.pageYOffset) {
window.scrollTo(0, scrollHeight - window.innerHeight);
}
}
function t397_updateTabsByHook(hookElRecordType, hookEl, currentID, recid) {
var hookElTab;
switch (hookElRecordType) {
case '395':
if (window.t395_alltabs_updateContent && window.t395_updateSelect && recid !== currentID) {
window.t395_alltabs_updateContent(currentID);
window.t395_updateSelect(currentID);
hookElTab = hookEl ? hookEl.querySelector('.t395__tab') : null;
if (hookElTab) hookElTab.click();
}
break;
case '397':
if (recid !== currentID) {
t397_alltabs_updateContent(currentID);
t397_updateSelect(currentID);
hookElTab = hookEl ? hookEl.querySelector('.t397__tab') : null;
if (hookElTab) hookElTab.click();
}
break;
}
}
function t397_checkVisibillityEl(el) {
return !!(el && (el.offsetWidth || el.offsetHeight || el.getClientRects().length));
}
function t397_updateContentBySelect(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var select = rec.querySelector('.t397__select');
if (select) {
select.addEventListener('change', function () {
var tabIndex = rec.querySelector(
".t397__tab[data-tab-rec-ids='" + select.value + '\'][data-tab-index="' + select.selectedIndex + '"]'
);
if (tabIndex) tabIndex.click();
});
}
}
function t397_updateSelect(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var activeTab = rec.querySelector('.t397__tab_active');
var currentTabHooks = activeTab ? activeTab.getAttribute('data-tab-index') : '';
var select = rec.querySelector('.t397__select');
if (select) select.selectedIndex = currentTabHooks;
}
function t397_scrollToTabs(recid, hash) {
var rec = document.getElementById('rec' + recid);
// decodeURI() necessary when clicking on link with hash from VK and OK
var curUrl = hash || decodeURI(window.location.href);
var tabIndexNumber = curUrl.indexOf('#!/tab/');
if (tabIndexNumber === -1) return false;
var tabIndexNumberStart = curUrl.indexOf('tab/');
var firstOptionSelect = rec ? rec.querySelector('.t397__wrapper_mobile .t397__select option') : null;
if (firstOptionSelect) firstOptionSelect.selected = false;
var tabRec = curUrl.substring(tabIndexNumberStart + 4, tabIndexNumberStart + 4 + recid.length);
if (tabRec !== recid) return false;
var tabBlock = rec ? rec.querySelector('.t397') : null;
var tabNumber = parseInt(curUrl.slice(tabIndexNumberStart + 4 + recid.length + 1), 10);
var tabs = rec.querySelectorAll('.t397__tab');
Array.prototype.forEach.call(tabs, function (tab, i) {
if (i === tabNumber - 1) {
tab.click();
tab.classList.add('t397__tab_active');
} else {
tab.classList.remove('t397__tab_active');
}
});
var tabsMob = rec.querySelectorAll('.t397__wrapper_mobile .t397__select option');
var activeTabMob = tabsMob.length ? tabsMob[tabNumber - 1] : null;
if (activeTabMob) activeTabMob.selected = true;
setTimeout(function () {
t397_scrollToEl(tabBlock);
}, 50);
}
function t397_scrollToEl(el) {
function getElTopPos() {
var elTopPos = el.getBoundingClientRect().top + window.pageYOffset;
elTopPos = window.innerWidth > 960 ? elTopPos - 200 : elTopPos - 100;
if (elTopPos < 0) elTopPos = 0;
var documentHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
var bottomViewportPoint = documentHeight - document.documentElement.clientHeight;
if (elTopPos > bottomViewportPoint) elTopPos = bottomViewportPoint;
return elTopPos;
}
var startPosition = window.pageYOffset;
var startTime = null;
var duration = 300;
function scrollAnimation(currentTime) {
if (startTime === null) startTime = currentTime;
var timeElapsed = currentTime - startTime;
var elTopPos = getElTopPos();
var distance = elTopPos - startPosition;
var run = easeInQuad(timeElapsed, startPosition, distance, duration);
window.scrollTo(0, run);
document.body.setAttribute('data-scrollable', 'true');
if (timeElapsed < duration) {
requestAnimationFrame(scrollAnimation);
} else {
window.scrollTo(0, elTopPos);
document.body.removeAttribute('data-scrollable');
}
}
function easeInQuad(timeElapsed, startPosition, distance, duration) {
timeElapsed /= duration;
return distance * timeElapsed * timeElapsed + startPosition;
}
requestAnimationFrame(scrollAnimation);
}
function t397_removeUrl() {
var curUrl = window.location.href;
var indexToRemove = curUrl.indexOf('#!/tab/');
if (indexToRemove === -1) {
indexToRemove = curUrl.indexOf('%23!/tab/');
}
curUrl = curUrl.substring(0, indexToRemove);
if (indexToRemove !== -1) {
if (typeof history.replaceState != 'undefined') {
try {
window.history.replaceState('', '', curUrl);
} catch (err) {}
}
}
}
function t398_init(recid) {
t398_addArrow(recid);
t398_highlight();
$('#rec' + recid)
.find('.t398')
.each(function () {
var $hook = $(this).attr('data-tooltip-hook');
var $margin = $(this).attr('data-tooltip-margin');
if ($hook !== '') {
var $obj = $('a[href="' + $hook + '"]');
var $content = $(this).find('.t398__content').html();
if ($hook.charAt(0) == '#') {
var touchDevices = true;
} else {
var touchDevices = false;
}
var position = $(this).attr('data-tooltip-position');
if (position !== '') {
} else {
position = 'top';
}
$obj.click(function (e) {
e.preventDefault();
});
t398_onFuncLoadTooltip(function () {
$obj.tooltipster({
theme: 't398__tooltipster-noir t398__tooltipster-noir_' + recid + '',
contentAsHTML: true,
content: $content,
interactive: true,
touchDevices: touchDevices,
position: position,
functionReady: function (origin, tooltip) {
$('.t398__tooltipster-noir_' + recid + '').css('margin-top', $margin);
},
});
});
}
});
}
function t398_addArrow(recid) {
$('#rec' + recid)
.find('.t398')
.each(function () {
var $hook = $(this).attr('data-tooltip-hook');
var $obj = $('a[href="' + $hook + '"]');
var arrow = $(this).attr('data-add-arrow');
var arrow_height = $obj.height();
if ($hook !== '' && arrow !== '') {
$obj.append(
'
'
);
}
});
}
function t398_highlight() {
var url = window.location.href;
var pathname = window.location.pathname;
if (url.substr(url.length - 1) == '/') {
url = url.slice(0, -1);
}
if (pathname.substr(pathname.length - 1) == '/') {
pathname = pathname.slice(0, -1);
}
if (pathname.charAt(0) == '/') {
pathname = pathname.slice(1);
}
if (pathname == '') {
pathname = '/';
}
$(".t398__list_item a[href='" + url + "']").addClass('t-active');
$(".t398__list_item a[href='" + url + "/']").addClass('t-active');
$(".t398__list_item a[href='" + pathname + "']").addClass('t-active');
$(".t398__list_item a[href='/" + pathname + "']").addClass('t-active');
$(".t398__list_item a[href='" + pathname + "/']").addClass('t-active');
$(".t398__list_item a[href='/" + pathname + "/']").addClass('t-active');
}
function t398_onFuncLoadTooltip(okFunc) {
if (typeof $.fn.tooltipster === 'function') {
okFunc();
} else {
setTimeout(function checkFuncExist() {
if (typeof $.fn.tooltipster === 'function') {
okFunc();
return;
}
if (document.readyState === 'complete' && typeof $.fn.tooltipster !== 'function') {
throw new Error('$.fn.tooltipster' + ' is undefined');
}
setTimeout(checkFuncExist, 100);
});
}
}
var t400__CHILD_SELECTORS =
'.t-feed, .t-store, .t-store__product-snippet, .t117, .t121, .t132, .t223, .t226, .t228, .t229, .t230, .t268, .t279, .t341, .t346, .t347, .t349, .t351, .t353, .t384, .t385, .t386, .t396, .t400, .t404, .t409, .t410, .t412, .t418, .t422, .t425, .t428, .t433, .t456, .t477, .t478, .t480, .t486, .t498, .t504, .t506, .t509, .t511, .t517, .t518, .t519, .t520, .t527, .t531, .t532, .t533, .t538, .t539, .t544, .t545, .t552, .t554, .t570, .t577, .t592, .t598, .t599, .t601, .t604, .t605, .t609, .t615, .t616, .t650, .t659, .t670, .t675, .t686, .t688, .t694, .t698, .t700, .t726, .t728, .t730, .t734, .t738, .t740, .t744, .t754, .t760, .t762, .t764, .t774, .t776, .t778, .t780, .t786, .t798, .t799, .t801, .t813, .t814, .t822, .t826, .t827, .t829, .t842, .t843, .t849, .t850, .t851, .t856, .t858, .t859, .t860, .t881, .t889, .t899, .t902, .t905, .t912, .t923, .t937, .t958, .t959, .t979, .t982, .t983, .t989, .t994, .t1000, .t1003, .t1067, .t1068, .t1069, .t1070, .t1071, .t1072, .t1053, .t1281';
function t400__dispatchDisplayChanged(containerEl, eventName) {
/* TODO: old */
var selectors = containerEl.querySelectorAll(t400__CHILD_SELECTORS);
for (var i = 0; i < selectors.length; i++) {
t400__triggerEvent(selectors[i], eventName);
}
var displayChangedBlock = containerEl.querySelector('[data-display-changed="true"]');
if (displayChangedBlock) t400__triggerEvent(displayChangedBlock, eventName);
}
function t400_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t400');
if (!container) return;
var button = rec.querySelector('.t400__submit');
var buttonText = button.querySelector('.t-btnflex__text, .t-btntext__text');
var hideBackText = button.getAttribute('data-hide-back-text');
var showMoreText = (buttonText && buttonText.textContent) || '';
button.addEventListener('click', function () {
if (hideBackText && button.classList.contains('t400__submit_hide-back')) {
t400_alltabs_updateContent(recId);
button.classList.remove('t400__submit_hide-back');
if (buttonText) buttonText.textContent = showMoreText;
var zeroBlocks = document.querySelectorAll('.t396');
for (var i = 0; i < zeroBlocks.length; i++) {
t400__triggerEvent(zeroBlocks[i], 'displayChanged');
}
button.scrollIntoView({ behavior: 'smooth', block: 'center' });
return;
}
var recIds = button.getAttribute('data-hidden-rec-ids').split(',');
for (var i = 0; i < recIds.length; i++) {
var recShowBlock = document.getElementById('rec' + recIds[i]);
if (recShowBlock) {
recShowBlock.classList.remove('t400__off');
recShowBlock.style.opacity = '';
t400__dispatchDisplayChanged(recShowBlock, 'displayChanged');
}
}
if (hideBackText) {
button.classList.add('t400__submit_hide-back');
if (buttonText) buttonText.textContent = hideBackText;
} else {
rec.classList.add('t400__off');
rec.style.display = 'none';
}
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
t400_alltabs_updateContent(recId);
}
function t400_alltabs_updateContent(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var button = rec.querySelector('.t400__submit');
if (!button) return;
var recIds = button.getAttribute('data-hidden-rec-ids').split(',');
for (var i = 0; i < recIds.length; i++) {
var recHideBlock = document.getElementById('rec' + recIds[i]);
if (!recHideBlock) continue;
recHideBlock.setAttribute('data-animationappear', 'off');
recHideBlock.setAttribute('data-connect-with-tab', 'yes');
recHideBlock.classList.add('t400__off');
t400__dispatchDisplayChanged(recHideBlock, 'displayChanged');
}
rec.setAttribute('data-hiding-completed', 'yes');
}
function t400__triggerEvent(el, eventName) {
var event;
if (typeof window.CustomEvent === 'function') {
event = new CustomEvent(eventName);
} else if (document.createEvent) {
event = document.createEvent('HTMLEvents');
event.initEvent(eventName, true, false);
} else if (document.createEventObject) {
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
if (el.dispatchEvent) {
el.dispatchEvent(event);
} else if (el.fireEvent) {
el.fireEvent('on' + event.eventType, event);
} else if (el[eventName]) {
el[eventName]();
} else if (el['on' + eventName]) {
el['on' + eventName]();
}
}
function t401_showMore(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t401');
if (!container) return;
var cols = container.querySelectorAll('.t-col');
var allRecords = document.getElementById('allrecords');
for (var i = 0; i < cols.length; i++) {
cols[i].style.display = 'none';
}
var cardsLength = cols.length;
var cardsCount = parseInt(container.getAttribute('data-show-count'), 10);
if (cardsCount > 500) cardsCount = 500;
var startIndexShowBlock = cardsCount;
var countShowBlock = cardsCount;
var colsShow = t401__getShowBlocks(cols, startIndexShowBlock);
for (var i = 0; i < colsShow.length; i++) {
colsShow[i].style.display = 'block';
}
var showMoreBtn = rec.querySelector('.t401__showmore');
if (showMoreBtn) {
showMoreBtn.addEventListener('click', function () {
startIndexShowBlock =
startIndexShowBlock + countShowBlock <= cardsLength
? startIndexShowBlock + countShowBlock
: cardsLength;
var newColsShow = t401__getShowBlocks(cols, startIndexShowBlock);
for (var i = 0; i < newColsShow.length; i++) {
newColsShow[i].style.display = 'block';
}
if (startIndexShowBlock === cardsLength) {
showMoreBtn.style.display = 'none';
}
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
}
function t401__getShowBlocks(elements, index) {
var newElements = [];
for (var i = 0; i < elements.length; i++) {
if (i <= index - 1) newElements.push(elements[i]);
}
return newElements;
}
function t403_showMore(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t403');
if (!container) return;
var containerTable = rec.querySelectorAll('.t403__container-table');
var allRecords = document.getElementById('allrecords');
for (var i = 0; i < containerTable.length; i++) {
containerTable[i].style.display = 'none';
}
var cardsLength = containerTable.length;
var cardsCount = parseInt(container.getAttribute('data-show-count'), 10);
var startIndexShowBlock = cardsCount;
var countShowBlock = cardsCount;
var tableShow = t403__getShowBlocks(containerTable, startIndexShowBlock);
for (var i = 0; i < tableShow.length; i++) {
tableShow[i].style.display = 'block';
}
var showMoreBtn = rec.querySelector('.t403__showmore');
if (showMoreBtn) {
showMoreBtn.addEventListener('click', function () {
startIndexShowBlock =
startIndexShowBlock + countShowBlock <= cardsLength
? startIndexShowBlock + countShowBlock
: cardsLength;
var newTableShow = t403__getShowBlocks(containerTable, startIndexShowBlock);
for (var i = 0; i < newTableShow.length; i++) {
newTableShow[i].style.display = 'block';
}
if (startIndexShowBlock === cardsLength) {
showMoreBtn.style.display = 'none';
}
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
}
function t403__getShowBlocks(elements, index) {
var newElements = [];
for (var i = 0; i < elements.length; i++) {
if (i <= index - 1) newElements.push(elements[i]);
}
return newElements;
}
function t404_unifyHeights(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var mainContainer = rec.querySelector('.t404');
if (!mainContainer) return;
var containers = rec.querySelectorAll('.t-container');
for (var i = 0; i < containers.length; i++) {
var container = containers[i];
var titles = container.querySelectorAll('.t404__title');
var descrs = container.querySelectorAll('.t404__descr');
var maxHeight = 0;
for (var j = 0; j < titles.length; j++) {
var title = titles[j];
title.style.height = '';
var titleStyle = getComputedStyle(title, null);
var titlePaddingTop = parseInt(titleStyle.paddingTop) || 0;
var titlePaddingBottom = parseInt(titleStyle.paddingBottom) || 0;
var titleHeight = title.clientHeight - (titlePaddingTop + titlePaddingBottom);
if (titleHeight > maxHeight) maxHeight = titleHeight;
}
if (window.innerWidth >= 960) {
for (var j = 0; j < titles.length; j++) {
titles[j].style.height = maxHeight + 'px';
}
} else {
for (var j = 0; j < titles.length; j++) {
titles[j].style.height = 'auto';
}
}
maxHeight = 0;
for (var j = 0; j < descrs.length; j++) {
var descr = descrs[j];
descr.style.height = '';
var descrStyle = getComputedStyle(descr, null);
var descrPaddingTop = parseInt(descrStyle.paddingTop) || 0;
var descrPaddingBottom = parseInt(descrStyle.paddingBottom) || 0;
var descrHeight = descr.clientHeight - (descrPaddingTop + descrPaddingBottom);
if (descrHeight > maxHeight) maxHeight = descrHeight;
}
if (window.innerWidth >= 960) {
for (var j = 0; j < descrs.length; j++) {
descrs[j].style.height = maxHeight + 'px';
}
} else {
for (var j = 0; j < descrs.length; j++) {
descrs[j].style.height = 'auto';
}
}
}
}
function t404_unifyHeightsTextwrapper(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var mainContainer = rec.querySelector('.t404');
if (!mainContainer) return;
var containers = rec.querySelectorAll('.t-container');
for (var i = 0; i < containers.length; i++) {
var container = containers[i];
var textWrappers = container.querySelectorAll('.t404__textwrapper');
var maxHeight = 0;
for (var j = 0; j < textWrappers.length; j++) {
var textWrapper = textWrappers[j];
textWrapper.style.height = 'auto';
var textWrapperStyle = getComputedStyle(textWrapper, null);
var textWrapperPaddingTop = parseInt(textWrapperStyle.paddingTop) || 0;
var textWrapperPaddingBottom = parseInt(textWrapperStyle.paddingBottom) || 0;
var textWrapperHeight = textWrapper.clientHeight - (textWrapperPaddingTop + textWrapperPaddingBottom);
if (textWrapperHeight > maxHeight) maxHeight = textWrapperHeight;
}
if (window.innerWidth >= 960) {
for (var j = 0; j < textWrappers.length; j++) {
textWrappers[j].style.height = maxHeight + 'px';
}
} else {
for (var j = 0; j < textWrappers.length; j++) {
textWrappers[j].style.height = 'auto';
}
}
}
}
function t404_showMore(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t404');
if (!container) return;
var cols = container.querySelectorAll('.t-col');
var allRecords = document.getElementById('allrecords');
for (var i = 0; i < cols.length; i++) {
cols[i].style.display = 'none';
}
var cardsLength = cols.length;
var cardsCount = parseInt(container.getAttribute('data-show-count'), 10);
if (cardsCount > 500) cardsCount = 500;
var startIndexShowBlock = cardsCount;
var countShowBlock = cardsCount;
var colsShow = t404__getShowBlocks(cols, startIndexShowBlock);
for (var i = 0; i < colsShow.length; i++) {
colsShow[i].style.display = 'block';
}
var showMoreBtn = rec.querySelector('.t404__showmore');
if (showMoreBtn) {
showMoreBtn.addEventListener('click', function () {
startIndexShowBlock =
startIndexShowBlock + countShowBlock <= cardsLength
? startIndexShowBlock + countShowBlock
: cardsLength;
var newColsShow = t404__getShowBlocks(cols, startIndexShowBlock);
for (var i = 0; i < newColsShow.length; i++) {
newColsShow[i].style.display = 'block';
}
if (startIndexShowBlock === cardsLength) {
showMoreBtn.style.display = 'none';
}
t404__triggerEvent(container, 'displayChanged');
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
}
function t404__getShowBlocks(elements, index) {
var newElements = [];
for (var i = 0; i < elements.length; i++) {
if (i <= index - 1) newElements.push(elements[i]);
}
return newElements;
}
function t404__triggerEvent(el, eventName) {
var event;
if (typeof window.CustomEvent === 'function') {
event = new CustomEvent(eventName);
} else if (document.createEvent) {
event = document.createEvent('HTMLEvents');
event.initEvent(eventName, true, false);
} else if (document.createEventObject) {
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
if (el.dispatchEvent) {
el.dispatchEvent(event);
} else if (el.fireEvent) {
el.fireEvent('on' + event.eventType, event);
} else if (el[eventName]) {
el[eventName]();
} else if (el['on' + eventName]) {
el['on' + eventName]();
}
}
function t405_showMore(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t405');
if (!container) return;
var cols = container.querySelectorAll('.t-col');
var allRecords = document.getElementById('allrecords');
for (var i = 0; i < cols.length; i++) {
cols[i].style.display = 'none';
}
var cardsLength = cols.length;
var cardsCount = parseInt(container.getAttribute('data-show-count'), 10);
if (cardsCount > 500) cardsCount = 500;
var startIndexShowBlock = cardsCount;
var countShowBlock = cardsCount;
var colsShow = t405__getShowBlocks(cols, startIndexShowBlock);
for (var i = 0; i < colsShow.length; i++) {
colsShow[i].style.display = 'block';
}
var showMoreBtn = rec.querySelector('.t405__showmore');
if (showMoreBtn) {
showMoreBtn.addEventListener('click', function () {
startIndexShowBlock =
startIndexShowBlock + countShowBlock <= cardsLength
? startIndexShowBlock + countShowBlock
: cardsLength;
var newColsShow = t405__getShowBlocks(cols, startIndexShowBlock);
for (var i = 0; i < newColsShow.length; i++) {
newColsShow[i].style.display = 'block';
}
if (startIndexShowBlock === cardsLength) {
showMoreBtn.style.display = 'none';
}
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
}
function t405__getShowBlocks(elements, index) {
var newElements = [];
for (var i = 0; i < elements.length; i++) {
if (i <= index - 1) newElements.push(elements[i]);
}
return newElements;
}
function t407_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t410_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var wrapper = rec ? rec.querySelector('.t410__wrapper') : null;
if (!wrapper) return false;
var sliderOrientation = wrapper.getAttribute('data-beforeafter-orientation');
var sliderStartPosition = wrapper.getAttribute('data-beforeafter-start');
var firstImgURL = wrapper.getAttribute('data-beforeafter-imgurl-first');
var firstImgDescr = wrapper.getAttribute('data-beforeafter-imgdescr-first');
var firstImgAlt = wrapper.getAttribute('data-beforeafter-imgalt-first');
var secondImgURL = wrapper.getAttribute('data-beforeafter-imgurl-second');
var secondImgDescr = wrapper.getAttribute('data-beforeafter-imgdescr-second');
var secondImgAlt = wrapper.getAttribute('data-beforeafter-imgalt-second');
t410_onObjLoad('beforeafter', function () {
new beforeafter.BASlider(
'#t410-beforeafter__' + recid,
[
{
src: firstImgURL,
label: firstImgDescr,
alt: firstImgAlt,
},
{
src: secondImgURL,
label: secondImgDescr,
alt: secondImgAlt,
},
],
{
mode: sliderOrientation ? sliderOrientation : 'horizontal',
startingPosition: sliderStartPosition ? sliderStartPosition + '%' : '50%',
}
);
});
var block = rec.querySelector('.t410');
if (typeof jQuery !== 'undefined') {
$(block).on('displayChanged', function () {
window.beforeafter.sliders.forEach(function (obj) {
if (obj.options.wrapper.getAttribute('id') === 't410-beforeafter__' + recid) {
obj.options.setWrapperDimensions();
}
});
});
} else if (block) {
block.addEventListener('displayChanged', function () {
window.beforeafter.sliders.forEach(function (obj) {
if (obj.options.wrapper.getAttribute('id') === 't410-beforeafter__' + recid) {
obj.options.setWrapperDimensions();
}
});
});
}
}
function t410_onObjLoad(objName, okFunc, time) {
if (typeof window[objName] === 'object') {
okFunc();
} else {
var timerId = setTimeout(function checkFuncExist() {
if (typeof window[objName] === 'object') {
okFunc();
return;
}
timerId = setTimeout(checkFuncExist, time || 100);
});
}
}
function t412_init(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var orderLinks = rec.querySelectorAll('a[href^="#order"]');
if (orderLinks.length !== 0) {
Array.prototype.forEach.call(orderLinks, function (orderLink) {
orderLink.addEventListener('click', function () {
var linkElement = this;
var payBoxElement = document.querySelector('.js-payment-systembox');
t412_setCoordinateToPaymentBox(linkElement, payBoxElement);
payBoxElement.style.marginTop = '0';
payBoxElement.style.marginLeft = '0';
window.addEventListener('resize', function () {
if (getComputedStyle(payBoxElement, null).display === 'block' && linkElement) {
t412_setCoordinateToPaymentBox(linkElement, payBoxElement);
}
});
});
});
}
}
function t412_setCoordinateToPaymentBox(linkElement, payBoxElement) {
var oldTopCoord = 0;
var newTopCoord = 0;
var linkTopOffset = linkElement.getBoundingClientRect().top + window.pageYOffset;
var linkLeftOffset = linkElement.getBoundingClientRect().left + window.pageXOffset;
var offsetParent = linkElement.closest('.t412__col');
var offsetParentDimensions = t412_getElementDimension(offsetParent);
var payBoxDimensions = t412_getElementDimension(payBoxElement);
var paddingParent = offsetParentDimensions.paddingLeft + offsetParentDimensions.paddingRight;
var top = linkTopOffset + offsetParentDimensions.height - payBoxDimensions.height;
var left = linkLeftOffset + (offsetParentDimensions.width - paddingParent) / 2 - payBoxDimensions.width / 2;
oldTopCoord = payBoxElement.style.top;
payBoxElement.style.top = top + 'px';
payBoxElement.style.left = left + 'px';
newTopCoord = payBoxElement.style.top;
var difference = 21;
if (parseInt(oldTopCoord, 10) - parseInt(newTopCoord, 10) === difference) {
payBoxElement.style.top = top + difference + 'px';
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
}
function t412_unifyHeights(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var container = rec.querySelector(' .t412 .t-container');
if (!container) return;
var allTitles = container.querySelectorAll('.t412__title');
var allDescriptions = container.querySelectorAll('.t412__descr');
var allWrappers = container.querySelectorAll('.t412__wrapper');
var highestTitle = 0;
var highestDescription = 0;
var highestWrapper = 0;
Array.prototype.forEach.call(allTitles, function (title) {
title.style.height = 'auto';
var titleDimension = t412_getElementDimension(title);
if (titleDimension.height > highestTitle) {
highestTitle = titleDimension.height;
}
});
if (window.innerWidth >= 960 && t412_isVisible(container)) {
Array.prototype.forEach.call(allTitles, function (title) {
title.style.height = highestTitle + 'px';
});
} else {
Array.prototype.forEach.call(allTitles, function (title) {
title.style.height = 'auto';
});
}
Array.prototype.forEach.call(allDescriptions, function (description) {
description.style.height = 'auto';
var descriptionDimension = t412_getElementDimension(description);
if (descriptionDimension.height > highestDescription) {
highestDescription = descriptionDimension.height;
}
});
if (window.innerWidth >= 960 && t412_isVisible(container)) {
Array.prototype.forEach.call(allDescriptions, function (description) {
description.style.height = highestDescription + 'px';
});
} else {
Array.prototype.forEach.call(allDescriptions, function (description) {
description.style.height = 'auto';
});
}
Array.prototype.forEach.call(allWrappers, function (wrapper) {
wrapper.style.height = 'auto';
var wrapperDimension = t412_getElementDimension(wrapper);
if (wrapperDimension.height > highestWrapper) {
highestWrapper = wrapperDimension.height;
}
});
if (window.innerWidth >= 960 && t412_isVisible(container)) {
Array.prototype.forEach.call(allWrappers, function (wrapper) {
wrapper.style.height = highestWrapper + 'px';
});
} else {
Array.prototype.forEach.call(allWrappers, function (wrapper) {
wrapper.style.height = 'auto';
});
}
}
function t412_getElementDimension(element) {
var result = {
height: 0,
width: 0,
paddingLeft: 0,
paddingRight: 0,
};
if (!element) return result;
var elementStyle = getComputedStyle(element);
result.height = parseFloat(elementStyle.height.replace('px', ''), 10) || 0;
result.width = parseFloat(elementStyle.width.replace('px', ''), 10) || 0;
result.paddingLeft = parseFloat(elementStyle.paddingLeft.replace('px', ''), 10) || 0;
result.paddingRight = parseFloat(elementStyle.paddingRight.replace('px', ''), 10) || 0;
return result;
}
function t412_isVisible(element) {
return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);
}
function t414_showPopup(recid) {
var el = $('#rec' + recid).find('.t414');
$('body').addClass('t414__body_popupshowed');
el.show();
el.find('.t414__close, .t414__bg, .t414__closer').click(function () {
t414_closePopup(recid);
});
$(document).keydown(function (e) {
if (e.keyCode == 27) {
$('body').removeClass('t414__body_popupshowed');
$('.t414').hide();
}
});
}
function t414_closePopup(recid) {
$('body').removeClass('t414__body_popupshowed');
$('.t414').hide();
}
function t414_initPopup(recid) {
var el = $('#rec' + recid).find('.t414');
var hook = el.attr('data-tooltip-hook');
if (hook !== '') {
var obj = $('a[href="' + hook + '"]');
obj.click(function (e) {
t414_showPopup(recid);
var popup = el.find('.t414__content');
popup.addClass('t414__content_static');
e.preventDefault();
});
}
}
function t414_resizePopup(recid) {
var el = $('#rec' + recid);
var div = el.find('.t414__mainblock').height();
var win = $(window).height();
var popup = el.find('.t414__content');
if (div > win) {
popup.addClass('t414__content_static');
} else {
popup.removeClass('t414__content_static');
}
}
function t418_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var container = rec.querySelector('.t418__slidecontainer');
if (!container) return false;
var slides = rec.querySelectorAll('.t418__item');
var sliderWidth = slides[0] ? slides[0].offsetWidth : 0;
var allRecords = document.getElementById('allrecords');
var lazyMode = allRecords ? allRecords.getAttribute('data-tilda-lazy') : null;
var isLazy = lazyMode === 'yes';
t418_checkSize(rec, slides);
container.style.width = sliderWidth * slides.length + 'px';
window.addEventListener(
'resize',
t_throttle(function () {
t418_checkSize(rec, slides);
sliderWidth = slides[0] ? slides[0].offsetWidth : 0;
container.style.width = sliderWidth * slides.length + 'px';
var transformValue = window.getComputedStyle(container).getPropertyValue('transform');
var matrix = transformValue.replace(/[^0-9\-.,]/g, '').split(',');
var x = matrix[12] || matrix[4];
if (-((slides.length - 1) * sliderWidth) > x) {
container.style.transform = 'translate(-' + (slides.length - 1) * sliderWidth + 'px, 0)';
}
})
);
var currentBlock = rec.querySelector('.t418');
if (currentBlock) {
currentBlock.addEventListener('displayChanged', function () {
sliderWidth = slides[0] ? window.getComputedStyle(slides[0]).maxWidth : 0;
container.style.width = parseInt(sliderWidth, 10) * slides.length + 'px';
t418_checkSize(rec, slides);
});
}
var nextBtn = rec.querySelector('.t418__next');
if (nextBtn) {
nextBtn.addEventListener('click', function () {
t418_slideRight(container, slides, isLazy);
});
}
var prevBtn = rec.querySelector('.t418__previous');
if (prevBtn) {
prevBtn.addEventListener('click', function () {
t418_slideLeft(container, slides, isLazy);
});
}
}
function t418_slideLeft(container, slides, isLazy) {
var sliderWidth = slides[0] ? slides[0].offsetWidth : 0;
var sliderPos = container.getAttribute('data-slide-pos');
var sliderPosValue = parseInt(sliderPos, 10);
container.setAttribute('data-slide-pos', --sliderPosValue);
if (sliderPosValue <= -1) {
sliderPosValue = slides.length - 1;
container.setAttribute('data-slide-pos', sliderPosValue);
}
container.style.transform = 'translate(-' + sliderWidth * sliderPosValue + 'px, 0)';
container.style.transitionDuration = '.3s';
if (window.lazy === 'y' || isLazy) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t418_slideRight(container, slides, isLazy) {
var sliderWidth = slides[0] ? slides[0].offsetWidth : 0;
var sliderPos = container.getAttribute('data-slide-pos');
var sliderPosValue = parseInt(sliderPos, 10);
container.setAttribute('data-slide-pos', ++sliderPosValue);
if (sliderPosValue >= slides.length) {
sliderPosValue = 0;
container.setAttribute('data-slide-pos', sliderPosValue);
}
container.style.transform = 'translate(-' + sliderWidth * sliderPosValue + 'px, 0)';
container.style.transitionDuration = '.3s';
if (window.lazy === 'y' || isLazy) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t418_checkSize(rec, slides) {
var sizer = rec.querySelector('.t418__height');
var galleryWrapper = rec.querySelector('.t418__slider');
var sizerWidth = sizer ? sizer.offsetWidth : 0;
var sizerHeight = sizer ? sizer.offsetHeight : 0;
var sizerRatio = sizerWidth / sizerHeight;
var galleryWrapperWidth = galleryWrapper ? galleryWrapper.offsetWidth : 0;
if (galleryWrapper) galleryWrapper.style.height = galleryWrapperWidth / sizerRatio + 'px';
sizer = rec.querySelector('.t418__height');
var maxWidth = sizer ? sizer.offsetWidth : 0;
Array.prototype.forEach.call(slides, function (slide) {
var img = slide.querySelector('.t418__img');
if (maxWidth > window.innerWidth) {
slide.style.maxWidth = window.innerWidth - 80 + 'px';
img.style.left = '20px';
img.style.right = '20px';
} else {
slide.style.maxWidth = '';
img.style.left = '';
img.style.right = '';
}
});
}
function t422_init(recId) {
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t422_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t422');
if (!container) return;
if (window.innerWidth > 960) {
t422_checkEqualHeight(recId);
} else {
var mobileImages = rec.querySelectorAll('.t422__img-mobile');
var texts = rec.querySelectorAll('.t422__text');
var imageWidth = mobileImages.length ? getComputedStyle(mobileImages[0]).width : '0';
imageWidth = parseInt(imageWidth, 10);
for (var i = 0; i < mobileImages.length; i++) {
var bgImage = mobileImages[i].style.backgroundImage;
bgImage = bgImage.replace('url(\"', '').replace('\")', '');
var img = document.createElement('img');
img.src = bgImage;
var ratio = img.naturalWidth && img.naturalHeight ? img.naturalHeight / img.naturalWidth : 0;
var imageHeight = imageWidth * ratio ? imageWidth * ratio + 'px' : '200px';
mobileImages[i].style.height = imageHeight;
}
for (var i = 0; i < texts.length; i++) {
texts[i].style.height = 'auto';
}
}
}
function t422_checkEqualHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t422');
if (!container) return;
var image = rec.querySelector('.t422__img');
var imageStyle = getComputedStyle(image, null);
var imagePaddingTop = parseInt(imageStyle.paddingTop) || 0;
var imagePaddingBottom = parseInt(imageStyle.paddingBottom) || 0;
var imageHeight = imageStyle.height
? parseInt(imageStyle.height, 10) - (imagePaddingTop + imagePaddingBottom)
: image.clientHeight - (imagePaddingTop + imagePaddingBottom);
var text = rec.querySelector('.t422__text');
var textStyle = getComputedStyle(text, null);
var textBorderTopWidth = parseInt(textStyle.borderTopWidth) || 0;
var textBorderBottomWidth = parseInt(textStyle.borderBottomWidth) || 0;
var borderWidth = 0;
var textWrap = rec.querySelector('.t422__textwrapper');
var textWrapHeight = textWrap.offsetHeight;
borderWidth = textBorderTopWidth + textBorderBottomWidth;
if (imageHeight < textWrapHeight + borderWidth) {
image.style.height = textWrapHeight + borderWidth + 'px';
} else if (imageHeight - borderWidth > textWrapHeight) {
textWrap.style.height = imageHeight - borderWidth + 'px';
}
}
function t424_init(recId) {
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t425_unifyHeights(recid) {
var el = $('#rec' + recid);
el.find('.t425__col').css('height', 'auto');
$('#rec' + recid + ' .t425 .t-container').each(function () {
var t425__highestBox = 0;
$('.t425__col', this).each(function () {
var t425__curcol = $(this);
var t425__curcolchild = t425__curcol.find('.t425__col-wrapper');
if (t425__curcol.height() < t425__curcolchild.height()) t425__curcol.height(t425__curcolchild.height());
if (t425__curcol.height() > t425__highestBox) t425__highestBox = t425__curcol.height();
});
if ($(window).width() >= 960) {
$('.t425__col', this).css('height', t425__highestBox);
} else {
$('.t425__col', this).css('height', 'auto');
}
});
}
function t426_unifyHeights(recid) {
$('#rec' + recid + ' .t426 .t-container').each(function () {
var t426__largestHeight = 0;
$('.t426__col', this).each(function () {
var t426__curimg = $(this).find('img');
if (t426__curimg.height() > t426__largestHeight) t426__largestHeight = t426__curimg.height();
});
$('.t426__col', this).each(function () {
$(this).height(t426__largestHeight);
});
});
}
t427_alignMiddle = function (recid) {
if ($(window).width() > 960) {
var t427__img = $('#rec' + recid + ' .t427__img');
var t427__arrow = $('#rec' + recid + ' .t427__arrow');
t427__arrow.css('top', (t427__img.height() - t427__arrow.height()) / 2);
}
};
function t428_unifyHeights(recid) {
$('#rec' + recid + ' .t428 .t-container').each(function () {
var t428__highestBox = 0;
$('.t428__col', this).each(function () {
var t428__curcol = $(this);
var t428__curcolchild = t428__curcol.find('.t428__col-wrapper');
if (t428__curcol.height() < t428__curcolchild.height()) t428__curcol.height(t428__curcolchild.height());
if (t428__curcol.height() > t428__highestBox) t428__highestBox = t428__curcol.height();
});
if ($(window).width() >= 960) {
$('.t428__col', this).css('height', t428__highestBox);
} else {
$('.t428__col', this).css('height', 'auto');
}
});
}
function t433_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var separateMap = document.querySelector('#separateMap' + recid);
if (separateMap) separateMap.style.height = 'auto';
t433_setMapHeight(recid);
var mapWrapper = rec.querySelector('.t433');
if (!mapWrapper) return;
mapWrapper.addEventListener('displayChanged', function () {
t433_setMapHeight(recid);
});
window.addEventListener(
'resize',
t_throttle(function () {
t433_setMapHeight(recid);
})
);
}
function t433_setMapHeight(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var isScaled = rec.classList.contains('t-record_scaled');
var mapElement = rec.querySelector('.t-map');
var textElement = rec.querySelector('.t433__col_text');
if (!mapElement || !textElement) return;
var paddingTop = parseInt(textElement.style.paddingTop, 10) || 0;
var paddingBottom = parseInt(textElement.style.paddingBottom, 10) || 0;
var textHeight = textElement.clientHeight - (paddingTop + paddingBottom);
var heightValue = textHeight + 'px';
mapElement.style.height = isScaled ? 'calc(' + heightValue + ' * var(--t-zoom, 1))' : heightValue;
var event = document.createEvent('HTMLEvents');
event.initEvent('sizechange', true, false);
mapElement.dispatchEvent(event);
}
function t441__createPieChart(
recid,
data1,
data2,
data3,
data4,
sectorcolor,
piebgcolor,
bgcolor,
blocksnumber,
diagramwidth,
diameter
) {
if (diameter > 300 || diameter == '' || diameter < 100) {
if (diameter == '') {
var t441__radius = 100;
diameter = 200;
}
if (diameter > 300) {
var t441__radius = 150;
diameter = 300;
}
if (diameter < 100) {
var t441__radius = 50;
diameter = 100;
}
} else {
var t441__radius = diameter / 2;
}
if (diagramwidth == '') {
diagramwidth = 10;
}
if (diagramwidth > t441__radius) {
diagramwidth = 10;
}
if (diagramwidth < 1) {
diagramwidth = 1;
}
//check Retina
if (window.devicePixelRatio >= 2) {
var t441__oldsize = diameter;
t441__radius = t441__radius * 2;
diameter = diameter * 2;
diagramwidth = diagramwidth * 2;
}
//border id drawing at the edge of circle, so we need correct the radius to fin into canvas
var t441__correction = +diagramwidth / 2;
var t441__dataarray = [data1, data2, data3, data4];
for (var i = 0; i < 4; i++) {
if (t441__dataarray[i] != '' && blocksnumber > i) {
var t441__canvas = document.querySelector('#rec' + recid + ' .t441__pie' + (i + 1));
t441__canvas.setAttribute('width', diameter);
t441__canvas.setAttribute('height', diameter);
var t441__context = t441__canvas.getContext('2d');
if (window.devicePixelRatio >= 2) {
t441__canvas.style.width = t441__oldsize + 'px';
t441__canvas.style.height = t441__oldsize + 'px';
}
for (var j = 0; j < 2; j++) {
if (j == 1 && t441__dataarray[i] == 0) {
continue;
}
//0 - bg, 1 - percent sector
if (j == 0) {
t441__context.strokeStyle = piebgcolor;
var t441__angle = Math.PI * 2;
t441__context.lineWidth = diagramwidth - 1;
} else {
t441__context.strokeStyle = sectorcolor;
var t441__angle = Math.PI * 2 * (t441__dataarray[i] / 100);
t441__context.lineWidth = diagramwidth;
}
t441__context.beginPath();
t441__context.lineCap = 'round';
t441__context.moveTo(diameter - t441__correction, t441__radius);
t441__context.arc(t441__radius, t441__radius, t441__radius - t441__correction, 0, t441__angle, false);
t441__context.stroke();
}
}
}
}
function t446_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var linkItems = rec.querySelectorAll('.t-menu__link-item');
var subMenuLinks = rec.querySelectorAll('.t-menusub__link-item');
var menu = rec.querySelector('.t446');
Array.prototype.forEach.call(linkItems, function (link) {
link.addEventListener('click', function () {
if (
link.classList.contains('t-menusub__target-link') ||
link.classList.contains('tooltipstered') ||
link.classList.contains('t794__tm-link') ||
link.classList.contains('t966__tm-link') ||
link.classList.contains('t978__tm-link')
)
return;
t446_hideMenuOnMobile(link, rec);
});
});
Array.prototype.forEach.call(subMenuLinks, function (subMenuLink) {
subMenuLink.addEventListener('click', function () {
t446_hideMenuOnMobile(subMenuLink, rec);
});
});
}
function t446_setLogoPadding(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec || window.innerWidth <= 980) return;
var menu = rec.querySelector('.t446');
var logo = menu ? menu.querySelector('.t446__logowrapper') : null;
var logoWidth = logo ? logo.offsetWidth : 0;
var leftWrapper = menu ? menu.querySelector('.t446__leftwrapper') : null;
var rightWrapper = menu ? menu.querySelector('.t446__rightwrapper') : null;
if (leftWrapper) leftWrapper.style.paddingRight = logoWidth / 2 + 50 + 'px';
if (rightWrapper) rightWrapper.style.paddingLeft = logoWidth / 2 + 50 + 'px';
}
function t446_checkOverflow(recid, menuheight) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t446') : null;
if (!menu) return;
var rightWrapper = menu.querySelector('.t446__rightwrapper');
var rightMenuWrap = rightWrapper ? rightWrapper.querySelector('.t446__rightmenuwrapper') : null;
var additionalWrap = rightWrapper ? rightWrapper.querySelector('.t446__additionalwrapper') : null;
var burgerWrapOverflow = rightWrapper ? rightWrapper.querySelector('.t446__burgerwrapper_overflow') : null;
var burgerWrap = rightWrapper ? rightWrapper.querySelector('.t446__burgerwrapper_withoutoverflow') : null;
var rightWrapperWidth = t446_getPureWidth(rightWrapper);
var rightMenuWrapWidth = rightMenuWrap ? rightMenuWrap.offsetWidth : 0;
var additionalWrapWidth = additionalWrap ? additionalWrap.offsetWidth : 0;
var additionalWrapFloating = additionalWrap
? additionalWrap.style.float || window.getComputedStyle(additionalWrap).float
: '';
var blockHeight = menuheight > 0 ? menuheight : 80;
if (window.innerWidth > 980 && rightMenuWrapWidth + additionalWrapWidth > rightWrapperWidth) {
menu.style.height = blockHeight * 2 + 'px';
if (additionalWrap) additionalWrap.style.float = 'right';
if (burgerWrapOverflow) burgerWrapOverflow.style.display = 'table-cell';
if (burgerWrap) burgerWrap.style.display = 'none';
} else {
if (menu.offsetHeight > blockHeight) menu.style.height = blockHeight + 'px';
if (additionalWrap && additionalWrapFloating === 'right') additionalWrap.style.float = 'none';
if (burgerWrapOverflow) burgerWrapOverflow.style.display = 'none';
if (burgerWrap) burgerWrap.style.display = 'table-cell';
}
}
function t446_getPureWidth(el) {
if (!el) return 0;
var elWidth = el.offsetWidth;
var elPaddingLeft = parseInt(window.getComputedStyle(el).paddingLeft, 10) || 0;
var elPaddingRight = parseInt(window.getComputedStyle(el).paddingRight, 10) || 0;
var width = elWidth - (elPaddingLeft + elPaddingRight);
return width > 0 ? width : 0;
}
function t446_createMobileMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t_menu__createMobileMenu', function () {
t_menu__createMobileMenu(recid, '.t446');
});
/* Fix for clicking anchor links on mobile.
Hide menu on click as expected */
var linkItems = rec.querySelectorAll('.t-menu__link-item');
var submenuClassList = [
't978__menu-link_hook',
't978__tm-link',
't966__tm-link',
't794__tm-link',
't-menusub__target-link',
];
Array.prototype.forEach.call(linkItems, function (link) {
link.addEventListener('click', function () {
var isSubmenuHook = submenuClassList.some(function (submenuClass) {
return link.classList.contains(submenuClass);
});
if (isSubmenuHook) return;
t446_hideMenuOnMobile(link, rec);
});
});
var wrappersLinks = rec.querySelectorAll('.t446__logowrapper2 a, .t446__right_buttons_wrap a');
Array.prototype.forEach.call(wrappersLinks, function (link) {
link.addEventListener('click', function () {
t446_hideMenuOnMobile(link, rec);
});
});
}
function t446_hideMenuOnMobile(link, rec) {
if (!rec || !link || window.innerWidth >= 980) return false;
var url = link.href ? link.href.trim() : '';
var menu = rec.querySelector('.t446');
var burger = rec.querySelector('.tmenu-mobile');
if (url && link.matches('[href*="#"]')) {
if (burger) burger.classList.remove('tmenu-mobile_opened');
if (menu) {
if (
menu.classList.contains('t446__positionabsolute') ||
(burger && !burger.classList.contains('.tmenu-mobile_positionfixed'))
) {
menu.style.display = 'none';
menu.style.opacity = '0';
} else {
t_onFuncLoad('t_menu__FadeOut', function () {
t_menu__FadeOut(menu, 300);
});
}
}
}
}
function t448_setHeight(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var cover = rec.querySelector('.t-cover');
var coverHeight = cover ? cover.offsetHeight : 0;
var coverWrapper = rec.querySelector('.t448-cover__wrapper');
var textWrapper = rec.querySelector('.t448__wrapper');
var textHeight = textWrapper ? textWrapper.clientHeight : 0;
var screenShot = rec.querySelector('.t448__screenshot');
var imgHeight = screenShot ? screenShot.offsetHeight : 0;
var height = textHeight + imgHeight;
var newHeight = coverHeight - imgHeight;
var container = rec.querySelector('.t448');
var cropImg = container ? container.getAttribute('data-crop-image') : '';
if (cropImg && container) {
container.classList.add('t448__no-overflow');
if (coverWrapper) {
container.style.height = coverWrapper.offsetHeight + 'px';
}
}
if (coverHeight > height) {
rec.classList.add('t448__stretched');
if (coverWrapper) coverWrapper.style.height = newHeight + 'px';
if (cropImg && container) {
container.classList.remove('t448__no-overflow');
container.style.height = '';
}
} else {
rec.classList.remove('t448__stretched');
if (coverWrapper) coverWrapper.style.height = '';
}
}
function t449_appearMenu(recId) {
if (window.innerWidth > 980) {
var recs = document.querySelectorAll('.t449');
var scrollTop = window.pageYOffset;
var body = document.body;
var html = document.documentElement;
var documentHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
for (var i = 0; i < recs.length; i++) {
var rec = recs[i];
var appearOffset = rec.getAttribute('data-appearoffset');
var hideOffset = rec.getAttribute('data-hideoffset');
if (appearOffset) {
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (scrollTop >= appearOffset) {
if (rec.classList.contains('t449__beforeready')) {
rec.classList.remove('t449__beforeready');
}
} else {
rec.classList.add('t449__beforeready');
}
}
if (hideOffset) {
if (hideOffset.indexOf('vh') > -1) {
hideOffset = Math.floor(window.innerHeight * (parseInt(hideOffset) / 100));
}
hideOffset = parseInt(hideOffset, 10);
if (scrollTop + window.innerHeight >= documentHeight - hideOffset) {
if (!rec.classList.contains('t449__beforeready')) {
rec.classList.add('t449__beforeready');
}
} else if (appearOffset) {
if (scrollTop >= appearOffset) {
rec.classList.remove('t449__beforeready');
}
} else {
rec.classList.remove('t449__beforeready');
}
}
}
}
}
function t450_showMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t450');
var overlay = rec.querySelector('.t450__overlay');
var menuElements = rec.querySelectorAll('.t450__overlay, .t450__close, a[href*="#"]');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t450__body_menushowed');
if (menu) menu.classList.add('t450__menu_show');
if (overlay) overlay.classList.add('t450__menu_show');
if (menu) {
menu.addEventListener('clickedAnchorInTooltipMenu', function () {
t450_closeMenu(menu, overlay);
});
}
Array.prototype.forEach.call(menuElements, function (element) {
element.addEventListener('click', function () {
if (
element.closest(
'.tooltipstered, .t-menusub__target-link, .t794__tm-link, .t966__tm-link, .t978__tm-link'
)
)
return;
if (
element.href &&
(element.href.substring(0, 7) === '#price:' || element.href.substring(0, 9) === '#submenu:')
)
return;
t450_closeMenu(menu, overlay);
});
});
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) {
document.body.classList.remove('t390__body_popupshowed');
var popups = document.querySelectorAll('.t390');
Array.prototype.forEach.call(popups, function (popup) {
popup.classList.remove('t390__popup_show');
});
}
});
rec.addEventListener('click', function (e) {
if (e.target.closest('.t966__tm-link, .t978__tm-link, .t-menusub__target-link')) {
t450_checkSize(recid);
if (e.target.closest('.t978__tm-link')) {
setTimeout(function () {
var hookLink = e.target.closest('.t978__tm-link');
var menuBlock = hookLink.nextElementSibling;
var submenuLinks = menuBlock ? menuBlock.querySelectorAll('.t978__menu-link') : [];
Array.prototype.forEach.call(submenuLinks, function (link) {
link.addEventListener('click', function () {
t450_checkSize(recid);
});
});
}, 300);
}
}
});
menu.addEventListener('menuOverflow', function () {
t450_checkSize(recid);
});
t450_highlight(recid);
}
function t450_closeMenu(menu, overlay) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t450__body_menushowed');
if (menu) menu.classList.remove('t450__menu_show');
if (overlay) overlay.classList.remove('t450__menu_show');
}
function t450_checkSize(recid) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t450') : null;
if (!menu) return;
var container = menu.querySelector('.t450__container');
var topContainer = menu.querySelector('.t450__top');
var rightContainer = menu.querySelector('.t450__rightside');
setTimeout(function () {
var topContainerHeight = topContainer ? topContainer.offsetHeight : 0;
var rightContainerHeight = rightContainer ? rightContainer.offsetHeight : 0;
var containerPaddingTop = container ? window.getComputedStyle(container).paddingTop : '0';
var containerPaddingBottom = container ? window.getComputedStyle(container).paddingBottom : '0';
containerPaddingTop = parseInt(containerPaddingTop, 10);
containerPaddingBottom = parseInt(containerPaddingBottom, 10);
if (
topContainerHeight + rightContainerHeight + containerPaddingTop + containerPaddingBottom >
document.documentElement.clientHeight
) {
menu.classList.add('t450__overflowed');
} else {
menu.classList.remove('t450__overflowed');
}
}, 300); /* css transition is completed */
}
function t450_appearMenu(recid) {
var rec = document.getElementById('rec' + recid);
var burger = rec ? rec.querySelector('.t450__menu__content') : null;
if (!burger) return;
var burgerAppearOffset = burger ? burger.getAttribute('data-appearoffset') : '';
var burgerHideOffset = burger ? burger.getAttribute('data-hideoffset') : '';
if (burgerAppearOffset) {
burgerAppearOffset = t450_appearMenuParseNumber(burgerAppearOffset);
if (window.pageYOffset >= burgerAppearOffset) {
if (burger.classList.contains('t450__beforeready')) {
burger.classList.remove('t450__beforeready');
}
} else {
burger.classList.add('t450__beforeready');
}
}
if (burgerHideOffset) {
burgerHideOffset = t450_appearMenuParseNumber(burgerHideOffset);
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
if (window.pageYOffset + window.innerHeight >= scrollHeight - burgerHideOffset) {
if (!burger.classList.contains('t450__beforeready')) {
burger.classList.add('t450__beforeready');
}
} else if (burgerAppearOffset) {
if (window.pageYOffset >= burgerAppearOffset) {
burger.classList.remove('t450__beforeready');
}
} else {
burger.classList.remove('t450__beforeready');
}
}
}
function t450_appearMenuParseNumber(string) {
if (string.indexOf('vh') > -1) {
string = Math.floor(window.innerHeight * (parseInt(string) / 100));
}
return parseInt(string, 10);
}
function t450_initMenu(recid) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t450') : null;
var overlay = rec ? rec.querySelector('.t450__overlay') : null;
var burger = rec ? rec.querySelector('.t450__burger_container') : null;
var menuLinks = rec ? rec.querySelectorAll('.t-menu__link-item.t450__link-item_submenu') : [];
var hook = menu ? menu.getAttribute('data-tooltip-hook') : '';
if (hook) {
document.addEventListener('click', function (e) {
if (e.target.closest('a[href="' + hook + '"]')) {
e.preventDefault();
t450_closeMenu(menu, overlay);
t450_showMenu(recid);
t450_checkSize(recid);
}
});
}
if (burger) {
burger.addEventListener('click', function () {
t450_closeMenu(menu, overlay);
t450_showMenu(recid);
t450_checkSize(recid);
});
}
window.addEventListener('resize', function () {
t450_checkSize(recid);
});
if (!window.isMobile) return;
Array.prototype.forEach.call(menuLinks, function (link) {
link.addEventListener('click', function () {
t450_checkSize(recid);
});
});
}
function t450_highlight(recid) {
var url = window.location.href;
var pathname = window.location.pathname;
var hash = window.location.hash;
if (url.substr(url.length - 1) === '/') {
url = url.slice(0, -1);
}
if (pathname.substr(pathname.length - 1) === '/') {
pathname = pathname.slice(0, -1);
}
if (pathname.charAt(0) === '/') {
pathname = pathname.slice(1);
}
if (pathname === '') {
pathname = '/';
}
var shouldBeActiveElements = document.querySelectorAll(
".t450__menu a[href='" +
url +
"'], " +
".t450__menu a[href='" +
url +
"/'], " +
".t450__menu a[href='" +
pathname +
"'], " +
".t450__menu a[href='/" +
pathname +
"'], " +
".t450__menu a[href='" +
pathname +
"/'], " +
".t450__menu a[href='/" +
pathname +
"/']" +
(hash ? ", .t450__menu a[href='" + hash + "']" : '') +
(hash && pathname === '/' ? ", .t450__menu a[href='/" + hash + "']" : '') +
(hash && pathname !== '/'
? ", .t450__menu a[href='/" + pathname + hash + "'], .t450__menu a[href='" + pathname + hash + "']"
: '')
);
var rec = document.getElementById('rec' + recid);
var menuLinks = rec ? rec.querySelectorAll('.t450__menu a') : [];
Array.prototype.forEach.call(menuLinks, function (link) {
/* data-highlighted-by-user attribute from ME701 block,
to prevent removing here active class from link, set by ME701*/
if (link.getAttribute('data-highlighted-by-user') !== 'y') link.classList.remove('t-active');
});
Array.prototype.forEach.call(shouldBeActiveElements, function (link) {
link.classList.add('t-active');
});
}
function t451_initMenu(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recId);
});
var burgerList = rec.querySelectorAll('.t451 .t-menuburger');
var menu = rec.querySelector('.t451m');
var menuBlock = rec.querySelector('.t451');
var overlay = rec.querySelector('.t451m__overlay');
Array.prototype.forEach.call(burgerList, function (burger) {
burger.addEventListener('click', function (e) {
e.preventDefault();
t451_closeMenu(menu, overlay);
t451_showMenu(menu, overlay);
t451_checkSize(menu);
});
});
if (menu) {
menu.click(function (e) {
t451_closeMenu(menu, overlay);
t451_showMenu(menu, overlay);
t451_checkSize(menu);
e.preventDefault();
});
}
if (menuBlock) {
menuBlock.addEventListener('clickedAnchorInTooltipMenu', function () {
t451_closeMenu(menu, overlay);
});
}
rec.addEventListener('click', function (e) {
if (window.innerWidth > 980) return;
var submenuClassList = [
'.t451__link-item_submenu',
'.t966__tm-link',
'.t978__tm-link',
'.t978__menu-link_hook',
];
var isContainsSubmenuClass = submenuClassList.some(function (className) {
return e.target.closest(className);
});
if (!isContainsSubmenuClass) return;
setTimeout(function () {
t451_checkSize(menu);
}, 100);
});
window.addEventListener('resize', function () {
t451_checkSize(menu);
});
menu.addEventListener('menuOverflow', function () {
t451_checkSize(menu);
});
var navLinks = rec.querySelectorAll(
'.t451 a.t-menu__link-item[href*="#"], .t451 a.t-menusub__link-item[href*="#"]'
);
navLinks = Array.prototype.filter.call(navLinks, function (navLink) {
return !navLink.classList.contains('tooltipstered');
});
if (navLinks.length > 0) {
t_onFuncLoad('t_menu__updateActiveLinks', function () {
t_menu__updateActiveLinks(navLinks, '.t451');
});
}
t_onFuncLoad('t_menu__highlightActiveLinks', function () {
t_menu__highlightActiveLinks('.t451m__menu a');
});
document.addEventListener('click', function (e) {
if (
e.target.closest(
'.t451m__overlay, .t451m__close, a[href*="#"]:not(.tooltipstered):not(.t794__tm-link):not(.t978__tm-link):not(.t966__tm-link):not(.t978__menu-link_hook):not(.t-menuwidgeticons__link_wishlist):not(.t-menuwidgeticons__link_cart)'
)
) {
t451_closeMenu(menu, overlay);
}
});
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) {
t451_closeMenu(menu, overlay);
}
});
}
function t451_showMenu(menu, overlay) {
if (!menu) return;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t451__body_menushowed');
menu.classList.add('t451m__menu_show');
if (overlay) overlay.classList.add('t451m__menu_show');
}
function t451_closeMenu(menu, overlay) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t451__body_menushowed');
if (menu) menu.classList.remove('t451m__menu_show');
if (overlay) overlay.classList.remove('t451m__menu_show');
}
function t451_checkSize(menu) {
if (!menu) return;
var menuTop = menu.querySelector('.t451m__top');
var menuRight = menu.querySelector('.t451m__rightside');
var menuContainer = menu.querySelector('.t451m__container');
var menuTopHeight = menuTop ? menuTop.offsetHeight : 0;
var menuRightHeight = menuRight ? menuRight.offsetHeight : 0;
var windowPadding = 80;
if (menuTopHeight + menuRightHeight + windowPadding > window.innerHeight) {
menu.classList.add('t451m__overflowed');
if (menuContainer) menuContainer.style.height = 'auto';
} else {
menu.classList.remove('t451m__overflowed');
if (menuContainer) menuContainer.style.height = '';
}
}
function t451_appearMenu(recId) {
var rec = document.getElementById('rec' + recId);
var burger = rec ? rec.querySelector('.t451__panel') : null;
if (!burger) return;
var burgerAppearOffset = burger ? burger.getAttribute('data-appearoffset') : '';
if (burgerAppearOffset) burgerAppearOffset = t451_appearMenuParseNumber(burgerAppearOffset);
if (window.pageYOffset >= burgerAppearOffset) {
if (burger.classList.contains('t451__beforeready')) {
burger.classList.remove('t451__beforeready');
}
} else {
burger.classList.add('t451__beforeready');
}
}
function t451_appearMenuParseNumber(string) {
if (string.indexOf('vh') > -1) {
string = Math.floor(window.innerHeight * (parseInt(string, 10) / 100));
}
return parseInt(string, 10);
}
function t452_scrollToTop() {
var duration = 700;
var difference = window.pageYOffset;
var step = (10 * difference) / duration;
var timer = setInterval(function () {
difference -= step;
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (window.pageYOffset === 0) {
document.body.removeAttribute('data-scrollable');
clearInterval(timer);
}
}, 10);
}
function t453_appearMenu(recid) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t453') : null;
if (!menu) return;
var appearOffset = menu.getAttribute('data-appearoffset');
if (appearOffset) {
if (appearOffset.indexOf('vh') !== -1)
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
appearOffset = parseInt(appearOffset, 10);
if (window.pageYOffset >= appearOffset) {
if (menu.classList.contains('t453__beforeready')) {
menu.classList.remove('t453__beforeready');
}
document.body.classList.add('t453__body_menushowed');
} else {
menu.classList.add('t453__beforeready');
document.body.classList.remove('t453__body_menushowed');
}
}
}
function t453__setHeightOnMobile(recid) {
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (!isMobile) return;
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var recWrapper = rec.querySelector('.t453');
if (!recWrapper) return;
var setHeight = function () {
var windowHeight = window.innerHeight;
recWrapper.style.width = windowHeight + 'px';
};
setHeight();
t_onFuncLoad('t_throttle', function () {
window.addEventListener(
'scroll',
t_throttle(function () {
setHeight();
})
);
});
t_onFuncLoad('t_throttle', function () {
window.addEventListener(
'resize',
t_throttle(function () {
setHeight();
})
);
});
window.addEventListener('orientationchange', setHeight);
}
function t454_setLogoPadding(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec || window.innerWidth <= 980) return;
var menu = rec.querySelector('.t454');
var logo = menu ? menu.querySelector('.t454__logowrapper') : null;
var leftWrapper = menu ? menu.querySelector('.t454__leftwrapper') : null;
var rightWrapper = menu ? menu.querySelector('.t454__rightwrapper') : null;
var logoWidth = logo ? logo.offsetWidth : 0;
var updateWidth = logoWidth / 2 + 50;
if (leftWrapper) leftWrapper.style.paddingRight = updateWidth + 'px';
if (rightWrapper) rightWrapper.style.paddingLeft = updateWidth + 'px';
}
function t456_setListMagin(recid, imglogo) {
var rec = document.getElementById('rec' + recid);
if (!rec || window.innerWidth <= 980) return;
var menu = rec.querySelector('.t456');
var leftSide = menu ? menu.querySelector('.t456__leftwrapper') : null;
var list = menu ? menu.querySelector('.t456__list') : null;
var leftSideWidth = leftSide ? leftSide.offsetWidth : 0;
if (list) list.style.marginRight = (imglogo ? leftSideWidth : leftSideWidth + 30) + 'px';
}
function t461_setLogoPadding(recid) {
if (window.innerWidth > 980) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t461') : null;
var logo = menu ? menu.querySelector('.t461__logowrapper') : null;
var leftSide = menu ? menu.querySelector('.t461__leftwrapper') : null;
var rightSide = menu ? menu.querySelector('.t461__rightwrapper') : null;
var logoWidth = logo ? logo.clientWidth : 0;
if (leftSide) leftSide.style.paddingRight = logoWidth / 2 + 50 + 'px';
if (rightSide) rightSide.style.paddingLeft = logoWidth / 2 + 50 + 'px';
}
}
function t466_initMobileMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t466');
var mobileList = rec.querySelector('.t466__mobile');
var burger = rec.querySelector('.t-menuburger');
menu.addEventListener('clickedAnchorInTooltipMenu', function () {
rec.classList.remove('t466_opened');
if (mobileList) t466_slideUp(mobileList);
});
if (document.documentElement.clientWidth > 980) return;
var bigContainer = menu.querySelector('.t466__container__bg_main');
if (mobileList) mobileList.style.top = (bigContainer ? bigContainer.offsetHeight + 2 : 2) + 'px';
menu.addEventListener('click', function (e) {
var link = e.target.closest(".t466 .t-menuburger, a[href*='#']");
var burgerOpenClass = 't-menuburger-opened';
if (
!link ||
link.closest('.tooltipstered') ||
link.closest('.t794__tm-link') ||
link.closest('.t978__tm-link') ||
link.closest('.t966__tm-link')
) {
return;
}
burger.classList.contains(burgerOpenClass)
? burger.classList.remove(burgerOpenClass)
: burger.classList.add(burgerOpenClass);
rec.classList.toggle('t466_opened');
if (burger.classList.contains('t-menuburger')) {
var expandedStatus = burger.classList.contains(burgerOpenClass);
burger.setAttribute('aria-expanded', expandedStatus);
}
t466_slideToggle(rec, mobileList, 300);
});
}
function t466_slideUp(target, duration) {
if (!target) return;
if (!duration) duration = 500;
var step = (target.offsetHeight * 10) / duration;
var difference = target.offsetHeight;
target.style.overflow = 'hidden';
target.setAttribute('data-slide', 'y');
var timerID = setInterval(function () {
difference -= step;
target.style.height = difference + 'px';
if (difference <= 0) {
target.style.height = '';
target.style.overflow = '';
target.style.display = 'none';
target.removeAttribute('data-slide');
clearInterval(timerID);
}
}, 10);
}
function t466_slideDown(rec, target, duration) {
if (!target) return;
if (!duration) duration = 500;
target.style.display = '';
var newDisplayValue =
window.getComputedStyle(target).display === 'none' ? 'block' : window.getComputedStyle(target).display;
target.style.display = newDisplayValue;
var container = rec.querySelector('.t466');
var targetRect = getComputedStyle(target);
var targetTop = parseInt(targetRect.top) + parseInt(container.style.top);
var targetMaxHeight = window.innerHeight - targetTop - 10;
var targetHeight = target.offsetHeight;
var isTargetScroll = false;
if (targetHeight > targetMaxHeight) {
targetHeight = targetMaxHeight;
isTargetScroll = true;
}
target.style.height = '0';
target.style.overflow = 'hidden';
var step = (targetHeight * 10) / duration;
var difference = 0;
var timerID = setInterval(function () {
target.style.height = difference + 'px';
difference += step;
if (target.offsetHeight >= targetHeight) {
target.style.overflow = '';
if (isTargetScroll) {
target.style.height = targetHeight + 'px';
target.style.overflowY = 'auto';
} else {
target.style.height = '';
}
target.style.display = newDisplayValue;
clearInterval(timerID);
}
}, 10);
}
function t466_slideToggle(rec, target, duration) {
if (!target) return;
if (!duration && duration !== 0) duration = 300;
if (window.getComputedStyle(target).display === 'none') {
return t466_slideDown(rec, target, duration);
} else {
return t466_slideUp(target, duration);
}
}
function t479_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t479');
var videoLazy = rec.querySelector('.t-video-lazyload');
if (videoLazy) {
t_onFuncLoad('t_video_lazyload__setHeight', function () {
var videoHeight = videoLazy.getAttribute('data-videolazy-height');
if (videoHeight !== '540px') return;
t_video_lazyload__setHeight(videoLazy);
window.addEventListener('resize', function () {
t_video_lazyload__setHeight(videoLazy);
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
t_video_lazyload__setHeight(videoLazy);
});
});
}
var videoCarrier = rec.querySelector('.t-video-carier');
if (!videoCarrier) return;
var screenMin = rec.getAttribute('data-screenmin');
var screenMax = rec.getAttribute('data-screenmax');
var isLoad = false;
if (window.innerWidth < parseInt(screenMin, 10) || window.innerWidth > parseInt(screenMax, 10)) return;
window.addEventListener(
'scroll',
t_throttle(function () {
if (!isLoad) {
var videoCarrierOffsetTop = videoCarrier.getBoundingClientRect().top + window.pageYOffset;
var videoCarrierHeight = parseInt(window.getComputedStyle(videoCarrier).height, 10);
var windowScrollTop = window.pageYOffset;
var windowHeight = window.innerHeight;
if (
windowScrollTop + windowHeight > videoCarrierOffsetTop - 500 &&
windowScrollTop < videoCarrierOffsetTop + videoCarrierHeight + 501
) {
t_onFuncLoad('processYoutubeVideo', function () {
processYoutubeVideo(videoCarrier, videoCarrier.style.height);
});
isLoad = true;
}
}
})
);
var event = document.createEvent('HTMLEvents');
event.initEvent('scroll', true, false);
window.dispatchEvent(event);
}
function t480_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t480');
if (!container) return;
var isJquery = typeof jQuery !== 'undefined';
t480_setHeight(recId);
if (window.isMobile) {
if (isJquery) {
$(window).on(
'orientationchange',
t_throttle(function () {
setTimeout(function () {
t480_setHeight(recId);
}, 200);
})
);
} else {
window.addEventListener(
'orientationchange',
t_throttle(function () {
setTimeout(function () {
t480_setHeight(recId);
}, 200);
})
);
}
} else {
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t480_setHeight(recId);
})
);
}
if (isJquery) {
$(container).on('displayChanged', function () {
t480_setHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t480_setHeight(recId);
});
}
}
function t480_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t480');
if (!container) return;
var sizer = rec.querySelector('.t480__sizer');
var sizerStyle = getComputedStyle(sizer, null);
var sizerPaddingTop = parseInt(sizerStyle.paddingTop);
var sizerPaddingBottom = parseInt(sizerStyle.paddingBottom);
var sizerPaddingLeft = parseInt(sizerStyle.paddingLeft);
var sizerPaddingRight = parseInt(sizerStyle.paddingRight);
var sizerHeight = sizer.clientHeight - (sizerPaddingTop + sizerPaddingBottom);
var sizerWidth = sizer.clientWidth - (sizerPaddingLeft + sizerPaddingRight);
var ratio = sizerWidth / sizerHeight;
var imgWrapper = rec.querySelector('.t480__blockimg');
var imgWidth = imgWrapper.clientWidth;
var sizerAttrStyle = sizer.getAttribute('style');
var windowHeight = window.innerHeight;
var isScaled = rec.classList.contains('t-record_scaled');
var processedHeight = imgWidth / ratio + 'px';
if (window.isMobile && sizerAttrStyle && sizerAttrStyle.indexOf('vh') !== -1) {
sizerHeight = document.documentElement.clientHeight * parseFloat(windowHeight / sizerHeight);
imgWrapper.style.height = isScaled ? 'calc(' + processedHeight + ' / var(--t-zoom, 1))' : processedHeight;
} else if (sizerHeight != windowHeight) {
imgWrapper.style.height = isScaled ? 'calc(' + processedHeight + ' / var(--t-zoom, 1))' : processedHeight;
}
}
function t481_setWidth(recid) {
if (window.innerWidth <= 980) return;
var menuBlocks = document.querySelectorAll('.t481');
Array.prototype.forEach.call(menuBlocks, function (menu) {
var alignment = menu.getAttribute('data-menu-items-align');
var leftContainer = menu.querySelector('.t481__leftcontainer');
var rightContainer = menu.querySelector('.t481__rightcontainer');
var centerContainer = menu.querySelector('.t481__centercontainer');
var mainContainer = menu.querySelector('.t481__maincontainer');
var centerContainerList = centerContainer ? centerContainer.querySelectorAll('li') : [];
var maxWidth = Math.max(t481_getFullWidth(leftContainer), t481_getFullWidth(rightContainer));
maxWidth = Math.ceil(maxWidth);
var paddingWidth = 40;
var centerWidth = 0;
Array.prototype.forEach.call(centerContainerList, function (list) {
centerWidth += t481_getFullWidth(list);
});
var leftSide = menu.querySelector('.t481__leftside');
var rightSide = menu.querySelector('.t481__rightside');
var mainContainerWidth = t481_getFullWidth(mainContainer);
if (mainContainerWidth - (maxWidth * 2 + paddingWidth * 2) > centerWidth + 20) {
if (alignment === 'center' || !alignment) {
if (leftSide) leftSide.style.minWidth = maxWidth + 'px';
if (rightSide) rightSide.style.minWidth = maxWidth + 'px';
}
} else {
if (leftSide) leftSide.style.minWidth = '';
if (rightSide) rightSide.style.minWidth = '';
}
});
}
function t481_getFullWidth(element) {
if (!element) return 0;
var marginLeft = element.style.marginLeft || window.getComputedStyle(element).marginLeft;
var marginRight = element.style.marginRight || window.getComputedStyle(element).marginRight;
marginLeft = parseInt(marginLeft, 10) || 0;
marginRight = parseInt(marginRight, 10) || 0;
return element.offsetWidth + marginLeft + marginRight;
}
function t486_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var textWrapper = rec.querySelector('.t486__textwrapper');
if (!textWrapper) return;
var images = rec.querySelectorAll('.t486__blockimg');
var imageContainer = rec.querySelector('.t486__imgcontainer');
var imageHeight = images[0].clientWidth;
if (window.innerWidth > 980) {
for (var i = 0; i < images.length; i++) {
images[i].style.height = imageHeight + 'px';
}
textWrapper.style.height = imageContainer.clientWidth + 'px';
} else {
var imageStyle = getComputedStyle(images[0], null);
var imagePaddingLeft = parseInt(imageStyle.paddingLeft) || 0;
var imagePaddingRight = parseInt(imageStyle.paddingRight) || 0;
var imageWidth = images[0].clientWidth - (imagePaddingLeft + imagePaddingRight);
for (var i = 0; i < images.length; i++) {
images[i].style.height = imageWidth + 'px';
}
textWrapper.style.height = 'auto';
}
}
function t490_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t491_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t498_unifyHeights(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var containers = rec.querySelectorAll('.t498 .t-container');
for (var i = 0; i < containers.length; i++) {
var container = containers[i];
var heightBox = 0;
var cols = container.querySelectorAll('.t498__col');
for (var j = 0; j < cols.length; j++) {
cols[j].style.height = '';
}
for (var j = 0; j < cols.length; j++) {
var col = cols[j];
var colStyle = getComputedStyle(col, null);
var colPaddingTop = parseInt(colStyle.paddingTop) || 0;
var colPaddingBottom = parseInt(colStyle.paddingBottom) || 0;
var colHeight = col.clientHeight - (colPaddingTop + colPaddingBottom);
var colWrap = col.querySelector('.t498__col-wrapper');
var colWrapStyle = getComputedStyle(colWrap, null);
var colWrapPaddingTop = parseInt(colWrapStyle.paddingTop) || 0;
var colWrapPaddingBottom = parseInt(colWrapStyle.paddingBottom) || 0;
var colWrapHeight = colWrap.clientHeight - (colWrapPaddingTop + colWrapPaddingBottom);
if (colHeight < colWrapHeight) {
col.style.height = colWrapHeight + 'px';
heightBox = colWrapHeight;
}
if (colHeight > heightBox) heightBox = colHeight;
}
if (window.innerWidth >= 960) {
for (var j = 0; j < cols.length; j++) {
cols[j].style.height = heightBox + 'px';
}
} else {
for (var j = 0; j < cols.length; j++) {
cols[j].style.height = 'auto';
}
}
}
}
function t503_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t504_unifyHeights(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var containers = rec.querySelectorAll('.t504 .t-container');
for (var i = 0; i < containers.length; i++) {
var container = containers[i];
var maxHeight = 0;
var cols = container.querySelectorAll('.t504__col');
for (var j = 0; j < cols.length; j++) {
cols[j].style.height = '';
}
for (var j = 0; j < cols.length; j++) {
var col = cols[j];
var colStyle = getComputedStyle(col, null);
var colPaddingTop = parseInt(colStyle.paddingTop) || 0;
var colPaddingBottom = parseInt(colStyle.paddingBottom) || 0;
var colHeight = col.clientHeight - (colPaddingTop + colPaddingBottom);
var colWrap = col.querySelector('.t504__col-wrapper');
var colWrapStyle = getComputedStyle(colWrap, null);
var colWrapPaddingTop = parseInt(colWrapStyle.paddingTop) || 0;
var colWrapPaddingBottom = parseInt(colWrapStyle.paddingBottom) || 0;
var colWrapHeight = colWrap.clientHeight - (colWrapPaddingTop + colWrapPaddingBottom);
if (colHeight < colWrapHeight) {
col.style.height = colWrapHeight + 'px';
maxHeight = colWrapHeight;
}
if (colHeight > maxHeight) maxHeight = colHeight;
}
if (window.innerWidth >= 960) {
for (var j = 0; j < cols.length; j++) {
cols[j].style.height = maxHeight + 'px';
}
} else {
for (var j = 0; j < cols.length; j++) {
cols[j].style.height = 'auto';
}
}
}
}
function t505__createPieChart(
recId,
data1,
data2,
data3,
data4,
sectorColor,
pieBgColor,
bgcolor,
blocksNumber,
diagramWidth,
diameter
) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t505');
if (!container) return;
var radius;
if (diameter > 300 || diameter == '' || diameter < 100) {
if (diameter == '') {
radius = 100;
diameter = 200;
}
if (diameter > 300) {
radius = 150;
diameter = 300;
}
if (diameter < 100) {
radius = 50;
diameter = 100;
}
} else {
radius = diameter / 2;
}
if (diagramWidth == '') diagramWidth = 10;
if (diagramWidth > radius) diagramWidth = 10;
if (diagramWidth < 1) diagramWidth = 1;
/*check Retina*/
if (window.devicePixelRatio >= 2) {
var oldSize = diameter;
radius = radius * 2;
diameter = diameter * 2;
diagramWidth = diagramWidth * 2;
}
/*border id drawing at the edge of circle, so we need correct the radius to fin into canvas*/
var correction = +diagramWidth / 2;
var dataArray = [data1, data2, data3, data4];
for (var i = 0; i < 4; i++) {
if (dataArray[i] != '' && blocksNumber > i) {
var canvas = rec.querySelector('.t505__pie' + (i + 1));
canvas.setAttribute('width', diameter);
canvas.setAttribute('height', diameter);
var context = canvas.getContext('2d');
if (window.devicePixelRatio >= 2) {
canvas.style.width = oldSize + 'px';
canvas.style.height = oldSize + 'px';
}
for (var j = 0; j < 2; j++) {
if (j === 1 && dataArray[i] == 0) continue;
/*0 - bg, 1 - percent sector*/
if (j == 0) {
context.strokeStyle = pieBgColor;
var angle = Math.PI * 2;
context.lineWidth = diagramWidth - 1;
} else {
context.strokeStyle = sectorColor;
var angle = Math.PI * 2 * (dataArray[i] / 100);
context.lineWidth = diagramWidth;
}
context.beginPath();
context.lineCap = 'round';
context.moveTo(diameter - correction, radius);
context.arc(radius, radius, radius - correction, 0, angle, false);
context.stroke();
}
}
}
}
function t509_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t509');
if (!container) return;
var images = rec.querySelectorAll('.t509__blockimg');
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
for (var i = 0; i < images.length; i++) {
var image = images[i];
var imageWidth = image.getAttribute('data-image-width');
var imageHeight = image.getAttribute('data-image-height');
if (imageHeight.indexOf('vh') === -1) {
imageHeight = parseInt(imageHeight, 10);
} else {
imageHeight = (parseInt(imageHeight, 10) / 100) * window.innerHeight;
}
var imageRatio = imageHeight / imageWidth;
var imagePadding = imageRatio * 100;
image.style.paddingBottom = imagePadding + '%';
}
if (window.innerWidth > 960) {
var desktopImage = rec.querySelector('.t509__desktopimg');
if (desktopImage) {
var height = desktopImage.clientHeight;
var textWrappers = rec.querySelectorAll('.t509__textwrapper');
for (var i = 0; i < textWrappers.length; i++) {
textWrappers[i].style.height = height + 'px';
}
}
}
}
function t518_unifyColHeadersHeights(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t518');
if (!container) return;
if (window.innerWidth >= 960) {
var maxHeight = 0;
var cols = rec.querySelectorAll('.t518__col-header');
for (var i = 0; i < cols.length; i++) {
var col = cols[i];
var header = col.querySelector('.t518__col-header-inner');
var headerHeight = header ? header.offsetHeight : 0;
if (headerHeight > maxHeight) maxHeight = headerHeight;
}
for (var i = 0; i < cols.length; i++) {
cols[i].style.height = maxHeight + 'px';
}
}
}
function t518_unifyColItems(recId, prefixWidth) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t518');
if (!container) return;
/*if prefixwidth>400, there is just one column or block is empty*/
if (window.innerWidth >= 960 && prefixWidth != 400) {
var filterItems = [];
var minItems = 0;
var cols = rec.querySelectorAll('.t518__col');
for (var i = 0; i < cols.length; i++) {
var col = cols[i];
var items = col.querySelectorAll('.t518__item');
var itemsLength = items.length;
if (itemsLength > 0) {
filterItems.push(items);
}
if (itemsLength > 0 && (itemsLength < minItems || minItems === 0)) {
minItems = itemsLength;
}
}
/*unifying items heights*/
for (var i = 0; i < minItems; i++) {
var maxHeight = 0;
for (var j = 0; j < filterItems.length; j++) {
var item = filterItems[j][i];
var info = item.querySelector('.t518__sectioninfowrapper');
var person = item.querySelector('.t518__personwrapper');
var itemHeight = (info ? info.offsetHeight : 0) + (person ? person.offsetHeight : 0);
if (itemHeight > maxHeight) maxHeight = itemHeight;
}
for (var j = 0; j < filterItems.length; j++) {
var item = filterItems[j][i];
if (item) item.style.height = maxHeight + 'px';
var person = item.querySelector('.t518__personwrapper');
if (person) person.style.position = 'absolute';
}
}
}
}
function t527_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t527');
if (!container) return;
var images = rec.querySelectorAll('.t527__bgimg');
if (!images[0]) return;
var imageWidth = images[0].getAttribute('data-image-width');
var imageHeight = images[0].getAttribute('data-image-height');
var imageRatio = imageHeight / imageWidth;
var imagePadding = imageRatio * 100;
for (var i = 0; i < images.length; i++) {
images[i].style.paddingBottom = imagePadding + '%';
}
}
function t531_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t531');
if (!container) return;
var images = rec.querySelectorAll('.t531__blockimg');
if (!images[0]) return;
var imageWidth = images[0].getAttribute('data-image-width');
var imageHeight = images[0].getAttribute('data-image-height');
var imageRatio = imageHeight / imageWidth;
var imagePadding = imageRatio * 100;
for (var i = 0; i < images.length; i++) {
images[i].style.paddingBottom = imagePadding + '%';
}
if (window.innerWidth > 480) {
var textWrappers = rec.querySelectorAll('.t531__textwrapper');
var imageWrapperHeight = rec.querySelector('.t531__imgwrapper').clientHeight;
for (var i = 0; i < textWrappers.length; i++) {
textWrappers[i].style.height = imageWrapperHeight + 'px';
}
}
}
function t532__emulateMobileHover(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t532');
if (!container) return;
var cells = rec.querySelectorAll('.t532__cell');
for (var i = 0; i < cells.length; i++) {
var cell = cells[i];
cell.addEventListener('mouseover', function () {
this.classList.add('t532__cell_hover');
});
cell.addEventListener('mouseout', function () {
this.classList.remove('t532__cell_hover');
});
}
}
function t532_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t532');
if (!container) return;
var bg = rec.querySelector('.t532__bg');
if (!bg) return;
var tables = rec.querySelectorAll('.t532__table');
var bgWidth = bg.getAttribute('data-image-width');
var bgHeight = bg.getAttribute('data-image-height');
var bgRatio = bgHeight / bgWidth;
var height = tables[0].clientWidth * bgRatio;
for (var i = 0; i < tables.length; i++) {
tables[i].style.height = height + 'px';
}
}
function t533_equalHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t533');
if (!container) return;
var rows = rec.querySelectorAll('.t533__row');
var wrapTexts = rec.querySelectorAll('.t533__textwrapper');
container.style.visibility = 'visible';
for (var i = 0; i < wrapTexts.length; i++) {
wrapTexts[i].style.height = 'auto';
}
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var heightBox = 0;
var rowWrapTexts = row.querySelectorAll('.t533__textwrapper');
for (var j = 0; j < rowWrapTexts.length; j++) {
var element = rowWrapTexts[j];
var styleElement = getComputedStyle(element, null);
var paddingTop = parseInt(styleElement.paddingTop.replace('px', '')) || 0;
var paddingBottom = parseInt(styleElement.paddingBottom.replace('px', '')) || 0;
var elementHeight = element.clientHeight - (paddingTop + paddingBottom);
if (elementHeight > heightBox) heightBox = elementHeight;
}
for (var j = 0; j < rowWrapTexts.length; j++) {
var element = rowWrapTexts[j];
if (window.innerWidth >= 960 && element.offsetParent !== null) {
element.style.height = heightBox + 'px';
} else {
element.style.height = 'auto';
}
}
}
}
function t534_setWidth(recid) {
var el = $('#rec' + recid);
var topsection = el.find('.t534__topsection');
var slidewidth = el.find('.t-slides__container').width();
topsection.css('max-width', slidewidth);
}
function t536_setWidth(recid) {
var el = $('#rec' + recid);
var topsection = el.find('.t536__topsection');
var slidewidth = el.find('.t-slides__container').width();
topsection.css('max-width', slidewidth);
}
function t537_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t537');
if (!container) return;
var images = rec.querySelectorAll('.t537__bgimg');
if (!images[0]) return;
var imageWidth = images[0].getAttribute('data-image-width');
var imageHeight = images[0].getAttribute('data-image-height');
var imageRatio = imageHeight / imageWidth;
var imagePadding = imageRatio * 100;
for (var i = 0; i < images.length; i++) {
images[i].style.paddingBottom = imagePadding + '%';
}
}
function t538_setWidth(recid) {
var el = $('#rec' + recid);
var topsection = el.find('.t538__topsection');
var slidewidth = el.find('.t-slides__container').width();
topsection.css('max-width', slidewidth);
}
function t539_equalHeight(recId, blocks) {
if (!blocks || +blocks === 0) return false;
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t539');
if (!container) return;
var textWrappers = rec.querySelectorAll('.t539__textwrapper');
var contents = Array.prototype.slice.call(textWrappers);
var count = 0;
for (var i = 0; i < contents.length; i++) {
contents[i].style.height = 'auto';
}
if (window.innerWidth <= 480) {
container.style.visibility = 'visible';
return;
}
if (window.innerWidth <= 960) {
count = 2;
} else {
count = +blocks;
}
for (var i = 0; i < contents.length; i += count) {
var maxHeight = 0;
var cols = contents.slice(i, i + count);
for (var j = 0; j < cols.length; j++) {
var col = cols[j];
var colHeight = col.offsetHeight;
if (colHeight > maxHeight) maxHeight = colHeight;
}
for (var j = 0; j < cols.length; j++) {
cols[j].style.height = maxHeight + 'px';
}
}
container.style.visibility = 'visible';
}
function t539_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t539');
if (!container) return;
var images = rec.querySelectorAll('.t539__bgimg');
if (!images[0]) return;
var imageWidth = images[0].getAttribute('data-image-width');
var imageHeight = images[0].getAttribute('data-image-height');
var imageRatio = imageHeight / imageWidth;
var imagePadding = imageRatio * 100;
for (var i = 0; i < images.length; i++) {
images[i].style.paddingBottom = imagePadding + '%';
}
}
function t542_init(recId) {
var rec = document.querySelector(recId);
if (!rec) return;
var container = rec.querySelector('.t542');
if (!container) return;
var titleTag = container.getAttribute('data-title-tag');
if (!titleTag) return;
function checkTitleTag(mql) {
if (mql.matches) {
t542_changeTitleTag(recId, '.t542 .t542__title', 'div');
t542_changeTitleTag(recId, '.t542_mobile .t542__title', titleTag);
} else {
t542_changeTitleTag(recId, '.t542 .t542__title', titleTag);
t542_changeTitleTag(recId, '.t542_mobile .t542__title', 'div');
}
}
if ('matchMedia' in window || 'msMatchMedia' in window) {
var matchMedia = window.matchMedia || window.msMatchMedia;
var mql = matchMedia('(max-width: 960px)');
mql.addEventListener('change', checkTitleTag);
checkTitleTag(mql);
}
}
function t542_changeTitleTag(recId, nodeSelector, tagName) {
var rec = document.querySelector(recId);
if (!rec) return;
var titleNode = rec.querySelector(nodeSelector);
if (!titleNode) return;
var attrs = Array.prototype.slice
.call(titleNode.attributes)
.map(function (attr) {
return attr.name + '="' + attr.value + '"';
})
.join(' ');
var replaceTagStart = '<' + tagName + ' ' + attrs + '>';
var replaceTagEnd = '' + tagName + '>';
titleNode.outerHTML = replaceTagStart + titleNode.innerHTML + replaceTagEnd;
}
function t543_init(recId) {
var rec = document.querySelector(recId);
if (!rec) return;
var container = rec.querySelector('.t543');
if (!container) return;
var titleTag = container.getAttribute('data-title-tag');
if (!titleTag) return;
function checkTitleTag(mql) {
if (mql.matches) {
t543_changeTitleTag(recId, '.t543 .t543__title', 'div');
t543_changeTitleTag(recId, '.t543_mobile .t543__title', titleTag);
} else {
t543_changeTitleTag(recId, '.t543 .t543__title', titleTag);
t543_changeTitleTag(recId, '.t543_mobile .t543__title', 'div');
}
}
if ('matchMedia' in window || 'msMatchMedia' in window) {
var matchMedia = window.matchMedia || window.msMatchMedia;
var mql = matchMedia('(max-width: 960px)');
mql.addEventListener('change', checkTitleTag);
checkTitleTag(mql);
}
}
function t543_changeTitleTag(recId, nodeSelector, tagName) {
var rec = document.querySelector(recId);
if (!rec) return;
var titleNode = rec.querySelector(nodeSelector);
if (!titleNode) return;
var attrs = Array.prototype.slice
.call(titleNode.attributes)
.map(function (attr) {
return attr.name + '="' + attr.value + '"';
})
.join(' ');
var replaceTagStart = '<' + tagName + ' ' + attrs + '>';
var replaceTagEnd = '' + tagName + '>';
titleNode.outerHTML = replaceTagStart + titleNode.innerHTML + replaceTagEnd;
}
function t544_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t544');
if (!container) return;
var sizer = rec.querySelector('.t544__sizer');
var sizerStyle = getComputedStyle(sizer, null);
var sizerPaddingLeft = parseInt(sizerStyle.paddingLeft) || 0;
var sizerPaddingRight = parseInt(sizerStyle.paddingRight) || 0;
var sizerPaddingTop = parseInt(sizerStyle.paddingTop) || 0;
var sizerPaddingBottom = parseInt(sizerStyle.paddingBottom) || 0;
var sizerHeight = sizer.clientHeight - (sizerPaddingTop + sizerPaddingBottom);
var sizerWidth = sizer.clientWidth - (sizerPaddingLeft + sizerPaddingRight);
var sizerRatio = sizerWidth / sizerHeight;
var image = rec.querySelector('.t544__blockimg');
var imageStyle = getComputedStyle(image, null);
var imagePaddingLeft = parseInt(imageStyle.paddingLeft) || 0;
var imagePaddingRight = parseInt(imageStyle.paddingRight) || 0;
var imageWidth = image.clientWidth - (imagePaddingLeft + imagePaddingRight);
var maxHeight = imageWidth / sizerRatio;
if (sizerHeight !== window.innerHeight) {
var elements = rec.querySelectorAll('.t544__blockimg, .t544__textwrapper');
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
}
}
function t545_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t-container');
if (!container) return;
var cols = container.querySelectorAll('.t545__col');
var elements = container.querySelectorAll('.t545__textwrapper, .t545__blockimg');
var height = container.getAttribute('data-height');
var maxHeight = 0;
for (var i = 0; i < cols.length; i++) {
var col = cols[i];
var colStyle = getComputedStyle(col, null);
var colPaddingTop = parseInt(col.paddingTop) || 0;
var colPaddingBottom = parseInt(col.paddingBottom) || 0;
var colHeight = col.clientHeight - (colPaddingTop + colPaddingBottom);
if (colHeight > maxHeight) maxHeight = colHeight;
}
if (height > maxHeight) {
maxHeight = height;
}
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
}
function t552_init(recid, ratio) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var recordBlock = rec ? rec.querySelector('.t552') : null;
t552__setHeight(recid, ratio);
window.addEventListener(
'resize',
t_throttle(function () {
t552__setHeight(recid, ratio);
})
);
if (typeof jQuery !== 'undefined') {
$(recordBlock).on('displayChanged', function () {
t552__setHeight(recid, ratio);
});
} else {
if (recordBlock) {
recordBlock.addEventListener('displayChanged', function () {
t552__setHeight(recid, ratio);
});
}
}
}
function t552__setHeight(recid, ratio) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var firstIMG = rec.querySelector('.t552__blockimg');
var images = rec.querySelectorAll('.t552__blockimg');
Array.prototype.forEach.call(images, function (img) {
var calculatedHeight = Math.floor(firstIMG.offsetWidth * ratio);
img.style.height = calculatedHeight + 'px';
});
}
function t554__init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t554');
var mapElement = rec.querySelector('.t554_map');
var card = rec.querySelector('.t554__card');
var generalWrapper = rec.querySelector('.t554__general-wrapper');
if (!wrapperBlock || !mapElement || !card || !generalWrapper) return;
t554__calcHeight(mapElement, card, generalWrapper);
wrapperBlock.addEventListener('displayChanged', function () {
t554__calcHeight(mapElement, card, generalWrapper);
});
}
function t554__calcHeight(mapElement, card, generalWrapper) {
generalWrapper.style.paddingBottom = null;
var paddingTop = parseInt(mapElement.style.paddingTop, 10) || 0;
var paddingBottom = parseInt(mapElement.style.paddingBottom, 10) || 0;
var mapHeight = mapElement.clientHeight - (paddingTop + paddingBottom);
var cardHeight = parseInt(card.offsetHeight, 10);
var cardTop = parseInt((card.style.top || '').replace('px', ''), 10);
if (
generalWrapper &&
mapHeight < cardHeight + cardTop &&
window.innerWidth > 960 &&
generalWrapper.classList.contains('t554__general-wrapper_padding')
) {
var mapPaddingBottom = cardHeight + cardTop - mapHeight;
generalWrapper.style.paddingBottom = mapPaddingBottom + 'px';
}
}
function t557_init(recid, snowtype) {
var snowflakes = [];
snowflakes[0] = document.createElement('img');
snowflakes[0].setAttribute('src', 'https://static.tildacdn.com/img/snowflakes_1.png');
snowflakes[1] = document.createElement('img');
snowflakes[1].setAttribute('src', 'https://static.tildacdn.com/img/snowflakes_2.png');
snowflakes[2] = document.createElement('img');
snowflakes[2].setAttribute('src', 'https://static.tildacdn.com/img/snowflakes_3.png');
var imageCount = snowflakes.length;
var imagesLoaded = 0;
for (var i = 0; i < imageCount; i++) {
snowflakes[i].onload = function () {
imagesLoaded++;
/* Removing image elements from the DOM */
if (this.parentNode !== null) {
this.parentNode.removeChild(this);
}
/* Call the function only if all 3 images are loaded */
if (imagesLoaded === imageCount) {
t557__addSnow(recid, snowtype);
}
};
}
}
function t557__addSnow(recid, snowtype) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var recidArray = rec.querySelector('.t557__snow-recid-holder').getAttribute('data-snow-rec-ids').split(',');
/* If user didn't write an ID, then the first element will be an empty string */
if (recidArray[0] !== '') {
Array.prototype.forEach.call(recidArray, function (recid) {
var currentRec = document.querySelector('#rec' + recid);
if (!currentRec) return;
var recordType = currentRec.getAttribute('data-parenttplid') || currentRec.getAttribute('data-record-type');
switch (recordType) {
case '396':
wrapperType = '.t396__artboard';
break;
case '941':
wrapperType = '.t-container';
break;
default:
wrapperType = '.t-cover';
}
var currentCover = currentRec.querySelector(wrapperType);
if (!currentCover) return;
/* For border T796 block */
if (currentCover.querySelector('.t796__shape-border')) {
currentCover.querySelector('.t796__shape-border').style.zIndex = '1';
}
if (currentCover) {
var snowflakeCover = document.createElement('div');
snowflakeCover.className = snowtype;
currentCover.appendChild(snowflakeCover);
t557__startAnimation(snowtype);
}
});
} else {
var currentCover = document.querySelector('.t-cover');
if (!currentCover) return;
var snowflakeCover = document.createElement('div');
snowflakeCover.className = snowtype;
currentCover.appendChild(snowflakeCover);
t557__startAnimation(snowtype);
}
}
function t557__startAnimation(snowtype) {
/* The function has been separately moved to run the animation only if all checks are passed */
setTimeout(function () {
var allCovers = document.querySelectorAll('.' + snowtype);
Array.prototype.forEach.call(allCovers, function (cover) {
cover.style.opacity = '1';
});
}, 100);
}
function t569_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t569');
if (!container) return;
var lines = rec.querySelectorAll('.t569__line');
var blocksCount = container.getAttribute('data-blocks-count');
var circleCount = 4;
if (blocksCount !== '4') circleCount = 8;
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
var cirqles = line.querySelector('.t569__cirqle');
for (var j = 0; j < circleCount; j++) {
line.insertBefore(cirqles.cloneNode(true), cirqles.nextSibling);
}
}
function t569_update() {
var col = rec.querySelector('.t569__col');
var colWidth = 0;
var bgImg = rec.querySelector('.t569__bgimg');
var bgWidth = 0;
if (col) {
var colStyle = getComputedStyle(col, null);
var colPaddingLeft = parseInt(colStyle.paddingLeft) || 0;
var colPaddingRight = parseInt(colStyle.paddingRight) || 0;
colWidth = col.clientWidth - (colPaddingLeft + colPaddingRight);
}
if (bgImg) bgWidth = bgImg.offsetWidth;
for (var i = 0; i < lines.length; i++) {
lines[i].style.maxWidth = colWidth - bgWidth + 'px';
}
}
if (window.isMobile) {
if (typeof jQuery !== 'undefined') {
$(window).on('orientationchange', t_throttle(t569_update));
} else {
window.addEventListener('orientationchange', t_throttle(t569_update));
}
} else {
window.addEventListener('resize', t_throttle(t569_update));
}
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', t_throttle(t569_update));
} else {
container.addEventListener('displayChanged', t_throttle(t569_update));
}
t569_update();
}
function t570_init(recid) {
if (window.innerWidth > 750) {
t570_setMapHeight(recid);
window.onload = function () {
t570_setMapHeight(recid);
};
window.addEventListener('resize', function () {
t570_setMapHeight(recid);
});
}
}
function t570_setMapHeight(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var isScaled = rec.classList.contains('t-record_scaled');
var mapElement = rec.querySelector('.t-map');
var textElement = rec.querySelector('.t570__col_text');
if (!mapElement || !textElement) return;
var paddingTop = parseInt(textElement.style.paddingTop, 10) || 0;
var paddingBottom = parseInt(textElement.style.paddingBottom, 10) || 0;
var textHeight = textElement.clientHeight - (paddingTop + paddingBottom);
var heightValue = textHeight + 'px';
mapElement.style.height = isScaled ? 'calc(' + heightValue + ' * var(--t-zoom, 1))' : heightValue;
var event = document.createEvent('HTMLEvents');
event.initEvent('sizechange', true, false);
mapElement.dispatchEvent(event);
}
function t576_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t576');
if (!container) return;
var items = rec.querySelectorAll('.t576__item');
var firstItem = items[0];
var lastItem = items[items.length - 1];
for (var i = 0; i < items.length; i++) {
var item = items[i];
var circle = item.querySelector('.t576__circle');
var img = item.querySelector('.t576__img');
var imgHeight = 0;
if (img) imgHeight = img.offsetHeight;
if (circle) circle.style.top = imgHeight + 15 + 'px';
}
if (firstItem) {
var firstLine = firstItem.querySelector('.t576__line');
var firstImg = firstItem.querySelector('.t576__img');
var firstImgHeight = 0;
if (firstImg) firstImgHeight = firstImg.offsetHeight;
if (firstLine) firstLine.style.top = firstImgHeight + 15 + 'px';
}
if (lastItem) {
var lastLine = lastItem.querySelector('.t576__line');
var lastImg = lastItem.querySelector('.t576__img');
var lastImgHeight = 0;
if (lastImg) lastImgHeight = lastImg.offsetHeight;
if (lastLine) lastLine.style.height = lastImgHeight + 20 + 'px';
}
}
function t582_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t582');
if (!container) return;
container.classList.remove('t582__beforeready');
window.addEventListener(
'scroll',
t_throttle(function () {
t582_appearMenu(rec);
}, 200)
);
t582_appearMenu(rec);
}
function t582_appearMenu(rec) {
var container = rec.querySelector('.t582');
var appearOffset = container.getAttribute('data-appearoffset');
var scrollTop = window.pageYOffset;
var windowHeight = window.innerHeight;
var body = document.body;
var html = document.documentElement;
var documentHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
if (window.innerWidth <= 980 && appearOffset) appearOffset = '150';
if (!appearOffset) appearOffset = '0';
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(windowHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (scrollTop >= appearOffset && scrollTop + windowHeight + 70 <= documentHeight) {
if (getComputedStyle(container, null).visibility === 'hidden') {
container.style.bottom = '-100px';
container.style.visibility = 'visible';
t582__fadeIn(container);
t582__animate(container, 'bottom');
}
} else {
container.style.visibility = 'hidden';
container.style.opacity = '0';
}
}
function t582__animate(element, animate) {
var duration = 400;
var start = parseInt(getComputedStyle(element, null)[animate]);
var change = 0 - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
/* easeInOutCubic animation included in the library */
function t582__easeInOutCubic(currentTime, start, change) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t582__animateElement() {
currentTime += increment;
element.style[animate] = t582__easeInOutCubic(currentTime, start, change) + 'px';
if (currentTime < duration) {
setTimeout(t582__animateElement, increment);
} else {
element.style[animate] = '0px';
}
}
t582__animateElement();
}
function t582__fadeIn(el) {
if (el.style.display === 'block') return;
var opacity = 0;
el.style.opacity = opacity;
el.style.display = 'block';
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity += 0.1;
if (opacity >= 1.0) {
clearInterval(timer);
el.style.display = '';
}
}, 40);
}
function t585_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var accordion = rec.querySelectorAll('.t585__accordion')[0];
var headers = rec.querySelectorAll('.t585__header');
var undercuts = rec.querySelectorAll('.ql-undercut');
var isLazy = document.getElementById('allrecords').getAttribute('data-tilda-lazy');
var accordionScroll;
if (accordion) {
accordionScroll = accordion.getAttribute('data-scroll-to-expanded');
accordion = accordion.getAttribute('data-accordion');
} else {
accordion = 'false';
accordionScroll = 'false';
}
for (var i = 0; i < headers.length; i++) {
headers[i].addEventListener('click', function () {
var element = this;
var container = element.nextElementSibling;
var triggerButton = element.querySelector('.t585__trigger-button');
var activeHeight = 0;
var isAccordionDown = false;
// a11y: add attrs on toggle
if (triggerButton) {
var isExpanded = triggerButton.getAttribute('aria-expanded') === 'true';
triggerButton.setAttribute('aria-expanded', !isExpanded);
container.hidden = isExpanded;
}
if (element.classList.contains('t585__opened')) {
element.classList.remove('t585__opened');
t585_accordionHide(container);
} else {
if (accordionScroll === 'true' && accordion === 'true') {
activeHeight = t585__getOldAction(rec);
isAccordionDown = t585__getAccordionPosition(headers, element);
}
if (accordion === 'true') t585_accordionAllHide(headers);
element.classList.add('t585__opened');
container.style.display = 'block';
var height = container.scrollHeight;
container.style.maxHeight = '0px';
var zoom = 1;
if (rec && rec.classList.contains('t-record_scaled')) {
zoom = parseFloat(getComputedStyle(rec).zoom) || 1;
}
setTimeout(function () {
container.style.maxHeight = height + 'px';
if (accordionScroll === 'true') {
activeHeight *= zoom;
t585__calcHeight(element, container, activeHeight, isAccordionDown);
}
}, 0);
}
if (window.lazy === 'y' || isLazy === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
for (var i = 0; i < undercuts.length; i++) {
undercuts[i].addEventListener('click', function (event) {
const target = event.target;
const content = target.closest('.t585__content');
const textBlock = target.closest('.t585__textwrapper');
// вынос в макрозадау для корректной отработки анимации
setTimeout(() => {
content.style.maxHeight = textBlock.scrollHeight + 'px';
}, 0);
});
}
}
function t585_accordionAllHide(headers) {
for (var i = 0; i < headers.length; i++) {
var elementHide = headers[i];
elementHide.classList.remove('t585__opened');
t585_accordionHide(elementHide.nextElementSibling);
}
}
function t585_accordionHide(container) {
if (!container.style.maxHeight) container.style.maxHeight = container.scrollHeight + 'px';
setTimeout(function () {
container.style.maxHeight = '0px';
}, 0);
}
function t585__getOldAction(rec) {
var activeHeader = rec.querySelector('.t585__opened');
var activeHeight = 0;
if (activeHeader) {
var activeContainer = activeHeader.nextElementSibling;
}
if (activeContainer) activeHeight = activeContainer.offsetHeight;
return activeHeight;
}
function t585__getAccordionPosition(headers, element) {
var oldIndex;
var newIndex;
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
if (header.classList.contains('t585__opened')) oldIndex = i;
if (header === element) newIndex = i;
}
return oldIndex < newIndex ? true : false;
}
function t585__calcHeight(element, container, activeHeight, isAccordionDown) {
var windowHeight = window.innerHeight;
var windowScroll = window.scrollY;
var containerHeight = container.scrollHeight;
var accordionHeight = containerHeight + element.offsetHeight;
var elementTopOffset = element.getBoundingClientRect().top + windowScroll;
var target = isAccordionDown ? elementTopOffset - activeHeight : elementTopOffset;
var accordionBottomLine = target + accordionHeight;
var windowBottomLine = windowScroll + windowHeight;
if (target < windowScroll || accordionHeight > windowHeight || accordionBottomLine > windowBottomLine) {
t585__scroll(target);
}
}
function t585__scroll(target) {
var duration = 400;
var start = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0);
var change = target - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
document.body.setAttribute('data-scrollable', 'true');
function t585__easeInOutCubic(currentTime) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t585__animateScroll() {
currentTime += increment;
window.scrollTo(0, t585__easeInOutCubic(currentTime));
if (currentTime < duration) {
setTimeout(t585__animateScroll, increment);
} else {
document.body.removeAttribute('data-scrollable');
}
}
t585__animateScroll();
}
function t590_init(recid, height) {
t590__setHeight(recid, height);
var t590__doResize;
$(window).resize(function () {
clearTimeout(t590__doResize);
t590__doResize = setTimeout(function () {
t590__setHeight(recid);
}, 200);
});
}
function t590__setHeight(recid, height) {
if (height == '' || typeof height == 'undefined') {
var t590__el = $('#rec' + recid);
var t590__div = t590__el.find('#youtubeiframe' + recid);
var t590__height = t590__div.width() * 0.5625;
t590__div.height(t590__height);
t590__div.parent().height(t590__height);
}
}
function t592_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t592');
if (!container) return;
var descriptions = rec.querySelectorAll('.t592__descr');
var maxHeight = 0;
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
for (var i = 0; i < descriptions.length; i++) {
var description = descriptions[i];
var descriptionStyle = getComputedStyle(description, null);
var descriptionPaddingTop = parseInt(descriptionStyle.paddingTop) || 0;
var descriptionPaddingBottom = parseInt(descriptionStyle.paddingBottom) || 0;
var descriptionHeight = description.clientHeight - (descriptionPaddingTop + descriptionPaddingBottom);
if (descriptionHeight > maxHeight) maxHeight = descriptionHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
}
}
function t594_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t595_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t598_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t598');
if (!container) return;
t598_setEqualHeight(recId);
window.addEventListener(
'resize',
t_throttle(function () {
t598_setEqualHeight(recId);
})
);
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', function () {
t598_setEqualHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t598_setEqualHeight(recId);
});
}
}
function t598_setEqualHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t598');
if (!container) return;
var titles = rec.querySelectorAll('.t598__title');
var descriptions = rec.querySelectorAll('.t598__descr');
var prices = rec.querySelectorAll('.t598__price');
var imageWrappers = rec.querySelectorAll('.t598__imgwrapper');
if (titles.length > 0) t598_updateHeight(titles);
if (descriptions.length > 0) t598_updateHeight(descriptions);
if (prices.length > 0) t598_updateHeight(prices);
if (imageWrappers.length > 0) {
t598_updateHeight(imageWrappers);
window.onload = function () {
t598_updateHeight(imageWrappers);
};
}
}
function t598_updateHeight(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t599_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t599');
if (!container) return;
var titles = rec.querySelectorAll('.t599__title');
var descriptions = rec.querySelectorAll('.t599__descr');
var prices = rec.querySelectorAll('.t599__price');
var subtitles = rec.querySelectorAll('.t599__subtitle');
if (titles.length > 0) t599_equalHeight(titles);
if (descriptions.length > 0) t599_equalHeight(descriptions);
if (prices.length > 0) t599_equalHeight(prices);
if (subtitles.length > 0) t599_equalHeight(subtitles);
}
function t599_equalHeight(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t601_init(recid) {
var el = $('#rec' + recid);
var slide1 = el.find('[data-slide-index=1]');
var imagesSlide1 = slide1.find('.t601__img');
imagesSlide1.on('load', function () {
if ($(this).parents('.t-slides__item[data-slide-index=1]').length == 0) {
return;
}
t_slides_setSliderHeight(recid);
});
}
function t602_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var indicator = rec.querySelector('.t602__indicator');
if (!indicator) return;
window.addEventListener(
'scroll',
t_throttle(function () {
var documentHeight = document.body.clientHeight;
var windowScrollTop = document.documentElement.scrollTop;
var windowHeight = window.innerHeight;
var scrollPercent = (windowScrollTop / (documentHeight - windowHeight)) * 100;
indicator.style.width = scrollPercent + '%';
}, 100)
);
}
function t604_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t604_imageHeight(rec);
t604_arrowWidth(rec);
t604_show(rec);
t604_hide(rec);
window.addEventListener(
'resize',
t_throttle(function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
t604_arrowWidth(rec);
})
);
var currentBlock = rec.querySelector('.t604');
if (currentBlock) {
currentBlock.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
t604_arrowWidth(rec);
});
}
}
function t604_show(rec) {
var playBtns = rec.querySelectorAll('.t604__play');
Array.prototype.forEach.call(playBtns, function (play) {
var itemWrap = play.closest('.t604__imgwrapper');
var image = itemWrap.querySelector('.t-slds__bgimg');
var videoWrap = itemWrap.querySelector('.t604__wrap-video');
var videoLazy = videoWrap.querySelector('.t-video-lazyload');
play.addEventListener('click', function (event) {
event.preventDefault();
event.stopPropagation();
t_onFuncLoad('t_video_lazyload__addVideo', function () {
videoWrap.style.display = 'block';
image.style.opacity = 0;
t_video_lazyload__addVideo(videoLazy);
});
});
});
}
function t604_hide(rec) {
var videoWraps = rec.querySelectorAll('.t604__wrap-video');
var videos = rec.querySelectorAll('.t604__wrap-video .t-video-lazyload');
rec.addEventListener('updateSlider', function () {
Array.prototype.forEach.call(videoWraps, function (videoWrap) {
videoWrap.display.style = 'none';
});
Array.prototype.forEach.call(videos, function (video) {
video.innerHTML = '';
});
});
}
function t604_imageHeight(rec) {
var images = rec.querySelectorAll('.t604__separator');
Array.prototype.forEach.call(images, function (image) {
var imgHeight = parseInt(image.getAttribute('data-slider-image-height'));
var imgWidth = parseInt(image.getAttribute('data-slider-image-width'));
var imgRatio = imgHeight / imgWidth;
var imgPadding = imgRatio * 100;
image.style.paddingBottom = imgPadding + '%';
});
}
function t604_arrowWidth(rec) {
var arrows = rec.querySelectorAll('.t-slds__arrow_wrapper');
var slide = rec.querySelector('.t-slds__item_active .t-slds__wrapper');
var slideWidth = slide ? slide.offsetWidth : 0;
if (slide && slideWidth === 0) {
t_onFuncLoad('t_slds_SliderWidth', function () {
setTimeout(function () {
slideWidth = slide.offsetWidth;
t604__updateArrowWidth(slideWidth, arrows);
}, 300);
});
} else {
t604__updateArrowWidth(slideWidth, arrows);
}
}
function t604__updateArrowWidth(slideWidth, arrows) {
var calcArrowWidth = window.innerWidth - slideWidth;
var arrowWidth = window.innerWidth > 960 ? calcArrowWidth / 2 + 'px' : '';
if (arrowWidth !== '0px' && arrowWidth !== '') {
Array.prototype.forEach.call(arrows, function (arrow) {
arrow.style.width = arrowWidth;
});
}
}
function t604__UpdateSliderArrowsHeight(recid) {
var sliderRec = document.getElementById('rec' + recid);
if (!sliderRec) return;
var activeItem = sliderRec.querySelector('.t-slds__item_active');
if (activeItem) {
var separator = activeItem.querySelector('.t604__separator');
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
var offsetForVideoBtns = 0;
var isVideo = activeItem.querySelector('[data-slider-video-type]');
if (isVideo && isMobile) offsetForVideoBtns = 40;
var itemPaddingTop = parseInt(getComputedStyle(activeItem).paddingTop) || 0;
var itemPaddingBottom = parseInt(getComputedStyle(activeItem).paddingBottom) || 0;
var height = itemPaddingTop + itemPaddingBottom - offsetForVideoBtns;
// фикс положения стрелок для нулевого значения высоты активного слайда при инициализации
if (separator && separator.hasAttribute('data-slider-image-height') && activeItem.clientHeight === 0) {
height = parseInt(separator.getAttribute('data-slider-image-height')) - height;
} else {
height = activeItem.clientHeight - height;
}
}
var arrowWrappers = sliderRec.querySelectorAll('.t-slds__arrow_wrapper');
if (height && arrowWrappers.length > 0) {
Array.prototype.forEach.call(arrowWrappers, function (arrowWrapper) {
arrowWrapper.style.height = height + 'px';
var arrow = arrowWrapper.querySelector('.t-slds__arrow');
if (arrow) arrow.style.marginTop = offsetForVideoBtns / 2 + 'px';
});
}
}
function t607_init(recid) {
t_onFuncLoad('t_menu__getSectionByHref', function () {
t607_checkAnchorLinks(recid);
/*fix for iPad, opened in portrait orientation, and then rotate to landscape
* setTimeout need to get corrent viewportWidth after rotating*/
window.addEventListener('orientationchange', function () {
setTimeout(function () {
t607_checkAnchorLinks(recid);
}, 500);
});
});
}
function t607_checkAnchorLinks(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec || (window.innerWidth < 980 && rec.getAttribute('data-menu-inited'))) return;
rec.setAttribute('data-menu-inited', 'y');
var navLinks = rec.querySelectorAll(".t607__list_item a[href*='#']");
navLinks = Array.prototype.filter.call(navLinks, function (navLink) {
return !navLink.classList.contains('tooltipstered');
});
if (navLinks.length) {
t607_catchScroll(navLinks);
}
}
function t607_initKeydownEvent(navLinks, sections) {
document.addEventListener('keydown', function (e) {
var direction = '';
if (e.which === 38 || e.which === 33) direction = 'top';
if (e.which === 40 || e.which === 34) direction = 'bottom';
var activeLink = navLinks.filter(function (el) {
return el.classList.contains('t-active');
});
activeLink = activeLink.length ? activeLink[0] : null;
var activeSection = t_menu__getSectionByHref(activeLink);
var activeSectionID = activeSection ? activeSection.id : '';
var sectionIndexList = sections.map(function (section, i) {
if (direction === 'top' && section.id === activeSectionID) return i + 1;
if (direction === 'bottom' && section.id === activeSectionID) return i - 1;
});
sectionIndexList = sectionIndexList.filter(function (item) {
return typeof item === 'number';
});
var newActiveSection = sections[sectionIndexList[0]];
if (!newActiveSection) return;
var menu = document.querySelector('.t607');
var topOffset = menu ? menu.getAttribute('data-offset-top') || '0' : '0';
var sectionTopOffset = newActiveSection.getAttribute('data-offset-top');
topOffset = parseInt(topOffset, 10);
sectionTopOffset = parseInt(sectionTopOffset, 10);
var topPos = sectionTopOffset - topOffset;
t607_scrollToEl(topPos);
});
}
function t607_catchScroll(navLinks) {
navLinks = Array.prototype.slice.call(navLinks);
var clickedSectionID = null;
var sections = [];
var sectionToNavigationLinkID = {};
var interval = 100;
var lastCall;
var timeoutID;
navLinks = navLinks.reverse();
navLinks.forEach(function (link) {
var currentSection = t_menu__getSectionByHref(link);
if (currentSection && currentSection.id) {
sections.push(currentSection);
sectionToNavigationLinkID[currentSection.id] = link;
}
});
t_menu__updateSectionsOffsets(sections);
sections.sort(function (a, b) {
var firstTopOffset = parseInt(a.getAttribute('data-offset-top'), 10) || 0;
var secondTopOffset = parseInt(b.getAttribute('data-offset-top'), 10) || 0;
return secondTopOffset - firstTopOffset;
});
window.addEventListener(
'resize',
t_throttle(function () {
t_menu__updateSectionsOffsets(sections);
})
);
var menuEls = document.querySelectorAll('.t607');
Array.prototype.forEach.call(menuEls, function (menu) {
menu.addEventListener('displayChanged', function () {
t_menu__updateSectionsOffsets(sections);
});
});
setInterval(function () {
t_menu__updateSectionsOffsets(sections);
}, 5000);
t_menu__highlightNavLinks(navLinks, sections, sectionToNavigationLinkID, clickedSectionID);
t607_initKeydownEvent(navLinks, sections);
navLinks.forEach(function (navLink, i) {
navLink.addEventListener('click', function (e) {
var clickedSection = t_menu__getSectionByHref(navLink);
if (!navLink.classList.contains('tooltipstered') && clickedSection && clickedSection.id) {
navLinks.forEach(function (link, index) {
if (index === i) {
link.classList.add('t-active');
if (!document.querySelector('.t270')) {
e.preventDefault();
var menu = document.querySelector('.t607');
var topOffset = menu ? menu.getAttribute('data-offset-top') || '0' : '0';
var sectionTopOffset = clickedSection.getAttribute('data-offset-top');
topOffset = parseInt(topOffset, 10);
sectionTopOffset = parseInt(sectionTopOffset, 10);
var topPos = sectionTopOffset - topOffset;
t607_scrollToEl(topPos);
}
} else {
link.classList.remove('t-active');
}
});
clickedSectionID = clickedSection.id;
}
});
});
window.addEventListener('scroll', function () {
var dateNow = new Date().getTime();
if (lastCall && dateNow < lastCall + interval) {
clearTimeout(timeoutID);
timeoutID = setTimeout(
function () {
lastCall = dateNow;
clickedSectionID = t_menu__highlightNavLinks(
navLinks,
sections,
sectionToNavigationLinkID,
clickedSectionID
);
},
interval - (dateNow - lastCall)
);
} else {
lastCall = dateNow;
clickedSectionID = t_menu__highlightNavLinks(
navLinks,
sections,
sectionToNavigationLinkID,
clickedSectionID
);
}
});
}
function t607_scrollToEl(elTopPos) {
if (elTopPos === window.pageYOffset) return false;
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
var maxTopPosViewport = scrollHeight - window.innerHeight;
if (elTopPos < 0) elTopPos = 0;
if (elTopPos > maxTopPosViewport) elTopPos = maxTopPosViewport;
var stepDivider = 20;
var duration = 400 / stepDivider;
var difference = window.pageYOffset;
var step = Math.abs(window.pageYOffset - elTopPos) / duration;
var direction = window.pageYOffset > elTopPos ? 'top' : 'bottom';
var timerID = setInterval(function () {
if (direction === 'top') {
difference -= step;
} else {
difference += step;
}
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if ((direction === 'top' && difference <= elTopPos) || (direction === 'bottom' && difference >= elTopPos)) {
document.body.removeAttribute('data-scrollable');
window.scrollTo(0, elTopPos);
clearInterval(timerID);
}
}, stepDivider);
}
function t608_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t608');
if (!container) return;
var bgImages = rec.querySelectorAll('.t608__bgimg');
for (var i = 0; i < bgImages.length; i++) {
var bgImage = bgImages[i];
var bgImageWidth = bgImage.getAttribute('data-image-width');
var bgImageHeight = bgImage.getAttribute('data-image-height');
var ratio = bgImageHeight / bgImageWidth;
var paddingBottom = ratio * 100;
bgImage.style.paddingBottom = paddingBottom + '%';
}
}
function t609_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t609');
if (!container) return;
var descriptions = rec.querySelectorAll('.t609__descr');
var maxHeight = 0;
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
for (var i = 0; i < descriptions.length; i++) {
var description = descriptions[i];
var descriptionStyle = getComputedStyle(description, null);
var descriptionPaddingTop = parseInt(descriptionStyle.paddingTop) || 0;
var descriptionPaddingBottom = parseInt(descriptionStyle.paddingBottom) || 0;
var descriptionHeight = description.clientHeight - (descriptionPaddingTop + descriptionPaddingBottom);
if (descriptionHeight > maxHeight) maxHeight = descriptionHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
}
}
function t609_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t609');
if (!container) return;
var bgImages = rec.querySelectorAll('.t609__bgimg');
for (var i = 0; i < bgImages.length; i++) {
var bgImage = bgImages[i];
var bgImageWidth = bgImage.getAttribute('data-image-width');
var bgImageHeight = bgImage.getAttribute('data-image-height');
var ratio = bgImageHeight / bgImageWidth;
var paddingBottom = ratio * 100;
bgImage.style.paddingBottom = paddingBottom + '%';
}
}
function t615_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t615');
if (!container) return;
var titles = rec.querySelectorAll('.t615__title');
var descriptions = rec.querySelectorAll('.t615__descr');
var prices = rec.querySelectorAll('.t615__price');
var imageWrappers = rec.querySelectorAll('.t615__imgwrapper');
if (titles.length > 0) t615_equalHeight(titles);
if (descriptions.length > 0) t615_equalHeight(descriptions);
if (prices.length > 0) t615_equalHeight(prices);
if (imageWrappers.length > 0) {
t615_equalHeight(imageWrappers);
window.onload = function () {
t615_equalHeight(imageWrappers);
};
}
}
function t615_equalHeight(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t616_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t616');
if (!container) return;
var titles = rec.querySelectorAll('.t616__title');
var texts = rec.querySelectorAll('.t616__text');
var prices = rec.querySelectorAll('.t616__price');
var headers = rec.querySelectorAll('.t616__header');
if (titles.length > 0) t616_equalHeight(titles);
if (texts.length > 0) t616_equalHeight(texts);
if (prices.length > 0) t616_equalHeight(prices);
if (headers.length > 0) t616_equalHeight(headers);
}
function t616_equalHeight(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t635_init(recid, textColor, cursorColor) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var textHolder = rec.querySelector('.t635__textholder');
if (!textHolder) return;
var typingRecIdList = textHolder.getAttribute('data-recid').split(',');
if (typingRecIdList.length === 0) return;
t635_processCursorAndTextColor(rec, typingRecIdList, textColor, cursorColor);
typingRecIdList.forEach(function (animRecId) {
var animBlock = document.getElementById('rec' + animRecId);
if (!animBlock) return;
var screenMin = parseInt(animBlock.getAttribute('data-screen-min'), 10);
var screenMax = parseInt(animBlock.getAttribute('data-screen-max'), 10);
if (isNaN(screenMax) && isNaN(screenMin)) {
t635_startType(animRecId, textHolder);
} else if (!isNaN(screenMax) && !isNaN(screenMin)) {
if (window.innerWidth >= screenMin && window.innerWidth <= screenMax) {
t635_startType(animRecId, textHolder);
}
} else if (!isNaN(screenMax)) {
if (window.innerWidth <= screenMax) {
t635_startType(animRecId, textHolder);
}
} else if (!isNaN(screenMin)) {
if (window.innerWidth >= screenMin) {
t635_startType(animRecId, textHolder);
}
}
});
}
function t635_processCursorAndTextColor(rec, typingRecIdList, textColor, cursorColor) {
if (!textColor && !cursorColor) return;
var style = document.createElement('style');
var styleContent = '';
typingRecIdList.forEach(function (animRecId) {
var animBlock = document.getElementById('rec' + animRecId);
if (!animBlock) return;
if (textColor) styleContent += '#rec' + animRecId + ' .t635__typing-text{color: ' + textColor + ';}';
if (cursorColor) styleContent += '#rec' + animRecId + ' .typed-cursor{color: ' + cursorColor + ';}';
});
if (!styleContent) return;
style.textContent = styleContent;
rec.appendChild(style);
}
function t635_startType(animRecId, textHolder) {
var animTextElems = t635_findAnimElems(animRecId);
if (!animTextElems.length) return;
animTextElems.forEach(function (elem) {
t635_wrapTypingTextSpan(elem);
});
// FIXME: Почему нужен timeout, чтобы были корректные ссылки на элементы с анимацией?
setTimeout(function () {
t635_updateAnimTextLimits(animRecId);
t635_updateAnimTextLimitsOnResize(animRecId);
t_onFuncLoad('Typed', function () {
t635_updateTypingOnFuncLoad(animRecId, textHolder);
});
});
}
function t635_updateTypingOnFuncLoad(animRecId, textHolder) {
var phrasesList = [];
for (var i = 0; i <= 5; i += 1) {
var currentPhrase = textHolder.getAttribute('data-text' + i);
if (typeof currentPhrase === 'string') phrasesList.push(currentPhrase.slice(0, 80));
}
if (!phrasesList.length) return;
var animSpeed = parseInt(textHolder.getAttribute('data-speed'), 10);
var backspaceDelay = parseInt(textHolder.getAttribute('data-backspacing-delay'), 10);
var isTypingLoopDisabled = textHolder.getAttribute('data-loop') === 'false';
var animBlock = document.getElementById('rec' + animRecId);
var animatedTextElems = animBlock.querySelectorAll('.t635__typing-text');
if (!animatedTextElems.length) return;
var isZeroBlock = !!animBlock.querySelector('.t396');
animatedTextElems.forEach(function (animatedText) {
var currentStateObj = t635_getCurrentScrollStateObj(animatedText);
var zeroElem = animatedText.closest('.t396__elem');
var isSBSAnimation = zeroElem && zeroElem.getAttribute('data-animate-sbs-event');
var typedInstance = t635_animateText(
animatedText,
phrasesList,
animSpeed,
isTypingLoopDisabled,
backspaceDelay
);
if (
currentStateObj.animTextBottom < currentStateObj.windowTop ||
currentStateObj.animTextTop > currentStateObj.windowBottom
) {
t635_updatetypedInstance(typedInstance, 'stop', true);
}
/* элемент пошаговой анимации в момент инициализации скрипта,
может находиться за пределами вьюпорта пользователя,
из-за этого не сработает IntersectionObserver
*/
if ('IntersectionObserver' in window && !isSBSAnimation) {
var observer = new IntersectionObserver(function (entries) {
entries.forEach(function (entry) {
t635_processObservedTyping(entry, isTypingLoopDisabled, typedInstance);
});
});
t635_processIntersectionObserver(function () {
observer.observe(animatedText);
});
} else {
var timerID = 0;
window.addEventListener('scroll', function () {
if (timerID) return;
timerID = setTimeout(function () {
var currentStateObj = t635_getCurrentScrollStateObj(animatedText);
var isOutside = currentStateObj.animTextBottom < currentStateObj.windowTop;
if (!isOutside) isOutside = currentStateObj.animTextTop > currentStateObj.windowBottom;
if (!isTypingLoopDisabled && isOutside) {
t635_updatetypedInstance(typedInstance, 'stop', true);
} else {
t635_updatetypedInstance(typedInstance, 'start', false);
}
clearTimeout(timerID);
timerID = 0;
}, 700);
});
}
});
/**
* T635 changes markup by affecting the size and positioning of elements.
* If the T635 effect is used in ZeroBlock, it can cause errors. To avoid this,
* after the main work of T635 is finished, trigger animationInited ZeroBlock
* to take actual sizes and positions
*/
if (isZeroBlock) {
var event = document.createEvent('HTMLEvents');
event.initEvent('animationInited', true, false);
window.dispatchEvent(event);
}
}
function t635_updatetypedInstance(typedInstance, action, resetFlag) {
if (resetFlag && action === 'stop') typedInstance.reset();
typedInstance[action]();
}
function t635_getCurrentScrollStateObj(animatedText) {
var animTextTop = animatedText.getAttribute('data-top-limit');
var animTextBottom = animatedText.getAttribute('data-bottom-limit');
var windowTop = window.pageYOffset;
var windowBottom = windowTop + window.innerHeight;
return {
animTextTop: animTextTop,
animTextBottom: animTextBottom,
windowTop: windowTop,
windowBottom: windowBottom,
};
}
function t635_processIntersectionObserver(callback) {
var recT809 = document.querySelector('[data-record-type="809"], [data-parenttplid="809"]');
if (!recT809) {
callback();
} else {
if (recT809.getAttribute('data-replacement-completed') === 'yes') {
callback();
} else {
document.addEventListener('replacingCompletedT809', function () {
callback();
});
}
}
}
function t635_processObservedTyping(entry, isTypingLoopDisabled, typedInstance) {
if (!entry.isIntersecting && isTypingLoopDisabled) return;
if (entry.isIntersecting) {
var isTypeInited = Boolean(entry.target.typeInited);
if (isTypeInited) {
t635_updatetypedInstance(typedInstance, 'start', false);
} else {
setTimeout(function () {
t635_updatetypedInstance(typedInstance, 'start', false);
entry.target.typeInited = true;
}, 1000);
}
} else if (!isTypingLoopDisabled) {
t635_updatetypedInstance(typedInstance, 'stop', false);
}
}
function t635_findElementsWithAnimation(root) {
var result = [];
// Создаем итератор, который собирает текстовые ноды, в которых используется |
var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {
acceptNode(node) {
if (node.textContent.includes('|')) {
return NodeFilter.FILTER_ACCEPT;
}
return NodeFilter.FILTER_REJECT;
},
});
// Проходим итератором по текстовым нодам и собираем их обертки, если они подходят.
while (walker.nextNode()) {
var node = walker.currentNode;
if (!['SCRIPT', 'STYLE'].includes(node.parentElement.tagName)) {
result.push(node.parentElement);
}
}
// На всякий случай удаляем повторяющиеся элементы
return Array.from(new Set(result));
}
function t635_wrapTypingTextSpan(animText) {
var animTextHtml = animText.innerHTML;
var animTextSplitted = animTextHtml.split('|');
animText.innerHTML = animTextSplitted[0] + ' ' + animTextSplitted[1];
}
function t635_findAnimElems(animRecId) {
var animBlock = document.getElementById('rec' + animRecId);
if (!animBlock) return [];
var elementsWithAnimation = t635_findElementsWithAnimation(animBlock);
return elementsWithAnimation;
}
function t635_updateAnimTextLimits(animRecId) {
var animBlock = document.getElementById('rec' + animRecId);
var animTextElems = animBlock ? animBlock.querySelectorAll('.t635__typing-text') : [];
if (!animTextElems.length) return;
animTextElems.forEach(function (elem) {
var topLimit = elem.getBoundingClientRect().top + window.pageYOffset;
var bottomLimit = elem.getBoundingClientRect().top + window.pageYOffset + animBlock.clientHeight;
elem.setAttribute('data-top-limit', topLimit.toString());
elem.setAttribute('data-bottom-limit', bottomLimit.toString());
});
}
function t635_updateAnimTextLimitsOnResize(animRecId) {
var timerID = 0;
var isTouchDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (!isTouchDevice) isTouchDevice = 'ontouchend' in document && navigator.userAgent.indexOf('AppleWebKit') !== -1;
window.addEventListener(isTouchDevice ? 'orientationchange' : 'resize', function () {
if (timerID) return;
timerID = setTimeout(function () {
t635_updateAnimTextLimits(animRecId);
clearTimeout(timerID);
timerID = 0;
}, 600);
});
}
function t635_animateText(element, phrasesList, animSpeed, isTypingLoopDisabled, backspaceDelay) {
if (!animSpeed || animSpeed < 0) animSpeed = 40;
if (!backspaceDelay || backspaceDelay < 0) backspaceDelay = 800;
return new Typed(element, {
strings: phrasesList,
typeSpeed: animSpeed,
startDelay: 600,
backDelay: backspaceDelay,
loop: !isTypingLoopDisabled,
});
}
function t649_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t650_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t651_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t651');
if (!container) return;
if (window.isMobile && !window.isTablet) {
var phone = rec.querySelector('.t651__phone');
if (!phone) return;
var phoneText = phone.textContent.replace(/\s+/g, '');
var button = rec.querySelector('.t651__btn');
var buttonWrapper = rec.querySelector('.t651__btn_wrapper');
var buttonText = rec.querySelector('.t651__btn-text');
button.addEventListener('click', function () {
window.location.href = 'tel:' + phoneText;
if (buttonWrapper) buttonWrapper.classList.remove('t651__btn_animate');
if (buttonText) buttonText.style.display = 'none';
});
return;
}
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
var popup = rec.querySelector('.t651__popup');
var analitics = popup.getAttribute('data-track-popup');
var hook = 'TildaCallBackWidget' + recId;
var button = rec.querySelector('.t651__btn');
button.addEventListener('click', function (event) {
if (button.classList.contains('t651__btn_active')) {
t651_closePopup();
return;
}
container.classList.add('t651_active');
button.classList.add('t651__btn_active');
t651_showPopup(recId);
event.preventDefault();
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, hook);
}
});
}
function t651_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var popup = rec.querySelector('.t651__popup');
if (!popup) return;
var buttonWrapper = rec.querySelector('.t651__btn_wrapper');
var buttonText = rec.querySelector('.t651__btn-text');
if (buttonWrapper) buttonWrapper.classList.remove('t651__btn_animate');
if (buttonText) buttonText.style.display = 'none';
popup.style.display = 'block';
setTimeout(function () {
popup.classList.add('t651__popup_show');
}, 50);
document.addEventListener('keydown', t651_escClosePopup);
}
function t651_escClosePopup(event) {
if (event.key === 'Escape') t651_closePopup();
}
function t651_closePopup() {
var blocks = document.querySelectorAll('.t651.t651_active');
var buttons = document.querySelectorAll('.t651__btn.t651__btn_active');
var popups = document.querySelectorAll('.t651__popup.t651__popup_show');
for (var i = 0; i < blocks.length; i++) {
blocks[i].classList.remove('t651_active');
}
for (var i = 0; i < buttons.length; i++) {
buttons[i].classList.remove('t651__btn_active');
}
for (var i = 0; i < popups.length; i++) {
popups[i].classList.remove('t651__popup_show');
}
setTimeout(function () {
var popupHide = document.querySelectorAll('.t651__popup:not(.t651__popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t651_escClosePopup);
}
function t652_initPopup(recid) {
$('#rec' + recid).attr('data-animationappear', 'off');
$('#rec' + recid).css('opacity', '1');
var el = $('#rec' + recid).find('.t652__popup');
var analitics = el.attr('data-track-popup');
var obj = $('#rec' + recid + ' .t652__btn');
obj.click(function (e) {
if (obj.hasClass('t652__btn_active')) {
t652_closePopup();
return;
}
obj.addClass('t652__btn_active');
$('#rec' + recid + ' .t652').addClass('t652_active');
t652_showPopup(recid);
e.preventDefault();
if (analitics == 'yes') {
t652_sendPopupEventToStatistics(hook);
}
});
}
function t652_showPopup(recid) {
var el = $('#rec' + recid);
var popup = el.find('.t652__popup');
$('.t652__btn_wrapper').removeClass('t652__btn_animate');
$('.t652__btn-text').css('display', 'none');
popup.css('display', 'block');
setTimeout(function () {
popup.addClass('t652__popup_show');
}, 50);
el.find('.t652__mobile-icon-close').click(function (e) {
t652_closePopup();
});
$(document).keydown(function (e) {
if (e.keyCode == 27) {
t652_closePopup();
}
});
}
function t652_closePopup() {
$('.t652').removeClass('t652_active');
$('.t652__btn').removeClass('t652__btn_active');
$('.t652__popup').removeClass('t652__popup_show');
setTimeout(function () {
$('.t652__popup').not('.t652__popup_show').css('display', 'none');
}, 300);
}
function t652_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) == '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (window.Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t653_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t653');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
var popup = rec.querySelector('.t653__popup');
var analitics = popup.getAttribute('data-track-popup');
var hook = 'TildaSendMessageWidget' + recId;
var button = rec.querySelector('.t653__btn');
var closeButton = popup.querySelector('.t653__mobile-icon-close');
button.addEventListener('click', function (event) {
if (button.classList.contains('t653__btn_active')) {
t653_closePopup();
return;
}
button.classList.add('t653__btn_active');
container.classList.add('t653_active');
t653_showPopup(recId);
event.preventDefault();
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, hook);
}
});
closeButton.addEventListener('click', t653_closePopup);
}
function t653_lockScroll() {
var documentBody = document.body;
if (!documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop =
typeof window.pageYOffset !== 'undefined'
? window.pageYOffset
: (document.documentElement || documentBody.parentNode || documentBody).scrollTop;
documentBody.classList.add('t-body_scroll-locked');
documentBody.style.top = '-' + bodyScrollTop + 'px';
documentBody.setAttribute('data-popup-scrolltop', bodyScrollTop);
}
}
function t653_unlockScroll() {
var documentBody = document.body;
if (documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop = documentBody.getAttribute('data-popup-scrolltop');
documentBody.classList.remove('t-body_scroll-locked');
documentBody.style.top = '';
documentBody.removeAttribute('data-popup-scrolltop');
window.scrollTo(0, parseInt(bodyScrollTop));
}
}
function t653_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t653');
if (!container) return;
var popup = rec.querySelector('.t653__popup');
var buttonWrapper = rec.querySelector('.t653__btn_wrapper');
var buttonText = rec.querySelector('.t653__btn-text');
if (buttonWrapper) buttonWrapper.classList.remove('t651__btn_animate');
if (buttonText) buttonText.style.display = 'none';
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
setTimeout(function () {
t653_lockScroll();
}, 500);
}
popup.style.display = 'block';
setTimeout(function () {
popup.classList.add('t653__popup_show');
}, 50);
document.addEventListener('keydown', t653_escClosePopup);
}
function t653_escClosePopup(event) {
if (event.key === 'Escape') t653_closePopup();
}
function t653_closePopup() {
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
t653_unlockScroll();
}
var containers = document.querySelectorAll('.t653');
var buttons = document.querySelectorAll('.t653__btn');
var popups = document.querySelectorAll('.t653__popup');
for (var i = 0; i < containers.length; i++) {
containers[i].classList.remove('t653_active');
}
for (var i = 0; i < buttons.length; i++) {
buttons[i].classList.remove('t653__btn_active');
}
for (var i = 0; i < popups.length; i++) {
popups[i].classList.remove('t653__popup_show');
}
setTimeout(function () {
var popupHide = document.querySelectorAll('.t653__popup:not(.t653__popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t653_escClosePopup);
}
function t654_showPanel(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t654');
if (!container) return;
var buttonClose = rec.querySelector('.t654__icon-close');
var storageItem = container.getAttribute('data-storage-item');
var delta = container.getAttribute('data-storage-delta') * 86400;
var today = Math.floor(Date.now() / 1000);
var lastOpen = null;
var currentDelta;
try {
lastOpen = localStorage.getItem(storageItem);
currentDelta = today - lastOpen;
} catch (e) {
console.log('Your web browser does not support localStorage.');
}
if (lastOpen === null || currentDelta >= delta) {
container.classList.remove('t654_closed');
}
buttonClose.addEventListener('click', function (event) {
container.classList.add('t654_closed');
if (delta) {
try {
localStorage.setItem(storageItem, Math.floor(Date.now() / 1000));
} catch (e) {
console.log('Your web browser does not support localStorage.');
}
}
event.preventDefault();
});
if (window.innerWidth > 980) {
window.addEventListener(
'scroll',
t_throttle(function () {
if (
container.classList.contains('t654_bottom') &&
document.getElementById('tildacopy') &&
window.innerHeight + window.scrollY >= document.body.offsetHeight - 70
) {
container.style.visibility = 'hidden';
} else {
var appearOffset = container.getAttribute('data-appearoffset');
if (!appearOffset) {
container.style.visibility = 'visible';
}
}
})
);
}
}
function t654_setBg(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t654');
if (!container) return;
if (window.innerWidth > 980) {
if (container.getAttribute('data-bgcolor-setbyscript') === 'yes') {
container.style.backgroundColor = container.getAttribute('data-bgcolor-rgba');
}
} else {
container.style.backgroundColor = container.getAttribute('data-bgcolor-hex');
container.setAttribute('data-bgcolor-setbyscript', 'yes');
}
}
function t654_appearMenu(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t654');
if (!container) return;
if (window.innerWidth > 980) {
var appearOffset = container.getAttribute('data-appearoffset');
if (appearOffset) {
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (window.pageYOffset >= appearOffset) {
if (getComputedStyle(container, null).visibility === 'hidden') {
if (container.classList.contains('t654_top')) {
container.style.top = '-50px';
container.style.visibility = 'visible';
t654__fadeIn(container);
t654__animate(container, 'top');
} else {
container.style.bottom = '-50px';
container.style.visibility = 'visible';
t654__fadeIn(container);
t654__animate(container, 'bottom');
}
}
} else {
container.style.visibility = 'hidden';
}
}
}
}
function t654_changebgopacitymenu(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t654');
if (!container) return;
if (window.innerWidth > 980) {
var bgColor = container.getAttribute('data-bgcolor-rgba');
var bgColorAfterScroll = container.getAttribute('data-bgcolor-rgba-afterscroll');
var bgOpacity = container.getAttribute('data-bgopacity');
var bgOpacityTwo = container.getAttribute('data-bgopacity-two');
var menuShadowOpacity = parseInt(container.getAttribute('data-menushadow'), 10) || 0;
menuShadowOpacity /= 100;
var menuShadowCSS = container.getAttribute('data-menushadow-css');
container.style.backgroundColor = window.pageYOffset > 20 ? bgColorAfterScroll : bgColor;
if (
(window.pageYOffset > 20 && bgOpacityTwo === '0') ||
(window.pageYOffset <= 20 && (bgOpacity === '0.0' || bgOpacity === '0')) ||
(!menuShadowOpacity && !menuShadowCSS)
) {
container.style.boxShadow = 'none';
} else if (menuShadowCSS) {
container.style.boxShadow = menuShadowCSS;
} else if (menuShadowOpacity) {
container.style.boxShadow = '0px 1px 3px rgba(0,0,0,' + menuShadowOpacity + ')';
}
}
}
function t654__fadeIn(el) {
if (el.style.display === 'block') return;
var opacity = 0;
el.style.opacity = opacity;
el.style.display = 'block';
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity += 0.1;
if (opacity >= 1.0) {
clearInterval(timer);
el.style.display = '';
}
}, 20);
}
function t654__animate(element, animate) {
var duration = 200;
var start = parseInt(getComputedStyle(element, null)[animate]);
var change = 0 - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
/* easeInOutCubic animation included in the library */
function t654__easeInOutCubic(currentTime, start, change) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t654__animateScroll() {
currentTime += increment;
element.style[animate] = t654__easeInOutCubic(currentTime, start, change) + 'px';
if (currentTime < duration) {
setTimeout(t654__animateScroll, increment);
} else {
element.style[animate] = '0px';
}
}
t654__animateScroll();
}
function t657_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t657');
var storageItem = wrapperBlock.getAttribute('data-storage-item');
var lastOpen;
try {
lastOpen = localStorage.getItem(storageItem);
} catch (error) {
console.log('Your web browser does not support localStorage. Error status: ', error);
}
if (!lastOpen) {
wrapperBlock.classList.remove('t657_closed');
}
wrapperBlock.addEventListener('click', function (event) {
if (event.target && event.target.closest('.t657__btn, .t657__close-button')) {
wrapperBlock.classList.add('t657_closed');
try {
localStorage.setItem(storageItem, Math.floor(Date.now() / 1000));
} catch (error) {
console.log('Your web browser does not support localStorage. Error status: ', error);
}
event.preventDefault();
}
});
}
function t658_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.classList.remove('r_hidden');
rec.classList.remove('r_anim');
var wrapperBlock = rec.querySelector('.t658');
var confirmPopup = rec.querySelector('.t658__popup_confirm');
var denyPopup = rec.querySelector('.t658__popup_deny');
var yesButton = rec.querySelector('.t658__btn_yes');
var noButton = rec.querySelector('.t658__btn_no');
var storageItem = wrapperBlock.getAttribute('data-storage-item');
var lastOpen;
try {
lastOpen = localStorage.getItem(storageItem);
} catch (e) {
console.log('Your web browser does not support localStorage.');
}
if (!lastOpen || wrapperBlock.getAttribute('data-unpublish')) {
wrapperBlock.style.display = 'block';
setTimeout(function () {
wrapperBlock.classList.remove('t658_closed');
}, 500);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.querySelector('body').classList.add('t658__body_popupshowed');
}
if (yesButton) {
yesButton.addEventListener('click', function (e) {
wrapperBlock.classList.add('t658_closed');
setTimeout(function () {
wrapperBlock.style.display = 'none';
}, 300);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.querySelector('body').classList.remove('t658__body_popupshowed');
try {
localStorage.setItem(storageItem, Math.floor(Date.now() / 1000));
} catch (e) {
console.log('Your web browser does not support localStorage.');
}
e.preventDefault();
});
}
if (noButton) {
noButton.addEventListener('click', function (e) {
setTimeout(function () {
confirmPopup.style.display = 'none';
denyPopup.style.display = 'block';
}, 300);
e.preventDefault();
});
}
}
function t668_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t668');
if (!container) return;
var accordion = rec.querySelectorAll('.t668__accordion')[0];
var undercuts = rec.querySelectorAll('.ql-undercut');
var headers = rec.querySelectorAll('.t668__header');
var isLazy = document.getElementById('allrecords').getAttribute('data-tilda-lazy');
var content = rec.querySelector('.t668__content');
if (!content) return;
var accordionScroll;
var contentStyle = window.getComputedStyle(content, null);
if (!contentStyle && typeof contentStyle !== 'object') return;
if (accordion) {
accordionScroll = accordion.getAttribute('data-scroll-to-expanded');
accordion = accordion.getAttribute('data-accordion');
} else {
accordionScroll = 'false';
accordion = 'false';
}
for (var i = 0; i < headers.length; i++) {
headers[i].addEventListener('click', function () {
var element = this;
var container = element.nextElementSibling;
var triggerButton = element.querySelector('.t668__trigger-button');
var activeHeight = 0;
var isAccordionDown = false;
// a11y: add attrs on toggle
if (triggerButton) {
var isExpanded = triggerButton.getAttribute('aria-expanded') === 'true';
triggerButton.setAttribute('aria-expanded', !isExpanded);
container.hidden = isExpanded;
}
if (element.classList.contains('t668__opened')) {
element.classList.remove('t668__opened');
t668_accordionHide(container);
} else {
if (accordionScroll === 'true' && accordion === 'true') {
activeHeight = t668__getOldAction(rec);
isAccordionDown = t668__getAccordionPosition(headers, element);
}
if (accordion === 'true') {
t668_accordionAllHide(headers);
}
element.classList.add('t668__opened');
container.style.display = 'block';
var paddingBottom = Number(contentStyle.paddingBottom.replace('px', ''));
var height = container.scrollHeight + paddingBottom;
container.style.maxHeight = '0px';
var zoom = 1;
if (rec && rec.classList.contains('t-record_scaled')) {
zoom = parseFloat(getComputedStyle(rec).zoom) || 1;
}
setTimeout(function () {
container.style.maxHeight = height + 'px';
if (accordionScroll === 'true') {
activeHeight *= zoom;
t668__calcHeight(element, container, activeHeight, isAccordionDown);
}
}, 0);
}
if (window.lazy === 'y' || isLazy === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
for (var i = 0; i < undercuts.length; i++) {
undercuts[i].addEventListener('click', function (event) {
const target = event.target;
const content = target.closest('.t668__content');
const textBlock = target.closest('.t668__textwrapper');
// вынос в макрозадау для корректной отработки анимации
setTimeout(() => {
content.style.maxHeight = textBlock.scrollHeight + 'px';
}, 0);
});
}
}
function t668_accordionAllHide(headers) {
for (var i = 0; i < headers.length; i++) {
var elementHide = headers[i];
elementHide.classList.remove('t668__opened');
t668_accordionHide(elementHide.nextElementSibling);
}
}
function t668_accordionHide(container) {
if (!container.style.maxHeight) container.style.maxHeight = container.scrollHeight + 'px';
setTimeout(function () {
container.style.maxHeight = 0;
}, 0);
}
function t668__getOldAction(rec) {
var activeHeader = rec.querySelector('.t668__opened');
var activeHeight = 0;
if (activeHeader) {
var activeContainer = activeHeader.nextElementSibling;
}
if (activeContainer) activeHeight = activeContainer.offsetHeight;
return activeHeight;
}
function t668__getAccordionPosition(headers, element) {
var oldIndex;
var newIndex;
for (var i = 0; i < headers.length; i++) {
var header = headers[i];
if (header.classList.contains('t668__opened')) oldIndex = i;
if (header === element) newIndex = i;
}
return oldIndex < newIndex ? true : false;
}
function t668__calcHeight(element, container, activeHeight, isAccordionDown) {
var windowHeight = window.innerHeight;
var windowScroll = window.scrollY;
var containerHeight = container.scrollHeight;
var accordionHeight = containerHeight + element.offsetHeight;
var elementTopOffset = element.getBoundingClientRect().top + windowScroll;
var target = isAccordionDown ? elementTopOffset - activeHeight : elementTopOffset;
var accordionBottomLine = target + accordionHeight;
var windowBottomLine = windowScroll + windowHeight;
if (target < windowScroll || accordionHeight > windowHeight || accordionBottomLine > windowBottomLine) {
t668__scroll(target);
}
}
function t668__scroll(target) {
var duration = 400;
var start = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0);
var change = target - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
document.body.setAttribute('data-scrollable', 'true');
/* easeInOutCubic animation included in the library */
function t668__easeInOutCubic(currentTime) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t668__animateScroll() {
currentTime += increment;
window.scrollTo(0, t668__easeInOutCubic(currentTime));
if (currentTime < duration) {
setTimeout(t668__animateScroll, increment);
} else {
document.body.removeAttribute('data-scrollable');
}
}
t668__animateScroll();
}
function t670_init(recid, isEditMode) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var image = rec.querySelector('.t-img');
if (image) {
if (image.complete) {
t670_addImageEvents(recid, isEditMode);
} else {
image.addEventListener('load', function () {
t670_addImageEvents(recid, isEditMode);
});
image.addEventListener('error', function () {
t670_addImageEvents(recid, isEditMode);
});
}
} else {
t670_addImageEvents(recid, isEditMode);
}
}
const t670_postMessages = {
youtube: {
pause: '{"event":"command","func":"pauseVideo","args":""}',
play: '{"event":"command","func":"playVideo","args":""}',
},
rutube: {
pause: '{"type":"player:pause","data":"{}"}',
play: '{"type":"player:play","data":"{}"}',
},
vimeo: {
pause: '{"method":"pause","value":"true"}',
play: '{"method":"play","value":"true"}',
},
};
function t670_addImageEvents(recid, isEditMode) {
var rec = document.getElementById('rec' + recid);
t670_imageHeight(rec);
t670_show(rec);
t670_hide(rec);
t670_addArrowHandlers(rec);
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
if (isEditMode) {
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
var wrapper = rec.querySelector('.t670');
if (wrapper) {
wrapper.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
t_onFuncLoad('t_slds_positionArrows', function () {
t_slds_positionArrows(recid);
});
});
}
}
function t670_handleRutube(videoWrap, videoLazy) {
var videoId = videoLazy.getAttribute('data-videolazy-id');
if (videoId) videoId = videoId.replace(/[^\w-]/g, '');
if (!videoId) return;
var videoHash = videoLazy.getAttribute('data-videolazy-hash');
if (videoHash) videoHash = videoHash.replace(/[^\w-]/g, '');
// Проверяем, есть ли уже iframe (не пересоздаём если есть)
var existingIframe = videoWrap.querySelector('iframe.t670__rutube-iframe');
if (!existingIframe) {
// Создаём iframe только если его нет
var src = 'https://rutube.ru/play/embed/' + videoId + '/?autoplay=1&muted=1&playsinline=1';
if (videoHash) src += '&p=' + videoHash;
// Очищаем контейнер перед добавлением iframe
videoWrap.innerHTML = '';
var iframe = document.createElement('iframe');
iframe.className = 't670__rutube-iframe';
iframe.setAttribute('allow', 'autoplay; fullscreen');
iframe.setAttribute('allowfullscreen', '');
iframe.setAttribute('frameborder', '0');
iframe.style.width = '100%';
iframe.style.height = '100%';
iframe.style.display = 'block';
iframe.src = src;
videoWrap.appendChild(iframe);
} else {
try {
existingIframe.contentWindow.postMessage(t670_postMessages.rutube.play, '*');
} catch (e) {
console.warn('Failed to send play message to Rutube iframe:', e);
}
}
}
function t670_show(rec) {
var playBtns = rec.querySelectorAll('.t670__play');
Array.prototype.forEach.call(playBtns, function (play) {
var itemWrap = play.closest('.t670__imgwrapper');
var image = itemWrap.querySelector('.t-slds__bgimg');
var videoWrap = itemWrap.querySelector('.t670__wrap-video');
var videoLazy = videoWrap.querySelector('.t-video-lazyload');
play.addEventListener('click', function (event) {
event.preventDefault();
videoWrap.style.display = 'block';
image.style.opacity = 0;
var type = videoLazy.getAttribute('data-videolazy-type');
// Специальная обработка Rutube: генерируем iframe вручную, чтобы не показывать стартовый экран
if (type === 'rutube') {
t670_handleRutube(videoWrap, videoLazy);
} else {
t_onFuncLoad('t_video_lazyload__addVideo', function () {
t_video_lazyload__addVideo(videoLazy);
});
}
});
});
}
function t670_pauseVideo(videoWrap) {
if (!videoWrap) return;
// ставим на паузу iframe
var iframe = videoWrap.querySelector('iframe');
if (iframe && iframe.contentWindow && iframe.src) {
var videoSRC = iframe.src;
// YouTube
if (videoSRC.indexOf('&enablejsapi=1') !== -1) {
iframe.contentWindow.postMessage(t670_postMessages.youtube.pause, '*');
}
// Rutube
if (videoSRC.indexOf('rutube') !== -1) {
iframe.contentWindow.postMessage(t670_postMessages.rutube.pause, '*');
}
// Vimeo
if (videoSRC.indexOf('vimeo') !== -1 && videoSRC.indexOf('&api=1') !== -1) {
iframe.contentWindow.postMessage(t670_postMessages.vimeo.pause, '*');
}
}
// Для обычных video тегов
var videoEl = videoWrap.querySelector('video');
if (videoEl && typeof videoEl.pause === 'function') {
try {
videoEl.pause();
} catch (e) {
console.warn('t670: Failed to pause video element:', e);
}
}
}
function t670_hide(rec) {
var videoWraps = rec.querySelectorAll('.t670__wrap-video');
rec.addEventListener('updateSlider', function () {
Array.prototype.forEach.call(videoWraps, function (videoWrap) {
t670_pauseVideo(videoWrap);
// Скрываем контейнер только если в нем нет iframe (видео не запускалось)
var hasIframe = videoWrap.querySelector('iframe');
if (!hasIframe) {
videoWrap.style.display = 'none';
}
});
});
}
function t670_addArrowHandlers(rec) {
if (!rec) return;
// Предотвращаем множественное добавление обработчиков
if (rec.t670ArrowsInitialized) {
return;
}
rec.t670ArrowsInitialized = 'true';
rec.addEventListener('click', function (event) {
var arrow = event.target.closest('.t-slds__arrow_wrapper');
if (!arrow) return;
t670_pauseAllVideos(rec);
});
}
function t670_pauseAllVideos(rec) {
if (!rec) return;
var videoWraps = rec.querySelectorAll('.t670__wrap-video');
Array.prototype.forEach.call(videoWraps, function (videoWrap) {
t670_pauseVideo(videoWrap);
// Скрываем контейнер только если в нем нет iframe (видео не запускалось)
var hasIframe = videoWrap.querySelector('iframe');
if (!hasIframe) {
videoWrap.style.display = 'none';
// Возвращаем фоновое изображение только если видео не было запущено
var imgWrapper = videoWrap.closest('.t670__imgwrapper');
if (imgWrapper) {
var bgImg = imgWrapper.querySelector('.t-slds__bgimg');
if (bgImg) {
bgImg.style.opacity = 1;
}
}
}
});
}
function t670_imageHeight(rec) {
var images = rec.querySelectorAll('.t670__separator');
Array.prototype.forEach.call(images, function (img) {
var width = parseInt(img.getAttribute('data-slider-image-width')) || 0;
var height = parseInt(img.getAttribute('data-slider-image-height')) || 0;
var ratio = height / width;
var padding = ratio * 100;
img.style.paddingBottom = padding + '%';
});
}
function t671_init(recid) {
var el = $('#rec' + recid);
var c = Date.now();
if (typeof window.t671_obj == 'object') {
var obj = window.t671_obj;
t671_process(obj, el);
} else {
$.ajax({
type: 'GET',
url: '/pages.json?c=' + c,
dataType: 'text',
success: function (data) {
if (data != '') {
var obj = jQuery.parseJSON(data);
if (typeof obj == 'object') {
window.t671_obj = obj;
t671_process(obj, el);
}
}
},
error: function () {},
timeout: 1000 * 10,
});
}
}
function t671_process(obj, el) {
var projectid = $('#allrecords').attr('data-tilda-project-id');
var pageid = $('#allrecords').attr('data-tilda-page-id');
var reverse = el.find('.t671__container').attr('data-reverse');
if (reverse == 'yes') {
obj = obj.reverse();
}
var title_style = el.find('.t671').attr('data-title-style');
var descr_style = el.find('.t671').attr('data-descr-style');
var date_style = el.find('.t671').attr('data-date-style');
var date_noshow = el.find('.t671').attr('data-date-noshow');
var img_noshow = el.find('.t671').attr('data-img-noshow');
$.each(obj, function (key, page) {
if (page.published === '' || page.is_index === 'y') return;
var str = '';
var url = '/page' + page.pageid + '.html';
if (page.alias != '') {
url = '/' + page.alias + '';
}
var date = page.date;
if (date != '') {
date = date.substring(0, 10);
}
str +=
'';
str += '';
str +=
'
';
if (page.img != '' && img_noshow != 'on') {
str +=
'
';
}
str += '
' + page.title + '
';
if (page.descr != '') {
str +=
'
' +
page.descr +
'
';
}
if (date != '' && date_noshow != 'on') {
str +=
'
' +
date +
'
';
}
str += '
';
str += '
';
str += ' ';
el.find('.t671__container').append(str);
});
}
function t674_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var backgroundImage = rec.querySelector('.t674__img-holder');
if (!backgroundImage) return;
backgroundImage.onload = function () {
var delay = 0;
var allRecords = document.getElementById('allrecords');
if (allRecords.getAttribute('data-blocks-animationoff') !== 'yes') {
delay = 600;
}
setTimeout(function () {
document.body.classList.add('t674__body_with-bg');
}, delay);
};
var event = document.createEvent('HTMLEvents');
event.initEvent('load', true, false);
backgroundImage.dispatchEvent(event);
}
function t675_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t675');
if (!container) return;
var textWrapper = rec.querySelectorAll('.t675__textwrapper');
if (typeof jQuery !== 'undefined') {
$(container).bind('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t675__calcHeight(rec, textWrapper);
});
});
} else {
container.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t675__calcHeight(rec, textWrapper);
});
});
}
t675__calcHeight(rec, textWrapper);
}
function t675__calcHeight(rec, textWrapper) {
setTimeout(function () {
var dot = rec.querySelector('.t-slds__bullet_wrapper');
var dotsHeight = dot ? dot.offsetHeight : 0;
Array.prototype.forEach.call(textWrapper, function (wrapper) {
wrapper.style.marginBottom = dotsHeight + 7 + 'px';
});
}, 100);
}
function t678_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t686_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t686');
if (!container) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
setTimeout(function () {
t686_setHeight(recId);
}, 100);
window.addEventListener(
'resize',
t_throttle(function () {
t686_setHeight(recId);
})
);
container.addEventListener('displayChanged', function () {
t686_setHeight(recId);
});
}
function t686_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t686');
if (!wrapper) return;
var col = rec.querySelector('.t-card__col');
var ratio = wrapper.getAttribute('data-tile-ratio');
if (!col) return;
var container = rec.querySelector('.t686__container');
var colStyle = getComputedStyle(col, null);
var colPaddingLeft = parseInt(colStyle.paddingLeft) || 0;
var colPaddingRight = parseInt(colStyle.paddingRight) || 0;
var colHeight = (col.clientWidth - (colPaddingLeft + colPaddingRight)) * +ratio;
var maxHeight = 0;
var columnsInRow = Number(container.getAttribute('data-columns-in-row'));
if (columnsInRow === 0 || columnsInRow === '') {
columnsInRow = 1;
}
var allTables = Array.prototype.slice.call(rec.querySelectorAll('.t686__table'));
var rowsArray = [];
for (var i = 0; i < allTables.length; i += columnsInRow) {
rowsArray.push(allTables.slice(i, i + columnsInRow));
}
for (var i = 0; i < rowsArray.length; i++) {
var tables = rowsArray[i];
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
var textWrap = table.querySelector('.t686__textwrapper');
var textWrapHeight = 0;
if (textWrap) {
textWrapHeight = textWrap.offsetHeight;
}
var cell = table.querySelector('.t686__cell');
if (cell.classList.contains('t686__button-bottom')) {
var button = table.querySelector('.t686__button-container');
if (button) {
textWrapHeight += button.offsetHeight;
}
}
if (textWrapHeight > maxHeight) maxHeight = textWrapHeight;
}
if (window.innerWidth >= 960) {
if (maxHeight > colHeight) {
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
table.style.height = maxHeight + 'px';
table.style.minHeight = 'auto';
}
} else {
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
table.style.height = colHeight + 'px';
table.style.minHeight = 'auto';
}
}
} else {
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
table.style.height = null;
table.style.minHeight = colHeight + 'px';
}
}
if (!!document.documentMode) {
var bgs = [];
var overlays = [];
for (var tableIndex = 0; tableIndex < tables.length; tableIndex++) {
bgs.push(tables[tableIndex].querySelector('.t686__bg'));
overlays.push(tables[tableIndex].querySelector('.t686__overlay'));
}
var tableHeight = parseInt(tables[0].style.height);
for (var j = 0; j < bgs.length; j++) {
bgs[j].style.height = tableHeight + 'px';
}
for (var j = 0; j < overlays.length; j++) {
overlays[j].style.height = tableHeight + 'px';
}
}
}
}
function t688_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t690_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t692_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t694_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t694');
if (!container) return;
t694_setHeight(recId);
setTimeout(function () {
t694_setHeight(recId);
}, 500);
window.addEventListener(
'resize',
t_throttle(function () {
t694_setHeight(recId);
})
);
container.addEventListener('displayChanged', function () {
t694_setHeight(recId);
});
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t694_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t694');
if (!container) return;
var rows = rec.querySelectorAll('.t694__row');
var col = rec.querySelector('.t694__col');
var ratio = container.getAttribute('data-tile-ratio');
if (!col) return;
var colStyle = getComputedStyle(col, null);
var colPaddingLeft = parseInt(colStyle.paddingLeft) || 0;
var colPaddingRight = parseInt(colStyle.paddingRight) || 0;
var colHeight = (col.clientWidth - (colPaddingLeft + colPaddingRight)) * +ratio;
var maxHeight = 0;
if (window.innerWidth >= 768) {
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var tables = row.querySelectorAll('.t694__table');
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
var textWrapHeight = table.querySelector('.t694__textwrapper').offsetHeight;
var cell = table.querySelector('.t694__cell');
if (cell.classList.contains('t694__button-bottom')) {
textWrapHeight += table.querySelector('.t694__button-container').offsetHeight;
}
if (textWrapHeight > maxHeight) maxHeight = textWrapHeight;
}
if (maxHeight > colHeight) {
for (var j = 0; j < tables.length; j++) {
tables[j].style.height = maxHeight + 'px';
}
} else {
for (var j = 0; j < tables.length; j++) {
tables[j].style.height = '';
}
}
}
} else {
var tables = rec.querySelectorAll('.t694__table');
for (var i = 0; i < tables.length; i++) {
tables[i].style.height = '';
}
}
}
function t696_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t698_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t698_fixcontentheight(recId) {
/* correct cover height if content more when cover height */
var rec = document.getElementById('rec' + recId);
var cover = rec.querySelector('.t-cover');
var coverFilter = rec.querySelector('.t-cover__filter');
var coverCarrier = rec.querySelector('.t-cover__carrier');
var coverWrapper = rec.querySelector('.t-cover__wrapper');
var coverContainer = rec.querySelector('.t-cover__container');
var coverStyle = getComputedStyle(cover, null);
var coverPaddingTop = parseInt(coverStyle.paddingTop) || 0;
var coverPaddingBottom = parseInt(coverStyle.paddingBottom) || 0;
var coverHeight = cover.clientHeight - (coverPaddingTop + coverPaddingBottom);
var hookContent = rec.querySelector('div[data-hook-content]');
var hookContentHeight = hookContent.offsetHeight;
if (hookContentHeight > 300 && coverHeight < hookContentHeight) {
var newHookContentHeight = hookContentHeight + 120;
if (newHookContentHeight > 1000) newHookContentHeight += 100;
console.log('auto correct cover height: ' + newHookContentHeight);
cover.style.height = newHookContentHeight + 'px';
if (coverFilter) coverFilter.style.height = newHookContentHeight + 'px';
if (coverCarrier) coverCarrier.style.height = newHookContentHeight + 'px';
if (coverWrapper) coverWrapper.style.height = newHookContentHeight + 'px';
if (coverContainer) coverContainer.style.height = newHookContentHeight + 'px';
if (window.isMobile === false) {
setTimeout(function () {
if (coverCarrier.querySelector('iframe')) {
console.log('correct video from cover_fixcontentheight');
setWidthHeightYoutubeVideo(coverCarrier, newHookContentHeight + 'px');
}
}, 2000);
}
}
}
function t700_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t700');
var videoLazy = rec.querySelector('.t-video-lazyload');
if (videoLazy) {
var videoHeight = videoLazy.getAttribute('data-videolazy-height');
if (videoHeight) return;
t_onFuncLoad('t_video_lazyload__setHeight', function () {
t_video_lazyload__setHeight(videoLazy);
window.addEventListener('resize', function () {
t_video_lazyload__setHeight(videoLazy);
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
t_video_lazyload__setHeight(videoLazy);
});
});
}
}
function t700_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t702_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t702');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.setAttribute('data-popup-subscribe-inited', 'y');
rec.style.opacity = 1;
var documentBody = document.body;
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var analitics = popup.getAttribute('data-track-popup');
var popupCloseBtn = popup.querySelector('.t-popup__close');
var hrefs = rec.querySelectorAll('a[href*="#"]');
var submitHref = rec.querySelector('.t-submit[href*="#"]');
if (popupTooltipHook) {
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(popupTooltipHook);
});
document.addEventListener('click', function (event) {
var target = event.target;
var href = target.closest('a[href$="' + popupTooltipHook + '"]') ? target : false;
if (!href) return;
event.preventDefault();
t702_showPopup(recId);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
t702__lazyLoad();
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, popupTooltipHook);
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, popupTooltipHook);
});
}
popup.addEventListener(
'scroll',
t_throttle(function () {
t702__lazyLoad();
})
);
popup.addEventListener('click', function (event) {
var windowWithoutScrollBar = window.innerWidth - 17;
if (event.clientX > windowWithoutScrollBar) return;
if (event.target === this) t702_closePopup(recId);
});
popupCloseBtn.addEventListener('click', function () {
t702_closePopup(recId);
});
if (submitHref) {
submitHref.addEventListener('click', function () {
if (documentBody.classList.contains('t-body_scroll-locked')) {
documentBody.classList.remove('t-body_scroll-locked');
}
});
}
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].addEventListener('click', function () {
var url = this.getAttribute('href');
if (!url || url.substring(0, 7) != '#price:') {
t702_closePopup(recId);
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
documentBody.classList.add('t-body_popupshowed');
}, 300);
}
}
});
}
function t702_escClosePopup(event) {
if (event.key === 'Escape') t702_closePopup(recId);
}
popup.addEventListener('tildamodal:show' + popupTooltipHook, function () {
document.addEventListener('keydown', t702_escClosePopup);
});
popup.addEventListener('tildamodal:close' + popupTooltipHook, function () {
document.removeEventListener('keydown', t702_escClosePopup);
});
rec.addEventListener(
'conditional-form-init',
function () {
t_onFuncLoad('t_form__conditionals_addFieldsListeners', function () {
t_form__conditionals_addFieldsListeners(recId, function () {
t_popup__resizePopup(recId);
});
});
},
{ once: true }
);
}
function t702_lockScroll() {
var documentBody = document.body;
if (!documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop =
typeof window.pageYOffset !== 'undefined'
? window.pageYOffset
: (document.documentElement || documentBody.parentNode || documentBody).scrollTop;
documentBody.classList.add('t-body_scroll-locked');
documentBody.style.top = '-' + bodyScrollTop + 'px';
documentBody.setAttribute('data-popup-scrolltop', bodyScrollTop);
}
}
function t702_unlockScroll() {
var documentBody = document.body;
if (documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop = documentBody.getAttribute('data-popup-scrolltop');
documentBody.classList.remove('t-body_scroll-locked');
documentBody.style.top = null;
documentBody.removeAttribute('data-popup-scrolltop');
document.documentElement.scrollTop = parseInt(bodyScrollTop);
}
}
function t702_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t702');
if (!container) return;
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (screenMin && windowWidth < parseInt(screenMin, 10)) return;
if (screenMax && windowWidth > parseInt(screenMax, 10)) return;
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var ranges = rec.querySelectorAll('.t-range');
var documentBody = document.body;
if (ranges.length) {
Array.prototype.forEach.call(ranges, function (range) {
t702__triggerEvent(range, 'popupOpened');
});
}
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
documentBody.classList.add('t-body_popupshowed');
documentBody.classList.add('t702__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (
/iPhone|iPad|iPod/i.test(navigator.userAgent) &&
!window.MSStream &&
window.isiOSVersion &&
window.isiOSVersion[0] === 11
) {
setTimeout(function () {
t702_lockScroll();
}, 500);
}
t702__lazyLoad();
t702__triggerEvent(popup, 'tildamodal:show' + popupTooltipHook);
t_onFuncLoad('t_forms__calculateInputsWidth', function () {
t_forms__calculateInputsWidth(recId);
});
}
function t702_closePopup(recId) {
var rec = document.getElementById('rec' + recId);
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
/* Блок BF504 (.t945__popup) не запрещает скролл страницы, так что при закрытии попапа мы не берём его в список отркытых попапов */
var popupAll = document.querySelectorAll('.t-popup_show:not(.t-feed__post-popup):not(.t945__popup)');
if (popupAll.length == 1) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
} else {
var newPopup = [];
for (var i = 0; i < popupAll.length; i++) {
if (popupAll[i].getAttribute('data-tooltip-hook') === popupTooltipHook) {
popupAll[i].classList.remove('t-popup_show');
newPopup.push(popupAll[i]);
}
}
if (newPopup.length === popupAll.length) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
}
}
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
popup.classList.remove('t-popup_show');
document.body.classList.remove('t702__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (
/iPhone|iPad|iPod/i.test(navigator.userAgent) &&
!window.MSStream &&
window.isiOSVersion &&
window.isiOSVersion[0] === 11
) {
t702_unlockScroll();
}
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
t702__triggerEvent(popup, 'tildamodal:close' + popupTooltipHook);
}
/* deprecated */
function t702_sendPopupEventToStatistics(popupName) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupName.substring(0, 7) == '#popup:') {
popupName = popupName.substring(7);
}
virtPage += popupName;
virtTitle += popupName;
if (window.Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t702_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t702__lazyLoad() {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t702__triggerEvent(el, eventName) {
var event;
if (typeof window.CustomEvent === 'function') {
event = new CustomEvent(eventName);
} else if (document.createEvent) {
event = document.createEvent('HTMLEvents');
event.initEvent(eventName, true, false);
} else if (document.createEventObject) {
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
if (el.dispatchEvent) {
el.dispatchEvent(event);
} else if (el.fireEvent) {
el.fireEvent('on' + event.eventType, event);
} else if (el[eventName]) {
el[eventName]();
} else if (el['on' + eventName]) {
el['on' + eventName]();
}
}
function t704_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t708_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t708');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
var popup = rec.querySelector('.t708__popup');
var analitics = popup.getAttribute('data-track-popup');
var hook = 'TildaSendMessageWidget' + recId;
var button = rec.querySelector('.t708__btn');
var closeButton = popup.querySelector('.t708__mobile-icon-close');
button.addEventListener('click', function (event) {
if (button.classList.contains('t708__btn_active')) {
t708_closePopup();
return;
}
button.classList.add('t708__btn_active');
container.classList.add('t708_active');
t708_showPopup(recId);
event.preventDefault();
if (analitics) Tilda.sendEventToStatistics(analitics, hook);
});
closeButton.addEventListener('click', t708_closePopup);
}
function t708_lockScroll() {
var documentBody = document.body;
if (!documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop =
typeof window.pageYOffset !== 'undefined'
? window.pageYOffset
: (document.documentElement || documentBody.parentNode || documentBody).scrollTop;
documentBody.classList.add('t-body_scroll-locked');
documentBody.style.top = '-' + bodyScrollTop + 'px';
documentBody.setAttribute('data-popup-scrolltop', bodyScrollTop);
}
}
function t708_unlockScroll() {
var documentBody = document.body;
if (documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop = documentBody.getAttribute('data-popup-scrolltop');
documentBody.classList.remove('t-body_scroll-locked');
documentBody.style.top = null;
documentBody.removeAttribute('data-popup-scrolltop');
document.documentElement.scrollTop = parseInt(bodyScrollTop);
}
}
function t708_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t708');
if (!container) return;
var range = rec.querySelector('.t-range');
var popup = rec.querySelector('.t708__popup');
var buttonWrapper = rec.querySelector('.t708__btn_wrapper');
var buttonText = rec.querySelector('.t708__btn-text');
var documentBody = document.body;
if (buttonWrapper) buttonWrapper.classList.remove('t651__btn_animate');
if (buttonText) buttonText.style.display = 'none';
if (window.innerWidth < 960) documentBody.classList.add('t708__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
setTimeout(function () {
t708_lockScroll();
}, 500);
}
popup.style.display = 'block';
if (range) t708__triggerEvent(range, 'popupOpened');
setTimeout(function () {
popup.classList.add('t708__popup_show');
}, 50);
t708_runLazyLoad();
document.addEventListener('keydown', t708_escClosePopup);
}
function t708_escClosePopup(event) {
if (event.key === 'Escape') t708_closePopup();
}
function t708_closePopup() {
if (window.innerWidth < 960) document.body.classList.remove('t708__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
t708_unlockScroll();
}
var containers = document.querySelectorAll('.t708');
var buttons = document.querySelectorAll('.t708__btn');
var popups = document.querySelectorAll('.t708__popup');
for (var i = 0; i < containers.length; i++) {
containers[i].classList.remove('t708_active');
}
for (var i = 0; i < buttons.length; i++) {
buttons[i].classList.remove('t708__btn_active');
}
for (var i = 0; i < popups.length; i++) {
popups[i].classList.remove('t708__popup_show');
}
setTimeout(function () {
var popupHide = document.querySelectorAll('.t708__popup:not(.t708__popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t708_escClosePopup);
}
function t708_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t708_runLazyLoad() {
var records = document.querySelector('.t-records:not([data-tilda-mode])');
if (records) {
var allRecs = document.querySelector('#allrecords');
if (window.lazy === 'y' || allRecs.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
}
function t708__triggerEvent(el, eventName) {
var event;
if (typeof window.CustomEvent === 'function') {
event = new CustomEvent(eventName);
} else if (document.createEvent) {
event = document.createEvent('HTMLEvents');
event.initEvent(eventName, true, false);
} else if (document.createEventObject) {
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
if (el.dispatchEvent) {
el.dispatchEvent(event);
} else if (el.fireEvent) {
el.fireEvent('on' + event.eventType, event);
} else if (el[eventName]) {
el[eventName]();
} else if (el['on' + eventName]) {
el['on' + eventName]();
}
}
function t712_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t712_fixcontentheight(id) {
/* correct cover height if content more when cover height */
var rec = document.getElementById('rec' + id);
if (!rec) return;
var cover = rec.querySelector('.t-cover');
var filter = rec.querySelector('.t-cover__filter');
var carrier = rec.querySelector('.t-cover__carrier');
var wrapper = rec.querySelector('.t-cover__wrapper');
var container = rec.querySelector('.t-cover__container');
var coverHeight = cover ? cover.offsetHeight : 0;
var content = rec.querySelector('div[data-hook-content]');
var contentHeight = content ? content.offsetHeight : 0;
if (contentHeight > 300 && coverHeight < contentHeight) {
var youTubeRecommendationsSpace = 120;
if (contentHeight > 1000) youTubeRecommendationsSpace += 100;
contentHeight += youTubeRecommendationsSpace;
console.log('auto correct cover height: ' + contentHeight);
if (cover) cover.style.height = contentHeight + 'px';
if (filter) filter.style.height = contentHeight + 'px';
if (carrier) carrier.style.height = contentHeight + 'px';
if (wrapper) wrapper.style.height = contentHeight + 'px';
if (container) container.style.height = contentHeight + 'px';
if (!window.isMobile) {
setTimeout(function () {
var videoBlock = rec.querySelector('.t-cover__carrier');
if (videoBlock && videoBlock.querySelector('iframe')) {
console.log('correct video from cover_fixcontentheight');
window.setWidthAndHeightVideo(videoBlock, contentHeight + 'px', 'youtube');
}
}, 2000);
}
}
}
function t716_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t716_fixcontentheight(recid) {
/* correct cover height if content more when cover height */
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var cover = rec.querySelector('.t-cover');
var filter = rec.querySelector('.t-cover__filter');
var carrier = rec.querySelector('.t-cover__carrier');
var wrapper = rec.querySelector('.t-cover__wrapper');
var container = rec.querySelector('.t-cover__container');
var content = rec.querySelector('div[data-hook-content]');
var coverHeight = cover ? cover.offsetHeight : 0;
var contentHeight = content ? content.offsetHeight : 0;
if (contentHeight > 300 && coverHeight < contentHeight) {
var youTubeRecommendationsSpace = 120;
if (contentHeight > 1000) youTubeRecommendationsSpace += 100;
contentHeight += youTubeRecommendationsSpace;
console.log('auto correct cover height: ' + contentHeight);
if (cover) cover.style.height = contentHeight + 'px';
if (filter) filter.style.height = contentHeight + 'px';
if (carrier) carrier.style.height = contentHeight + 'px';
if (wrapper) wrapper.style.height = contentHeight + 'px';
if (container) container.style.height = contentHeight + 'px';
if (!window.isMobile) {
setTimeout(function () {
var videoBlock = rec.querySelector('.t-cover__carrier');
if (videoBlock && videoBlock.querySelector('iframe')) {
console.log('correct video from cover_fixcontentheight');
window.setWidthAndHeightVideo(videoBlock, contentHeight + 'px', 'youtube');
}
}, 2000);
}
}
}
function t718_onSuccess(form) {
form = form[0] ? form[0] : form;
if (!form) return;
if (form.tagName && form.tagName.toLowerCase() === 'input') {
form = form.closest('.t-form');
}
var inputsWrapper = form.querySelector('.t-form__inputsbox');
if (!inputsWrapper) return;
var paddingTopInputs = parseInt(inputsWrapper.style.paddingTop, 10) || 0;
var paddingBottomInputs = parseInt(inputsWrapper.style.paddingBottom, 10) || 0;
var inputsHeight = inputsWrapper.clientHeight - (paddingTopInputs + paddingBottomInputs);
var inputsOffset = inputsWrapper.getBoundingClientRect().top + window.pageYOffset;
var inputsBottom = inputsHeight + inputsOffset;
var successBox = form.querySelector('.t-form__successbox');
var targetOffset = successBox.getBoundingClientRect().top + window.pageYOffset;
var target = null;
if (window.innerWidth > 960) {
target = targetOffset - 200;
} else {
target = targetOffset - 100;
}
var documentHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
if (targetOffset > window.pageYOffset || documentHeight - inputsBottom < window.innerHeight - 100) {
var body = document.body;
var paddingTopBody = parseInt(body.style.paddingTop, 10) || 0;
var paddingBottomBody = parseInt(body.style.paddingBottom, 10) || 0;
var bodyHeight = body.clientHeight - (paddingTopBody + paddingBottomBody);
setTimeout(function () {
if (window.innerHeight > bodyHeight) {
setTimeout(function () {
var tildaLabel = document.querySelector('.t-tildalabel');
if (!tildaLabel) return;
t718__fadeOut(tildaLabel);
}, 50);
}
}, 300);
} else {
t718_scrollToTop(target);
}
var successUrl = form.getAttribute('data-success-url');
if (successUrl) {
t_forms__handleRedirect(form, successUrl, successBox);
}
}
function t718_scrollToTop(target) {
if (target === window.pageYOffset) {
return false;
}
var duration = 400;
var difference = window.pageYOffset;
var cashedDiff = window.pageYOffset;
var step = (Math.abs(window.pageYOffset - target) * 10) / duration;
var scrollInterval = setInterval(function () {
if (cashedDiff > target) {
difference -= step;
} else {
difference += step;
}
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (cashedDiff > target && window.pageYOffset <= target) {
document.body.removeAttribute('data-scrollable');
clearInterval(scrollInterval);
} else if (cashedDiff <= target && window.pageYOffset >= target) {
document.body.removeAttribute('data-scrollable');
window.scrollTo(0, target);
clearInterval(scrollInterval);
}
}, 10);
/* for case when target !== 0 and height of document === viewport,
what means that there is no scroll */
var scrollTimeout = setTimeout(function () {
clearInterval(scrollInterval);
document.body.removeAttribute('data-scrollable');
clearTimeout(scrollTimeout);
}, duration * 2);
}
function t718__fadeOut(element) {
if (element.style.display === 'none') return;
var opacity = 1;
var timer = setInterval(function () {
element.style.opacity = opacity;
opacity -= 0.1;
if (opacity <= 0.1) {
clearInterval(timer);
element.style.display = 'none';
element.style.opacity = null;
}
}, 50);
}
function t720_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t720_fixcontentheight(recId) {
/* correct cover height if content more when cover height */
var rec = document.getElementById('rec' + recId);
var cover = rec.querySelector('.t-cover');
var coverFilter = rec.querySelector('.t-cover__filter');
var coverCarrier = rec.querySelector('.t-cover__carrier');
var coverWrapper = rec.querySelector('.t-cover__wrapper');
var coverContainer = rec.querySelector('.t-cover__container');
var coverStyle = getComputedStyle(cover, null);
var coverPaddingTop = parseInt(coverStyle.paddingTop) || 0;
var coverPaddingBottom = parseInt(coverStyle.paddingBottom) || 0;
var coverHeight = cover.clientHeight - (coverPaddingTop + coverPaddingBottom);
var hookContent = rec.querySelector('div[data-hook-content]');
var hookContentHeight = hookContent.offsetHeight;
if (hookContentHeight > 300 && coverHeight < hookContentHeight) {
var newHookContentHeight = hookContentHeight + 120;
if (newHookContentHeight > 1000) newHookContentHeight += 100;
console.log('auto correct cover height: ' + newHookContentHeight);
cover.style.height = newHookContentHeight + 'px';
if (coverFilter) coverFilter.style.height = newHookContentHeight + 'px';
if (coverCarrier) coverCarrier.style.height = newHookContentHeight + 'px';
if (coverWrapper) coverWrapper.style.height = newHookContentHeight + 'px';
if (coverContainer) coverContainer.style.height = newHookContentHeight + 'px';
if (window.isMobile === false) {
setTimeout(function () {
if (coverCarrier.querySelector('iframe')) {
console.log('correct video from cover_fixcontentheight');
setWidthHeightYoutubeVideo(coverCarrier, newHookContentHeight + 'px');
}
}, 2000);
}
}
}
function t722_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t722_fixcontentheight(recId) {
/* correct cover height if content more when cover height */
var rec = document.getElementById('rec' + recId);
var cover = rec.querySelector('.t-cover');
var coverFilter = rec.querySelector('.t-cover__filter');
var coverCarrier = rec.querySelector('.t-cover__carrier');
var coverWrapper = rec.querySelector('.t-cover__wrapper');
var coverContainer = rec.querySelector('.t-cover__container');
var coverStyle = getComputedStyle(cover, null);
var coverPaddingTop = parseInt(coverStyle.paddingTop) || 0;
var coverPaddingBottom = parseInt(coverStyle.paddingBottom) || 0;
var coverHeight = cover.clientHeight - (coverPaddingTop + coverPaddingBottom);
var hookContent = rec.querySelector('div[data-hook-content]');
var hookContentHeight = hookContent.offsetHeight;
if (hookContentHeight > 300 && coverHeight < hookContentHeight) {
var newHookContentHeight = hookContentHeight + 120;
if (newHookContentHeight > 1000) newHookContentHeight += 100;
console.log('auto correct cover height: ' + newHookContentHeight);
cover.style.height = newHookContentHeight + 'px';
if (coverFilter) coverFilter.style.height = newHookContentHeight + 'px';
if (coverCarrier) coverCarrier.style.height = newHookContentHeight + 'px';
if (coverWrapper) coverWrapper.style.height = newHookContentHeight + 'px';
if (coverContainer) coverContainer.style.height = newHookContentHeight + 'px';
if (window.isMobile === false) {
setTimeout(function () {
if (coverCarrier.querySelector('iframe')) {
console.log('correct video from cover_fixcontentheight');
setWidthHeightYoutubeVideo(coverCarrier, newHookContentHeight + 'px');
}
}, 2000);
}
}
}
function t724_createCookie(cookieName, cookieValue, cookieTime) {
var expires = '';
if (cookieTime) {
if (Number(cookieTime) > 9999999) {
cookieTime = 9999999;
}
var date = new Date();
date.setTime(date.getTime() + cookieTime * 24 * 60 * 60 * 1000);
expires = '; expires=' + date.toGMTString();
}
document.cookie = cookieName + '=' + cookieValue + expires + '; path=/';
}
function t724_readCookie(cookieName) {
cookieName = cookieName + '=';
var allCookies = document.cookie.split(';');
for (var i = 0; i < allCookies.length; i++) {
var cookie = allCookies[i];
while (cookie.charAt(0) === ' ') {
cookie = cookie.substring(1, cookie.length);
}
if (cookie.indexOf(cookieName) === 0) {
return cookie.substring(cookieName.length, cookie.length);
}
}
return null;
}
function t724_init(recid) {
if (window.isMobile) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var openerLink = rec.querySelector('.t724__opener');
if (!openerLink) return;
var cookieName = openerLink.getAttribute('data-cookie-name');
var cookieTime = openerLink.getAttribute('data-cookie-time');
var cookieTimeout = parseInt(openerLink.getAttribute('data-timeout'), 10);
var currentTimeout = isNaN(cookieTimeout) ? 0 : cookieTimeout * 1000;
var cookie = t724_readCookie(cookieName);
if (!cookie) {
setTimeout(function () {
document.addEventListener('mouseout', function (event) {
event.stopImmediatePropagation();
if (event.clientY > 10) return;
var isOpenerLinkActivated = openerLink.classList.contains('t724__opener_activated');
if (isOpenerLinkActivated) return;
openerLink.click();
openerLink.classList.add('t724__opener_activated');
var cookieValue = 't724cookie';
t724_createCookie(cookieName, cookieValue, cookieTime);
});
}, currentTimeout);
}
}
function t734_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var coverBlock = document.querySelector('.t830');
if (coverBlock) {
var slidesWrapper = rec.querySelector('.t-slds__items-wrapper');
if (slidesWrapper && slidesWrapper.classList.contains('t-slds_animated-none')) {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
} else {
setTimeout(function () {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
}, 500);
}
} else {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
}
var currentCoverBlock = rec.querySelector('.t734');
if (currentCoverBlock) {
currentCoverBlock.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
});
}
}
function t738_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t744_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t744__hoverZoom_init(recid);
}, 500);
var wrapperBlock = rec.querySelector('.t744');
if (wrapperBlock) {
wrapperBlock.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
});
}
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}
function t744__hoverZoom_init(recid) {
if (window.isMobile) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
try {
if (!rec.querySelector('[data-hover-zoom]')) {
return;
}
var hoverZoomScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverZoomScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.src = hoverZoomScript;
script.onload = function () {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
};
script.onerror = function (error) {
console.log('Upload script error: ' + error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t744_updateSlider(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft, 10) || 0;
var paddingRight = parseInt(slider.style.paddingRight, 10) || 0;
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var pos = parseFloat(sliderWrapper.getAttribute('data-slider-pos'), 10);
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * pos + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
function t746_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var popup = rec.querySelector('.t-popup');
var videoWraps = rec.querySelectorAll('.t746__wrap-video');
var hook = popup ? popup.getAttribute('data-tooltip-hook') : '';
var analitics = popup ? popup.getAttribute('data-track-popup') : '';
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
t746_imageHeight(rec);
t746_arrowWidth(rec);
t746_show(rec);
rec.addEventListener('updateSlider', function () {
t746_hide(videoWraps);
});
window.addEventListener(
'resize',
t_throttle(function () {
t746_arrowWidth(rec);
}, 200)
);
window.addEventListener('orientationchange', function () {
setTimeout(function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
}, 500);
});
if (hook) {
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(hook);
});
if (popup) {
popup.addEventListener('click', function (e) {
if (e.target === popup) {
t746_hide(videoWraps);
t746_closePopup(rec);
}
});
}
var popupClose = rec.querySelector('.t-popup__close');
if (popupClose) {
popupClose.addEventListener('click', function () {
t746_hide(videoWraps);
t746_closePopup(rec);
});
}
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) {
t746_hide(videoWraps);
t746_closePopup(rec);
}
});
var allRec = document.getElementById('allrecords');
var lazyMode = allRec ? allRec.getAttribute('data-tilda-lazy') : '';
var isInitSlds = false;
document.addEventListener('click', function (e) {
var href = e.target.closest('a[href="' + hook + '"]');
if (href) {
e.preventDefault();
t746_showPopup(recid);
if (isInitSlds) {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
} else {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
isInitSlds = true;
});
}
t746_arrowWidth(rec);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recid);
});
if (window.lazy === 'y' || lazyMode === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
if (analitics && window.Tilda) {
var virtTitle = hook;
if (virtTitle.substring(0, 7) === '#popup:') {
virtTitle = virtTitle.substring(7);
}
Tilda.sendEventToStatistics(analitics, virtTitle);
}
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, hook);
});
}
}
function t746_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
var popup = rec ? rec.querySelector('.t-popup') : null;
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
}
function t746_closePopup(rec) {
var popup = rec.querySelector('.t-popup');
/*user can be set same hook for popup in desktop and mobile version,
to close both, should find all popups with same hook-links*/
var popupHook = popup ? popup.getAttribute('data-tooltip-hook') : '';
var popupHookLink = document.querySelectorAll('[data-tooltip-hook="' + popupHook + '"]');
if (popup && !popup.classList.contains('t-popup_show')) {
return;
} else if (popup) {
Array.prototype.forEach.call(popupHookLink, function (popup) {
popup.classList.remove('t-popup_show');
});
}
if (!document.querySelector('.t-popup_show')) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
}
var allCovers = rec.querySelectorAll('.t-bgimg');
Array.prototype.forEach.call(allCovers, function (cover) {
if (cover.style.opacity === '0') {
cover.style.opacity = '';
}
});
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
if (popup) popup.style.display = 'none';
}, 300);
}
/* deprecated */
function t746_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) === '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (ga) {
if (window.mainTracker !== 'tilda') {
ga('send', {
hitType: 'pageview',
page: virtPage,
title: virtTitle,
});
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, {
title: virtTitle,
referer: window.location.href,
});
}
}
function t746_show(rec) {
var playBtns = rec.querySelectorAll('.t746__play');
Array.prototype.forEach.call(playBtns, function (play) {
var itemWrap = play.closest('.t746__imgwrapper');
var image = itemWrap.querySelector('.t-slds__bgimg');
var videoWrap = itemWrap.querySelector('.t746__wrap-video');
var videoLazy = videoWrap.querySelector('.t-video-lazyload');
play.addEventListener('click', function (event) {
event.preventDefault();
event.stopPropagation();
t_onFuncLoad('t_video_lazyload__addVideo', function () {
videoWrap.style.display = 'block';
image.style.opacity = 0;
t_video_lazyload__addVideo(videoLazy);
});
});
});
}
function t746_hide(videoWraps) {
t_onFuncLoad('t_video__getPlayer', function () {
Array.prototype.forEach.call(videoWraps, function (videoWrap) {
videoWrap.style.display = 'none';
var videoLazy = videoWrap.querySelector('.t-video-lazyload');
var videoLoad = videoLazy.getAttribute('data-videolazy-load');
if (videoLoad === 'false') return;
var slide = videoWrap.closest('.t-slds__item:not(.t-slds__item_dummy)');
if (!slide) return;
var player = t_video__getPlayer(slide);
if (player) {
player.pause();
} else {
t746_proccessVideo(slide)
.then(player => player.pause())
.catch(error => error);
}
if (player) player.pause();
});
});
}
function t746_imageHeight(rec) {
var images = rec.querySelectorAll('.t746__separator');
Array.prototype.forEach.call(images, function (img) {
var width = parseInt(img.getAttribute('data-slider-image-width')) || 0;
var height = parseInt(img.getAttribute('data-slider-image-height')) || 0;
var ratio = height / width;
var padding = ratio * 100;
img.style.paddingBottom = padding + '%';
});
}
function t746_arrowWidth(rec) {
var arrows = rec.querySelectorAll('.t-slds__arrow_wrapper');
var slide = rec.querySelector('.t-slds__item_active .t-slds__wrapper');
var slideWidth = slide ? slide.offsetWidth : 0;
var arrowWidth = window.innerWidth - slideWidth;
Array.prototype.forEach.call(arrows, function (arrow) {
var arrowContainer = arrow.closest('.t-slds__arrow_container');
var isArrowNearPic = arrowContainer ? arrowContainer.classList.contains('t-slds__arrow-nearpic') : false;
if (window.innerWidth > 960 && isArrowNearPic) {
arrow.style.width = arrowWidth / 2 + 'px';
} else {
arrow.style.width = '';
}
});
}
function t746_proccessVideo(videoContainer) {
return new Promise((resolve, reject) => {
t_onFuncLoad('t_video__createPlayer', () => {
t_video__createPlayer(videoContainer)
.then(player => resolve(player))
.catch(reason => reject(reason));
});
});
}
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
function t750_init(recid) {
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t750_initPopup(recid);
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
}
function t750_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var popup = rec.querySelector('.t-popup');
if (!popup) return;
var hook = popup.getAttribute('data-tooltip-hook');
var analitics = popup.getAttribute('data-track-popup');
if (!hook) return;
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(hook);
});
var isInitSlds = false;
document.addEventListener('click', function (event) {
var target = event.target.closest('a[href="' + hook + '"]');
if (target) {
event.preventDefault();
t750_showPopup(recid);
if (isInitSlds) {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
} else {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
isInitSlds = true;
});
}
if (analitics && window.Tilda) {
var virtualTitle = hook;
if (virtualTitle.substring(0, 7) === '#popup:') {
virtualTitle = virtualTitle.substring(7);
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, hook);
});
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t750_closePopup(recid);
}
});
var closeButtons = rec.querySelectorAll('.t-popup__close, .t750__close-text');
Array.prototype.forEach.call(closeButtons, function (button) {
button.addEventListener('click', function () {
t750_closePopup(recid);
});
});
var orderLinks = rec.querySelectorAll('a[href*="#"]');
Array.prototype.forEach.call(orderLinks, function (link) {
link.addEventListener('click', linkHandler, false);
function linkHandler() {
var orderUrl = link.getAttribute('href');
if (
!orderUrl ||
(orderUrl.substring(0, 7) !== '#price:' && orderUrl.substring(0, 15) !== '#addtofavorites')
) {
t750_closePopup(recid);
if (!orderUrl || orderUrl.substring(0, 7) === '#popup:') {
setTimeout(function () {
document.body.classList.add('t-body_popupshowed');
}, 300);
}
/* fix for Android, which can't scroll to section because body has overflow: hidden */
if (window.navigator.userAgent.indexOf('Android') !== -1 && orderUrl.slice(0, 4) === '#rec') {
var elem = document.getElementById(orderUrl.replace('#', ''));
if (!elem) return;
var elemTopPos = elem.getBoundingClientRect().top + window.pageYOffset;
if (elemTopPos) window.scrollTo(0, parseInt(elemTopPos, 10));
}
}
}
});
document.addEventListener('keydown', function (event) {
var isGallaryShowed = document.body.classList.contains('t-zoomer__show');
if (isGallaryShowed) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (event.keyCode === 27) {
t750_closePopup(recid);
}
});
}
function t750_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
popup.focus();
t_onFuncLoad('t_popup__trapFocus', function () {
t_popup__trapFocus(popup);
});
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft, 10) || 0;
var paddingRight = parseInt(slider.style.paddingRight, 10) || 0;
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var position = parseInt(sliderWrapper.getAttribute('data-slider-pos'), 10);
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 50);
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
/* Ugly fix preventing Safari from rendering fixed elements like our popup cross icon at wrong position
Ticket is 81421402487 */
if (window.isSafari) {
setTimeout(function () {
popup.scrollTop = 1;
});
}
}
function t750_closePopup(recid) {
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
if (!popup) return;
var allPopups = document.querySelectorAll('.t-popup');
Array.prototype.forEach.call(allPopups, function (popup) {
popup.classList.remove('t-popup_show');
});
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var hiddenPopups = document.querySelectorAll('.t-popup:not(.t-popup_show)');
hiddenPopups.forEach(function (popup) {
popup.style.display = 'none';
});
}, 300);
}
var t754_POPUP_SHOWED_EVENT_NAME = 'catalog:popupShowed';
var t754_POPUP_CLOSED_EVENT_NAME = 'catalog:popupClosed';
function t754__init(recid) {
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t754__hoverZoom_init(recid);
t754_initPopup(recid);
t754__updateLazyLoad(recid);
t_onFuncLoad('t_store_addProductQuantityEvents', function () {
t754_initProductQuantity(recid);
});
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
}
function t754_initProductQuantity(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var productList = rec.querySelectorAll('.t754__col, .t754__product-full');
Array.prototype.forEach.call(productList, function (product) {
t_store_addProductQuantityEvents(product);
});
}
function t754__showMore(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t754');
if (!wrapperBlock) return;
var productColumns = wrapperBlock.querySelectorAll('.t754__col');
var cardsSize = productColumns.length;
var cardsCount = parseInt(wrapperBlock.getAttribute('data-show-count'), 10);
if (isNaN(cardsCount) || cardsCount < 1) return;
Array.prototype.forEach.call(productColumns, function (column) {
column.style.display = 'none';
});
for (var i = 0; i < cardsCount; i++) {
if (productColumns[i]) {
productColumns[i].style.display = 'inline-block';
}
}
var showMoreButton = wrapperBlock.querySelector('.t754__showmore');
if (!showMoreButton) return;
const showMoreTextContainer = showMoreButton.querySelector('.js-btn-txt');
if (showMoreTextContainer) {
showMoreTextContainer.textContent = t754__dict();
}
if (cardsCount < productColumns.length) {
showMoreButton.style.removeProperty('display');
}
t754__showSeparator(wrapperBlock, cardsCount);
showMoreButton.addEventListener('click', function () {
var currentColumns = wrapperBlock.querySelectorAll('.t754__col');
var currentColumnsShowed = 0;
Array.prototype.forEach.call(currentColumns, function (column) {
if (column.style.display === 'inline-block') {
++currentColumnsShowed;
}
});
for (var i = 0; i < cardsCount + currentColumnsShowed; i++) {
if (currentColumns[i]) {
currentColumns[i].style.display = 'inline-block';
}
}
if (cardsCount + currentColumnsShowed >= cardsSize) {
showMoreButton.style.display = 'none';
}
if (!document.querySelector('.t-records').getAttribute('data-tilda-mode')) {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
t754__showSeparator(wrapperBlock, cardsCount + currentColumnsShowed);
});
}
function t754__showSeparator(rec, cardsCount) {
if (window.jQuery && rec instanceof jQuery) {
rec = rec.get(0);
}
var allSeparators = rec.querySelectorAll('.t754__separator_number');
Array.prototype.forEach.call(allSeparators, function (separator) {
separator.classList.add('t754__separator_hide');
if (separator.getAttribute('data-product-separator-number') <= cardsCount) {
separator.classList.remove('t754__separator_hide');
}
});
}
function t754__dict() {
var dictionary = {
EN: 'Load more',
RU: 'Загрузить ещё',
FR: 'Charger plus',
DE: 'Mehr laden',
ES: 'Carga más',
PT: 'Carregue mais',
UK: 'Завантажити ще',
JA: 'もっと読み込む',
ZH: '裝載更多',
};
var language = window.browserLang;
var allrecords = document.getElementById('allrecords');
if (allrecords) {
var projectLang = allrecords.getAttribute('data-tilda-project-lang');
if (projectLang) {
language = projectLang;
}
}
return dictionary[language] ? dictionary[language] : dictionary.EN;
}
function t754__hoverZoom_init(recid) {
if (window.isMobile) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
try {
if (!rec.querySelector('[data-hover-zoom]')) {
return;
}
var hoverScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = hoverScript;
script.onload = function () {
setTimeout(function () {
t_hoverZoom_init(recid);
}, 500);
};
script.onerror = function (error) {
console.log('Upload script error: ', error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t754__updateLazyLoad(recid) {
var scrollContainer = document.querySelector('#rec' + recid + ' .t754__container_mobile-flex');
var tRecords = document.querySelector('.t-records');
if (!tRecords) return;
var currentMode = tRecords.getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
})
);
}
}
function t754_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
var body = document.body;
var linksProd = rec.querySelectorAll('[href^="#prodpopup"]');
Array.prototype.forEach.call(linksProd, function (popupLink) {
var product = popupLink.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
/* ищем среди всех блоков ссылки по которым можно открыть попап текущего блока */
var productLinks = document.querySelectorAll('.r a[href$="#!/tproduct/' + recid + '-' + productLid + '"]');
Array.prototype.forEach.call(productLinks, function (productLink) {
productLink.addEventListener('click', function () {
/* перепроверяем что попап ещё существует */
if (rec.querySelector('[data-product-lid="' + productLid + '"]')) {
var linkToPopup = product.querySelector('[href^="#prodpopup"]');
if (linkToPopup) {
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
linkToPopup.dispatchEvent(event);
}
}
});
});
popupLink.addEventListener('click', clickOnceHandler, false);
function clickOnceHandler(event) {
event.preventDefault();
var product = popupLink.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid + ' #t754__product-' + productLid);
});
popupLink.removeEventListener('click', clickOnceHandler, false);
}
popupLink.addEventListener('click', showPopupHandler, false);
function showPopupHandler(event) {
event.preventDefault();
var isT1002Button =
event.target.classList.contains('t1002__addBtn') ||
event.target.parentNode.classList.contains('t1002__addBtn');
if (isT1002Button) return;
t754_showPopup(recid);
var product = popupLink.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
var productFull = popup.querySelector('.js-product[data-product-lid="' + productLid + '"]');
productFull.style.display = 'block';
var lazyGalleryImgs = productFull.querySelectorAll('img[data-src]');
Array.prototype.forEach.call(lazyGalleryImgs, function (img) {
img.src = img.getAttribute('data-src');
});
var analitics = popupLink.getAttribute('data-track-popup');
if (analitics && productFull && window.Tilda) {
var productName = productFull.querySelector('.js-product-name');
if (productName) {
var virtTitle = productName.textContent;
if (!virtTitle) {
virtTitle = 'prod' + productLid;
}
Tilda.sendEventToStatistics(analitics, virtTitle);
}
}
var currentUrl = window.location.href;
if (
currentUrl.indexOf('#!/tproduct/') < 0 &&
currentUrl.indexOf('%23!/tproduct/') < 0 &&
currentUrl.indexOf('#%21%2Ftproduct%2F') < 0
) {
if (history.replaceState) {
window.history.replaceState(
'',
'',
window.location.href + '#!/tproduct/' + recid + '-' + productLid
);
}
}
t754_updateSlider(recid + ' #t754__product-' + productLid);
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
});
if (popup) {
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t754_closePopup(body, popup);
}
});
var allRecords = document.getElementById('allrecords');
var currentMode = allRecords.getAttribute('data-tilda-mode');
var isPublishedPage = currentMode !== 'edit' && currentMode !== 'preview';
if (isPublishedPage && (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes')) {
popup.addEventListener('scroll', function (event) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
});
}
}
var closeButtons = rec.querySelectorAll('.t-popup__close, .t754__close-text');
Array.prototype.forEach.call(closeButtons, function (button) {
button.addEventListener('click', function () {
t754_closePopup(body, popup);
});
});
document.addEventListener('keydown', function (event) {
var isGalleryShowedOldLib = document.body.classList.contains('t-zoomer__show');
if (isGalleryShowedOldLib) return;
var isGalleryShowedNewLib = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowedNewLib) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (popup && popup.classList.contains('t-popup_show')) {
if (event.keyCode === 27) {
t754_closePopup(body, popup);
}
}
});
if (!document.getElementById('record' + recid)) {
t754_checkUrl(recid);
}
if (popup && popup.hasAttribute('data-fixed-button')) {
t754_fixedPopupButton(recid);
}
}
function t754_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
// Блок с товарами может располагаться внизу страницы,
// поэтому он будет помечен как скрытый при первом открытии.
// Если в url есть ссылка на товар, то попап не будет видно.
if (rec.classList.contains('r_hidden')) {
rec.classList.remove('r_hidden');
// анимация появления блока мешает анимации попапа
if (rec.classList.contains('r_anim')) {
rec.classList.remove('r_anim');
}
}
var popup = rec.querySelector('.t-popup');
var fullProducts = popup.querySelectorAll('.t754__product-full');
Array.prototype.forEach.call(fullProducts, function (product) {
product.style.display = 'none';
});
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_triggerEvent(popup, t754_POPUP_SHOWED_EVENT_NAME);
}, 50);
setTimeout(function () {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 300);
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
}
function t754_closePopup(body, popup) {
var fullProducts = popup.querySelectorAll('.t754__product-full');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
popup.classList.remove('t-popup_show');
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tproduct/');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove < 0) {
indexToRemove = currentUrl.indexOf('%23!/tproduct/');
if (indexToRemove < 0) {
indexToRemove = currentUrl.indexOf('#%21%2Ftproduct%2F');
}
}
currentUrl = currentUrl.substring(0, indexToRemove);
setTimeout(function () {
popup.scrollTop = 0;
popup.style.display = 'none';
Array.prototype.forEach.call(fullProducts, function (product) {
product.style.display = 'none';
});
if (history.replaceState) {
window.history.replaceState('', '', currentUrl);
}
}, 300);
t_triggerEvent(popup, t754_POPUP_CLOSED_EVENT_NAME);
}
function t754_updateSlider(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft) || 0;
var paddingRight = parseInt(slider.style.paddingRight) || 0;
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var pos = parseFloat(sliderWrapper.getAttribute('data-slider-pos'));
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * pos + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
function t754_checkUrl(recid) {
// Если URL уже обработан другим блоком, пропускаем
if (window.catalogUrlProcessed) return;
var currentUrl = window.location.href;
var tprodIndex =
(currentUrl.indexOf('#!/tproduct/') + 1 ||
currentUrl.indexOf('%23!/tproduct/') + 1 ||
currentUrl.indexOf('#%21%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('#!%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('%23%21%2Ftproduct%2F') + 1) - 1;
if (tprodIndex !== -1) {
var currentUrl = currentUrl.substring(tprodIndex, currentUrl.length);
var curProdLid = currentUrl.substring(currentUrl.indexOf('-') + 1, currentUrl.length);
if (curProdLid) {
var curProdLidMatch = curProdLid.match(/([0-9]+)/g);
if (curProdLidMatch) {
curProdLid = curProdLidMatch[0];
}
}
if (currentUrl.indexOf(recid) === -1) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (currentUrl.indexOf(recid) !== 0 && rec.querySelector('[data-product-lid="' + curProdLid + '"]')) {
var currentLink = rec.querySelector('[data-product-lid="' + curProdLid + '"] [href^="#prodpopup"]');
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
if (currentLink) {
currentLink.dispatchEvent(event);
}
if (typeof rec.scrollIntoView === 'function') {
rec.scrollIntoView({ block: 'start' });
}
window.catalogUrlProcessed = true;
}
}
}
function t754_fixedPopupButton(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var MOBILE_MAX_WIDTH = 560;
var popup = rec.querySelector('.t-popup');
var popupContainer = popup.querySelector('.t-popup__container');
var btnWrappers = rec.querySelectorAll('.t754__btn-wrapper');
Array.prototype.forEach.call(btnWrappers, function (el) {
el.classList.add('t754__btn-wrapper-fixed');
});
function addStyle() {
popupContainer.style.paddingBottom = '90px';
// убираем transform чтобы блок не влиял на position: fixed у детей
// инлайн important можно добавить только так
popupContainer.style.cssText += ';transform:none !important;';
}
function resetStyle() {
popupContainer.style.paddingBottom = '';
popupContainer.style.transform = '';
}
function handleResize() {
if (window.innerWidth > MOBILE_MAX_WIDTH) {
resetStyle();
return;
}
addStyle();
}
if (window.isMobile) {
window.addEventListener('orientationchange', handleResize);
}
popup.addEventListener(t754_POPUP_SHOWED_EVENT_NAME, function () {
setTimeout(function () {
handleResize();
}, 0);
});
popup.addEventListener(t754_POPUP_CLOSED_EVENT_NAME, function () {
resetStyle();
});
window.addEventListener('resize', handleResize);
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
function t756_init(recid) {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t756_initPopup(recid);
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
}
function t756_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var popup = rec.querySelector('.t-popup');
if (!popup) return;
var hook = popup.getAttribute('data-tooltip-hook');
var analitics = popup.getAttribute('data-track-popup');
if (!hook) return;
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(hook);
});
document.addEventListener('click', function (event) {
var target = event.target.closest('a[href="' + hook + '"]');
if (target) {
t756_showPopup(recid);
event.preventDefault();
if (analitics && window.Tilda) {
var virtualTitle = hook;
if (virtualTitle.substring(0, 7) === '#popup:') {
virtualTitle = virtualTitle.substring(7);
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, hook);
});
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t756_closePopup(recid);
}
});
var closeButtons = rec.querySelectorAll('.t-popup__close, .t756__close-text');
Array.prototype.forEach.call(closeButtons, function (button) {
button.addEventListener('click', function () {
t756_closePopup(recid);
});
});
var orderLinks = rec.querySelectorAll('a[href*="#"]');
Array.prototype.forEach.call(orderLinks, function (link) {
link.addEventListener('click', linkHandler, false);
function linkHandler() {
var orderUrl = link.getAttribute('href');
if (
!orderUrl ||
(orderUrl.substring(0, 7) !== '#price:' && orderUrl.substring(0, 15) !== '#addtofavorites')
) {
t756_closePopup(recid);
if (!orderUrl || orderUrl.substring(0, 7) === '#popup:') {
setTimeout(function () {
document.body.classList.add('t-body_popupshowed');
}, 300);
}
/* fix for Android, which can't scroll to section because body has overflow: hidden */
if (window.navigator.userAgent.indexOf('Android') !== -1 && orderUrl.slice(0, 4) === '#rec') {
var elem = document.getElementById(orderUrl.replace('#', ''));
if (!elem) return;
var elemTopPos = elem.getBoundingClientRect().top + window.pageYOffset;
if (elemTopPos) window.scrollTo(0, parseInt(elemTopPos, 10));
}
}
}
});
document.addEventListener('keydown', function (event) {
var isGalarryShowed = document.body.classList.contains('t-zoomer__show');
if (isGalarryShowed) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (event.keyCode === 27) {
t756_closePopup(recid);
}
});
}
function t756_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
popup.focus();
t_onFuncLoad('t_popup__trapFocus', function () {
t_popup__trapFocus(popup);
});
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var position = parseInt(sliderWrapper.getAttribute('data-slider-pos'), 10);
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft, 10) || 0;
var paddingRight = parseInt(slider.style.paddingRight, 10) || 0;
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 50);
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
}
function t756_closePopup(recid) {
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var allPopups = document.querySelectorAll('.t-popup');
allPopups.forEach(function (popup) {
popup.classList.remove('t-popup_show');
});
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var hiddenPopups = document.querySelectorAll('.t-popup:not(.t-popup_show)');
hiddenPopups.forEach(function (popup) {
popup.style.display = 'none';
});
}, 300);
}
function t760_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
}, 500);
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
if (window.isMobile) return;
window.addEventListener(
'scroll',
t_throttle(function () {
t760_floating_scroll(recid);
}, 25)
);
t760_floating_updateDimension(recid);
/* update height/width when each image is loaded */
var images = rec.querySelectorAll('.t760__img');
Array.prototype.forEach.call(images, function (image) {
image.onload = function () {
t760_floating_updateDimension(recid);
};
});
window.addEventListener(
'resize',
t_throttle(function () {
t760_floating_updateDimension(recid);
})
);
var wrapperBlock = rec.querySelector('.t760');
if (wrapperBlock) {
wrapperBlock.addEventListener(
'displayChanged',
t_throttle(function () {
t760_floating_updateDimension(recid);
})
);
}
}
function t760_floating_updateDimension(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var floatableElements = rec.querySelectorAll('.t760__floatable[data-floating="yes"]');
Array.prototype.forEach.call(floatableElements, function (element) {
var column = element.parentNode;
column.style.minHeigh = '';
if (element.classList) {
element.classList.remove('t760__fixedTop');
element.classList.remove('t760__fixedBottom');
element.classList.remove('t760__floating');
}
element.style.maxWidth = '';
var elementDimension = t760_getElementDimension(element);
if (elementDimension.height) {
column.style.minHeight = elementDimension.height + 'px';
}
if (elementDimension.width) {
element.style.maxWidth = elementDimension.width + 'px';
}
});
/* trigger scroll */
var event = document.createEvent('HTMLEvents');
event.initEvent('scroll', true, false);
window.dispatchEvent(event);
}
function t760_floating_scroll(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var windowWidth = window.innerWidth;
var floatableElements = rec.querySelectorAll('.t760__floatable[data-floating="yes"]');
Array.prototype.forEach.call(floatableElements, function (element) {
if (windowWidth <= 1024) {
element.classList.remove('t760__fixedTop');
element.classList.remove('t760__fixedBottom');
element.classList.remove('t760__floating');
return;
}
var column = element.parentNode;
var elementDimension = t760_getElementDimension(element);
var columnDimension = t760_getElementDimension(column);
element.style.maxWidth = columnDimension.width + 'px';
if (columnDimension.height < elementDimension.height && columnDimension.height > 0) {
column.style.height = elementDimension.height;
}
var columnTop = column.getBoundingClientRect().top + window.pageYOffset;
var columnBottom = columnTop + columnDimension.height;
var windowTop = window.pageYOffset;
var offset = parseFloat(element.getAttribute('data-offset-top'));
if (windowTop + elementDimension.height + offset >= columnBottom) {
element.style.top = '';
element.classList.add('t760__fixedBottom');
element.classList.remove('t760__fixedTop');
element.classList.remove('t760__floating');
} else if (windowTop + offset > columnTop) {
element.style.top = offset + 'px';
element.classList.add('t760__floating');
element.classList.remove('t760__fixedBottom');
element.classList.remove('t760__fixedTop');
} else {
element.style.top = '';
element.classList.add('t760__fixedTop');
element.classList.remove('t760__fixedBottom');
element.classList.remove('t760__floating');
}
});
}
function t760_getElementDimension(element) {
var elementStyles = window.getComputedStyle(element);
return {
height: parseInt(elementStyles.height, 10) || 0,
width: parseInt(elementStyles.width, 10) || 0,
};
}
function t762_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t_sldsInit', function () {
setTimeout(function () {
t_sldsInit(recid);
}, 200);
});
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t762__hoverZoom_init(recid);
}, 500);
var wrapperBlock = rec.querySelector('.t762');
if (wrapperBlock) {
wrapperBlock.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
});
}
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}
function t762__hoverZoom_init(recid) {
if (window.isMobile) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
try {
if (!rec.querySelector('[data-hover-zoom]')) {
return;
}
var hoverZoomScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverZoomScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.src = hoverZoomScript;
script.onload = function () {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
};
script.onerror = function (error) {
console.log('Upload script error: ' + error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t764_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var sliderContainer = rec.querySelector('.t-slds__container');
var sliderWidth = sliderContainer ? sliderContainer.offsetWidth : 0;
var sliderPos = sliderWrapper ? sliderWrapper.getAttribute('data-slider-pos') : '0';
var pos = parseFloat(sliderPos);
if (sliderWrapper) sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * pos + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
var currentBlock = rec.querySelector('.t764');
if (currentBlock) {
currentBlock.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
});
}
}
function t766_init(recid) {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t766_initPopup(recid);
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
}
function t766_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var popup = rec.querySelector('.t-popup');
if (!popup) return;
var hook = popup.getAttribute('data-tooltip-hook');
if (!hook) return;
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(hook);
});
var analitics = popup.getAttribute('data-track-popup');
document.addEventListener('click', function (event) {
var target = event.target.closest('a[href="' + hook + '"]');
if (target) {
t766_showPopup(recid);
event.preventDefault();
if (analitics && window.Tilda) {
var virtualTitle = hook;
if (virtualTitle.substring(0, 7) === '#popup:') {
virtualTitle = virtualTitle.substring(7);
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, hook);
});
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t766_closePopup(recid);
}
});
var closeButtons = rec.querySelectorAll('.t-popup__close, .t766__close-text');
Array.prototype.forEach.call(closeButtons, function (button) {
button.addEventListener('click', function () {
t766_closePopup(recid);
});
});
var buyButtons = rec.querySelectorAll('a[href*="#"]');
Array.prototype.forEach.call(buyButtons, function (button) {
button.addEventListener('click', function (event) {
var url = button.getAttribute('href');
if (!url || (url.substring(0, 7) !== '#price:' && url.substring(0, 15) !== '#addtofavorites')) {
t766_closePopup(recid);
/*
TODO: всем попап добавляется класс скрытия скролла, есть плашки с функционалом попап, но не требует убирать скролл,
необходимо проверить все модальные окна и убрать данный функционал(если возможно),
так как в момент показа попап, отрабатывает функционал блока и он сам добавляет/убирает нужные ему классы
*/
if (!url || url.substring(0, 7) === '#popup:') {
var popupHook = document.querySelector('.t-popup[data-tooltip-hook="' + url + '"]');
var recType = '';
if (popupHook) {
var recElement = popupHook.closest('.r');
recType =
recElement.getAttribute('data-parenttplid') || recElement.getAttribute('data-record-type');
}
if (recType !== '945') {
setTimeout(function () {
document.body.classList.add('t-body_popupshowed');
}, 300);
}
} else if (url.substring(0, 1) === '#' && /(android)/i.test(navigator.userAgent)) {
/* Fix for Android unable to scroll to anchor point from "ScrollView" */
event.preventDefault();
window.setTimeout(function () {
var elID = url.substring(1);
var el = document.getElementById(elID) || document.getElementsByName(elID)[0];
if (el) {
el.scrollIntoView();
window.location.hash = elID;
}
}, 300);
}
}
});
});
document.addEventListener('keydown', function (event) {
var isGallaryShowed = document.body.classList.contains('t-zoomer__show');
if (isGallaryShowed) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (event.keyCode === 27) {
t766_closePopup(recid);
}
});
}
function t766_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
popup.focus();
t_onFuncLoad('t_popup__trapFocus', function () {
t_popup__trapFocus(popup);
});
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var position = parseInt(sliderWrapper.getAttribute('data-slider-pos'), 10);
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft, 10) || 0;
var paddingRight = parseInt(slider.style.paddingRight, 10) || 0;
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 50);
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
}
function t766_closePopup(recid) {
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var allPopups = document.querySelectorAll('.t-popup');
Array.prototype.forEach.call(allPopups, function (popup) {
popup.classList.remove('t-popup_show');
});
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var hiddenPopups = document.querySelectorAll('.t-popup:not(.t-popup_show)');
hiddenPopups.forEach(function (popup) {
popup.style.display = 'none';
});
}, 300);
}
function t770_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t770');
var burger = rec.querySelector('.t-menuburger');
var logo = menu ? menu.querySelector('.t770__imglogo') : null;
var menuPosition = menu ? menu.style.position || window.getComputedStyle(menu).position : '';
var isEditMode = menu ? menu.classList.contains('t770_redactor-mode') : false;
if (!isEditMode) {
t_onFuncLoad('t_menu__highlightActiveLinks', function () {
t_menu__highlightActiveLinks('.t770__list_item a');
});
if (menu) menu.classList.remove('t770__beforeready');
if (menu && menuPosition === 'fixed') {
t_onFuncLoad('t_menu__findAnchorLinks', function () {
t_menu__findAnchorLinks(recid, '.t770__desktoplist .t770__list_item a');
});
if (menu.getAttribute('data-bgopacity-two')) {
t_onFuncLoad('t_menu__changeBgOpacity', function () {
t_menu__changeBgOpacity(recid, '.t770');
window.addEventListener(
'scroll',
t_throttle(function () {
t_menu__changeBgOpacity(recid, '.t770');
}, 200)
);
});
}
if (menu.getAttribute('data-appearoffset')) {
menu.classList.remove('t770__beforeready');
t_onFuncLoad('t_menu__showFixedMenu', function () {
t_menu__showFixedMenu(recid, '.t770');
window.addEventListener(
'scroll',
t_throttle(function () {
t_menu__showFixedMenu(recid, '.t770');
}, 200)
);
});
}
}
}
if (logo && logo.getAttribute('data-img-width')) {
t770_setLogoPadding(recid);
}
if (burger) {
t_onFuncLoad('t_menu__createMobileMenu', function () {
t_menu__createMobileMenu(recid, '.t770');
});
}
t_onFuncLoad('t_menu__setBGcolor', function () {
t_menu__setBGcolor(recid, '.t770');
window.addEventListener(
'resize',
t_throttle(function () {
t_menu__setBGcolor(recid, '.t770');
}, 200)
);
});
}
function t770_setLogoPadding(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec || window.innerWidth <= 980) return;
var menu = rec.querySelector('.t770');
var logo = menu ? menu.querySelector('.t770__logowrapper') : null;
var leftSide = menu ? menu.querySelector('.t770__leftwrapper') : null;
var rightSide = menu ? menu.querySelector('.t770__rightwrapper') : null;
var logoWidth = logo ? logo.clientWidth : 0;
if (leftSide) leftSide.style.paddingRight = logoWidth / 2 + 50 + 'px';
if (rightSide) rightSide.style.paddingLeft = logoWidth / 2 + 50 + 'px';
}
function t772_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var container = rec.querySelector('.t772__container_mobile-flex');
if (!container) return;
var allRecords = document.getElementById('allrecords');
if (
!allRecords.getAttribute('data-tilda-mode') &&
(window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes')
) {
t_onFuncLoad('t_lazyload_update', function () {
container.addEventListener(
'scroll',
t_throttle(function () {
t_lazyload_update();
})
);
});
}
}
function t774_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t774');
if (!container) return;
setTimeout(function () {
t774__updateLazyLoad(recId);
}, 500);
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t774__updateLazyLoad(recId) {
var allRecords = document.getElementById('allrecords');
var container = document.querySelector('#rec' + recId + ' .t774__container_mobile-flex');
if (!allRecords) return;
var mode = allRecords.getAttribute('data-tilda-mode');
if (container && mode !== 'edit' && mode !== 'preview' && window.lazy === 'y') {
container.addEventListener(
'scroll',
t_throttle(function () {
if (window.lazy === 'y' || (allRecords && allRecords.getAttribute('data-tilda-lazy') === 'yes')) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 500)
);
}
}
var t776_POPUP_SHOWED_EVENT_NAME = 'catalog:popupShowed';
var t776_POPUP_CLOSED_EVENT_NAME = 'catalog:popupClosed';
function t776__init(recid) {
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t776_initPopup(recid);
t776__hoverZoom_init(recid);
t776__updateLazyLoad(recid);
t_onFuncLoad('t_store_addProductQuantityEvents', function () {
t776_initProductQuantity(recid);
});
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
}
function t776_initProductQuantity(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var productList = rec.querySelectorAll('.t776__col, .t776__product-full');
Array.prototype.forEach.call(productList, function (product) {
t_store_addProductQuantityEvents(product);
});
}
function t776__showMore(recid) {
var rec = document.querySelector('#rec' + recid + ' .t776');
if (!rec) return;
var cardsCount = parseInt(rec.getAttribute('data-show-count'), 10);
if (isNaN(cardsCount) || cardsCount < 1) return;
var showMoreButton = rec.querySelector('.t776__showmore');
if (!showMoreButton) return;
const showMoreTextContainer = showMoreButton.querySelector('.js-btn-txt');
if (showMoreTextContainer) {
showMoreTextContainer.textContent = t776__dict();
}
var firstProductCard = rec.querySelector('.t776__col');
if (!firstProductCard) return;
var productCards = rec.querySelectorAll('.t776__col');
var cardsLenght = productCards.length;
if (!window.getComputedStyle) return;
if (cardsLenght > cardsCount) {
showMoreButton.style.removeProperty('display');
}
Array.prototype.forEach.call(productCards, function (card) {
card.style.display = 'none';
});
t776__showSeparator(rec, cardsCount);
for (var i = 0; i < cardsCount; i++) {
if (productCards[i]) {
productCards[i].style.removeProperty('display');
}
}
window.addEventListener('resize', function () {
Array.prototype.forEach.call(productCards, function (card) {
card.style.display = 'none';
});
for (var i = 0; i < cardsCount; i++) {
if (productCards[i]) {
productCards[i].style.removeProperty('display');
}
}
});
var showedCardsCount = 0;
showMoreButton.addEventListener('click', function () {
/* считаем сколько карточек уже показано и прибавляем к числу "сколько показывать до кнопки ещё" */
Array.prototype.forEach.call(productCards, function (product) {
if (product.style.display === '') {
showedCardsCount++;
}
});
cardsCount += showedCardsCount;
for (var i = 0; i < cardsCount; i++) {
if (productCards[i]) {
productCards[i].style.removeProperty('display');
}
}
if (cardsCount >= cardsLenght) {
showMoreButton.style.display = 'none';
}
t776__showSeparator(rec, cardsCount);
if (rec.querySelector('[data-buttons-v-align]')) {
t776__alignButtons(recid);
}
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
function t776__showSeparator(rec, cardsCount) {
if (window.jQuery && rec instanceof jQuery) {
rec = rec.get(0);
}
var allSeparators = rec.querySelectorAll('.t776__separator_number');
Array.prototype.forEach.call(allSeparators, function (separator) {
separator.classList.add('t776__separator_hide');
if (separator.getAttribute('data-product-separator-number') <= cardsCount) {
separator.classList.remove('t776__separator_hide');
}
});
}
function t776__dict() {
var dictionary = {
EN: 'Load more',
RU: 'Загрузить еще',
FR: 'Charger plus',
DE: 'Mehr laden',
ES: 'Carga más',
PT: 'Carregue mais',
UK: 'Завантажити ще',
JA: 'もっと読み込む',
ZH: '裝載更多',
};
var language = window.browserLang;
return dictionary[language] ? dictionary[language] : dictionary['EN'];
}
function t776__hoverZoom_init(recid) {
if (window.isMobile) {
return;
}
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var parent = rec.querySelector('.t776__parent');
try {
if (parent && parent.getAttribute('data-hover-zoom') !== 'yes') {
return;
}
var hoverScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = hoverScript;
script.onload = function () {
setTimeout(function () {
t_hoverZoom_init(recid);
}, 500);
};
script.onerror = function (error) {
console.log('Upload script error: ', error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t776__updateLazyLoad(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var scrollContainer = rec.querySelector(' .t776__container_mobile-flex');
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
})
);
}
}
function t776_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var openerLink = rec.querySelectorAll('[href^="#prodpopup"]');
var popup = rec.querySelector('.t-popup');
Array.prototype.forEach.call(openerLink, function (link) {
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
/* ищем среди всех блоков ссылки по которым можно открыть попап текущего блока */
var productLinks = document.querySelectorAll('.r a[href$="#!/tproduct/' + recid + '-' + productLid + '"]');
Array.prototype.forEach.call(productLinks, function (productLink) {
productLink.addEventListener('click', function () {
/* перепроверяем что попап ещё существует */
if (rec.querySelector('[data-product-lid="' + productLid + '"]')) {
var linkToPopup = product.querySelector('[href^="#prodpopup"]');
if (linkToPopup) {
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
linkToPopup.dispatchEvent(event);
}
}
});
});
link.addEventListener('click', clickOnceHandler, false);
function clickOnceHandler(event) {
event.preventDefault();
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid + ' #t776__product-' + productLid + '');
});
link.removeEventListener('click', clickOnceHandler, false);
}
link.addEventListener('click', showPopupHandler, false);
function showPopupHandler(event) {
event.preventDefault();
if (
event.target.classList.contains('t1002__addBtn') ||
event.target.parentNode.classList.contains('t1002__addBtn')
) {
return;
}
t776_showPopup(recid);
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
var allProducts = popup.querySelectorAll('.js-product');
Array.prototype.forEach.call(allProducts, function (product) {
product.style.display = 'none';
});
var productFull = popup.querySelector('.js-product[data-product-lid="' + productLid + '"]');
if (productFull) {
productFull.style.display = 'block';
}
var analitics = popup.getAttribute('data-track-popup');
if (analitics && productFull && window.Tilda) {
var productName = productFull.querySelector('.js-product-name');
if (productName) {
var virtualTitle = productName.textContent;
if (!virtualTitle) {
virtualTitle = 'prod' + productLid;
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
var currentUrl = window.location.href;
if (currentUrl.indexOf('#!/tproduct/') === -1 && currentUrl.indexOf('%23!/tproduct/') === -1) {
if (typeof history.replaceState !== 'undefined') {
window.history.replaceState(
'',
'',
window.location.href + '#!/tproduct/' + recid + '-' + productLid
);
}
}
t776_updateSlider(recid + ' #t776__product-' + productLid);
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
});
if (document.querySelectorAll('#record' + recid).length === 0) {
t776_checkUrl(recid);
}
if (popup && popup.hasAttribute('data-fixed-button')) {
t776_fixedPopupButton(recid);
}
}
function t776_checkUrl(recid) {
// Если URL уже обработан другим блоком, пропускаем
if (window.catalogUrlProcessed) return;
var currentUrl = window.location.href;
var tprodIndex =
(currentUrl.indexOf('#!/tproduct/') + 1 ||
currentUrl.indexOf('%23!/tproduct/') + 1 ||
currentUrl.indexOf('#%21%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('#!%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('%23%21%2Ftproduct%2F') + 1) - 1;
if (tprodIndex !== -1) {
var currentUrl = currentUrl.substring(tprodIndex, currentUrl.length);
var curProdLid = currentUrl.substring(currentUrl.indexOf('-') + 1, currentUrl.length);
if (curProdLid) {
var curProdLidMatch = curProdLid.match(/([0-9]+)/g);
if (curProdLidMatch) {
curProdLid = curProdLidMatch[0];
}
}
if (currentUrl.indexOf(recid) === -1) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (currentUrl.indexOf(recid) !== 0 && rec.querySelector('[data-product-lid="' + curProdLid + '"]')) {
var currentLink = rec.querySelector('[data-product-lid="' + curProdLid + '"] [href^="#prodpopup"]');
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
if (currentLink) {
currentLink.dispatchEvent(event);
}
if (typeof rec.scrollIntoView === 'function') {
rec.scrollIntoView({ block: 'start' });
}
window.catalogUrlProcessed = true;
}
}
}
function t776_updateSlider(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft) || 0;
var paddingRight = parseInt(slider.style.paddingRight) || 0;
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var position = parseFloat(sliderWrapper.getAttribute('data-slider-pos'));
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
function t776_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_triggerEvent(popup, t776_POPUP_SHOWED_EVENT_NAME);
}, 50);
setTimeout(function () {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 300);
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t776_closePopup(body, popup);
}
});
var closeButtons = rec.querySelectorAll('.t-popup__close, .t776__close-text');
Array.prototype.forEach.call(closeButtons, function (button) {
button.addEventListener('click', function () {
t776_closePopup(body, popup);
});
});
document.addEventListener('keydown', function (event) {
var isGalleryShowedOldLib = document.body.classList.contains('t-zoomer__show');
if (isGalleryShowedOldLib) return;
var isGalleryShowedNewLib = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowedNewLib) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (popup && popup.classList.contains('t-popup_show')) {
if (event.keyCode === 27) {
t776_closePopup(body, popup);
}
}
});
if (window.isSafari) {
setTimeout(function () {
popup.scrollTop = 1;
});
}
}
function t776_closePopup(body, popup) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
popup.classList.remove('t-popup_show');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tproduct/');
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove < 0) {
indexToRemove = currentUrl.indexOf('%23!/tproduct/');
}
currentUrl = currentUrl.substring(0, indexToRemove);
setTimeout(function () {
popup.scrollTop = 0;
popup.style.display = 'none';
if (typeof history.replaceState !== 'undefined') {
window.history.replaceState('', '', currentUrl);
}
}, 300);
t_triggerEvent(popup, t776_POPUP_CLOSED_EVENT_NAME);
}
function t776_fixedPopupButton(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var MOBILE_MAX_WIDTH = 560;
var popup = rec.querySelector('.t-popup');
var popupContainer = popup.querySelector('.t-popup__container');
var btnWrappers = rec.querySelectorAll('.t776__btn-wrapper');
Array.prototype.forEach.call(btnWrappers, function (el) {
el.classList.add('t776__btn-wrapper-fixed');
});
function addStyle() {
popupContainer.style.paddingBottom = '90px';
// убираем transform чтобы блок не влиял на position: fixed у детей
// инлайн important можно добавить только так
popupContainer.style.cssText += ';transform:none !important;';
}
function resetStyle() {
popupContainer.style.paddingBottom = '';
popupContainer.style.transform = '';
}
function handleResize() {
if (window.innerWidth > MOBILE_MAX_WIDTH) {
resetStyle();
return;
}
addStyle();
}
if (window.isMobile) {
window.addEventListener('orientationchange', handleResize);
}
popup.addEventListener(t776_POPUP_SHOWED_EVENT_NAME, function () {
setTimeout(function () {
handleResize();
});
});
popup.addEventListener(t776_POPUP_CLOSED_EVENT_NAME, function () {
resetStyle();
});
window.addEventListener('resize', handleResize);
}
var t778_POPUP_SHOWED_EVENT_NAME = 'catalog:popupShowed';
var t778_POPUP_CLOSED_EVENT_NAME = 'catalog:popupClosed';
function t778__init(recid) {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t778_initPopup(recid);
t778__hoverZoom_init(recid);
t778__updateLazyLoad(recid);
t778_initQuantityInputs(recid);
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var quantityBtns = rec.querySelectorAll(
'.t778__col .t-store__prod__quantity, .t778__product-full .t-store__prod__quantity'
);
if (quantityBtns.length) {
t_onFuncLoad('t_store_addProductQuantityEvents', function () {
t778_initProductQuantity(recid);
});
}
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}
function t778_initProductQuantity(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var productList = rec.querySelectorAll('.t778__col, .t778__product-full');
Array.prototype.forEach.call(productList, function (product) {
t_store_addProductQuantityEvents(product);
});
}
function t778__showMore(recid) {
var rec = document.querySelector('#rec' + recid + ' .t778');
if (!rec) return;
var cardsShowLimit = parseInt(rec.getAttribute('data-show-count'), 10);
if (isNaN(cardsShowLimit) || cardsShowLimit <= 0) return;
var showMoreButton = rec.querySelector('.t778__showmore');
if (!showMoreButton) return;
const showMoreTextContainer = showMoreButton.querySelector('.js-btn-txt');
if (showMoreTextContainer) {
showMoreTextContainer.textContent = t778__dict();
}
showMoreButton.style.removeProperty('display');
var allProductCards = rec.querySelectorAll('.t778__col');
Array.prototype.forEach.call(allProductCards, function (productCard) {
productCard.style.display = 'none';
});
var cardsNumber = allProductCards.length;
t778__showSeparator(rec, cardsShowLimit);
for (var i = 0; i < cardsShowLimit; i++) {
if (allProductCards[i]) {
allProductCards[i].style.display = 'inline-block';
}
}
showMoreButton.addEventListener('click', function () {
var currentColumns = rec.querySelectorAll('.t778__col');
var currentColumnsShowed = 0;
Array.prototype.forEach.call(currentColumns, function (column) {
if (column.style.display === 'inline-block') {
++currentColumnsShowed;
}
});
for (var i = 0; i < cardsShowLimit + currentColumnsShowed; i++) {
if (allProductCards[i]) {
allProductCards[i].style.display = 'inline-block';
}
}
var event = document.createEvent('HTMLEvents');
event.initEvent('displayChanged', true, false);
rec.dispatchEvent(event);
if (cardsShowLimit + currentColumnsShowed >= cardsNumber) {
showMoreButton.style.display = 'none';
}
t778__showSeparator(rec, cardsShowLimit + currentColumnsShowed);
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
function t778__showSeparator(rec, cardsShowLimit) {
if (window.jQuery && rec instanceof jQuery) {
rec = rec.get(0);
}
var allSeparators = rec.querySelectorAll('.t778__separator_number');
Array.prototype.forEach.call(allSeparators, function (separator) {
separator.classList.add('t778__separator_hide');
if (separator.getAttribute('data-product-separator-number') <= cardsShowLimit) {
separator.classList.remove('t778__separator_hide');
}
});
}
function t778__dict() {
var dictionary = {
EN: 'Load more',
RU: 'Загрузить еще',
FR: 'Charger plus',
DE: 'Mehr laden',
ES: 'Carga más',
PT: 'Carregue mais',
UK: 'Завантажити ще',
JA: 'もっと読み込む',
ZH: '裝載更多',
};
var language = window.browserLang;
return dictionary[language] ? dictionary[language] : dictionary['EN'];
}
function t778__hoverZoom_init(recid) {
if (window.isMobile) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
try {
if (!rec.querySelector('[data-hover-zoom]')) {
return;
}
var hoverScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = hoverScript;
script.onload = function () {
setTimeout(function () {
t_hoverZoom_init(recid);
}, 500);
};
script.onerror = function (error) {
console.log('Upload script error: ', error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t778__updateLazyLoad(recid) {
var scrollContainer = document.querySelector('#rec' + recid + ' .t778__container_mobile-flex');
var tRecords = document.querySelector('.t-records');
if (!tRecords) return;
var currentMode = tRecords.getAttribute('data-tilda-mode');
var colFixed = document.querySelector('#rec' + recid + ' .t778__col_fixed');
var allRecords = document.getElementById('allrecords');
var scrollFunc = t_throttle(function () {
if (window.lazy === 'y' || (allRecords && allRecords.getAttribute('data-tilda-lazy') === 'yes')) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
if (currentMode !== 'edit' && currentMode !== 'preview') {
if (scrollContainer) scrollContainer.addEventListener('scroll', scrollFunc);
if (colFixed) {
var popup = document.querySelector('#rec' + recid + ' .t-popup');
if (popup) popup.addEventListener('scroll', scrollFunc);
}
}
}
function t778_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var allPopupLinks = rec.querySelectorAll('[href^="#prodpopup"]');
if (!allPopupLinks.length) return;
var popup = rec.querySelector('.t-popup');
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t778_closePopup(document.body, popup);
}
});
Array.prototype.forEach.call(allPopupLinks, function (popupLink) {
var product = popupLink.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
/* ищем среди всех блоков ссылки по которым можно открыть попап текущего блока */
var productLinks = document.querySelectorAll('.r a[href$="#!/tproduct/' + recid + '-' + productLid + '"]');
Array.prototype.forEach.call(productLinks, function (productLink) {
productLink.addEventListener('click', function () {
/* перепроверяем что попап ещё существует */
if (rec.querySelector('[data-product-lid="' + productLid + '"]')) {
var linkToPopup = product.querySelector('[href^="#prodpopup"]');
if (linkToPopup) {
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
linkToPopup.dispatchEvent(event);
}
}
});
});
popupLink.addEventListener('click', clickOnceHandler, { once: true });
function clickOnceHandler(event) {
event.preventDefault();
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid + ' #t778__product-' + productLid);
});
popupLink.removeEventListener('click', clickOnceHandler, false);
}
popupLink.addEventListener('click', function (event) {
event.preventDefault();
if (
event.target.classList.contains('t1002__addBtn') ||
event.target.parentNode.classList.contains('t1002__addBtn')
) {
return;
}
t778_showPopup(recid);
Array.prototype.forEach.call(popup.querySelectorAll('.js-product'), function (product) {
product.style.display = 'none';
});
var productFull = popup.querySelector('.js-product[data-product-lid="' + productLid + '"]');
if (productFull) {
productFull.style.display = 'block';
}
var analitics = popup.getAttribute('data-track-popup');
if (analitics && productFull && window.Tilda) {
var productName = productFull.querySelector('.js-product-name');
if (productName) {
var virtualTitle = productName.textContent;
if (!virtualTitle) {
virtualTitle = 'prod' + productLid;
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
var currentUrl = window.location.href;
if (currentUrl.indexOf('#!/tproduct/') === -1 && currentUrl.indexOf('%23!/tproduct/') === -1) {
if (history.replaceState) {
window.history.replaceState(
'',
'',
window.location.href + '#!/tproduct/' + recid + '-' + productLid
);
}
}
t778_updateSlider(recid + ' #t778__product-' + productLid);
setTimeout(function () {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 500);
});
});
if (!document.getElementById('record' + recid)) {
t778_checkUrl(recid);
}
if (popup && popup.hasAttribute('data-fixed-button')) {
t778_fixedPopupButton(recid);
}
}
function t778_checkUrl(recid) {
// Если URL уже обработан другим блоком, пропускаем
if (window.catalogUrlProcessed) return;
var currentUrl = window.location.href;
var tprodIndex =
(currentUrl.indexOf('#!/tproduct/') + 1 ||
currentUrl.indexOf('%23!/tproduct/') + 1 ||
currentUrl.indexOf('#%21%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('#!%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('%23%21%2Ftproduct%2F') + 1) - 1;
if (tprodIndex !== -1) {
var currentUrl = currentUrl.substring(tprodIndex, currentUrl.length);
var curProdLid = currentUrl.substring(currentUrl.indexOf('-') + 1, currentUrl.length);
if (curProdLid) {
var curProdLidMatch = curProdLid.match(/([0-9]+)/g);
if (curProdLidMatch) {
curProdLid = curProdLidMatch[0];
}
}
if (currentUrl.indexOf(recid) === -1) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (currentUrl.indexOf(recid) !== 0 && rec.querySelector('[data-product-lid="' + curProdLid + '"]')) {
var currentLink = rec.querySelector('[data-product-lid="' + curProdLid + '"] [href^="#prodpopup"]');
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
if (currentLink) {
currentLink.dispatchEvent(event);
}
if (typeof rec.scrollIntoView === 'function') {
rec.scrollIntoView({ block: 'start' });
}
window.catalogUrlProcessed = true;
}
}
}
function t778_updateSlider(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft, 10) || 0;
var paddingRight = parseInt(slider.style.paddingRight, 10) || 0;
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var position = parseInt(sliderWrapper.getAttribute('data-slider-pos'), 10);
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
function t778_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_triggerEvent(popup, t778_POPUP_SHOWED_EVENT_NAME);
}, 50);
setTimeout(function () {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 300);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
var closeButtons = document.querySelectorAll('.t-popup__close, .t778__close-text');
Array.prototype.forEach.call(closeButtons, function (closeButton) {
closeButton.addEventListener('click', function () {
t778_closePopup(document.body, popup);
});
});
document.addEventListener('keydown', function (event) {
var isGalleryShowedOldLib = document.body.classList.contains('t-zoomer__show');
if (isGalleryShowedOldLib) return;
var isGalleryShowedNewLib = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowedNewLib) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (popup && popup.classList.contains('t-popup_show')) {
if (event.key === 'Escape') {
t778_closePopup(document.body, popup);
}
}
});
}
function t778_closePopup(body, popup) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
popup.classList.remove('t-popup_show');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tproduct/');
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove !== -1) {
indexToRemove = currentUrl.indexOf('%23!/tproduct/');
}
currentUrl = currentUrl.substring(0, indexToRemove);
setTimeout(function () {
popup.scrollTop = 0;
popup.style.display = 'none';
if (history.replaceState) {
window.history.replaceState('', '', currentUrl);
}
}, 300);
t_triggerEvent(popup, t778_POPUP_CLOSED_EVENT_NAME);
}
function t778_fixedPopupButton(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var MOBILE_MAX_WIDTH = 560;
var popup = rec.querySelector('.t-popup');
var popupContainer = popup.querySelector('.t-popup__container');
var btnWrappers = rec.querySelectorAll('.t778__btn-wrapper');
Array.prototype.forEach.call(btnWrappers, function (el) {
el.classList.add('t778__btn-wrapper-fixed');
});
function addStyle() {
popupContainer.style.paddingBottom = '90px';
// убираем transform чтобы блок не влиял на position: fixed у детей
// инлайн important можно добавить только так
popupContainer.style.cssText += ';transform:none !important;';
}
function resetStyle() {
popupContainer.style.paddingBottom = '';
popupContainer.style.transform = '';
}
function handleResize() {
if (window.innerWidth > MOBILE_MAX_WIDTH) {
resetStyle();
return;
}
addStyle();
}
if (window.isMobile) {
window.addEventListener('orientationchange', handleResize);
}
popup.addEventListener(t778_POPUP_SHOWED_EVENT_NAME, function () {
setTimeout(function () {
handleResize();
});
});
popup.addEventListener(t778_POPUP_CLOSED_EVENT_NAME, function () {
resetStyle();
});
window.addEventListener('resize', handleResize);
}
function t778_initQuantityInputs(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var quantityInputs = rec.querySelectorAll('.t-store__prod__quantity-input');
Array.prototype.forEach.call(quantityInputs, function (input) {
var maxValue = parseInt(input.getAttribute('max'), 10);
var minValue = parseInt(input.getAttribute('min'), 10);
input.addEventListener('input', function (e) {
var value = parseInt(e.target.value, 10);
if (value > maxValue) {
input.value = 99999;
return;
}
if (value < minValue) {
input.value = 1;
}
});
});
}
function t780_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (rec.querySelector('.t-slds')) {
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
});
}
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
var wrapperBlock = rec.querySelector('.t780');
if (wrapperBlock) {
wrapperBlock.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
});
}
}
t_onReady(function () {
t_onFuncLoad('t782_init', function () {
t782_init();
});
});
function t782_init() {
var allBlocksST105 = document.querySelectorAll('[data-record-type="782"], [data-parenttplid="782"]');
// предотвращает несколько инициализаций
if (window.st105_inited === 'yes' && allBlocksST105.length > 1) {
console.error('Error: More than one payment block (ST105) on the page. Remove a duplicate.');
return;
}
window.st105_inited = 'yes';
/* new block */
window.tildaGetPaymentForm = function (price, product, paysystem, blockid, lid, uid, orderLink, capthaKey) {
var allRecords = document.querySelector('#allrecords');
var nextUrl = 'htt' + 'ps://' + window.tildaForm.endpoint + '/payment/next/';
var virtualPage = '/tilda/' + blockid + '/payment/';
var virtualTitle = 'Go to payment from ' + blockid;
if (window.Tilda && typeof Tilda.sendEventToStatistics === 'function') {
Tilda.sendEventToStatistics(virtualPage, virtualTitle, product, price);
}
var requestData = {
projectid: allRecords.getAttribute('data-tilda-project-id'),
pageid: allRecords.getAttribute('data-tilda-page-id'),
formskey: allRecords.getAttribute('data-tilda-formskey'),
price: price,
product: product,
system: paysystem,
recid: blockid,
'tildaspec-version-lib': 2.1,
lid: lid ? lid : '',
uid: uid ? uid : '',
};
if (capthaKey) requestData['tildaspec-tildacaptcha'] = capthaKey;
var formData = new FormData();
for (var key in requestData) {
formData.append(key, requestData[key]);
}
var request = new XMLHttpRequest();
request.open('POST', nextUrl, true);
request.timeout = 10000;
request.responseType = 'json';
request.send(formData);
request.onload = function () {
var data = request.response;
if (orderLink) {
orderLink.classList.remove('t-btn_sending');
}
submitFlag = 0;
if (data && data.redirectto && data.redirectto.length == 3) {
window.tildaForm.endpoint = 'forms.tildaapi' + '.' + data.redirectto;
tildaGetPaymentForm(price, product, paysystem, blockid, lid, uid, orderLink, capthaKey);
return false;
}
if (data && data.needcaptcha) {
t782_drawRecaptcha(price, product, paysystem, blockid, lid, uid, orderLink);
return false;
}
/* если нужно переслать данные дальше, в платежную систему */
if (data && data.next && data.next.type > '') {
var result = window.tildaForm.payment(document.querySelector('#' + blockid), data.next);
successurl = '';
return false;
}
if (data && data.error) {
alert(data.error);
}
};
request.onerror = function (error) {
if (orderLink) {
orderLink.classList.remove('t-btn_sending');
}
submitFlag = 0;
var errorText = '';
if (error && error.responseText > '') {
errorText = error.responseText + '. Please, try again later.';
} else if (error && error.statusText) {
errorText = 'Error [' + error.statusText + ']. Please, try again later.';
} else {
errorText = 'Unknown error. Please, try again later.';
}
alert(errorText);
};
};
var payBox = document.querySelector('.js-payment-systembox');
var submitFlag = 0;
var clickEvent = function (event) {
var orderLink = event.target.closest('a[href^="#order:"]');
if (!orderLink) return;
event.preventDefault();
/* защита от повторной отправки */
if (submitFlag === 1) {
return false;
}
var isST100Exist = document.querySelector('.t706');
if (isST100Exist) {
var text =
'Conflict error: there are two incompatible blocks on the page: ST100 and ST105. Please go to Tilda Editor and delete one of these blocks.';
if (window.browserLang === 'RU') {
text =
'Ошибка: на странице есть два несовместимых блока: ST100 и ST105. Пожалуйста, перейдите в редактор Тильды и удалите один из этих блоков.';
}
console.error(text);
return false;
}
orderLink.classList.add('t-btn_sending');
submitFlag = 1;
/* format: #order:Product name=Cost */
var tempOrder = orderLink.getAttribute('href');
var orderParameters;
var price = 0;
var product = '';
var lid = '';
var uid = '';
if (tempOrder.substring(0, 7) === '#order:') {
tempOrder = tempOrder.split(':');
orderParameters = tempOrder[1].split('=');
price = t782_cart__cleanPrice(orderParameters[1]);
product = t782_cart__escapeHtml(orderParameters[0]);
} else {
var productElement = orderLink.closest('.js-product');
if (productElement) {
if (product === '') {
product = productElement.querySelector('.js-product-name').textContent;
product = product ? product : '';
}
if (price === '' || price === 0) {
price = productElement.querySelector('.js-product-price').textContent;
price = t782_cart__cleanPrice(price);
}
lid = productElement.getAttribute('data-product-lid') || '';
uid =
productElement.getAttribute('data-product-uid') ||
productElement.getAttribute('data-product-gen-uid') ||
'';
var optprice = 0;
var options = [];
var productOptions = productElement.querySelectorAll('.js-product-option');
Array.prototype.forEach.call(productOptions, function (option) {
var productOption = option.querySelector('.js-product-option-name').textContent;
var checkedOption = option.querySelector('option:checked');
if (!checkedOption) return;
var productVariant = checkedOption.value;
var productPrice = checkedOption.getAttribute('data-product-variant-price');
productPrice = t782_cart__cleanPrice(productPrice);
if (productOption && productVariant) {
productOption = t782_cart__escapeHtml(productOption);
productVariant = t782_cart__escapeHtml(productVariant);
productVariant = productVariant.replace(/(?:\r\n|\r|\n)/g, '');
if (productOption.length > 1 && productOption.charAt(productOption.length - 1) == ':') {
productOption = productOption.substring(0, productOption.length - 1);
}
optprice = optprice + parseFloat(productPrice).toFixed(2);
options.push(productOption + '=' + productVariant);
}
});
if (options.length) {
product = product + ': ' + options.join(', ');
}
}
}
var blockid = orderLink.closest('.r').getAttribute('id');
var paySystems = document.querySelectorAll('.js-dropdown-paysystem .js-payment-system');
if (!product) {
var closestTitle = orderLink.closest('.r').querySelector('.title');
if (closestTitle) {
product = closestTitle.textContent;
} else {
product = orderLink.textContent;
}
}
if (paySystems.length === 0) {
alert('Error: payment system is not assigned. Add payment system in the Site Settings.');
orderLink.classList.remove('t-btn_sending');
submitFlag = 0;
return;
}
if (paySystems.length / allBlocksST105.length === 1) {
var currentPaySystem = paySystems[0].getAttribute('data-payment-system');
tildaGetPaymentForm(price, product, currentPaySystem, blockid, lid, uid, orderLink);
return;
} else {
var payBoxPaddingLeft = parseInt(window.getComputedStyle(payBox).paddingLeft, 10);
var payBoxPaddingRight = parseInt(window.getComputedStyle(payBox).paddingRight, 10);
var payBoxOuterWidth = parseInt(window.getComputedStyle(payBox).width, 10);
var payBoxWidth = payBoxOuterWidth - (payBoxPaddingLeft + payBoxPaddingRight);
var orderLinkOffset = {
top: orderLink.getBoundingClientRect().top + window.pageYOffset,
left: orderLink.getBoundingClientRect().left + window.pageXOffset,
};
payBox.style.top = orderLinkOffset.top + 'px';
t782_setPayBoxCoordinate(payBox, payBoxWidth, orderLinkOffset, orderLink);
payBox.style.marginTop = '-40px';
payBox.style.position = 'absolute';
payBox.style.zIndex = '9999999';
document.querySelector('body').appendChild(payBox);
window.addEventListener('resize', function () {
if (window.getComputedStyle(payBox).display === 'block' && orderLink) {
payBox.style.top = orderLinkOffset.top + 'px';
t782_setPayBoxCoordinate(payBox, payBoxWidth, orderLinkOffset, orderLink);
}
});
payBox.style.display = 'block';
document.addEventListener('click', hidePayBox, false);
function hidePayBox(event) {
event.stopPropagation();
event.preventDefault();
const isTriggerClicked = orderLink.parentElement && !orderLink.parentNode.contains(event.target);
if (isTriggerClicked) {
var closestOrderLink = event.target.closest('a[href^="#order"]');
orderLink.classList.remove('t-btn_sending');
submitFlag = 0;
payBox.style.display = 'none';
payBox.removeEventListener('click', sendRequest, false);
document.removeEventListener('click', hidePayBox, false);
if (closestOrderLink) closestOrderLink.click();
}
}
function sendRequest(event) {
event.preventDefault();
var paySystem = event.target;
payBox.style.display = 'none';
tildaGetPaymentForm(
price,
product,
paySystem.getAttribute('data-payment-system'),
blockid,
lid,
uid,
orderLink
);
payBox.removeEventListener('click', sendRequest, false);
}
payBox.addEventListener('click', sendRequest, false);
}
};
var allRecords = document.querySelectorAll('.r');
Array.prototype.forEach.call(allRecords, function (rec) {
rec.addEventListener('click', function (event) {
clickEvent(event);
});
});
function t782_setPayBoxCoordinate(payBox, payBoxWidth, orderLinkOffset, orderLink) {
var orderLinkWidth = orderLink.getBoundingClientRect().width;
var currentOrderLinkOffset = orderLinkOffset.left + orderLinkWidth / 2;
var payBoxMargin = payBoxWidth / 2;
if (window.innerWidth <= 375) {
payBox.style.left = '50%';
payBox.style.marginLeft = '-' + payBoxWidth / 2 + 'px';
} else if (t782_isInViewport(payBox)) {
payBox.style.marginLeft = '-' + payBoxMargin + 'px';
} else {
payBox.style.left = currentOrderLinkOffset + 'px';
payBox.style.marginLeft = '-' + payBoxMargin + 'px';
}
}
function t782_isInViewport(element) {
var rect = element.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
}
function t782_cart__escapeHtml(text) {
var map = {
'<': '<',
'>': '>',
'"': '"',
"'": ''',
};
return text.replace(/[<>"']/g, function (m) {
return map[m];
});
}
function t782_cart__cleanPrice(price) {
if (!price) {
price = 0;
} else {
price = price.replace(',', '.');
price = price.replace(/[^0-9\.]/g, '');
price = parseFloat(price).toFixed(2);
if (isNaN(price)) price = 0;
price = parseFloat(price);
price = price * 1;
if (price < 0) price = 0;
}
return price;
}
}
function t782_drawRecaptcha(price, product, paysystem, blockid, lid, uid, orderLink) {
var allRecords = document.getElementById('allrecords');
var formKey = allRecords.getAttribute('data-tilda-formskey');
var rec = document.querySelector('[data-record-type="782"], [data-parenttplid="782"]');
var recId = rec.getAttribute('id').replace('rec', '');
var formCaptchaBox = document.getElementById('tilda-form-captcha-box');
if (formCaptchaBox) t_removeEl(formCaptchaBox);
var randomKey;
try {
randomKey = '' + new Date().getTime() + '=' + parseInt(Math.random() * 8, 10);
} catch (e) {
randomKey = 'rnd=' + parseInt(Math.random() * 8, 10);
}
var html = '';
html +=
'';
html += '';
html += '
';
document.body.insertAdjacentHTML('beforeend', html);
if (!window.isT782AddRecaptchaEvent) {
window.isT782AddRecaptchaEvent = true;
window.addEventListener('message', function (event) {
t782_checkVerifyTildaCaptcha(event, price, product, paysystem, blockid, lid, uid, orderLink);
});
}
}
function t782_checkVerifyTildaCaptcha(event, price, product, paysystem, blockid, lid, uid, orderLink) {
event = event || window.event;
/* IMPORTANT: Check the origin of the data! */
if (event.origin.indexOf(window.tildaForm.endpoint) !== -1) {
var formCaptchaBox = document.getElementById('tilda-form-captcha-box');
if (event.data == 'closeiframe') {
if (formCaptchaBox) t_removeEl(formCaptchaBox);
return;
}
var capthaKey = event.data;
if (formCaptchaBox) t_removeEl(formCaptchaBox);
tildaGetPaymentForm(price, product, paysystem, blockid, lid, uid, orderLink, capthaKey);
}
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
var t786_POPUP_SHOWED_EVENT_NAME = 'catalog:popupShowed';
var t786_POPUP_CLOSED_EVENT_NAME = 'catalog:popupClosed';
function t786__init(recid) {
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t786_initPopup(recid);
t786__hoverZoom_init(recid);
t786__updateLazyLoad(recid);
t_onFuncLoad('t_store_addProductQuantityEvents', function () {
t786_initProductQuantity(recid);
});
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
}
function t786_initProductQuantity(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var productList = rec.querySelectorAll('.t786__col, .t786__product-full');
Array.prototype.forEach.call(productList, function (product) {
t_store_addProductQuantityEvents(product);
});
}
function t786__showMore(recid) {
var rec = document.querySelector('#rec' + recid + ' .t786');
if (!rec) return;
var cardsShowLimit = parseInt(rec.getAttribute('data-show-count'), 10);
if (isNaN(cardsShowLimit) || cardsShowLimit <= 0) return;
var showMoreButton = rec.querySelector('.t786__showmore');
if (!showMoreButton) return;
const showMoreTextContainer = showMoreButton.querySelector('.js-btn-txt');
if (showMoreTextContainer) {
showMoreTextContainer.textContent = t786__dict();
}
showMoreButton.style.removeProperty('display');
var allProductCards = rec.querySelectorAll('.t786__col');
Array.prototype.forEach.call(allProductCards, function (productCard) {
productCard.style.display = 'none';
});
var cardsNumber = allProductCards.length;
t786__showSeparator(rec, cardsShowLimit);
for (var i = 0; i < cardsShowLimit; i++) {
if (allProductCards[i]) {
allProductCards[i].style.display = 'inline-block';
}
}
showMoreButton.addEventListener('click', function () {
var allCurrentProducts = rec.querySelectorAll('.t786__col');
var currentproductsShowed = 0;
Array.prototype.forEach.call(allCurrentProducts, function (product) {
if (product.style.display === 'inline-block') {
++currentproductsShowed;
}
});
for (var i = 0; i < cardsShowLimit + currentproductsShowed; i++) {
if (allProductCards[i]) {
allProductCards[i].style.display = 'inline-block';
}
}
var displayChangedEvent = document.createEvent('HTMLEvents');
displayChangedEvent.initEvent('displayChanged', true, false);
rec.dispatchEvent(displayChangedEvent);
var addBtnEvent = document.createEvent('HTMLEvents');
addBtnEvent.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(addBtnEvent);
if (cardsShowLimit + currentproductsShowed >= cardsNumber) {
showMoreButton.style.display = 'none';
}
t786__showSeparator(rec, cardsShowLimit + currentproductsShowed);
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
function t786__dict() {
var dictionary = {
EN: 'Load more',
RU: 'Загрузить ещё',
FR: 'Charger plus',
DE: 'Mehr laden',
ES: 'Carga más',
PT: 'Carregue mais',
UK: 'Завантажити ще',
JA: 'もっと読み込む',
ZH: '裝載更多',
};
var allRecords = document.getElementById('allrecords');
var language = 'EN';
if (allRecords) {
var projectLang = allRecords.getAttribute('data-tilda-project-lang');
language = projectLang || window.browserLang;
}
return dictionary[language] ? dictionary[language] : dictionary['EN'];
}
function t786__showSeparator(rec, cardsShowLimit) {
if (window.jQuery && rec instanceof jQuery) {
rec = rec.get(0);
}
var allSeparators = rec.querySelectorAll('.t786__separator_number');
Array.prototype.forEach.call(allSeparators, function (separator) {
separator.classList.add('t786__separator_hide');
if (separator.getAttribute('data-product-separator-number') <= cardsShowLimit) {
separator.classList.remove('t786__separator_hide');
}
});
}
function t786__hoverZoom_init(recid) {
if (window.isMobile) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
try {
if (!rec.querySelector('[data-hover-zoom]')) {
return;
}
var hoverScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = hoverScript;
script.onload = function () {
setTimeout(function () {
t_hoverZoom_init(recid);
}, 500);
};
script.onerror = function (error) {
console.log('Upload script error: ', error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t786__updateLazyLoad(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var scrollContainer = rec.querySelector(' .t786__container_mobile-flex');
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
})
);
}
}
function t786_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var openerLink = rec.querySelectorAll('[href^="#prodpopup"]');
var popup = rec.querySelector('.t-popup');
Array.prototype.forEach.call(openerLink, function (link) {
link.addEventListener('click', clickOnceHandler, false);
function clickOnceHandler(event) {
event.preventDefault();
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid + ' #t786__product-' + productLid + '');
});
link.removeEventListener('click', clickOnceHandler, false);
}
link.addEventListener('click', showPopupHandler, false);
function showPopupHandler(event) {
event.preventDefault();
if (
event.target.classList.contains('t1002__addBtn') ||
event.target.parentNode.classList.contains('t1002__addBtn')
) {
return;
}
t786_showPopup(recid);
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
var allProducts = popup.querySelectorAll('.js-product');
Array.prototype.forEach.call(allProducts, function (product) {
product.style.display = 'none';
});
var productFull = popup.querySelector('.js-product[data-product-lid="' + productLid + '"]');
productFull.style.display = 'block';
var analitics = popup.getAttribute('data-track-popup');
if (analitics && productFull && window.Tilda) {
var productName = productFull.querySelector('.js-product-name');
if (productName) {
var virtualTitle = productName.textContent;
if (!virtualTitle) {
virtualTitle = 'prod' + productLid;
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
var currentUrl = window.location.href;
if (currentUrl.indexOf('#!/tproduct/') === -1 && currentUrl.indexOf('%23!/tproduct/') === -1) {
if (typeof history.replaceState !== 'undefined') {
window.history.replaceState(
'',
'',
window.location.href + '#!/tproduct/' + recid + '-' + productLid
);
}
}
t786_updateSlider(recid + ' #t786__product-' + productLid);
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
});
if (document.querySelectorAll('#record' + recid).length === 0) {
t786_checkUrl(recid);
}
if (popup && popup.hasAttribute('data-fixed-button')) {
t786_fixedPopupButton(recid);
}
}
function t786_checkUrl(recid) {
// Если URL уже обработан другим блоком, пропускаем
if (window.catalogUrlProcessed) return;
var currentUrl = window.location.href;
var tprodIndex =
(currentUrl.indexOf('#!/tproduct/') + 1 ||
currentUrl.indexOf('%23!/tproduct/') + 1 ||
currentUrl.indexOf('#%21%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('#!%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('%23%21%2Ftproduct%2F') + 1) - 1;
if (tprodIndex !== -1) {
var currentUrl = currentUrl.substring(tprodIndex, currentUrl.length);
var curProdLid = currentUrl.substring(currentUrl.indexOf('-') + 1, currentUrl.length);
if (curProdLid) {
var curProdLidMatch = curProdLid.match(/([0-9]+)/g);
if (curProdLidMatch) {
curProdLid = curProdLidMatch[0];
}
}
if (currentUrl.indexOf(recid) === -1) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (currentUrl.indexOf(recid) !== 0 && rec.querySelector('[data-product-lid="' + curProdLid + '"]')) {
var currentLink = rec.querySelector('[data-product-lid="' + curProdLid + '"] [href^="#prodpopup"]');
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
if (currentLink) {
currentLink.dispatchEvent(event);
}
if (typeof rec.scrollIntoView === 'function') {
rec.scrollIntoView({ block: 'start' });
}
window.catalogUrlProcessed = true;
}
}
}
function t786_updateSlider(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft) || 0;
var paddingRight = parseInt(slider.style.paddingRight) || 0;
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var position = parseFloat(sliderWrapper.getAttribute('data-slider-pos'));
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
function t786_showPopup(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_triggerEvent(popup, t786_POPUP_SHOWED_EVENT_NAME);
}, 50);
setTimeout(function () {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 300);
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t786_closePopup(body, popup);
}
});
var closeButtons = rec.querySelectorAll('.t-popup__close, .t786__close-text');
Array.prototype.forEach.call(closeButtons, function (button) {
button.addEventListener('click', function () {
t786_closePopup(body, popup);
});
});
document.addEventListener('keydown', function (event) {
var isGalleryShowedOldLib = document.body.classList.contains('t-zoomer__show');
if (isGalleryShowedOldLib) return;
var isGalleryShowedNewLib = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowedNewLib) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (popup && popup.classList.contains('t-popup_show')) {
if (event.keyCode === 27) {
t786_closePopup(body, popup);
}
}
});
}
function t786_closePopup(body, popup) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
popup.classList.remove('t-popup_show');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tproduct/');
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove < 0) {
indexToRemove = currentUrl.indexOf('%23!/tproduct/');
}
currentUrl = currentUrl.substring(0, indexToRemove);
setTimeout(function () {
popup.scrollTop = 0;
popup.style.display = 'none';
if (typeof history.replaceState !== 'undefined') {
window.history.replaceState('', '', currentUrl);
}
}, 300);
t_triggerEvent(popup, t786_POPUP_CLOSED_EVENT_NAME);
}
function t786_fixedPopupButton(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var MOBILE_MAX_WIDTH = 560;
var popup = rec.querySelector('.t-popup');
var popupContainer = popup.querySelector('.t-popup__container');
var btnWrappers = rec.querySelectorAll('.t786__btn-wrapper');
Array.prototype.forEach.call(btnWrappers, function (el) {
el.classList.add('t786__btn-wrapper-fixed');
});
function addStyle() {
popupContainer.style.paddingBottom = '90px';
// убираем transform чтобы блок не влиял на position: fixed у детей
// инлайн important можно добавить только так
popupContainer.style.cssText += ';transform:none !important;';
}
function resetStyle() {
popupContainer.style.paddingBottom = '';
popupContainer.style.transform = '';
}
function handleResize() {
if (window.innerWidth > MOBILE_MAX_WIDTH) {
resetStyle();
return;
}
addStyle();
}
if (window.isMobile) {
window.addEventListener('orientationchange', handleResize);
}
popup.addEventListener(t786_POPUP_SHOWED_EVENT_NAME, function () {
setTimeout(function () {
handleResize();
});
});
popup.addEventListener(t786_POPUP_CLOSED_EVENT_NAME, function () {
resetStyle();
});
window.addEventListener('resize', handleResize);
}
function t788_init(recid) {
setTimeout(function () {
$('#rec' + recid + ' .t788').addClass('js-product');
$('#rec' + recid + ' .t-cover__carrier').addClass('js-product-img');
t_prod__init(recid);
}, 500);
}
function t790_init(recid) {
window.onload = function () {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var yandexButtonText = document.querySelector('.yButton .yButtonText');
if (yandexButtonText) {
yandexButtonText.style.display = 'flex';
yandexButtonText.style.alignItems = 'center';
yandexButtonText.style.justifyContent = 'center';
}
};
}
function t794_init(recid) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t794') : null;
var hook = menu ? menu.getAttribute('data-tooltip-hook') : '';
if (!hook) return;
var hookLinks = document.querySelectorAll('a[href="' + hook + '"]');
hookLinks = Array.prototype.filter.call(hookLinks, function (hookLink) {
var isSubmenuAllowed = hookLink.getAttribute('data-submenu-disallowed') !== 'yes';
if (isSubmenuAllowed) {
hookLink.classList.add('t794__tm-link');
hookLink.setAttribute('data-tooltip-menu-id', recid);
return true;
}
return false;
});
var parentMenu = hookLinks.length ? hookLinks[0].closest('[data-menu]') : null;
var tooltipMenu = rec.querySelector('.t794__tooltip-menu');
var isParentFixed = parentMenu && window.getComputedStyle(parentMenu).position === 'fixed';
if (tooltipMenu) tooltipMenu.setAttribute('data-pos-fixed', isParentFixed ? 'yes' : 'no');
t794_addArrow(recid, hookLinks);
t794_setUpMenu(recid, hookLinks);
t_onFuncLoad('t_submenublocks__highlightActiveLinks', function () {
t_submenublocks__highlightActiveLinks('.t794__list_item a');
});
if (menu.hasAttribute('data-full-submenu-mob') && (window.isMobile || 'ontouchend' in document)) {
t_onFuncLoad('t_submenublocks__setFullScreenMenu', function () {
t_submenublocks__setFullScreenMenu(menu);
});
}
}
function t794_addArrow(recid, hookLinks) {
var rec = document.getElementById('rec' + recid);
var submenuBlock = rec ? rec.querySelector('.t794') : null;
var isArrowAppend = submenuBlock.getAttribute('data-add-arrow');
if (!isArrowAppend) return;
hookLinks = Array.prototype.slice.call(hookLinks);
hookLinks.forEach(function (hookLink) {
var arrow = document.createElement('div');
arrow.classList.add('t794__arrow');
hookLink.appendChild(arrow);
/* border-color tn-atom перебивает border-color стрелочки */
var isInsideZero = hookLink.closest('.tn-atom');
var hasCustomBorderColor = window.getComputedStyle(hookLink).borderColor !== 'rgba(0, 0, 0, 0)';
if (isInsideZero && !hasCustomBorderColor) {
hookLink.style.borderColor = 'initial';
hookLink.style.border = 'none';
}
});
}
function t794_setUpMenu(recid, hookLinks) {
var rec = document.getElementById('rec' + recid);
var submenu = rec ? rec.querySelector('.t794__tooltip-menu') : null;
if (!submenu) return;
var menuBlock = rec ? rec.querySelector('.t794') : null;
var verticalIndent = menuBlock.getAttribute('data-tooltip-margin');
var content = submenu.querySelector('.t794__content');
var hooksAndSubmenu = hookLinks.concat(submenu);
if (window.innerWidth > 980 && !('ontouchend' in document)) {
t_onFuncLoad('t_submenublocks__addEventsDesktop', function () {
t_submenublocks__addEventsDesktop(submenu, hooksAndSubmenu, verticalIndent, '.t794');
});
} else {
t_onFuncLoad('t_submenublocks__addEventsMobile', function () {
t_submenublocks__addEventsMobile(submenu, hookLinks, verticalIndent, '.t794');
});
}
window.addEventListener(
'scroll',
t_throttle(function () {
if (content) {
content.addEventListener('mouseleave', function () {
if (submenu.classList.contains('t794__tooltip-menu_show')) {
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(submenu, '.t794');
});
}
});
}
}, 300)
);
var tooltipLinks = document.querySelectorAll('.t794__tooltip-menu a[href*="#"]');
Array.prototype.forEach.call(tooltipLinks, function (tooltipLink) {
tooltipLink.addEventListener('click', function () {
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(submenu, '.t794');
});
var menuList = document.querySelectorAll('.t450, .t199__mmenu, .t280, .t282, .t204__burger, .t451, .t466');
Array.prototype.forEach.call(menuList, function (menu) {
var event = document.createEvent('Event');
event.initEvent('clickedAnchorInTooltipMenu', true, true);
menu.dispatchEvent(event);
});
Array.prototype.forEach.call(tooltipLinks, function (link) {
link.classList.remove('t-active');
});
tooltipLink.classList.add('t-active');
});
});
}
function t796_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t796');
if (!container) return;
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (screenMin && windowWidth < parseInt(screenMin, 10)) return false;
if (screenMax && windowWidth > parseInt(screenMax, 10)) return false;
var shapeBorder = rec.querySelector('.t796__shape-border');
var shapeRecId = container.getAttribute('data-shape-rec-ids');
if (shapeRecId) {
// список id блоков, к которым будет применён разделитель
shapeRecId = shapeRecId.split(',');
for (var i = 0; i < shapeRecId.length; i++) {
var shapeId = shapeRecId[i];
var currentRec = document.querySelector('#rec' + shapeId);
var currentShape = shapeBorder.cloneNode(true);
t796_setColor(rec, currentShape);
t796_addDivider(currentRec, currentShape);
}
} else {
// список блоков, которые нужно исключить из обработки, если id блоков не указаны
var excludesBlocks = [
'215',
'316',
'390',
'651',
'702',
'706',
'708',
'750',
'756',
'766',
'825',
'862',
'868',
'943',
'945',
'674',
'1040',
];
var excludes = excludesBlocks
.map(function (tplid) {
return `[data-record-type="${tplid}"],[data-parenttplid="${tplid}"]`;
})
.join(',');
excludes = `:not(${excludes})`;
var recs = [];
if (
shapeBorder.classList.contains('t796__shape-border_top') ||
shapeBorder.classList.contains('t796__shape-border_top-flip')
) {
recs = t796__nextAll(rec, excludes);
}
if (
shapeBorder.classList.contains('t796__shape-border_bottom') ||
shapeBorder.classList.contains('t796__shape-border_bottom-flip')
) {
recs = t796__prevAll(rec, excludes);
}
if (recs.length !== 0) {
var currentShape = shapeBorder.cloneNode(true);
t796_setColor(rec, currentShape);
t796_addDivider(recs[0], currentShape);
}
}
}
function t796_setColor(rec, shape) {
/* get color from nearest block, if it is not set for shape */
if (shape.getAttribute('data-fill-color')) return;
var nearestBlock;
if (
shape.classList.contains('t796__shape-border_bottom') ||
shape.classList.contains('t796__shape-border_bottom-flip')
) {
var nextBlock = rec.nextElementSibling;
if (nextBlock) {
nearestBlock = nextBlock.matches('.r') ? nextBlock : false;
}
} else {
var prevBlock = rec.previousElementSibling;
if (prevBlock) {
nearestBlock = prevBlock.matches('.r') ? prevBlock : false;
}
}
if (!nearestBlock) return;
var fillColor = nearestBlock.getAttribute('data-bg-color');
if (!fillColor) return;
var svg = shape.querySelector('.t796__svg');
if (svg) svg.style.fill = fillColor;
}
function t796_addDivider(rec, shape) {
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.classList.remove('r_hidden');
var covers = rec.querySelectorAll('.t-cover');
var zeroBlock = rec.querySelector('.t396');
if (covers.length > 0 || zeroBlock) {
/* if cover or zero */
if (covers.length > 0) {
Array.prototype.forEach.call(covers, function (cover) {
// для блоков с галереей из обложек (CR30N) клонируем границу
shape = covers.length > 1 ? shape.cloneNode(true) : shape;
var showLayers = cover.querySelectorAll('.t557__snow-layer');
if (showLayers.length > 0) shape.style.zIndex = 1;
var coverFilter = cover.querySelector('.t-cover__filter');
if (coverFilter) coverFilter.insertAdjacentElement('afterend', shape);
shape.style.display = 'block';
});
}
if (zeroBlock) {
zeroBlock.insertAdjacentElement('afterend', shape);
rec.style.position = 'relative';
var zeroFilter = zeroBlock.querySelector('.t396__filter');
if (zeroFilter) {
var zIndex = 1;
var zeroArtboard = zeroBlock.querySelector('.t396__artboard');
var isVisible = getComputedStyle(zeroArtboard, null).overflow === 'visible';
if (!isVisible) zIndex = 99;
shape.style.zIndex = zIndex;
}
shape.style.display = 'block';
}
} else {
/* if any block */
var wrapper = rec;
var recordType = rec.getAttribute('data-parenttplid') || rec.getAttribute('data-record-type');
if (!wrapper) return true;
wrapper.appendChild(shape);
wrapper.style.position = 'relative';
/* dont make changes z-index for blocks */
var excludesBlocks = [
'125',
'331',
'554',
'746',
'754',
'776',
'778',
'786',
'858',
'896',
'897',
'924',
'915',
'943',
'945',
'951',
'1004',
'1025',
'1241',
'1291',
];
if (excludesBlocks.indexOf(recordType) === -1) {
/* changing z-index for blocks with scroll in one row */
var notZIndexBlocks = ['983'];
var firstDiv = wrapper.querySelector('div');
firstDiv.style.position = 'relative';
firstDiv.classList.add('t796_cont-near-shape-divider');
if (notZIndexBlocks.indexOf(recordType) !== -1) {
firstDiv.style.zIndex = 0;
} else {
firstDiv.style.zIndex = '1';
}
}
/* changing z-index for divider in blocks below */
var blocks = ['195', '246', '279', '675', '694', '734', '823', '938', '1241'];
if (blocks.indexOf(recordType) !== -1) {
shape.style.zIndex = 1;
}
shape.style.display = 'block';
}
}
function t796__nextAll(element, selector) {
var nextElements = [];
var nextElement = element;
while (nextElement.nextElementSibling) {
nextElement = nextElement.nextElementSibling;
if (nextElement.id === 't-footer') {
var footerElements = nextElement.querySelectorAll('.r');
if (footerElements.length !== 0) {
nextElement = footerElements[0];
if (nextElement.matches(selector)) {
nextElements.push(nextElement);
}
nextElements = nextElements.concat(t796__nextAll(nextElement, selector));
}
} else if (nextElement.matches(selector)) {
nextElements.push(nextElement);
}
}
return nextElements;
}
function t796__prevAll(element, selector) {
var prevElements = [];
var prevElement = element;
while (prevElement.previousElementSibling) {
prevElement = prevElement.previousElementSibling;
if (prevElement.id === 't-header') {
var headerElements = prevElement.querySelectorAll('.r');
if (headerElements.length !== 0) {
prevElement = headerElements[headerElements.length - 1];
if (prevElement.matches(selector)) {
prevElements.push(prevElement);
}
prevElements = prevElements.concat(t796__prevAll(prevElement, selector));
}
} else if (prevElement.matches(selector)) {
prevElements.push(prevElement);
}
}
return prevElements;
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
function t797_init(recId) {
if (window.isMobile) {
var rec = document.getElementById('rec' + recId);
var textWrapper = rec.querySelector('.t797__txt-wrapper');
if (rec && textWrapper) textWrapper.style.display = 'none';
}
t_onFuncLoad('tvote__init', function () {
tvote__init(recId);
});
}
function t802_insta_init(recId, instaUser) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t802');
if (!container) return;
var projectId = document.getElementById('allrecords').getAttribute('data-tilda-project-id');
t802_insta_loadflow(recId, projectId, instaUser);
}
function t802_insta_loadflow(recId, projectId, instaUser) {
var url = 'https://insta.tildacdn.com/fish/0.json';
if (instaUser) {
url = 'https://insta.tildacdn.com/json/project' + projectId + '_' + instaUser + '.json';
}
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status < 400) {
var data = xhr.responseText;
if (data) {
try {
var objData = JSON.parse(data);
} catch (error) {
console.log('Error. insta flow json not object');
console.log(data);
}
if (typeof objData === 'object') {
t802_insta_draw(recId, objData);
}
}
} else {
console.log('Error load instgram flow');
}
}
};
xhr.send();
}
function t802_insta_draw(recId, objData) {
if (objData && objData.photos && objData.photos.length === 0) return;
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var allImgWrappersNum = rec.querySelectorAll('.t802__imgwrapper_empty').length;
for (var i = 0; i < allImgWrappersNum; i++) {
if (objData.photos[i]) {
t802_insta_drawItem(recId, objData.username, objData.photos[i], i);
} else {
var empty = rec.querySelector('.t802__imgwrapper_empty');
if (empty) empty.remove();
}
}
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t802_insta_drawItem(recId, userName, photo, counter) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var empty = rec.querySelector('.t802__imgwrapper_empty');
var isZoomable = rec.querySelector('.t802__container').getAttribute('data-zoom');
if (empty) {
empty.classList.remove('t802__imgwrapper_empty');
var main = empty.parentNode;
var imageWrapper = document.createElement('div');
imageWrapper.classList.add('t802__bgimg');
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
imageWrapper.classList.add('t-bgimg');
imageWrapper.setAttribute('data-original', photo.url);
} else {
imageWrapper.style.backgroundImage = 'url(' + photo.url + ')';
}
/* add link */
if (!isZoomable) {
var tagA = document.createElement('a');
tagA.href = photo.link;
tagA.target = '_blank';
empty.appendChild(imageWrapper);
tagA.appendChild(empty);
main.appendChild(tagA);
} else {
imageWrapper.setAttribute('data-zoomable', 'yes');
imageWrapper.setAttribute('data-zoom-target', counter);
imageWrapper.setAttribute('data-img-zoom-url', photo.url);
if (photo.text) {
imageWrapper.setAttribute('data-img-zoom-descr', photo.text);
}
imageWrapper.classList.add('t-zoomable');
empty.appendChild(imageWrapper);
main.appendChild(empty);
}
/*add text and filter for hover*/
var hover = empty.querySelector('.t802__hover-wrapper');
if (hover && window.isMobile === false) {
var text = t802_insta_cropText(recId, '@' + userName + ': ' + photo.text);
var divHover = document.createElement('div');
var divText = document.createElement('div');
divHover.classList.add('t802__hover-filter');
divText.classList.add('t802__text', 't-text', 't-descr_xxs');
divText.innerHTML = text;
hover.appendChild(divHover);
hover.appendChild(divText);
}
}
}
function t802_insta_cropText(recId, text) {
var rec = document.getElementById('rec' + recId);
var colsInLine = rec.querySelector('[data-cols-in-line]').getAttribute('data-cols-in-line');
var maxLength = 130;
if (colsInLine == 6) {
maxLength = 90;
}
if (text.length > maxLength) {
text = text.substring(0, maxLength);
text = text.substring(0, Math.min(maxLength, text.lastIndexOf(' ')));
text += ' ...';
}
return text;
}
function t803_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var cardsMultiData = rec.querySelector('.t803__multi-datablock').children;
var multidata = {};
/**
* Get data from user constractor and array building
*/
Array.prototype.forEach.call(cardsMultiData, function (card) {
var source = card.querySelector('.t803__multi-source').innerHTML;
var value = card.querySelector('.t803__multi-key-values').innerHTML;
var key = card.querySelector('.t803__multi-key').innerHTML;
var defaultValue = card.querySelector('.t803__multi-default').innerHTML;
var values = {};
values[source] = value;
multidata[source] = { default: defaultValue, key: key, values: values };
});
/**
* Fix for cases when macros in header or footer
*/
if (rec.closest('#t-header') || rec.closest('#t-footer')) {
Array.prototype.forEach.call(
document.querySelectorAll(
'.t-rec div, .t-rec span, .t-rec a, .t-rec p, .t-rec h1, .t-rec h2, .t-rec h3, .t-rec h4'
),
function (item) {
/** Check if item has nested elements, and if it has just skip */
var childElements = item.querySelectorAll('div, span, a, p, h1, h2, h3, h4');
if (childElements.length) return;
var html = item.innerHTML;
var replaced = html
.replace(/(?!%%)[A-zА-яё0-9_-]*(?=%%)/gi, " ")
.replace(/%{2}/gim, '');
if (replaced !== html) {
item.innerHTML = replaced;
}
}
);
}
/**
* Get utm term from url
*/
var params = window.location.search
.replace('?', '')
.split('&')
.reduce(function (paramsObject, paramsItem) {
var paramsItemSplitted = paramsItem.split('=');
try {
paramsObject[
decodeURIComponent(paramsItemSplitted[0]) + '=' + decodeURIComponent(paramsItemSplitted[1])
] = decodeURIComponent(paramsItemSplitted[0]) + '=' + decodeURIComponent(paramsItemSplitted[1]);
} catch (error) {}
return paramsObject;
}, {});
var stop = 0;
/**
* Trying all replacement keys and inserting them into all macros
*/
for (utmTerm in multidata) {
var key = params[utmTerm];
/** If utm term is founded */
if (typeof key !== 'undefined') {
var allMacros = document.querySelectorAll('[data-replace-key="' + multidata[utmTerm].key + '"]');
Array.prototype.forEach.call(allMacros, function (macros) {
macros.innerHTML = multidata[utmTerm].values[key];
});
stop = 1;
}
/** Else insert default value */
if (stop === 0) {
var allMacros = document.querySelectorAll('[data-replace-key="' + multidata[utmTerm].key + '"]');
Array.prototype.forEach.call(allMacros, function (macros) {
macros.innerHTML = multidata[utmTerm].default;
});
}
}
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var rec = this;
while (rec && rec.nodeType === 1) {
if (Element.prototype.matches.call(rec, s)) {
return rec;
}
rec = rec.parentElement || rec.parentNode;
}
return null;
};
}
function t804_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var geodata = [];
var geoDataBlock = rec.querySelector('.t_804_geo-datablock');
var key = geoDataBlock.querySelector('.t_804_geo-key').innerHTML;
var defValue = geoDataBlock.querySelector('.t_804_geo-default').innerHTML;
/* cards (HTMLElementsCollection) containes all nodeElements witch store info like REGIONS => VALUE */
var cards = geoDataBlock.querySelector('.t_804_geo-data').children;
Array.prototype.forEach.call(cards, function (regionCard) {
var geoIpSet = regionCard.querySelectorAll('.t_804_geo-geoip');
var geo = [];
Array.prototype.forEach.call(geoIpSet, function (geoIPBlock) {
/* geoIPBlock (node) - unique code for each region. Example: 'RU;US;KZ' */
var geoIPInnerText = geoIPBlock.innerHTML;
var geoIPArray = geoIPInnerText.split(';');
Array.prototype.forEach.call(geoIPArray, function (geoIP) {
/* geoIP (string) - currently unique code of region. Example: 'RU' */
if (geoIP === '') return true;
var regex = /,/g;
var geoIPValue = geoIP.replace(regex, '-');
geo.push(geoIPValue);
});
});
var value = regionCard.querySelector('.t_804_geo-value').innerHTML;
geodata.push({ value: value, geo: geo });
});
if (rec.closest('#t-header') || rec.closest('#t-footer')) {
var elementList = t804__getReplacedNodes();
elementList.forEach(function (element) {
var html = element.innerHTML;
var replaced = html
.replace(/(?!%%)[A-zА-яё0-9_-]*(?=%%)/gi, ' ')
.replace(/%{2}/gim, '');
if (replaced !== html) {
element.innerHTML = replaced;
}
});
/**
* if T804 in header or footer, the elements will be overwriten.
* It resets all event listeners. For init listeners again, we trigger
* event, that call functions
*/
var event = document.createEvent('HTMLEvents');
event.initEvent('replacingCompleted', true, false);
document.dispatchEvent(event);
}
var request = new XMLHttpRequest();
request.open('GET', 'https://geo.tildacdn.com/geo/full/');
request.timeout = 15 * 1000;
request.send();
request.onprogress = function () {
try {
var data = JSON.parse(request.response);
replaceGeo(data, key, geodata, defValue);
} catch (e) {}
};
request.onerror = function () {
try {
var data = JSON.parse(request.response);
replaceGeo(data, key, geodata, defValue);
} catch (e) {}
};
request.ontimeout = function () {
console.error('Timeout error: ', request.status);
};
function replaceGeo(data, key, geodata, defValue) {
var city = data.city.name_en;
var region = data.region.name_en;
var country = data.country.iso;
var fullMatch = country + '-' + region + '-' + city;
var partMatch = country + '-' + region;
var val = defValue;
Array.prototype.forEach.call(geodata, function (value) {
if (value.geo.indexOf(country) !== -1) {
val = value.value;
}
if (value.geo.indexOf(partMatch) !== -1) {
val = value.value;
}
if (value.geo.indexOf(fullMatch) !== -1) {
val = value.value;
}
});
var insertion = document.querySelectorAll('[data-replace-key="' + key + '"]');
Array.prototype.forEach.call(insertion, function (span) {
span.innerHTML = val;
});
}
}
function t804__getReplacedNodes() {
var allRecord = document.getElementById('allrecords');
var result = [];
// Создаем итератор, который собирает текстовые ноды, в которых используется ключ геолендинга
var walker = document.createTreeWalker(allRecord, NodeFilter.SHOW_TEXT, {
acceptNode(node) {
if (node.textContent.match(/(?!%%)[A-zА-яё0-9_-]*(?=%%)/gi)) {
return NodeFilter.FILTER_ACCEPT;
}
return NodeFilter.FILTER_REJECT;
},
});
// Проходим итератором по текстовым нодам и собираем их обертки, если они подходят.
while (walker.nextNode()) {
var node = walker.currentNode;
if (!['SCRIPT', 'STYLE'].includes(node.parentElement.tagName)) {
result.push(node.parentElement);
}
}
return result;
}
function t807__init(recId) {
t_onFuncLoad('tvote__init', function () {
tvote__init(recId);
});
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var vote = rec.querySelector('.t-vote');
if (!vote) return;
var voteItems = rec.querySelectorAll('.js-vote-item');
if (typeof jQuery !== 'undefined') {
$(vote).bind('tildavote:numberschanged', function () {
for (var i = 0; i < voteItems.length; i++) {
var voteItem = voteItems[i];
var percent = voteItem.querySelector('.t-vote__btn-res__percent');
if (percent) {
var bar = voteItem.querySelector('.t807__answer-progressbar');
if (bar) bar.style.width = percent.innerHTML;
}
}
});
$(vote).bind('tildavote:resultsended', function () {
if (!vote.classList.contains('t-vote_sended') || vote.classList.contains('t807__hidden')) return;
vote.classList.add('t807__hidden');
if (!vote.getAttribute('data-vote-visibility') && vote.classList.contains('t807__test')) {
t807__onSuccess(recId);
}
});
} else {
vote.addEventListener('tildavote:numberschanged', function () {
for (var i = 0; i < voteItems.length; i++) {
var voteItem = voteItems[i];
var percent = voteItem.querySelector('.t-vote__btn-res__percent');
if (percent) {
var bar = voteItem.querySelector('.t807__answer-progressbar');
if (bar) bar.style.width = percent.innerHTML;
}
}
});
vote.addEventListener('tildavote:resultsended', function () {
if (!vote.classList.contains('t-vote_sended') || vote.classList.contains('t807__hidden')) return;
vote.classList.add('t807__hidden');
if (!vote.getAttribute('data-vote-visibility') && vote.classList.contains('t807__test')) {
t807__onSuccess(recId);
}
});
}
t807__replyClickBtn(recId);
}
function t807__replyClickBtn(recId) {
var rec = document.getElementById('rec' + recId);
var submit = rec.querySelector('.t807__btn_reply');
if (submit) {
submit.addEventListener('click', function (event) {
event.preventDefault();
});
}
}
function t807__onSuccess(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var testBlock = rec.querySelector('.t807__test');
if (!testBlock) return;
var targetOffset = testBlock.getBoundingClientRect().top + window.pageYOffset;
var target = 0;
if (window.innerWidth > 960) {
target = targetOffset - 200;
} else {
target = targetOffset - 100;
}
t807__scroll(target);
}
function t807__scroll(target) {
var duration = 400;
var start = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0);
var change = target - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
document.body.setAttribute('data-scrollable', 'true');
/* easeInOutCubic animation included in the library */
function t807__easeInOutCubic(currentTime) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t807__animateScroll() {
currentTime += increment;
window.scrollTo(0, t807__easeInOutCubic(currentTime));
if (currentTime < duration) {
setTimeout(t807__animateScroll, increment);
} else {
document.body.removeAttribute('data-scrollable');
}
}
t807__animateScroll();
}
function t808_geoRedirect(geo, data) {
if (!geo || !data) return;
if (!window.isSearchBot) {
var city = geo.city.name_en;
var region = geo.region.name_en;
var country = geo.country.iso;
Array.prototype.forEach.call(data, function (value) {
if (
value.geo.indexOf(country) !== -1 ||
value.geo.indexOf(region) !== -1 ||
value.geo.indexOf(city) !== -1
) {
window.location.href = value.link + window.location.search;
}
});
}
}
function t810_getGeoData() {
return window.t810_fetchGeo ? window.t810_fetchGeo() : Promise.resolve(null);
}
function t813_init(recid, height) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var coverBlock = rec ? rec.querySelector('.t813') : null;
t813_setYoutubeUrl(recid);
t813__setHeight(recid, height);
window.addEventListener(
'resize',
t_throttle(function () {
t813__setHeight(recid);
})
);
if (coverBlock) {
coverBlock.addEventListener('displayChanged', function () {
t813__setHeight(recid);
});
}
}
function t813_setYoutubeUrl(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var youTubeFrame = rec ? rec.querySelector('.t813__iframe') : null;
if (youTubeFrame && youTubeFrame.classList.contains('t813__iframe-youtube')) {
var youTubeLink = youTubeFrame.getAttribute('data-youtube-id');
if (youTubeLink) youTubeLink = youTubeLink.replace('https://www.youtube.com/shorts/', '');
var link = 'https://www.youtube.com/embed/' + youTubeLink + '?rel=0&fmt=18&html5=1&showinfo=0';
youTubeFrame.setAttribute('src', link);
}
}
function t813__setHeight(recid, height) {
if (height) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var div = rec ? rec.querySelector('.t813__contentwrapper') : null;
if (!div) return;
height = div.offsetWidth * 0.5625;
div.style.height = height + 'px';
if (div.parentElement) div.parentElement.style.height = height + 'px';
}
function t813_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t814_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t814');
if (!container) return;
t814_setHeight(recId);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t814_setHeight(recId);
})
);
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', function () {
t814_setHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t814_setHeight(recId);
});
}
}
function t814_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t814');
if (!container) return;
var blockTextWrap = rec.querySelector('.t814__blocktext-wrapper');
var textWrapper = rec.querySelector('.t814__blocktext');
var image = rec.querySelector('.t814__blockimg');
var imageStyle = getComputedStyle(image, null);
var imagePaddingTop = parseInt(imageStyle.paddingTop) || 0;
var imagePaddingBottom = parseInt(imageStyle.paddingBottom) || 0;
var imageHeight = image.clientHeight - (imagePaddingTop + imagePaddingBottom);
if (window.innerWidth > 960) {
textWrapper.style.height = imageHeight + 'px';
blockTextWrap.style.height = t814_outerHeight(textWrapper) + 'px';
} else {
blockTextWrap.style.height = 'auto';
}
}
function t814_outerHeight(element) {
var height = element.offsetHeight;
var style = getComputedStyle(element);
height += parseInt(style.marginTop) + parseInt(style.marginBottom);
return height;
}
function t815_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec ? rec.querySelector('.t815') : null;
if (!menu) return;
var isFixed = menu.style.position === 'fixed' || window.getComputedStyle(menu).position === 'fixed';
var isRedactorMode = menu.classList.contains('t815_redactor-mode');
if (!isRedactorMode) {
menu.classList.remove('t815__beforeready');
if (isFixed && menu.getAttribute('data-bgopacity-two')) {
t_onFuncLoad('t_menu__changeBgOpacity', function () {
t_menu__changeBgOpacity(recid, '.t815');
window.addEventListener(
'scroll',
t_throttle(function () {
t_menu__changeBgOpacity(recid, '.t815');
}, 200)
);
});
}
if (isFixed && menu.getAttribute('data-appearoffset')) {
menu.classList.remove('t815__beforeready');
t_onFuncLoad('t_menu__showFixedMenu', function () {
t_menu__showFixedMenu(recid, '.t815');
window.addEventListener(
'scroll',
t_throttle(function () {
t_menu__showFixedMenu(recid, '.t815');
}, 200)
);
});
}
}
t_onFuncLoad('t_menu__setBGcolor', function () {
t_menu__setBGcolor(recid, '.t815');
window.addEventListener(
'resize',
t_throttle(function () {
t_menu__setBGcolor(recid, '.t815');
}, 200)
);
});
}
function t816_init(recid, padding) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t816_setHeight(rec, padding);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.isMobile) return;
t816_setHeight(rec, padding);
}, 200)
);
var curBlocks = document.querySelectorAll('.t816');
Array.prototype.forEach.call(curBlocks, function (block) {
block.addEventListener('displayChanged', function () {
t816_setHeight(rec, padding);
});
});
}
function t816_setHeight(rec, padding) {
var galleryContainer = rec.querySelector('.t816__container');
var colOffset = rec.querySelector('.t816__tile_offset');
if (!colOffset) return;
var containerOffset = colOffset.offsetTop - Number(padding);
if (window.innerWidth >= 960) {
galleryContainer.style.paddingBottom = containerOffset + 'px';
} else {
galleryContainer.style.removeProperty('padding-bottom');
}
}
function t817_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
var tabs = rec.querySelectorAll('.t817__tab');
var select = rec.querySelector('.t817__select');
var content = rec.querySelectorAll('.t817__content');
if (!tabs.length) return;
if (!content.length) return;
if (currentMode !== 'edit' && currentMode !== 'preview') {
t817_scrollToTabs(recid);
window.onload = function () {
t817_scrollToTabs(recid);
};
}
t817_showTabByUrl(recid, tabs, content, select);
t817_showTab(recid, tabs, content, currentMode);
t817_showTabMobile(recid, select, content, currentMode);
}
function t817_showTab(recid, tabs, content, currentMode) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
Array.prototype.forEach.call(tabs, function (tabItem) {
tabItem.addEventListener('click', function (event) {
var tabNumber = this.getAttribute('data-tab-number');
/* set current tab index */
rec.querySelector('.t817__wrapper').setAttribute('data-tab-current', tabNumber);
Array.prototype.forEach.call(tabs, function (tabItem) {
tabItem.classList.remove('t817__tab_active');
var button = tabItem.querySelector('.t817__tab-name');
if (button) {
button.setAttribute('tabindex', -1);
button.setAttribute('aria-selected', false);
}
});
Array.prototype.forEach.call(content, function (contentItem) {
contentItem.classList.remove('t817__content_active');
if (parseInt(contentItem.getAttribute('data-tab-content-number'), 10) === parseInt(tabNumber, 10)) {
contentItem.classList.add('t817__content_active');
}
});
tabItem.classList.add('t817__tab_active');
var currentButton = tabItem.querySelector('.t817__tab-name');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
}
t817_changeUrl(recid, currentMode, tabNumber);
t817__updateLazyLoad(currentMode);
event.preventDefault();
});
tabItem.addEventListener('keydown', function (event) {
var currentIndex = Number(rec.querySelector('.t817__wrapper').getAttribute('data-tab-current'));
var prevent = false;
switch (event.key) {
case 'Left':
case 'ArrowLeft':
currentIndex = currentIndex === 1 ? tabs.length : currentIndex - 1;
t817_showActiveTabFromKeyboard(recid, tabs, content, currentMode, currentIndex);
prevent = true;
break;
case 'Right':
case 'ArrowRight':
currentIndex = currentIndex === tabs.length ? 1 : currentIndex + 1;
t817_showActiveTabFromKeyboard(recid, tabs, content, currentMode, currentIndex);
prevent = true;
break;
default:
break;
}
if (prevent) {
event.stopPropagation();
event.preventDefault();
}
});
});
}
function t817_showActiveTabFromKeyboard(recid, tabs, content, currentMode, currentIndex) {
var rec = document.querySelector('#rec' + recid);
Array.prototype.forEach.call(tabs, function (tabItem) {
tabItem.classList.remove('t817__tab_active');
var button = tabItem.querySelector('.t817__tab-name');
if (button) {
button.setAttribute('tabindex', -1);
button.setAttribute('aria-selected', false);
}
});
Array.prototype.forEach.call(content, function (contentItem) {
contentItem.classList.remove('t817__content_active');
});
var currentTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
if (!currentTab) return;
currentTab.classList.add('t817__tab_active');
/* a11y: change attrs for current tab */
var currentButton = currentTab.querySelector('.t817__tab-name');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
currentButton.focus();
}
var currentContent = rec.querySelector('[data-tab-content-number="' + currentIndex + '"]');
if (currentContent) currentContent.classList.add('t817__content_active');
var tabList = rec.querySelector('.t817__wrapper');
if (tabList) tabList.setAttribute('data-tab-current', currentIndex);
t817_changeUrl(recid, currentMode, currentIndex);
t817__updateLazyLoad(currentMode);
}
function t817_changeUrl(recid, currentMode, index) {
t817_removeUrl();
if (currentMode !== 'edit' && currentMode !== 'preview') {
if (typeof history.replaceState === 'function') {
window.history.replaceState('', '', window.location.href + '#!/tab/' + recid + '-' + index);
}
}
}
function t817__updateLazyLoad(currentMode) {
if (!currentMode) {
if (window.lazy === 'y' || document.querySelector('#allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
}
function t817_showTabMobile(recid, select, content, currentMode) {
select.addEventListener('change', function (event) {
var tabNumberMobile = this.value;
Array.prototype.forEach.call(content, function (contentItem) {
contentItem.classList.remove('t817__content_active');
if (parseInt(contentItem.getAttribute('data-tab-content-number'), 10) === parseInt(tabNumberMobile, 10)) {
contentItem.classList.add('t817__content_active');
}
});
t817_removeUrl();
if (currentMode !== 'edit' && currentMode !== 'preview') {
if (typeof history.replaceState === 'function') {
window.history.replaceState('', '', window.location.href + '#!/tab/' + recid + '-' + tabNumberMobile);
}
}
if (!currentMode) {
if (
window.lazy === 'y' ||
document.querySelector('#allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
event.preventDefault();
});
}
function t817_showTabByUrl(recid, tabs, content, select) {
var rec = document.querySelector('#rec' + recid);
var currentUrl = window.location.href;
var tabIndexNumber = currentUrl.indexOf(recid + '-');
var tabIndex = currentUrl.substring(tabIndexNumber + recid.length + 1);
if (tabIndexNumber !== -1) {
Array.prototype.forEach.call(tabs, function (tabItem) {
if (parseInt(tabItem.getAttribute('data-tab-number'), 10) === parseInt(tabIndex, 10)) {
tabItem.classList.add('t817__tab_active');
/* a11y: change attrs for current tab */
tabItem.querySelector('.t817__tab-name').setAttribute('tabindex', 0);
tabItem.querySelector('.t817__tab-name').setAttribute('aria-selected', true);
}
});
Array.prototype.forEach.call(content, function (contentItem) {
if (parseInt(contentItem.getAttribute('data-tab-content-number'), 10) === parseInt(tabIndex, 10)) {
contentItem.classList.add('t817__content_active');
}
});
select.value = tabIndex;
rec.querySelector('.t817__wrapper').setAttribute('data-tab-current', tabIndex);
} else {
tabs[0].classList.add('t817__tab_active');
content[0].classList.add('t817__content_active');
rec.querySelector('.t817__wrapper').setAttribute('data-tab-current', 1);
/* a11y: change attrs for current tab */
tabs[0].querySelector('.t817__tab-name').setAttribute('tabindex', 0);
tabs[0].querySelector('.t817__tab-name').setAttribute('aria-selected', true);
}
}
function t817_scrollToTabs(recid) {
var currentUrl = window.location.href;
var tabIndexNumber = currentUrl.indexOf('#!/tab/');
var tabIndexNumberStart = currentUrl.indexOf('tab/');
if (parseInt(tabIndexNumber, 10) !== -1) {
var tabRecord = currentUrl.substring(tabIndexNumberStart + 4, tabIndexNumberStart + 4 + recid.length);
if (parseInt(tabRecord, 10) === parseInt(recid, 10)) {
var tabBlock = document.querySelector('#rec' + tabRecord).querySelector('.t817');
var targetOffset = tabBlock.getBoundingClientRect().top + window.pageYOffset;
if (window.innerWidth > 960) {
var target = targetOffset - 200;
} else {
var target = targetOffset - 100;
}
t817_scrollToEl(target, 300);
}
}
}
function t817_removeUrl() {
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tab/');
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove < 0) {
indexToRemove = currentUrl.indexOf('%23!/tab/');
}
currentUrl = currentUrl.substring(0, indexToRemove);
if (parseInt(indexToRemove, 10) !== -1) {
if (typeof history.replaceState === 'function') {
window.history.replaceState('', '', currentUrl);
}
}
}
function t817_scrollToEl(elTopPos, duration) {
if (elTopPos === window.pageYOffset) return false;
var difference = window.pageYOffset;
var cashedDiff = window.pageYOffset;
var step = (10 * (elTopPos || window.pageYOffset)) / duration;
var timer = setInterval(function () {
if (cashedDiff > elTopPos) {
difference -= step;
} else {
difference += step;
}
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (cashedDiff > elTopPos && window.pageYOffset <= elTopPos) {
document.body.removeAttribute('data-scrollable');
clearInterval(timer);
} else if (cashedDiff <= elTopPos && window.pageYOffset >= elTopPos) {
document.body.removeAttribute('data-scrollable');
clearInterval(timer);
}
}, 10);
var timer2 = setTimeout(function () {
clearInterval(timer);
document.body.removeAttribute('data-scrollable');
clearTimeout(timer2);
}, duration * 2);
}
function t819_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
var tabs = rec.querySelectorAll('.t819__tab');
var select = rec.querySelector('.t819__select');
var content = rec.querySelectorAll('.t819__content');
if (!tabs.length) return;
if (!content.length) return;
if (currentMode !== 'edit' && currentMode !== 'preview') {
t819_scrollToTabs(recid);
window.onload = function () {
t819_scrollToTabs(recid);
};
}
t819_showTabByUrl(recid, tabs, content, select);
t819_showTab(recid, tabs, content, currentMode);
t819_showTabMobile(recid, select, content, currentMode);
}
function t819_showTab(recid, tabs, content, currentMode) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
Array.prototype.forEach.call(tabs, function (tabItem) {
tabItem.addEventListener('click', function (event) {
var tabNumber = this.getAttribute('data-tab-number');
/* set current tab index */
rec.querySelector('.t819__wrapper').setAttribute('data-tab-current', tabNumber);
Array.prototype.forEach.call(tabs, function (tabItem) {
tabItem.classList.remove('t819__tab_active');
var button = tabItem.querySelector('.t817__tab-name');
if (button) {
button.setAttribute('tabindex', -1);
button.setAttribute('aria-selected', false);
}
});
Array.prototype.forEach.call(content, function (contentItem) {
contentItem.classList.remove('t819__content_active');
if (parseInt(contentItem.getAttribute('data-tab-content-number'), 10) === parseInt(tabNumber, 10)) {
contentItem.classList.add('t819__content_active');
}
});
tabItem.classList.add('t819__tab_active');
var currentButton = tabItem.querySelector('.t817__tab-name');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
}
t819_changeUrl(recid, currentMode, tabNumber);
t819__updateLazyLoad(currentMode);
event.preventDefault();
});
tabItem.addEventListener('keydown', function (event) {
var currentIndex = Number(rec.querySelector('.t819__wrapper').getAttribute('data-tab-current'));
var prevent = false;
switch (event.key) {
case 'Left':
case 'ArrowLeft':
currentIndex = currentIndex === 1 ? tabs.length : currentIndex - 1;
t819_showActiveTabFromKeyboard(recid, tabs, content, currentMode, currentIndex);
prevent = true;
break;
case 'Right':
case 'ArrowRight':
currentIndex = currentIndex === tabs.length ? 1 : currentIndex + 1;
t819_showActiveTabFromKeyboard(recid, tabs, content, currentMode, currentIndex);
prevent = true;
break;
default:
break;
}
if (prevent) {
event.stopPropagation();
event.preventDefault();
}
});
});
}
function t819_showActiveTabFromKeyboard(recid, tabs, content, currentMode, currentIndex) {
var rec = document.querySelector('#rec' + recid);
Array.prototype.forEach.call(tabs, function (tabItem) {
tabItem.classList.remove('t819__tab_active');
var button = tabItem.querySelector('.t819__tab-name');
if (button) {
button.setAttribute('tabindex', -1);
button.setAttribute('aria-selected', false);
}
});
Array.prototype.forEach.call(content, function (contentItem) {
contentItem.classList.remove('t819__content_active');
});
var currentTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
if (!currentTab) return;
currentTab.classList.add('t819__tab_active');
/* a11y: change attrs for current tab */
var currentButton = currentTab.querySelector('.t819__tab-name');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
currentButton.focus();
}
var currentContent = rec.querySelector('[data-tab-content-number="' + currentIndex + '"]');
if (currentContent) currentContent.classList.add('t819__content_active');
var tabList = rec.querySelector('.t819__wrapper');
if (tabList) tabList.setAttribute('data-tab-current', currentIndex);
t819_changeUrl(recid, currentMode, currentIndex);
t819__updateLazyLoad(currentMode);
}
function t819_changeUrl(recid, currentMode, index) {
t819_removeUrl();
if (currentMode !== 'edit' && currentMode !== 'preview') {
if (typeof history.replaceState === 'function') {
window.history.replaceState('', '', window.location.href + '#!/tab/' + recid + '-' + index);
}
}
}
function t819__updateLazyLoad(currentMode) {
if (!currentMode) {
if (window.lazy === 'y' || document.querySelector('#allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
}
function t819_showTabMobile(recid, select, content, currentMode) {
select.addEventListener('change', function (event) {
var tabNumberMobile = this.value;
Array.prototype.forEach.call(content, function (contentItem) {
contentItem.classList.remove('t819__content_active');
if (parseInt(contentItem.getAttribute('data-tab-content-number'), 10) === parseInt(tabNumberMobile, 10)) {
contentItem.classList.add('t819__content_active');
}
});
t819_removeUrl();
if (currentMode !== 'edit' && currentMode !== 'preview') {
if (typeof history.replaceState === 'function') {
window.history.replaceState('', '', window.location.href + '#!/tab/' + recid + '-' + tabNumberMobile);
}
}
if (!currentMode) {
if (
window.lazy === 'y' ||
document.querySelector('#allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
event.preventDefault();
});
}
function t819_showTabByUrl(recid, tabs, content, select) {
var rec = document.querySelector('#rec' + recid);
var currentUrl = window.location.href;
var tabIndexNumber = currentUrl.indexOf(recid + '-');
var tabIndex = currentUrl.substring(tabIndexNumber + recid.length + 1);
if (tabIndexNumber !== -1) {
Array.prototype.forEach.call(tabs, function (tabItem) {
if (parseInt(tabItem.getAttribute('data-tab-number'), 10) === parseInt(tabIndex, 10)) {
tabItem.classList.add('t819__tab_active');
/* a11y: change attrs for current tab */
tabItem.querySelector('.t819__tab-name').setAttribute('tabindex', 0);
tabItem.querySelector('.t819__tab-name').setAttribute('aria-selected', true);
}
});
Array.prototype.forEach.call(content, function (contentItem) {
if (parseInt(contentItem.getAttribute('data-tab-content-number'), 10) === parseInt(tabIndex, 10)) {
contentItem.classList.add('t819__content_active');
}
});
select.value = tabIndex;
rec.querySelector('.t819__wrapper').setAttribute('data-tab-current', tabIndex);
} else {
tabs[0].classList.add('t819__tab_active');
content[0].classList.add('t819__content_active');
rec.querySelector('.t819__wrapper').setAttribute('data-tab-current', 1);
/* a11y: change attrs for current tab */
tabs[0].querySelector('.t819__tab-name').setAttribute('tabindex', 0);
tabs[0].querySelector('.t819__tab-name').setAttribute('aria-selected', true);
}
}
function t819_scrollToTabs(recid) {
var currentUrl = window.location.href;
var tabIndexNumber = currentUrl.indexOf('#!/tab/');
var tabIndexNumberStart = currentUrl.indexOf('tab/');
if (parseInt(tabIndexNumber, 10) !== -1) {
var tabRecord = currentUrl.substring(tabIndexNumberStart + 4, tabIndexNumberStart + 4 + recid.length);
if (parseInt(tabRecord, 10) === parseInt(recid, 10)) {
var tabBlock = document.querySelector('#rec' + tabRecord).querySelector('.t819');
var targetOffset = tabBlock.getBoundingClientRect().top + window.pageYOffset;
if (window.innerWidth > 960) {
var target = targetOffset - 200;
} else {
var target = targetOffset - 100;
}
t819_scrollToEl(target, 300);
}
}
}
function t819_removeUrl() {
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tab/');
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove < 0) {
indexToRemove = currentUrl.indexOf('%23!/tab/');
}
currentUrl = currentUrl.substring(0, indexToRemove);
if (parseInt(indexToRemove, 10) !== -1) {
if (typeof history.replaceState === 'function') {
window.history.replaceState('', '', currentUrl);
}
}
}
function t819_scrollToEl(elTopPos, duration) {
if (elTopPos === window.pageYOffset) return false;
var difference = window.pageYOffset;
var cashedDiff = window.pageYOffset;
var step = (10 * (elTopPos || window.pageYOffset)) / duration;
var timer = setInterval(function () {
if (cashedDiff > elTopPos) {
difference -= step;
} else {
difference += step;
}
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (cashedDiff > elTopPos && window.pageYOffset <= elTopPos) {
document.body.removeAttribute('data-scrollable');
clearInterval(timer);
} else if (cashedDiff <= elTopPos && window.pageYOffset >= elTopPos) {
document.body.removeAttribute('data-scrollable');
clearInterval(timer);
}
}, 10);
var timer2 = setTimeout(function () {
clearInterval(timer);
document.body.removeAttribute('data-scrollable');
clearTimeout(timer2);
}, duration * 2);
}
function t821_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec ? rec.querySelector('.t821') : null;
if (!menu) return;
var isFixed = menu.style.position === 'fixed' || window.getComputedStyle(menu).position === 'fixed';
var isRedactorMode = menu.classList.contains('t821_redactor-mode');
if (!isRedactorMode) {
menu.classList.remove('t821__beforeready');
if (isFixed && menu.getAttribute('data-bgopacity-two')) {
t_onFuncLoad('t_menu__changeBgOpacity', function () {
t_menu__changeBgOpacity(recid, '.t821');
window.addEventListener(
'scroll',
t_throttle(function () {
t_menu__changeBgOpacity(recid, '.t821');
}, 200)
);
});
}
if (isFixed && menu.getAttribute('data-appearoffset')) {
menu.classList.remove('t821__beforeready');
t_onFuncLoad('t_menu__showFixedMenu', function () {
t_menu__showFixedMenu(recid, '.t821');
window.addEventListener(
'scroll',
t_throttle(function () {
t_menu__showFixedMenu(recid, '.t821');
}, 200)
);
});
}
}
t_onFuncLoad('t_menu__setBGcolor', function () {
t_menu__setBGcolor(recid, '.t821');
window.addEventListener(
'resize',
t_throttle(function () {
t_menu__setBGcolor(recid, '.t821');
}, 200)
);
});
}
function t822_init(recid) {
t822_setHeight(recid);
window.onload = function () {
t822_setHeight(recid);
};
window.addEventListener('resize', function () {
t_throttle(function () {
if (window.noAdaptive && window.$isMobile) {
return;
}
t822_setHeight(recid);
}, 200);
});
var currentBlock = document.querySelector('.t822');
if (!currentBlock) return;
currentBlock.addEventListener('displayChanged', function () {
t822_setHeight(recid);
});
}
function t822_setHeight(recid) {
var allContainer = document.querySelectorAll('#rec' + recid + ' .t822 .t-container');
if (!allContainer) return;
Array.prototype.forEach.call(allContainer, function (container) {
var highestColumn = 0;
Array.prototype.forEach.call(container.querySelectorAll('.t822__col'), function (column) {
var columnChild = column.querySelector('.t822__col-wrapper');
var childDimension = t822_getElementDimension(columnChild);
var columnDimension = t822_getElementDimension(column);
if (childDimension.height != 0) {
column.style.height = childDimension.height + 'px';
}
columnDimension = t822_getElementDimension(column);
if (columnDimension.height > highestColumn) {
highestColumn = columnDimension.height;
}
});
Array.prototype.forEach.call(container.querySelectorAll('.t822__col'), function (column) {
if (window.innerWidth >= 960 && highestColumn != 0) {
column.style.height = highestColumn + 'px';
} else {
column.style.height = 'auto';
}
});
});
}
function t822_getElementDimension(element) {
return {
height: parseInt(getComputedStyle(element).height.replace('px', ''), 10),
width: parseInt(getComputedStyle(element).width.replace('px', ''), 10),
};
}
function t823_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t824_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t824');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
var popup = rec.querySelector('.t824__popup');
var analitics = popup.getAttribute('data-track-popup');
var hook = 'TildaSendMessageWidget' + recId;
var button = rec.querySelector('.t824__btn');
var closeButtons = rec.querySelectorAll('.t824__popup-close, .t824__mobile-close');
var popupContainer = rec.querySelector('.t824__popup-container');
window.addEventListener(
'scroll',
t_throttle(function () {
t824_appearPopup(recId);
}, 200)
);
button.addEventListener('click', function (event) {
container.classList.add('t824_active');
t824_showPopup(recId);
popupContainer.style.visibility = 'visible';
t824__fadeIn(popupContainer);
button.style.visibility = 'hidden';
t824__fadeOut(button);
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, hook);
}
event.preventDefault();
});
for (var i = 0; i < closeButtons.length; i++) {
closeButtons[i].addEventListener('click', function (event) {
t824_closePopup(rec);
event.preventDefault();
});
}
document.addEventListener('keydown', function (event) {
t824_escClosePopup(event, rec);
});
t824_appearPopup(recId);
t824_checkPhoneNumber(rec);
}
function t824_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t824');
if (!container) return;
var popup = rec.querySelector('.t824__popup');
var buttonWrapper = rec.querySelector('.t824__btn_wrapper');
var buttonText = rec.querySelector('.t824__btn-text');
if (buttonWrapper) buttonWrapper.classList.remove('t824__btn_animate');
if (buttonText) buttonText.style.display = 'none';
if (window.innerWidth < 960) document.body.classList.add('t824__body_popupshowed');
popup.style.display = 'block';
setTimeout(function () {
popup.classList.add('t824__popup_show');
}, 50);
t824__lazyLoad();
}
function t824_escClosePopup(event, rec) {
if (event.key === 'Escape') t824_closePopup(rec);
}
function t824_closePopup(rec) {
if (window.innerWidth < 960) document.body.classList.remove('t824__body_popupshowed');
var container = rec.querySelector('.t824');
var popup = rec.querySelector('.t824__popup');
var button = rec.querySelector('.t824__btn');
var popupContainer = rec.querySelector('.t824__popup-container');
var appearOffset = popupContainer.getAttribute('data-appearoffset');
container.classList.remove('t824_active');
popup.classList.remove('t824__popup_show');
setTimeout(function () {
var popupHide = rec.querySelector('.t824__popup:not(.t824__popup_show)');
popupHide.style.display = 'none';
}, 300);
if (appearOffset) {
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (window.pageYOffset >= appearOffset) {
button.style.visibility = 'visible';
t824__fadeIn(button);
t824__lazyLoad();
}
} else {
button.style.visibility = 'visible';
t824__fadeIn(button);
t824__lazyLoad();
}
}
function t824_checkPhoneNumber(rec) {
var phone = rec.querySelector('.t824__phone');
if (!phone) return;
var phoneText = phone.textContent;
if (phoneText) {
phone.href = 'tel:' + phoneText.replace(/[^0-9,+]/g, '');
}
}
function t824_sendPopupEventToStatistics(popupName) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupName.substring(0, 7) == '#popup:') {
popupName = popupName.substring(7);
}
virtPage += popupName;
virtTitle += popupName;
if (window.Tilda && typeof Tilda.sendEventToStatistics == 'function') {
Tilda.sendEventToStatistics(virtPage, virtTitle, '', 0);
} else {
if (ga) {
if (window.mainTracker != 'tilda') {
ga('send', { hitType: 'pageview', page: virtPage, title: virtTitle });
}
}
if (window.mainMetrika && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, { title: virtTitle, referer: window.location.href });
}
}
}
function t824_appearPopup(recId) {
if (window.innerWidth > 980) {
var rec = document.getElementById('rec' + recId);
var container = rec.querySelector('.t824');
var popup = rec.querySelector('.t824__popup');
var popupContainer = rec.querySelector('.t824__popup-container');
var button = rec.querySelector('.t824__btn');
var appearOffset = popupContainer.getAttribute('data-appearoffset');
var popupContainerStyle = getComputedStyle(popupContainer, null).visibility;
var buttonStyle = getComputedStyle(button, null);
if (appearOffset) {
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(window.innerHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (window.pageYOffset >= appearOffset) {
if (!container.classList.contains('t824_active') && buttonStyle.visibility === 'hidden') {
button.style.visibility = 'visible';
t824__fadeIn(button);
}
} else {
if (
popupContainerStyle === 'hidden' &&
buttonStyle.visibility === 'hidden' &&
buttonStyle.display !== 'none'
) {
popup.style.display = 'block';
setTimeout(function () {
popup.classList.add('t824__popup_show');
}, 50);
container.classList.add('t824_active');
popupContainer.style.visibility = 'visible';
t824__lazyLoad();
t824__fadeIn(popupContainer);
} else if (!container.classList.contains('t824_active') && buttonStyle.visibility !== 'hidden') {
button.style.visibility = 'hidden';
t824__fadeOut(button);
}
}
} else {
if (popupContainerStyle === 'hidden' && buttonStyle.visibility === 'hidden') {
popup.style.display = 'block';
setTimeout(function () {
popup.classList.add('t824__popup_show');
}, 50);
container.classList.add('t824_active');
popupContainer.style.visibility = 'visible';
t824__lazyLoad();
t824__fadeIn(popupContainer);
}
}
}
}
function t824__lazyLoad() {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t824__fadeOut(el) {
if (el.style.display === 'none') return;
var opacity = 1;
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity -= 0.1;
if (opacity <= 0.1) {
clearInterval(timer);
el.style.display = 'none';
el.style.opacity = '';
}
}, 20);
}
function t824__fadeIn(el) {
if (el.style.display === 'block') return;
var opacity = 0;
el.style.opacity = opacity;
el.style.display = 'block';
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity += 0.1;
if (opacity >= 1.0) {
clearInterval(timer);
el.style.display = '';
}
}, 20);
}
function t825_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t825');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
var button = rec.querySelector('.t825__btn');
var buttonClose = rec.querySelector('.t825__mobile-close');
var popup = rec.querySelector('.t825__popup');
var analitics = popup.getAttribute('data-track-popup');
var hook = 'TildaSendMessageWidget' + recId;
if (button) {
button.addEventListener('click', function (event) {
if (button.classList.contains('t825__btn_active')) {
t825_closePopup(rec);
return;
}
button.classList.add('t825__btn_active');
container.classList.add('t825_active');
t825_showPopup(rec);
event.preventDefault();
if (analitics) Tilda.sendEventToStatistics(analitics, hook);
});
}
if (buttonClose) {
buttonClose.addEventListener('click', function () {
t825_closePopup(rec);
});
}
var whatsApp = rec.querySelector('.t825__whatsapp');
if (whatsApp) {
var whatsAppHref = whatsApp.getAttribute('href');
if (whatsAppHref) t825_removeExtraSymbolsFromWhatsApp(whatsApp, whatsAppHref);
}
t825__lazyLoad();
}
function t825_removeExtraSymbolsFromWhatsApp(whatsApp, whatsAppHref) {
if (whatsAppHref && whatsAppHref.indexOf('?text=') !== -1) {
var whatsAppHrefArr = whatsAppHref.split('?text=');
whatsAppHrefArr[0] = whatsAppHrefArr[0].replace(/[\(\)+-]/g, '');
whatsAppHref = whatsAppHrefArr[0] + '?text=' + whatsAppHrefArr[1];
} else {
whatsAppHref = whatsAppHref.replace(/[\(\)+-]/, '');
}
whatsApp.setAttribute('href', whatsAppHref);
}
function t825_showPopup(rec) {
var popup = rec.querySelector('.t825__popup');
var buttonWrapper = rec.querySelector('.t825__btn_wrapper');
var buttonText = rec.querySelector('.t825__btn-text');
if (buttonWrapper) buttonWrapper.classList.remove('t8245_btn_animate');
if (buttonText) buttonText.style.display = 'none';
if (window.innerWidth < 960) document.body.classList.add('t825__body_popupshowed');
popup.style.display = 'block';
setTimeout(function () {
popup.classList.add('t825__popup_show');
}, 50);
document.addEventListener('keydown', t825__escClosePopup);
t825__lazyLoad();
}
function t825__escClosePopup(event) {
if (event.key === 'Escape') t825_closePopup();
}
function t825_closePopup(rec) {
if (window.innerWidth < 960) document.body.classList.remove('t825__body_popupshowed');
var containers = document.querySelectorAll('.t825');
var popups = document.querySelectorAll('.t825__popup');
var buttons = document.querySelectorAll('.t825__btn');
for (var i = 0; i < containers.length; i++) {
containers[i].classList.remove('t825_active');
}
for (var i = 0; i < popups.length; i++) {
popups[i].classList.remove('t825__popup_show');
}
for (var i = 0; i < buttons.length; i++) {
buttons[i].classList.remove('t825__btn_active');
}
setTimeout(function () {
if (!rec) return;
var popupHide = rec.querySelector('.t825__popup:not(.t825__popup_show)');
if (popupHide) {
popupHide.style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t825__escClosePopup);
}
function t825__lazyLoad() {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t826_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var wrapper = rec.querySelector('.t826');
t826_startAnimation(recid);
if (!window.isMobile) {
window.addEventListener(
'resize',
t_throttle(function () {
t826_prepareAnimation(recid);
})
);
}
if (window.isMobile) {
window.addEventListener('orientationchange', function () {
t826_prepareAnimation(recid);
});
}
wrapper.addEventListener('displayChanged', function () {
t826_prepareAnimation(recid);
});
}
function t826_prepareAnimation(recid) {
var galaxyList = document.querySelectorAll('div:not(.t826__animation) > div[data-galaxy-id="' + recid + '"]');
Array.prototype.forEach.call(galaxyList, function (galaxy) {
if (galaxy && galaxy.parentNode !== null) {
galaxy.parentNode.removeChild(galaxy);
}
});
t826_startAnimation(recid);
}
function t826_startAnimation(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var wrapper = rec.querySelector('.t826');
if (!wrapper) return;
var galaxy = rec.querySelector('.t826__galaxy');
if (!galaxy) return;
var allRecords = document.querySelector('#allrecords');
var recIds = wrapper.getAttribute('data-galaxy-rec-ids');
var wholePage = wrapper.getAttribute('data-galaxy-whole-page');
var verticalFlip = wrapper.getAttribute('data-galaxy-vflip');
var color = wrapper.getAttribute('data-element-color');
var opacity = wrapper.getAttribute('data-element-opacity');
var options = {
color: !color ? '#fff' : color,
opacity: !opacity ? 1 : opacity.replace(/^0?.([0-9])0?$/g, '.$1'),
};
if (options.color.indexOf('#') !== -1) {
var color = options.color;
if (color[1] === color[2] && color[3] === color[4] && color[5] === color[6]) {
options.color = '#' + color[1] + color[3] + color[5];
}
}
if (verticalFlip === 'yes') {
galaxy.classList.add('t826__galaxy_flip');
}
if (allRecords.getAttribute('data-tilda-mode') === 'edit') {
var wrapper = rec.querySelector('.t826__demo');
wrapper.insertAdjacentElement('beforeend', galaxy);
wrapper.style.position = 'relative';
t826_runningAnimation(wrapper, options);
return;
}
if (recIds) {
recIds = recIds.split(',');
/* append to certain blocks */
recIds.forEach(function (rec) {
var currentRec = document.querySelector('#rec' + rec);
var currentGalaxy = galaxy.cloneNode(true);
currentGalaxy.style.position = 'absolute';
t826_addAnimation(currentRec, currentGalaxy, options);
});
} else {
var nextBlock;
if (
rec.nextElementSibling &&
(rec.nextElementSibling.querySelector('.t-cover') || rec.nextElementSibling.querySelector('.t-hero'))
) {
nextBlock = rec.nextElementSibling;
}
var prevBlock;
if (
rec.previousElementSibling &&
(rec.previousElementSibling.querySelector('.t-cover') ||
rec.previousElementSibling.querySelector('.t-hero'))
) {
prevBlock = rec.previousElementSibling;
}
var currentGalaxy = galaxy.cloneNode(true);
if (currentGalaxy) currentGalaxy.style.position = 'absolute';
if (nextBlock) {
t826_addAnimation(nextBlock, currentGalaxy, options);
} else if (prevBlock) {
t826_addAnimation(prevBlock, currentGalaxy, options);
}
}
if (wholePage === 'yes') {
var animationWrapper = rec.querySelector('.t826__animation');
animationWrapper.style.display = 'block';
galaxy.style.position = 'fixed';
t826_addAnimation(allRecords, galaxy, options);
}
}
function t826_addAnimation(currentRec, galaxy, options) {
if (!currentRec) return;
currentRec.setAttribute('data-animationappear', 'off');
currentRec.classList.remove('r_hidden');
var currentRecType = currentRec.getAttribute('data-parenttplid') || currentRec.getAttribute('data-record-type');
var currentRecId = currentRec.getAttribute('id');
/* if zero block */
if (currentRecType === '396') {
var filter = currentRec.querySelector('.t396__filter');
filter.insertAdjacentElement('afterend', galaxy);
galaxy.style.zIndex = '0';
} else if (currentRecId === 'allrecords') {
galaxy.style.zIndex = '-1';
} else {
var coverWrapper = currentRec.querySelector('.t-cover');
var heroWrapper = currentRec.querySelector('.t-hero');
/* if cover */
if (coverWrapper) {
var filter = coverWrapper.querySelector('.t-cover__filter');
filter.insertAdjacentElement('afterend', galaxy);
galaxy.style.zIndex = '0';
} else if (heroWrapper) {
/* if hero */
var heroMedia = heroWrapper.querySelector('.t-hero__media');
if (heroMedia) {
heroMedia.insertAdjacentElement('afterend', galaxy);
} else {
heroWrapper.insertAdjacentElement('afterbegin', galaxy);
}
galaxy.style.zIndex = '0';
} else {
/* if any block */
var wrapper = currentRec;
if (wrapper.length === 0) {
return true;
}
wrapper.appendChild(galaxy);
wrapper.style.position = 'relative';
var excludesAboutBlocks = ['480', '478', '477'];
var recordType = wrapper.getAttribute('data-parenttplid') || wrapper.getAttribute('data-record-type');
var isBlockExclude = excludesAboutBlocks.some(function (block) {
return recordType === block;
});
var firstChildDiv;
if (isBlockExclude) {
firstChildDiv = wrapper.querySelector('.t' + recordType);
} else {
firstChildDiv = wrapper.querySelector('div');
}
firstChildDiv.style.position = 'relative';
firstChildDiv.style.zIndex = '1';
/* nothing for CR30N, GL19 */
if (currentRecType === '734' || currentRecType === '675' || currentRecType === '215') {
return;
}
/* remove z-index for block below & set z-index -1 for galaxy */
var excludesBlocks = ['754', '776', '778', '786', '770', '838'];
/*
increase z-index for feed blocks that contains
popup with higher z-index, setted z-index
must be higher that the menu one
*/
var feedsBlocks = ['924'];
var firstChildDiv = wrapper.querySelector('div');
if (excludesBlocks.indexOf(currentRecType) !== -1) {
firstChildDiv.style.zIndex = '';
galaxy.style.zIndex = '-1';
} else if (feedsBlocks.indexOf(currentRecType) !== -1) {
firstChildDiv.style.zIndex = '2000';
} else {
/* set z-index 0 for other blocks */
galaxy.style.zIndex = '0';
}
}
}
t826_runningAnimation(currentRec, options);
}
function t826_runningAnimation(currentRec, options) {
var starsSetting;
if (window.isMobile) {
starsSetting = [
{
name: 'near',
count: 25,
speed: 50,
},
{
name: 'mid',
count: 50,
speed: 100,
},
{
name: 'far',
count: 175,
speed: 150,
},
];
} else {
starsSetting = [
{
name: 'near',
count: 100,
speed: 50,
},
{
name: 'mid',
count: 200,
speed: 100,
},
{
name: 'far',
count: 700,
speed: 150,
},
];
}
var currentRecId = currentRec.getAttribute('id');
var maxHeight = currentRec.offsetHeight;
var maxWidth = currentRec.offsetWidth;
if (typeof currentRecId === 'undefined') {
currentRecId = 'demo';
} else if (currentRecId === 'allrecords') {
maxHeight = window.innerHeight;
maxWidth = window.innerWidth;
}
var animationName = 't826__galaxy-' + currentRecId;
var animation = currentRec.querySelector('#' + animationName);
if (animation && animation.parentNode !== null) {
animation.parentNode.removeChild(animation);
}
var newStyle = document.createElement('style');
newStyle.id = animationName;
newStyle.innerHTML =
'@keyframes ' + animationName + '{' + 'to{' + 'transform:translateY(' + -maxHeight + 'px)' + '}' + '}';
starsSetting.forEach(function (value, index, array) {
var x = Math.round(Math.random() * maxHeight);
var y = Math.round(Math.random() * maxWidth);
var dot = '';
if (options.color.indexOf('#') !== -1) {
dot = x + 'px ' + y + 'px';
} else if (options.opacity < 1) {
dot = x + 'px ' + y + 'px rgba(' + options.color + ',' + options.opacity + ')';
} else {
dot = x + 'px ' + y + 'px rgb(' + options.color + ')';
}
var countDots = Math.round((array[index].count * maxHeight) / 2000);
for (var i = 0; i < countDots; i++) {
var x = Math.round(Math.random() * maxWidth);
var y = Math.round(Math.random() * maxHeight);
if (options.color.indexOf('#') !== -1) {
dot += ', ' + x + 'px ' + y + 'px';
dot += ', ' + x + 'px ' + (y + maxHeight) + 'px';
} else if (options.opacity < 1) {
dot += ', ' + x + 'px ' + y + 'px rgba(' + options.color + ',' + options.opacity + ')';
dot += ', ' + x + 'px ' + (y + maxHeight) + 'px rgba(' + options.color + ',' + options.opacity + ')';
} else {
dot += ', ' + x + 'px ' + y + 'px rgb(' + options.color + ')';
dot += ', ' + x + 'px ' + (y + maxHeight) + 'px rgb(' + options.color + ')';
}
}
var animationDuration = Math.round((array[index].speed * maxHeight) / 2000);
var className = 't826__galaxy-' + array[index].name + '-' + currentRecId;
newStyle.innerHTML +=
'.' +
className +
':after, .' +
className +
'{' +
'box-shadow:' +
dot +
';' +
'animation-duration:' +
animationDuration +
's;' +
'animation-name:' +
animationName +
';' +
(options.color.indexOf('#') !== -1 ? 'color:' + options.color + ';' : '') +
(options.color.indexOf('#') !== -1 && options.opacity < 1 ? 'opacity:' + options.opacity : '') +
'}' +
'.' +
className +
':after{' +
"content:' ';" +
'position:absolute;' +
'top:' +
maxHeight +
'px' +
'}';
var galaxies = currentRec.querySelectorAll(
'.t826__galaxy > .t826__galaxy-wrapper > .t826__galaxy-' + array[index].name
);
Array.prototype.forEach.call(galaxies, function (galaxy) {
galaxy.classList.add(className);
});
});
currentRec.insertAdjacentElement('afterbegin', newStyle);
var galaxyWrappers = currentRec.querySelectorAll('.t826__galaxy > .t826__galaxy-wrapper');
Array.prototype.forEach.call(galaxyWrappers, function (galaxy) {
galaxy.style.animationName = 't826__galaxy-fadeIn';
});
}
function t827_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var wrapper = rec.querySelector('.t827');
if (!wrapper) return;
var grid = rec.querySelector('.t827__grid');
var sizer = rec.querySelector('.t827__grid-sizer');
var items = rec.querySelectorAll('.t827__grid-item');
var images = rec.querySelectorAll('.t827__grid img');
var overlayList = rec.querySelectorAll('.t827__overlay');
var sizerWidth = sizer ? sizer.offsetWidth || parseInt(window.getComputedStyle(sizer).width, 10) : 0;
if (window.getComputedStyle(rec).display === 'none') {
grid.setAttribute('data-hidden-tab', 'y');
}
t827_reverse(grid);
Array.prototype.forEach.call(images, function (img) {
img.addEventListener('load', function () {
t827_initMasonry(rec, recid, grid);
setTimeout(function () {
t827_showOverlay(overlayList, items);
}, 500);
});
});
Array.prototype.forEach.call(overlayList, function (overlay) {
if (overlay.classList.contains('t827__overlay_preview')) {
setTimeout(function () {
t827_showOverlay([overlay], items);
}, 1000);
}
});
t827_initMasonry(rec, recid, grid);
setTimeout(function () {
t827_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
});
window.addEventListener(
'resize',
t_throttle(function () {
if (typeof window.noAdaptive !== 'undefined' && window.noAdaptive === true && window.isMobile) {
return;
}
t827_initMasonry(rec, recid, grid);
t827_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
})
);
window.addEventListener('load', function (event) {
t827_initMasonry(rec, recid, grid);
t827_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
});
wrapper.addEventListener('displayChanged', function (e) {
t827_initMasonry(rec, recid, grid, e.type);
t827_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
});
}
function t827_reverse(grid) {
if (grid && grid.classList.contains('t827__grid_reverse')) {
for (var i = grid.childElementCount - 2; i >= 0; i--) {
grid.appendChild(grid.children[i]);
}
}
}
function t827_initMasonry(rec, recid, grid, eventType) {
var gutterElement = rec.querySelector('.t827__gutter-sizer');
var gutterWidth;
grid.classList.add('t827__grid_load');
if (
gutterElement &&
(gutterElement.offsetWidth === 40 || window.getComputedStyle(gutterElement).width === '40px')
) {
gutterWidth = 39;
} else {
gutterWidth = '#rec' + recid + ' .t827__gutter-sizer';
}
t_onFuncLoad('imagesLoaded', function () {
if (eventType === 'displayChanged' && grid.getAttribute('data-hidden-tab') === 'y') {
grid.style.opacity = '0';
imagesLoaded(grid, function () {
if (grid.style.opacity === '0') {
grid.style.opacity = '';
}
grid.removeAttribute('data-hidden-tab');
});
setTimeout(function () {
if (grid.style.opacity === '0') {
grid.style.opacity = '';
}
grid.removeAttribute('data-hidden-tab');
}, 3000);
new Masonry(grid, {
columnWidth: '#rec' + recid + ' .t827__grid-sizer',
itemSelector: '#rec' + recid + ' .t827__grid-item',
gutter: gutterWidth,
isFitWidth: true,
transitionDuration: 0,
});
} else {
imagesLoaded(grid, function () {
new Masonry(grid, {
columnWidth: '#rec' + recid + ' .t827__grid-sizer',
itemSelector: '#rec' + recid + ' .t827__grid-item',
gutter: gutterWidth,
isFitWidth: true,
transitionDuration: 0,
});
});
}
grid.classList.remove('t827__grid_load');
});
}
function t827_showOverlay(overlayList, items) {
if (window.innerWidth >= 1024) {
Array.prototype.forEach.call(overlayList, function (overlay) {
overlay.style.display = 'block';
});
} else {
Array.prototype.forEach.call(items, function (item) {
item.addEventListener('click', function () {
var currentOverlay = item.querySelector('.t827__overlay');
if (currentOverlay) {
if (currentOverlay.style.opacity === '0') {
Array.prototype.forEach.call(overlayList, function (overlay) {
if (overlay === currentOverlay) {
overlay.style.opacity = '1';
} else {
overlay.style.opacity = '0';
}
});
} else {
currentOverlay.style.opacity = '0';
}
}
});
});
}
}
function t827_calcColumnWidth(rec, sizerWidth, grid, sizer, items) {
var isRecHidden = window.getComputedStyle(rec).display === 'none';
if (isRecHidden) {
rec.style.setProperty('display', 'block', 'important');
}
var container = rec.querySelector('.t827__container');
var firstItem = rec.querySelector('.t827__grid-item');
var gutterElement = rec.querySelector('.t827__gutter-sizer');
var containerWidthViaPadding = container
? container.offsetWidth || parseInt(window.getComputedStyle(container).width, 10)
: 0;
var containerPaddingLeft = container ? window.getComputedStyle(container).getPropertyValue('padding-left') : '0';
var containerPaddingLeftValue = parseInt(containerPaddingLeft, 10) || 0;
var containerPaddingRight = container ? window.getComputedStyle(container).getPropertyValue('padding-right') : '0';
var containerPaddingRightValue = parseInt(containerPaddingRight, 10) || 0;
var containerWidth = containerWidthViaPadding - (containerPaddingLeftValue + containerPaddingRightValue);
var itemWidth = firstItem ? firstItem.offsetWidth || parseInt(window.getComputedStyle(firstItem).width, 10) : 0;
var gutterSizerWidth = gutterElement
? gutterElement.offsetWidth || parseInt(window.getComputedStyle(gutterElement).width, 10)
: 0;
if (gutterElement && gutterSizerWidth === 40) gutterSizerWidth = 39;
if (isRecHidden) rec.style.display = '';
var columnAmount = Math.round(containerWidth / sizerWidth);
if (columnAmount === 1 && containerWidth > 320 && containerWidth <= 480) {
columnAmount = 2;
}
var newSizerWidth = (containerWidth - gutterSizerWidth * (columnAmount - 1)) / columnAmount;
if (containerWidth >= itemWidth) {
if (sizer) sizer.style.width = newSizerWidth + 'px';
Array.prototype.forEach.call(items, function (item) {
item.style.width = newSizerWidth + 'px';
});
} else {
if (grid) grid.style.width = '100%';
if (sizer) sizer.style.width = '100%';
Array.prototype.forEach.call(items, function (item) {
item.style.width = newSizerWidth + 'px';
});
}
}
function t829_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t829');
if (!container) return;
var grid = rec.querySelector('.t829__grid');
var sizer = rec.querySelector('.t829__grid-sizer');
var items = rec.querySelectorAll('.t829__grid-item');
var images = grid.querySelectorAll('img');
var sizerWidth = parseInt(getComputedStyle(sizer, null).width);
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
for (var i = 0; i < images.length; i++) {
images[i].addEventListener('load', function () {
if (!(grid.classList.contains('t829__container_mobile-flex') && window.innerWidth < 768)) {
t829_initMasonry(rec, recId, grid);
}
});
}
if (!(grid.classList.contains('t829__container_mobile-flex') && window.innerWidth < 768)) {
t829_initMasonry(rec, recId, grid);
t829_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
}
grid.addEventListener('touchmove', t829__updateLazyLoad);
grid.addEventListener('scroll', t829__updateLazyLoad);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
if (!grid.classList.contains('t829__container_mobile-flex')) {
t829_initMasonry(rec, recId, grid);
}
if (grid.classList.contains('t829__container_mobile-flex') && window.innerWidth >= 768) {
t829_initMasonry(rec, recId, grid);
}
if (!(grid.classList.contains('t829__container_mobile-flex') && window.innerWidth < 768)) {
t829_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
}
})
);
if (typeof jQuery !== 'undefined') {
$(container).bind('displayChanged', function () {
if (!grid.classList.contains('t829__container_mobile-flex')) {
/*prevent visibillity content after masonry gallery*/
grid.style.height = '100vh';
t829_initMasonry(rec, recId, grid);
}
if (grid.classList.contains('t829__container_mobile-flex') && window.innerWidth >= 768) {
t829_initMasonry(rec, recId, grid);
}
if (!(grid.classList.contains('t829__container_mobile-flex') && window.innerWidth < 768)) {
t829_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
}
});
} else {
container.addEventListener('displayChanged', function () {
if (!grid.classList.contains('t829__container_mobile-flex')) {
t829_initMasonry(rec, recId, grid);
}
if (grid.classList.contains('t829__container_mobile-flex') && window.innerWidth >= 768) {
t829_initMasonry(rec, recId, grid);
}
if (!(grid.classList.contains('t829__container_mobile-flex') && window.innerWidth < 768)) {
t829_calcColumnWidth(rec, sizerWidth, grid, sizer, items);
}
});
}
}
function t829_initMasonry(rec, recId, grid) {
if (!rec) return;
var gutterSizer = rec.querySelector('.t829__gutter-sizer');
if (!gutterSizer) return;
gutterSizer.style.width = '';
var gutterSizerWidth = parseInt(getComputedStyle(gutterSizer, null).width);
var gutterElement = gutterSizerWidth === 40 ? 39 : '#rec' + recId + ' .t829__gutter-sizer';
t_onFuncLoad('imagesLoaded', function () {
imagesLoaded(grid, function () {
new Masonry(grid, {
itemSelector: '#rec' + recId + ' .t829__grid-item',
columnWidth: '#rec' + recId + ' .t829__grid-sizer',
gutter: gutterElement,
isFitWidth: true,
transitionDuration: 0,
});
});
});
}
function t829_calcColumnWidth(rec, sizerWidth, grid, sizer, items) {
if (!rec) return;
var container = rec.querySelector('.t829__container');
if (!container) return;
grid.style.width = '';
for (var i = 0; i < items.length; i++) {
items[i].style.width = '';
}
if (sizerWidth === 0) {
var sizerStyle = getComputedStyle(sizer, null);
var sizerPaddingLeft = parseInt(sizerStyle.paddingLeft) || 0;
var sizerPaddingRight = parseInt(sizerStyle.paddingRight) || 0;
sizerWidth = sizer.clientWidth - (sizerPaddingLeft + sizerPaddingRight);
}
var containerStyle = getComputedStyle(container, null);
var containerPaddingLeft = parseInt(containerStyle.paddingLeft) || 0;
var containerPaddingRight = parseInt(containerStyle.paddingRight) || 0;
var containerWidth = container.clientWidth - (containerPaddingLeft + containerPaddingRight);
if (!items[0]) return;
var itemStyle = getComputedStyle(items[0], null);
var itemPaddingLeft = parseInt(itemStyle.paddingLeft) || 0;
var itemPaddingRight = parseInt(itemStyle.paddingRight) || 0;
var itemWidth = items[0].clientWidth - (itemPaddingLeft + itemPaddingRight);
var gutterSizer = rec.querySelector('.t829__gutter-sizer');
var gutterSizerStyle = getComputedStyle(gutterSizer, null);
var gutterSizerPaddingLeft = parseInt(gutterSizerStyle.paddingLeft) || 0;
var gutterSizerPaddingRight = parseInt(gutterSizerStyle.paddingRight) || 0;
var gutterSizerWidth = gutterSizer.clientWidth - (gutterSizerPaddingLeft + gutterSizerPaddingRight);
if (gutterSizerWidth === 40) gutterSizerWidth = 39;
var colAmount = Math.round(containerWidth / sizerWidth);
var newSizerWidth = Math.floor((containerWidth - gutterSizerWidth * (colAmount - 1)) / colAmount);
if (containerWidth >= itemWidth) {
sizer.style.width = newSizerWidth + 'px';
for (var i = 0; i < items.length; i++) {
items[i].style.width = newSizerWidth + 'px';
}
} else {
grid.style.width = '100%';
sizer.style.width = '100%';
for (var i = 0; i < items.length; i++) {
items[i].style.width = '100%';
}
}
}
function t829__updateLazyLoad() {
var allRecords = document.getElementById('allrecords');
if (!allRecords.getAttribute('data-tilda-mode')) {
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
}
function t830_init(recid) {
var rec = document.getElementById('rec' + recid);
var allRec = document.getElementById('allrecords');
if (!allRec || !rec) return;
var panel = rec.querySelector('.t830__panel');
var overlay = rec.querySelector('.t830m__overlay');
var menu = rec.querySelector('.t830m');
var submenu = rec.querySelector('.t830m__submenu');
var burger = rec.querySelector('.t830__side .t830__burger');
var menuItemList = rec.querySelectorAll('.t830m__list-title a');
var submenuItemList = rec.querySelectorAll('.t830m__submenu-item a');
t830_initMenu(rec, menu, burger, overlay);
t830_removePadding(rec, allRec);
t830_calcCol(rec, menu, allRec, false);
t_onFuncLoad('t_menu__highlightActiveLinks', function () {
t_menu__highlightActiveLinks('.t830m__list a');
t830_openSubmenu(rec);
});
t830_hoverShowMenu(rec, menu, panel, overlay, burger);
window.addEventListener('resize', function () {
t830_calcCol(rec, menu, allRec, true);
t830_removePadding(rec, allRec);
if (menu && menu.classList.contains('t830m_close') && window.innerWidth > 1499) {
if (overlay) overlay.classList.remove('t830m__menu_show');
}
});
if (submenu && submenu.classList.contains('t830m__submenu_close')) {
t830_toggleMenu(rec);
}
if (window.innerWidth > 1199) {
t830_scrollSideMenu(rec);
}
var isHashNotEmpty = window.location.hash.length !== 0;
Array.prototype.forEach.call(menuItemList, function (menuItem) {
menuItem.addEventListener('click', function () {
if (isHashNotEmpty) {
Array.prototype.forEach.call(menuItemList, function (menuEl) {
menuEl.classList.remove('t-active');
});
menuItem.classList.add('t-active');
}
});
});
Array.prototype.forEach.call(submenuItemList, function (submenuItem) {
submenuItem.addEventListener('click', function () {
if (isHashNotEmpty) {
Array.prototype.forEach.call(submenuItemList, function (submenuEl) {
submenuEl.classList.remove('t-active');
});
submenuItem.classList.add('t-active');
}
});
});
t_onFuncLoad('t_menu__findAnchorLinks', function () {
t_menu__findAnchorLinks(recid, '.t830m__list a');
});
}
function t830_calcCol(rec, menu, allrecords, isResized) {
if (window.innerWidth <= 1199 || !menu || window.getComputedStyle(rec).display === 'none') return;
var label = document.querySelector('.t-tildalabel');
if (menu.classList.contains('t830m_open')) {
if (allrecords) allrecords.classList.add('t830__allrecords_padd-small');
if (label) label.classList.add('t830__t-tildalabel_padd-small');
} else {
if (allrecords) allrecords.classList.add('t830__allrecords_padd');
if (label) label.classList.add('t830__t-tildalabel_padd');
}
if (isResized) return;
var event = document.createEvent('Event');
event.initEvent('allRecPaddingInit', true, true);
if (allrecords) allrecords.dispatchEvent(event);
}
function t830_toggleMenu(rec) {
var titleList = rec.querySelectorAll('.t830m__list-title_toggle');
Array.prototype.forEach.call(titleList, function (listTitle) {
listTitle.addEventListener('click', function () {
var submenu = listTitle.nextElementSibling;
var textTitle = listTitle.querySelector('.t830m__list-title-text');
t830_slideToggle(submenu);
if (textTitle) textTitle.classList.toggle('t830m__list-title-text_opacity');
if (textTitle) textTitle.classList.toggle('t-menu__link-item');
});
});
}
function t830_openSubmenu(rec) {
var activeLink = rec.querySelector('.t830m__submenu-item a.t-active');
var submenu = activeLink ? activeLink.closest('.t830m__submenu') : null;
if (submenu) submenu.style.display = 'block';
}
function t830_hoverShowMenu(rec, menu, panel, overlay, burger) {
if (window.innerWidth <= 1199 || !panel || !panel.classList.contains('t830__panel_hover')) return;
panel.addEventListener('mouseenter', function () {
if (menu) menu.classList.add('t830m__menu_show');
if (burger) burger.classList.add('t830__burger_open');
if (overlay) overlay.classList.add('t830m__overlay_hover');
});
if (menu) {
menu.addEventListener('mouseleave', function () {
menu.classList.remove('t830m__menu_show');
if (burger) burger.classList.remove('t830__burger_open');
});
}
if (overlay) {
overlay.addEventListener('mouseenter', function () {
overlay.classList.remove('t830m__overlay_hover');
if (burger) burger.classList.remove('t830__burger_open');
if (menu) menu.classList.remove('t830m__menu_show');
});
}
var menuLinks = menu.querySelectorAll('a');
Array.prototype.forEach.call(menuLinks, function (link) {
link.addEventListener('click', function () {
menu.classList.remove('t830m__menu_show');
if (burger) burger.classList.remove('t830__burger_open');
});
});
if (burger) {
burger.addEventListener('click', function () {
if (burger.classList.contains('t830__burger_open')) {
t830_closeMenu(rec, menu, overlay);
burger.classList.remove('t830__burger_open');
} else {
burger.classList.add('t830__burger_open');
if (menu) menu.classList.add('t830m__menu_show');
if (overlay) overlay.classList.add('t830m__overlay_hover');
}
});
}
}
function t830_showMenu(rec, menu, burger, overlay) {
var panel = rec.querySelector('.t830__panel');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t830__body_menushowed');
if (overlay) overlay.classList.add('t830m__menu_show');
if (menu) menu.classList.add('t830m__menu_show');
var closedMenuEls = rec.querySelectorAll('.t830m__overlay, .t830m__close, a[href*="#"]');
closedMenuEls = Array.prototype.filter.call(closedMenuEls, function (el) {
return !(
el.classList.contains('tooltipstered') ||
el.classList.contains('t794__tm-link') ||
el.classList.contains('t978__tm-link') ||
el.classList.contains('t966__tm-link')
);
});
closedMenuEls.forEach(function (el) {
el.addEventListener('click', function () {
t830_closeMenu(rec, menu, overlay);
if (burger) burger.classList.remove('t830__burger_open');
});
});
if (panel) panel.classList.add('t830__panel_close');
var popupBg = document.querySelector('.t-site-search-popup__background');
document.addEventListener('keydown', function (e) {
if (e.keyCode !== 27 || popupBg) return;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t830__body_menushowed');
if (menu) menu.classList.remove('t830m__menu_show');
if (burger) burger.classList.remove('t830__burger_open');
if (overlay) overlay.classList.remove('t830m__menu_show');
});
}
function t830_closeMenu(rec, menu, overlay) {
var panel = rec.querySelector('.t830__panel');
if (menu && menu.classList.contains('t830m_open') && window.innerWidth < 1500) {
if (panel) panel.classList.remove('t830__panel_close');
}
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t830__body_menushowed');
if (menu) menu.classList.remove('t830m__menu_show');
if (overlay) overlay.classList.remove('t830m__menu_show');
}
function t830_initMenu(rec, menu, burger, overlay) {
if (!rec) return;
var panel = rec.querySelector('.t830__panel');
var menuContent = rec.querySelector('.t830__menu__content');
if (typeof jQuery !== 'undefined') {
$('.t830').bind('clickedAnchorInTooltipMenu', function () {
t830_closeMenu(rec, menu, overlay);
});
} else {
var menuBlock = document.querySelector('.t830');
if (menuBlock) {
menuBlock.addEventListener('clickedAnchorInTooltipMenu', function () {
t830_closeMenu(rec, menu, overlay);
});
}
}
if (!panel || !menuContent || !menu) return;
if (
panel.classList.contains('t830__panel_click') ||
(panel.classList.contains('t830__panel_hover') && window.innerWidth <= 1199)
) {
menuContent.addEventListener('click', function (e) {
if (menu.classList.contains('t830m__menu_show')) {
if (burger) burger.classList.remove('t830__burger_open');
t830_closeMenu(rec, menu, overlay);
} else {
if (burger) burger.classList.add('t830__burger_open');
t830_showMenu(rec, menu, burger, overlay);
}
});
}
}
function t830_scrollSideMenu(rec) {
var container = rec ? rec.querySelector('.t830m__container') : null;
if (!container) return;
var events = ['scroll', 'wheel', 'DOMMouseScroll', 'mousewheel'];
events.forEach(function (event) {
container.addEventListener(event, function (e) {
var searchResult = rec.querySelector('.t-site-search-dm');
if (!searchResult) {
t830_stopScroll(container, e);
}
});
});
}
function t830_stopScroll(container, eventScroll) {
var scrollTop = container.scrollTop;
var scrollHeight = container.scrollHeight;
var height = container.offsetHeight;
var delta = eventScroll.type === 'DOMMouseScroll' ? eventScroll.detail * -40 : eventScroll.wheelDelta;
var up = delta > 0;
var prevent = function () {
eventScroll.stopPropagation();
eventScroll.preventDefault();
eventScroll.returnValue = false;
return false;
};
if (!up && -delta > scrollHeight - height - scrollTop) {
container.scrollTo(0, scrollHeight);
return prevent();
} else if (up && delta > scrollTop) {
container.scrollTo(0, 0);
return prevent();
}
}
function t830_removePadding(rec, allrecords) {
if (!allrecords || !rec || window.getComputedStyle(rec).display !== 'none') return;
allrecords.classList.remove('t830__allrecords_padd');
allrecords.classList.remove('t830__allrecords_padd-small');
allrecords.style.paddingLeft = '';
var label = document.querySelector('.t-tildalabel');
if (label) {
label.classList.remove('t830__t-tildalabel_padd');
label.classList.remove('t830__t-tildalabel_padd-small');
label.style.paddingLeft = '';
}
}
function t830_slideToggle(target) {
if (!target) return;
if (target.getAttribute('data-slide') === 'y') return;
if (window.getComputedStyle(target).display === 'none') {
return t830_slideDown(target);
} else {
return t830_slideUp(target);
}
}
function t830_slideUp(target) {
if (!target) return;
var step = target.offsetHeight / 30;
var difference = target.offsetHeight;
target.style.overflow = 'hidden';
target.setAttribute('data-slide', 'y');
var timerID = setInterval(function () {
difference -= step;
target.style.height = difference + 'px';
if (difference <= 0) {
target.style.height = '';
target.style.overflow = '';
target.style.display = 'none';
target.removeAttribute('data-slide');
clearInterval(timerID);
}
}, 10);
}
function t830_slideDown(target) {
if (!target) return;
target.style.display = '';
var currentDisplayValue = window.getComputedStyle(target).display;
target.style.display = currentDisplayValue === 'none' ? 'block' : currentDisplayValue;
var targetHeight = target.offsetHeight;
target.style.height = '0';
target.style.overflow = 'hidden';
target.setAttribute('data-slide', 'y');
var step = targetHeight / 30;
var difference = 0;
var timerID = setInterval(function () {
target.style.height = difference + 'px';
difference += step;
if (difference >= targetHeight) {
target.style.height = '';
target.style.overflow = '';
target.removeAttribute('data-slide');
clearInterval(timerID);
}
}, 10);
}
function t833_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var wrapper = rec.querySelector('.t833__sliderwrapper');
if (!wrapper) return;
var dataContainer = rec.querySelector('.t833');
if (!dataContainer) return;
var coverRecs = dataContainer.getAttribute('data-coverslider-rec-ids');
t833_showOnCertainWidth(rec, wrapper);
if (document.querySelector('#allrecords').getAttribute('data-tilda-mode') === 'edit') {
var recDemo = rec.querySelector('.t833__demo');
t833_addAnimation(recDemo, wrapper);
return;
}
if (coverRecs) {
coverRecs = coverRecs.split(',');
Array.prototype.forEach.call(coverRecs, function (rec) {
var currentRec = document.querySelector('#rec' + rec);
var currentWrapper = wrapper.cloneNode(true);
currentWrapper.style.position = 'absolute';
if (currentRec) {
t833_addAnimation(currentRec, currentWrapper);
}
});
} else {
var nextBlock = rec.nextElementSibling;
var prevBlock = rec.previousElementSibling;
var currentWrapper = wrapper.cloneNode(true);
currentWrapper.style.position = 'absolute';
if (nextBlock && nextBlock.querySelector('.t-cover')) {
t833_addAnimation(nextBlock, currentWrapper);
} else if (prevBlock && prevBlock.querySelector('.t-cover')) {
t833_addAnimation(prevBlock, currentWrapper);
}
}
}
function t833_showOnCertainWidth(rec, wrapper) {
currentClass = rec.getAttribute('class');
classListArr = currentClass.split(' ');
Array.prototype.forEach.call(classListArr, function (classItem) {
if (classItem.indexOf('t-screen') !== -1) {
wrapper.classList.add(classItem);
}
});
}
function t833_addAnimation(currentRec, wrapper) {
if (!currentRec) return;
currentRec.setAttribute('data-animationappear', 'off');
currentRec.classList.remove('r_hidden');
var currentRecType = currentRec.getAttribute('data-parenttplid') || currentRec.getAttribute('data-record-type');
if (currentRecType === '396') {
currentRec.querySelector('.t396__filter').insertAdjacentElement('afterend', wrapper);
wrapper.style.zIndex = '0';
}
var specialCoversMap = {
941: { selector: '.t941__cover-wrap', wrapperClass: 't941__cover' },
996: { selector: '.t996__cover-wrapper', wrapperClass: 't996__cover' },
1001: { selector: '.t1001__img-wrapper', wrapperClass: 't1001__img' },
1127: { selector: '.t1127__container', wrapperClass: 't1127__image' },
1241: { selector: '.t1241__image', wrapperClass: 't1241__cover' },
};
var specialCover = specialCoversMap[currentRecType];
var coverWrapper = specialCover
? currentRec.querySelector(specialCover.selector)
: currentRec.querySelector('.t-cover');
if (coverWrapper) {
if (specialCover) {
wrapper.classList.add(specialCover.wrapperClass);
coverWrapper.appendChild(wrapper);
} else {
coverWrapper.querySelector('.t-cover__filter').insertAdjacentElement('afterend', wrapper);
}
wrapper.style.zIndex = '0';
}
var images = t833_createImageArr(wrapper);
var imageCount = images.length;
var imagesLoaded = 0;
for (var i = 0; i < imageCount; i++) {
images[i].onload = function () {
imagesLoaded++;
if (imagesLoaded == imageCount && currentRec.length !== 0) {
setTimeout(function () {
t833_changeSlide(currentRec);
}, 3000);
}
};
}
var slider = currentRec.querySelector('.t833__slider');
var allSlides = currentRec.querySelectorAll('.t833__slide');
var numberOfSlides = allSlides.length;
if (numberOfSlides === 3 || numberOfSlides === 2) {
Array.prototype.forEach.call(allSlides, function (slide) {
var cloneSlide = slide.cloneNode(true);
slider.appendChild(cloneSlide);
});
}
}
function t833_createImageArr(wrapper) {
var imagesSrc = [];
allSlides = wrapper.querySelectorAll('.t833__slide');
Array.prototype.forEach.call(allSlides, function (slideItem) {
imagesSrc.push(slideItem.getAttribute('data-original'));
});
var images = [];
Array.prototype.forEach.call(imagesSrc, function (image, i) {
images[i] = new Image();
images[i].src = image;
});
return images;
}
function t833_changeSlide(currentRec) {
var sliderWrapper = currentRec.querySelectorAll('.t833__sliderwrapper');
Array.prototype.forEach.call(sliderWrapper, function (sliderItem) {
var isLoaded =
sliderItem.getAttribute('data-loaded') && sliderItem.getAttribute('data-loaded') === 'yes' ? true : false;
if (!isLoaded) {
var slides = sliderItem.querySelectorAll('.t833__slide');
var firstSlide = sliderItem.querySelector('.t833__slide:first-child');
var numberOfSlides = slides.length;
firstSlide.classList.add('t833__slide_fx1');
setTimeout(function () {
t833_kenBurns(slides, numberOfSlides, 1);
}, 500);
sliderItem.setAttribute('data-loaded', 'yes');
}
});
function t833_kenBurns(slides, numberOfSlides, i) {
if (i == numberOfSlides) i = 0;
slides[i].classList.add('t833__slide_fx');
if (i === 0 && slides[numberOfSlides - 2]) {
slides[numberOfSlides - 2].classList.remove('t833__slide_fx');
slides[numberOfSlides - 2].classList.remove('t833__slide_fx1');
}
if (i === 1 && slides[numberOfSlides - 1]) {
slides[numberOfSlides - 1].classList.remove('t833__slide_fx');
slides[numberOfSlides - 1].classList.remove('t833__slide_fx1');
Array.prototype.forEach.call(slides, function (slide) {
slide.classList.remove('t833__slide_opacity');
});
}
if (i > 1 && slides[i - 2]) {
slides[i - 2].classList.remove('t833__slide_fx');
slides[i - 2].classList.remove('t833__slide_fx1');
}
setTimeout(function () {
t833_kenBurns(slides, numberOfSlides, i + 1);
}, 5000);
}
}
function t841_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t842_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t842');
if (!wrapper) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t843_init(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t843');
if (!container) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
t843_setHeight(recId);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t843_setHeight(recId);
})
);
if (typeof jQuery !== 'undefined') {
$(container).bind('displayChanged', function () {
t843_setHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t843_setHeight(recId);
});
}
if (container && container.classList.contains('t843__previewmode')) {
setInterval(function () {
t843_setHeight(recId);
}, 5000);
}
}
function t843_setHeight(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t843');
if (!container) return;
var blockImages = rec.querySelectorAll('.t843__blockimg');
var isLoaded = true;
for (var i = 0; i < blockImages.length; i++) {
var blockImage = blockImages[i];
var width = blockImage.getAttribute('data-image-width');
var height = blockImage.getAttribute('data-image-height');
var ratio = height / width;
var padding = ratio * 100;
blockImage.style.paddingBottom = padding + '%';
if (!blockImage.classList.contains('loaded')) {
isLoaded = false;
}
}
if (window.innerWidth > 960) {
var textWraps = rec.querySelectorAll('.t843__textwrapper');
var deskImages = rec.querySelectorAll('.t843__desktopimg');
for (var i = 0; i < textWraps.length; i++) {
textWraps[i].style.height = deskImages[i].clientHeight + 'px';
}
}
if (!isLoaded) {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
}
function t844_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t845_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t846_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t847_init(recId) {
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t849_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var togglers = rec.querySelectorAll('.t849__header');
var isLazy = document.getElementById('allrecords').getAttribute('data-tilda-lazy');
var accordion = rec.querySelector('.t849__accordion');
if (accordion) {
accordion = accordion.getAttribute('data-accordion');
} else {
accordion = 'false';
}
var cachedHeight = 0;
var cachedTop = 0;
Array.prototype.forEach.call(togglers, function (toggler) {
toggler.addEventListener('click', function () {
var target = toggler;
var content = target.nextElementSibling;
var triggerButton = target.querySelector('.t849__trigger-button');
if (accordion === 'true') {
Array.prototype.forEach.call(togglers, function (header) {
if (target !== header) {
header.classList.remove('t849__opened');
t849_slideUp(header.nextElementSibling, target);
}
});
}
// a11y: add attrs on toggle
if (triggerButton) {
var isExpanded = triggerButton.getAttribute('aria-expanded') === 'true';
triggerButton.setAttribute('aria-expanded', !isExpanded);
content.hidden = isExpanded;
}
target.classList.toggle('t849__opened');
target.style.pointerEvents = 'none';
t849_slideToggle(target.nextElementSibling, target);
if (window.lazy === 'y' || isLazy === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
});
function t849_slideToggle(target, triggerElement, duration) {
if (!target) return;
if (!duration && duration !== 0) duration = 300;
if (window.getComputedStyle(target).display === 'none') {
return t849_slideDown(target, triggerElement, duration);
} else {
cachedHeight = 0;
return t849_slideUp(target, triggerElement, duration);
}
}
function t849_slideUp(target, triggerElement, duration) {
if (!target) return;
if (!duration && duration !== 0) duration = 300;
target.style.transitionProperty = 'height, margin, padding';
target.style.transitionDuration = duration + 'ms';
target.style.boxSizing = 'border-box';
target.style.height = target.offsetHeight + 'px';
target.offsetHeight;
target.style.overflow = 'hidden';
target.style.height = '0';
target.style.paddingTop = '0';
target.style.paddingBottom = '0';
target.style.marginTop = '0';
target.style.marginBottom = '0';
setTimeout(function () {
triggerElement.style.pointerEvents = 'auto';
target.style.display = 'none';
target.style.height = '';
target.style.paddingTop = '';
target.style.paddingBottom = '';
target.style.marginTop = '';
target.style.marginBottom = '';
target.style.overflow = '';
target.style.transitionDuration = '';
target.style.transitionProperty = '';
}, duration);
}
function t849_slideDown(target, triggerElement, duration) {
if (!target) return;
if (!duration && duration !== 0) duration = 300;
target.style.display = '';
var cashedDisplay = window.getComputedStyle(target).display;
if (cashedDisplay === 'none') cashedDisplay = 'block';
target.style.display = cashedDisplay;
var targetHeight = target.offsetHeight;
var targetTop = target.offsetTop;
if (window.visualViewport) {
var visibleTop = targetTop - window.visualViewport.pageTop;
if (cachedTop && accordion === 'true' && targetTop > cachedTop && window.scrollY > cachedTop) {
window.scrollTo(window.scrollX, targetTop - cachedHeight - visibleTop);
}
}
target.style.overflow = 'hidden';
target.style.height = '0';
target.style.paddingTop = '0';
target.style.paddingBottom = '0';
target.style.marginTop = '0';
target.style.marginBottom = '0';
target.offsetHeight;
target.style.boxSizing = 'border-box';
target.style.transitionProperty = 'height, margin, padding';
target.style.transitionDuration = duration + 'ms';
target.style.height = targetHeight + 'px';
target.style.paddingTop = '';
target.style.paddingBottom = '';
target.style.marginTop = '';
target.style.marginBottom = '';
setTimeout(function () {
triggerElement.style.pointerEvents = 'auto';
target.style.height = '';
target.style.overflow = '';
target.style.transitionDuration = '';
target.style.transitionProperty = '';
cachedHeight = targetHeight;
cachedTop = targetTop;
}, duration);
}
}
function t850_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t851_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
t851_updateLazyLoad(recId);
}
function t851_updateLazyLoad(recId) {
var scrollContainer = document.querySelector('#rec' + recId + ' .t851__container_mobile-flex');
var allRecords = document.getElementById('allrecords');
var currentMode = allRecords.getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 500)
);
}
}
function t852_init(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
setTimeout(function () {
t852_updateLazyLoad(recId);
}, 500);
}
function t852_updateLazyLoad(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var scrollContainer = rec.querySelector('.t852__container_mobile-flex');
var allRecords = document.getElementById('allrecords');
var currentMode = allRecords.getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 500)
);
}
}
function t853_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
setTimeout(function () {
t_onFuncLoad('t853_updateLazyLoad', function () {
t853_updateLazyLoad(recId);
});
}, 500);
}
function t853_updateLazyLoad(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var scrollContainer = rec.querySelector('.t853__container_mobile-flex');
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (
window.lazy === 'y' ||
document.querySelector('#allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 500)
);
}
}
function t854_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var btnNews = rec.querySelector('.t854__news-btn');
var newsContent = rec.querySelector('.t854__news-content');
var attrKeyTelegram = newsContent.getAttribute('data-telegram-key');
var keyTelegram = attrKeyTelegram && attrKeyTelegram.length ? attrKeyTelegram : 'V1J5MnVkSWJ2UW5nN1JZM';
var attrCountNews = newsContent.getAttribute('data-telegram-news-amount');
var symbolsAttr = newsContent.getAttribute('data-telegram-symbols-preview');
var countNews = attrCountNews && attrCountNews.length ? +attrCountNews : 5;
var dateFormat = newsContent.getAttribute('data-telegram-date');
var currentFromNews = 0;
var currentShlop = 0;
var symbolsAmount = 40;
if (symbolsAttr === '') {
symbolsAmount = 200;
} else if (symbolsAttr < 40) {
symbolsAmount = 40;
} else if (symbolsAttr > 1000) {
symbolsAmount = 1000;
} else {
symbolsAmount = symbolsAttr;
}
var totalNews = t854_showNews(
rec,
newsContent,
keyTelegram,
countNews,
currentFromNews,
currentShlop,
dateFormat,
symbolsAmount
);
newsContent.removeAttribute('data-telegram-key');
newsContent.removeAttribute('data-telegram-news-amount');
newsContent.removeAttribute('data-telegram-symbols-preview');
newsContent.removeAttribute('data-telegram-date');
t854_hideBtn(btnNews, totalNews, currentFromNews, countNews);
btnNews.addEventListener('click', function (event) {
event.preventDefault();
currentFromNews = currentFromNews + countNews;
currentShlop = event.target.closest('.t854__news-wrap').getAttribute('data-news-shlop');
t854_hideBtn(btnNews, totalNews, currentFromNews, countNews);
if (currentFromNews < totalNews) {
t854_showNews(
rec,
newsContent,
keyTelegram,
countNews,
currentFromNews,
currentShlop,
dateFormat,
symbolsAmount
);
}
});
}
function t854_hideBtn(btnNews, totalNews, currentFromNews, countNews) {
if (totalNews - currentFromNews <= countNews) {
btnNews.style.display = 'none';
}
}
function t854_formatDate(date, dateFormat) {
var dateParts = date.split('-');
var newDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);
var newMonth = newDate.getMonth();
var newDay = newDate.getDay();
var dayOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var month = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
];
switch (+dateFormat) {
case 1:
return dateParts[1] + '-' + dateParts[2] + '-' + dateParts[0];
case 2:
return dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0];
case 3:
return dateParts[2] + '/' + dateParts[1] + '/' + dateParts[0];
case 4:
return dateParts[2] + '.' + dateParts[1] + '.' + dateParts[0];
case 5:
return month[newMonth] + ' ' + dateParts[2] + ', ' + dateParts[0];
default:
return dayOfWeek[newDay] + ', ' + month[newMonth] + ' ' + dateParts[2];
}
}
function t854_getNews(rec, keyTelegram, count, from, shlop, symbolsAmount) {
var language = window.navigator
? window.navigator.language || window.navigator.systemLanguage || window.navigator.userLanguage
: 'ru';
language = language.substr(0, 2).toLowerCase();
var btnNews = rec.querySelector('.t854__news-btn');
var newsWrap = rec.querySelector('.t854__news-wrap');
var newsContainer = rec.querySelector('.t854__news-wrap-container');
var loader = rec.querySelector('.t854__news-loader');
var urlNews =
'https://news.tildacdn.com/feed/' +
keyTelegram +
'/' +
count +
'/' +
(parseInt(from) + parseInt(shlop)) +
'/' +
symbolsAmount;
var dataJSON = '';
loader.classList.add('t854__news-btn-loader_show');
if (keyTelegram.indexOf('telegram') === -1) {
if (language == 'ru') {
newsWrap.innerHTML =
'Вы ввели неправильный ключ
';
}
return;
}
var request = new XMLHttpRequest();
request.open('GET', urlNews, false);
request.onload = function () {
var data = request.response;
if (this.status >= 200 && this.status < 400) {
try {
dataJSON = JSON.parse(data);
} catch (e) {}
newsWrap.setAttribute('data-news-shlop', dataJSON.shlop);
if (dataJSON.status == 'fail') {
console.log('You entered an ' + dataJSON.error);
btnNews.style.display = 'none';
if (language == 'ru') {
newsWrap.innerHTML =
'Вы ввели неправильный ключ
';
} else {
newsWrap.innerHTML =
'You entered an ' +
dataJSON.error +
'
';
}
}
if (dataJSON.total == 0) {
console.log("You haven't a publication");
}
loader.classList.remove('t854__news-btn-loader_show');
newsContainer.style.opacity = 1;
loader.style.display = 'none';
}
};
request.onerror = function () {
console.log('Error!');
};
request.send();
return dataJSON;
}
function t854_showNews(rec, newsContent, keyTelegram, count, from, shlop, dateFormat, symbolsAmount) {
var news = t854_getNews(rec, keyTelegram, count, from, shlop, symbolsAmount);
if (!news) return;
var newsMessages = news.messages;
var totalNews = news.total;
if (newsMessages) {
for (var i = 0; i < newsMessages.length; i++) {
var dateNews = newsMessages[i].date.split(' ');
var dayNews = dateNews[0];
var textNews = newsMessages[i].text;
var shortTextNews = newsMessages[i].short_text;
var imageIdNews = newsMessages[i].files;
var timeHTML =
'' +
t854_formatDate(dayNews, dateFormat) +
'
';
var blockImageArr = [];
var imagesHTML = t854_addImage(newsMessages[i], imageIdNews, blockImageArr);
var textHTML = t854_addText(textNews, shortTextNews);
if (shortTextNews) {
if (imageIdNews.length !== 1) {
newsContent.innerHTML +=
'';
} else {
newsContent.innerHTML +=
'';
}
} else if (imageIdNews.length !== 1) {
newsContent.innerHTML +=
'' + timeHTML + imagesHTML + textHTML + '
';
} else {
newsContent.innerHTML +=
'' +
timeHTML +
'
' +
imagesHTML +
textHTML +
'
' +
'
';
}
}
t854_addPopup(rec);
t854_closePopup(rec);
}
return totalNews;
}
function t854_addText(textNews, shortTextNews) {
var textHTML;
if (textNews.length === 0) {
textHTML = '';
} else if (shortTextNews) {
textHTML =
'' +
shortTextNews +
'
' +
textNews +
'
';
} else {
textHTML = '' + textNews + '
';
}
return textHTML;
}
function t854_addImage(item, imageIdNews, blockImageArr) {
var images = '';
var imgHTML = '';
var imageUrl;
if (item.files[0]) {
imageUrl = 'https://news.tildacdn.com/' + item.files[0];
}
for (var i = 0; i < imageIdNews.length; i++) {
imageUrl = 'https://news.tildacdn.com/' + imageIdNews[i] + '/-/resize/x900/';
var blockImage =
'';
blockImageArr.push(blockImage);
}
if (blockImageArr.length !== 0) {
for (var i = 0; i < blockImageArr.length; i++) {
images += blockImageArr[i];
if (blockImageArr.length > 2) {
imgHTML = '' + images + '
';
} else {
imgHTML = '' + images + '
';
}
}
}
return imgHTML;
}
function t854_addPopup(rec) {
var popupBlock = rec.querySelectorAll('.t854__news_publish.t854__news_short .t854__news-message');
var wrapTextPopup = rec.querySelector('.t854__news-popup-bg');
var textPopup = rec.querySelector('.t854__news-popup');
var messageWrap = rec.querySelector('.t854__news_publish .t854__news-popup-message-wrap');
Array.prototype.forEach.call(popupBlock, function (popup) {
var textShortLength = popup.querySelector('.t854__news-text_short-hide');
popup.addEventListener('click', function (event) {
document.querySelector('body').classList.add('t854__body_overflow');
if (wrapTextPopup) wrapTextPopup.style.display = 'block';
if (textPopup && textShortLength) {
textPopup.classList.add('t854__news-popup_short');
}
var popupShortContent = popup.innerHTML;
messageWrap.innerHTML = popupShortContent;
event.preventDefault();
});
var link = popup.querySelector('a');
if (link) {
link.addEventListener('click', function (event) {
event.stopPropagation();
});
}
});
}
function t854_closePopup(rec) {
var wrapTextPopup = rec.querySelector('.t854__news-popup-bg');
var textPopup = rec.querySelector('.t854__news-popup');
var contentTextPopup = rec.querySelector('.t854__news-popup-content');
var close = rec.querySelector('.t854__news-popup-close');
if (wrapTextPopup) {
wrapTextPopup.addEventListener('click', function (event) {
t854_closeContent(wrapTextPopup, contentTextPopup, textPopup);
event.preventDefault();
});
}
if (textPopup) {
textPopup.onclick = function (event) {
event.stopPropagation();
};
}
if (close) {
close.addEventListener('click', function (event) {
t854_closeContent(wrapTextPopup, contentTextPopup, textPopup);
event.preventDefault();
});
}
document.querySelector('body').addEventListener('keyup', function (event) {
if (event.keyCode == 27) {
t854_closeContent(wrapTextPopup, contentTextPopup, textPopup);
event.preventDefault();
}
});
}
function t854_closeContent(wrapTextPopup, contentTextPopup, textPopup) {
document.querySelector('body').classList.remove('t854__body_overflow');
if (wrapTextPopup) wrapTextPopup.style.display = 'none';
textPopup.classList.remove('t854__news-popup_short');
if (contentTextPopup) contentTextPopup.innerHTML = '';
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
function t856_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t856');
if (!container) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
setTimeout(function () {
t856_setHeight(recId);
t856_updateLazyLoad(recId);
}, 500);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t856_setHeight(recId);
})
);
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', function () {
t856_setHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t856_setHeight(recId);
});
}
if (container && container.classList.contains('t856__previewmode')) {
setInterval(function () {
t856_setHeight(recId);
}, 5000);
}
}
function t856_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t856');
if (!container) return;
var ratio = container.getAttribute('data-tile-ratio');
var rows = rec.querySelectorAll('.t856__row');
var col = rec.querySelector('.t856__col');
var ratioHeight = 0;
if (col) {
ratioHeight = parseFloat(getComputedStyle(col, null).width) * ratio;
}
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var largestHeight = 0;
var tables = row.querySelectorAll('.t856__table');
for (var j = 0; j < tables.length; j++) {
var table = tables[j];
var textHeight = table.querySelector('.t856__textwrapper').offsetHeight;
if (table.querySelector('.t856__cell').classList.contains('t856__button-bottom')) {
textHeight += table.querySelector('.t856__button-container').offsetHeight;
}
if (textHeight > largestHeight) largestHeight = textHeight;
}
if (window.innerWidth >= 960) {
if (largestHeight > ratioHeight) {
for (var j = 0; j < tables.length; j++) {
tables[j].style.height = largestHeight + 'px';
tables[j].style.minHeight = 'auto';
}
} else {
for (var j = 0; j < tables.length; j++) {
tables[j].style.height = ratioHeight + 'px';
tables[j].style.minHeight = 'auto';
}
}
} else {
for (var j = 0; j < tables.length; j++) {
tables[j].style.minHeight = ratioHeight + 'px';
tables[j].style.height = null;
}
}
if (t856_GetIEVersion() > 0) {
var currentRowHeight = getComputedStyle(row.querySelector('.t856__table')).height;
row.querySelector('.t856__bg').style.height = currentRowHeight + 'px';
row.querySelector('.t856__overlay').style.height = currentRowHeight + 'px';
}
}
}
function t856_GetIEVersion() {
var userAgent = window.navigator.userAgent;
var index = userAgent.indexOf('MSIE');
if (index > 0) {
return parseInt(userAgent.substring(index + 5, userAgent.indexOf('.', index)));
} else if (!!navigator.userAgent.match(/Trident\/7\./)) {
return 11;
} else {
return 0;
}
}
function t856_updateLazyLoad(recId) {
var scrollContainer = document.querySelector('#rec' + recId + ' .t856__container_mobile-flex');
var allRecords = document.getElementById('allrecords');
var currentMode = allRecords.getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 500)
);
}
}
function t857__init(recId) {
var allRecords = document.getElementById('allrecords');
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var container = rec.querySelector('.t857__container_mobile-flex');
if (!container) return;
var cols = container.querySelectorAll('.t857__col');
function t857__touchmoveEvent() {
if (typeof allRecords.getAttribute('data-tilda-mode') === 'undefined') {
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
}
container.addEventListener('touchstart', function () {
for (var i = 0; i < cols.length; i++) {
var col = cols[i];
col.removeEventListener('touchmove', t857__touchmoveEvent);
col.addEventListener('touchmove', t857__touchmoveEvent);
}
});
}
function t858_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t859_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t859');
if (!wrapper) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t860_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t860');
if (!wrapper) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
t860_translateBlock(recId);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t860_translateBlock(recId);
})
);
window.addEventListener('load', function () {
t860_translateBlock(recId);
});
if (typeof jQuery !== 'undefined') {
$(wrapper).on('displayChanged', function () {
t860_translateBlock(recId);
});
} else {
wrapper.addEventListener('displayChanged', function () {
t860_translateBlock(recId);
});
}
if (wrapper && wrapper.classList.contains('t860__previewmode')) {
setInterval(function () {
t860_translateBlock(recId);
}, 5000);
}
}
function t860_translateBlock(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t860');
if (!wrapper) return;
var blockHover = rec.querySelectorAll('.t860__block_hover');
var wrapMarginBottom = 72;
if (window.innerWidth > 1024) {
for (var i = 0; i < blockHover.length; i++) {
var element = blockHover[i];
var colWraps = t_getParents(element, 't860__inner-col');
var colWrapHeight = parseFloat(getComputedStyle(colWraps[0], null).height.replace('px', ''));
var showHeight = element.querySelector('.t860__show').offsetHeight;
var diff = colWrapHeight - showHeight - wrapMarginBottom;
element.style.transform = 'translateY(' + diff + 'px)';
}
}
}
function t_getParents(element, className) {
var result = [];
for (var p = element && element.parentElement; p; p = p.parentElement) {
if (p.classList.contains(className)) {
result.push(p);
}
}
return result;
}
function t865_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t865');
if (!container) return;
t865__initFB(rec);
t865_setFBWidth(rec);
if (window.VK) {
t865__initVK(rec, recId);
}
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t865_setFBWidth(rec);
})
);
container.addEventListener('displayChanged', function () {
t865_setFBWidth(rec);
});
}
function t865_setFBWidth(rec) {
setTimeout(function () {
var FBWidget = rec.querySelector('.t865__fb');
if (!FBWidget) return;
var comments = FBWidget.querySelector('.fb-comments');
var FBWidgetStyle = getComputedStyle(FBWidget, null);
var FBWidgePaddingLeft = parseInt(FBWidgetStyle.paddingLeft) || 0;
var FBWidgePaddingRight = parseInt(FBWidgetStyle.paddingRight) || 0;
var FBWidgetWidth = FBWidget.clientWidth - (FBWidgePaddingLeft + FBWidgePaddingRight);
var span = comments.querySelector('span');
if (span) span.style.width = FBWidgetWidth + 'px';
var FBltr = comments.querySelectorAll('.fb_ltr');
for (var i = 0; i < FBltr.length; i++) {
FBltr[i].style.width = FBWidgetWidth + 'px';
}
}, 500);
}
function t865__initFB(rec) {
var container = rec.querySelector('.t865');
var FBWidget = rec.querySelector('.t865__fb');
if (!FBWidget) return;
var FBWidgetId = FBWidget.getAttribute('data-comments-fb');
var comments = FBWidget.querySelector('.fb-comments');
var pageUrl = '';
FBWidget.removeAttribute('data-comments-fb');
try {
pageUrl = '' + window.location;
pageUrl = pageUrl.split('?')[0];
pageUrl = pageUrl.split('#')[0];
} catch (e) {
pageUrl = window.location;
}
comments.setAttribute('data-href', pageUrl);
if (container.classList.contains('t865__publish') && FBWidgetId) {
if (document.getElementById('facebook-jssdk')) return;
var firstJs = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.id = 'facebook-jssdk';
script.src =
'https://connect.facebook.net/' +
t865_setLanguage(rec) +
'/sdk.js#xfbml=1&version=v3.1&appId=' +
FBWidgetId +
'&autoLogAppEvents=1';
firstJs.parentNode.insertBefore(script, firstJs);
}
}
function t865__initVK(rec, recId) {
var container = rec.querySelector('.t865');
var VKWidget = rec.querySelector('.t865__vk');
var VKWidgetId;
if (VKWidget) {
VKWidgetId = VKWidget.getAttribute('data-comments-vk');
VKWidget.removeAttribute('data-comments-vk');
if (VKWidgetId && container.classList.contains('t865__publish')) {
VK.init({ apiId: VKWidgetId, onlyWidgets: true });
if (VKWidget.classList.contains('t865__vk-comments')) {
VK.Widgets.Comments('vk_comments' + recId, { limit: 10, attach: '*', height: 0 });
} else {
VK.Widgets.Comments('vk_comments', { limit: 10, attach: '*', height: 0 });
}
}
}
}
function t865_setLanguage(rec) {
var FBWidget = rec.querySelector('.t865__fb');
var lang = FBWidget ? FBWidget.getAttribute('data-fb-comments-local') : 'ru';
var langs = {
en: 'en_US',
ru: 'ru_RU',
az: 'az_AZ',
ca: 'ca_ES',
es: 'es_ES',
cs: 'cs_CZ',
da: 'da_DK',
de: 'de_DE',
et: 'et_EE',
fr: 'fr_FR',
he: 'he_IL',
it: 'it_IT',
ja: 'ja_JP',
lv: 'lv_LV',
nb: 'nb_NO',
nl: 'nl_NL',
pl: 'pl_PL',
pt: 'pt_PT',
sv: 'sv_SE',
tr: 'tr_TR',
zh: 'zh_CN',
zhTW: 'zh_TW',
};
return langs[lang] || 'ru_RU';
}
function t868_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var popup = rec.querySelector('.t-popup');
if (!popup) return;
var hook = popup.getAttribute('data-tooltip-hook');
if (!hook) return;
var analitics = popup.getAttribute('data-track-popup');
var customCodeHTML = t868__readCustomCode(rec);
var recBlocks = document.querySelectorAll('.r');
for (var i = 0; i < recBlocks.length; i++) {
recBlocks[i].addEventListener('click', function (event) {
var target = event.target;
var href = target.closest('a[href$="' + hook + '"]') ? target : false;
if (!href) return;
event.preventDefault();
t868_showPopup(rec, customCodeHTML);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recid);
});
if (hook.substring(0, 7) === '#popup:' && analitics && window.Tilda) {
var virtTitle = hook;
virtTitle = virtTitle.substring(7);
Tilda.sendEventToStatistics(analitics, virtTitle);
}
});
}
if (!popup.getAttribute('data-popup-inited') && 'MutationObserver' in window) {
popup.setAttribute('data-popup-inited', 'yes');
var stores = document.querySelectorAll('body .t-store');
Array.prototype.forEach.call(stores, function (store) {
new MutationObserver(function (mutationsList) {
for (var mutation in mutationsList) {
var event = mutationsList[mutation];
if (event.type === 'attributes') {
if (event.target.className.indexOf('t-popup_show') !== -1) {
popup.style.zIndex = '99999999';
t868_initPopup(recid);
}
}
}
}).observe(store, {
attributes: true,
attributeFilter: ['class'],
subtree: true,
});
});
}
}
function t868__readCustomCode(rec) {
var codeWrap = rec.querySelector('.t868 .t868__code-wrap');
if (!codeWrap) return;
var customCode = codeWrap.innerHTML;
return customCode;
}
function t868_showPopup(rec) {
var popup = rec.querySelector('.t-popup');
if (!popup) return;
var popupContainer = popup.querySelector('.t-popup__container');
if (!popupContainer) return;
var codeWrap = popup.querySelector('.t868__code-wrap');
if (!codeWrap) return;
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (screenMin && windowWidth < parseInt(screenMin, 10)) return;
if (screenMax && windowWidth > parseInt(screenMax, 10)) return;
popup.style.display = 'block';
codeWrap.style.display = 'block';
t868_setHeight(rec);
setTimeout(function () {
popupContainer.classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
}, 100);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
popup.addEventListener('click', function (event) {
var container = event.target.closest('.t-popup__container');
if (!container) t868_closePopup(rec);
});
var closeButton = rec.querySelector('.t-popup__close');
if (closeButton) {
closeButton.addEventListener('click', function () {
t868_closePopup(rec);
});
}
var buttons = rec.querySelectorAll('a[href*="#"]');
Array.prototype.forEach.call(buttons, function (button) {
button.addEventListener('click', function () {
var url = button.getAttribute('href');
if (url.indexOf('#order') !== -1) {
var popupContainer = rec.querySelector('.t-popup__container');
setTimeout(function () {
while (popupContainer.firstChild) {
popupContainer.removeChild(popupContainer.firstChild);
}
}, 600);
}
if (!url || url.substring(0, 7) !== '#price:') {
t868_closePopup(rec);
if (!url || url.substring(0, 7) === '#popup:') {
setTimeout(function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
}, 300);
}
}
});
});
document.addEventListener('keydown', function (event) {
if (event.keyCode === 27) {
t868_closePopup(rec);
}
});
}
function t868_closePopup(rec) {
var popup = rec.querySelector('.t-popup');
var codeWrap = rec.querySelector('.t868 .t868__code-wrap');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
popup.classList.remove('t-popup_show');
setTimeout(function () {
if (!popup.classList.contains('.t-popup_show')) {
popup.style.display = 'none';
if (codeWrap) {
codeWrap.style.display = 'none';
}
}
}, 300);
}
function t868_setHeight(rec) {
var videoCarier = rec.querySelector('.t868__video-carier');
if (!videoCarier) return;
var paddingLeft = parseInt(videoCarier.style.paddingLeft, 10) || 0;
var paddingRight = parseInt(videoCarier.style.paddingRight, 10) || 0;
var height = (videoCarier.clientWidth - (paddingLeft + paddingRight)) / (16 / 9);
videoCarier.style.height = height;
Array.prototype.forEach.call(videoCarier.closest, function (parent) {
parent.style.height = height;
});
}
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
function t875_init() {
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousedown = t875_click;
document.oncontextmenu = function (event) {
event = event || window.event;
var sender = event.target || event.srcElement;
if (
sender &&
(sender.tagName.match(/INPUT|TEXTAREA/i) ||
sender.hasAttribute('contenteditable') ||
(sender.parentElement && sender.parentElement.hasAttribute('contenteditable')))
) {
return;
} else {
return false;
}
};
t875_preventSelection(document);
t875_preventUserSelect();
}
function t875_preventUserSelect() {
var oldStyle = document.body.getAttribute('style');
document.body.style.cssText =
oldStyle +
'-ms-user-select: none;' +
'-moz-user-select: none;' +
'-webkit-user-select: none;' +
'user-select: none;' +
'-webkit-touch-callout: none;';
}
function t875_click(event) {
t875_returnPrevent(event);
if (document.all) {
if (event.button === 2) {
return false;
}
}
if (document.layers) {
if (event.which === 3) {
return false;
}
}
}
function t875_preventSelection(element) {
var preventSelection = false;
t875_addHandler(element, 'mousemove', function () {
if (preventSelection) {
t875_removeSelection();
}
});
t875_addHandler(element, 'mousedown', function (event) {
event = event || window.event;
var sender = event.target || event.srcElement;
preventSelection =
sender &&
!sender.tagName.match(/INPUT|TEXTAREA/i) &&
!sender.hasAttribute('contenteditable') &&
sender.parentElement &&
!sender.parentElement.hasAttribute('contenteditable');
});
t875_addHandler(element, 'mouseup', function () {
if (preventSelection) {
t875_removeSelection();
}
preventSelection = false;
});
t875_addHandler(element, 'keydown', t875_killCtrlA);
t875_addHandler(element, 'keyup', t875_killCtrlA);
t875_addHandler(element, 'keydown', t875_killCtrlU);
t875_addHandler(element, 'keyup', t875_killCtrlU);
t875_addHandler(element, 'keydown', t875_killAltCmdI);
t875_addHandler(element, 'keyup', t875_killAltCmdI);
t875_addHandler(element, 'keydown', t875_killCtrlShiftI);
t875_addHandler(element, 'keyup', t875_killCtrlShiftI);
}
function t875_addHandler(element, event, handler) {
if (element.attachEvent) {
element.attachEvent('on' + event, handler);
} else if (element.addEventListener) {
element.addEventListener(event, handler, false);
}
}
function t875_removeSelection() {
if (window.getSelection) {
window.getSelection().removeAllRanges();
} else if (document.selection && document.selection.clear) {
document.selection.clear();
}
}
function t875_killCtrlU(event) {
t875_returnPrevent(event);
var key = event.keyCode || event.which;
if (
(event.ctrlKey && key == 'U'.charCodeAt(0)) ||
(event.altKey && event.metaKey && (key == 'U'.charCodeAt(0) || key == 'u'.charCodeAt(0)))
) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}
function t875_killAltCmdI(event) {
t875_returnPrevent(event);
var key = event.keyCode || event.which;
if (event.altKey && event.metaKey && (key == 'I'.charCodeAt(0) || key == 'i'.charCodeAt(0))) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}
function t875_killCtrlShiftI(event) {
t875_returnPrevent(event);
var key = event.keyCode || event.which;
if (event.shiftKey && event.ctrlKey && (key == 'I'.charCodeAt(0) || key == 'i'.charCodeAt(0))) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}
function t875_killCtrlA(event) {
event = event || window.event;
var sender = event.target || event.srcElement;
if (
sender &&
(sender.tagName.match(/INPUT|TEXTAREA|BUTTON/i) ||
sender.hasAttribute('contenteditable') ||
(sender.parentElement && sender.parentElement.hasAttribute('contenteditable')))
) {
return;
}
var key = event.keyCode || event.which;
if ((event.ctrlKey && key == 'A'.charCodeAt(0)) || (event.metaKey && key == 'A'.charCodeAt(0))) {
t875_removeSelection();
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}
function t875_returnPrevent(event) {
event = event || window.event;
var sender = event.target || event.srcElement;
if (
sender &&
(sender.tagName.match(/INPUT|TEXTAREA/i) ||
sender.hasAttribute('contenteditable') ||
(sender.parentElement && sender.parentElement.hasAttribute('contenteditable')))
) {
return;
}
}
function t881_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t881_addWebinar(rec);
t881_setHeight(rec);
window.addEventListener(
'scroll',
t_throttle(function () {
t881_addWebinar(rec);
}, 200)
);
window.addEventListener(
'resize',
t_throttle(function () {
t881_setHeight(rec);
}, 200)
);
if (typeof jQuery !== 'undefined') {
$(rec)
.find('.t881')
.bind('displayChanged', function () {
t881_setHeight(rec);
});
} else {
var currentBlock = rec.querySelector('.t881');
if (currentBlock) {
currentBlock.addEventListener('displayChanged', function () {
t881_setHeight(rec);
});
}
}
}
function t881_addWebinar(rec) {
var wrap = rec.querySelector('.t881__webinar-wrap');
var player = rec.querySelector('.t881__webinar-player');
var wrapperWebinarLoad = wrap ? wrap.getAttribute('data-webinar-load') : null;
var scrollDiffHeigth = 100;
var wrapperTopPos = wrap ? wrap.getBoundingClientRect().top : 0;
var webinarId = wrap ? wrap.getAttribute('data-webinar-id') : null;
if (wrapperTopPos - window.innerHeight - scrollDiffHeigth < 0 && player && wrap && wrapperWebinarLoad === 'false') {
wrap.setAttribute('data-webinar-load', 'true');
player.insertAdjacentHTML(
'afterbegin',
'VIDEO '
);
}
}
function t881_setHeight(rec) {
var webinar = rec.querySelector('.t881__webinar-player');
var comments = rec.querySelector('.t881__webinar-comments');
var playerIframe = rec.querySelector('.t881__webinar-player iframe');
var commentsIframe = rec.querySelector('.t881__webinar-comments iframe');
var webinarHeight = webinar ? (webinar.offsetWidth * 9) / 16 : 0;
if (webinar) webinar.style.height = webinarHeight + 'px';
if (playerIframe) playerIframe.style.height = webinarHeight + 'px';
if (window.innerWidth > 640) {
if (comments) comments.style.height = webinarHeight + 'px';
if (commentsIframe) commentsIframe.style.height = webinarHeight + 'px';
}
}
function t886_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var notificationBlock = rec.querySelector('.t886');
var closeButton = rec.querySelector('.t886__btn');
var storageItem = notificationBlock.getAttribute('data-storage-item');
var lastOpen;
try {
lastOpen = localStorage.getItem(storageItem);
} catch (error) {
console.log('Your web browser does not support localStorage. Error status: ', error);
}
if (!lastOpen) {
notificationBlock.classList.remove('t886_closed');
}
if (closeButton) {
closeButton.addEventListener('click', function (event) {
notificationBlock.classList.add('t886_closed');
try {
localStorage.setItem(storageItem, Math.floor(Date.now() / 1000));
} catch (error) {
console.log('Your web browser does not support localStorage. Error status: ', error);
}
event.preventDefault();
});
}
}
function t887_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var notificationBlock = rec.querySelector('.t887');
var closeButton = rec.querySelector('.t887__icon-close');
var storageItem = notificationBlock.getAttribute('data-storage-item');
var lastOpen;
try {
lastOpen = localStorage.getItem(storageItem);
} catch (error) {
console.log('Your web browser does not support localStorage. Error status: ', error);
}
if (!lastOpen) {
notificationBlock.classList.remove('t887_closed');
}
closeButton.addEventListener('click', function (event) {
notificationBlock.classList.add('t887_closed');
try {
localStorage.setItem(storageItem, Math.floor(Date.now() / 1000));
} catch (error) {
console.log('Your web browser does not support localStorage. Error status: ', error);
}
event.preventDefault();
});
}
function t889_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t889');
if (!container) return;
t889_setHeight(recId);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t889_setHeight(recId);
})
);
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', function () {
t889_setHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t889_setHeight(recId);
});
}
if (window.isMobile) {
window.addEventListener('orientationchange', function () {
t889_setHeight(recId);
});
}
}
function t889_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t889');
if (!container) return;
var wrapper = rec.querySelector('.t889__wrapper');
var wrapperWidth = wrapper.offsetWidth;
var imageWrap = rec.querySelector('.t889__blockimg');
var image = imageWrap.querySelector('img');
var content = rec.querySelector('.t889__content');
var textWrapperHeight = t889_outerHeight(content);
var newImage = new Image();
var imageSrc = image.getAttribute('data-original') || image.getAttribute('src');
newImage.src = imageSrc;
newImage.addEventListener('load', function () {
if (window.innerWidth > 960) {
var imageStyle = getComputedStyle(imageWrap, null);
var imagePaddingTop = parseInt(imageStyle.paddingTop) || 0;
var imagePaddingBottom = parseInt(imageStyle.paddingBottom) || 0;
var imageNaturalHeight = image.clientHeight;
if (!imageNaturalHeight && image.src) {
var ratio = wrapperWidth / newImage.naturalWidth;
imageNaturalHeight = newImage.naturalHeight * ratio;
}
var imageHeight = imageNaturalHeight - (imagePaddingTop + imagePaddingBottom);
if (textWrapperHeight >= imageHeight) {
wrapper.style.height = textWrapperHeight + 'px';
} else {
wrapper.style.height = imageHeight + 'px';
}
} else {
wrapper.style.height = null;
}
});
}
function t889_outerHeight(element) {
if (!element) return;
var height = element.offsetHeight;
var style = getComputedStyle(element);
height += parseInt(style.marginTop) + parseInt(style.marginBottom);
return height;
}
function t890_init(recId, offset) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t890');
if (!container) return;
var windowOffset = offset || window.innerHeight;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
window.addEventListener(
'scroll',
t_throttle(function () {
if (window.pageYOffset > windowOffset) {
container.style.display = 'block';
} else {
t890__fadeOut(container);
}
}, 200)
);
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
rec.addEventListener('click', function (e) {
if (e.target.closest('.t890__arrow')) {
isSafari ? t890__animateScrollPolyfill(0) : t890__scrollToTop();
}
});
}
function t890__fadeOut(el) {
if (el.style.display === 'none') return;
var opacity = 1;
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity -= 0.1;
if (opacity <= 0.1) {
clearInterval(timer);
el.style.display = 'none';
el.style.opacity = null;
}
}, 20);
}
function t890__scrollToTop() {
if (window.isIE) {
window.scrollTo(0, 0);
} else {
window.scrollTo({
left: 0,
top: 0,
behavior: 'smooth',
});
}
}
function t890__animateScrollPolyfill(target) {
var documentHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
var bottomViewportPoint = documentHeight - document.documentElement.clientHeight;
if (target > bottomViewportPoint) target = bottomViewportPoint;
if (target === window.pageYOffset) return false;
var currentPosition = window.pageYOffset;
var step = (target - currentPosition) / 30;
var difference = window.pageYOffset;
var timerID = setInterval(function () {
difference += step;
window.scrollTo(0, difference);
document.body.setAttribute('data-scrollable', 'true');
if (
(target - currentPosition < 0 && window.pageYOffset <= target) ||
(target - currentPosition > 0 && window.pageYOffset >= target)
) {
clearInterval(timerID);
document.body.removeAttribute('data-scrollable');
}
}, 10);
}
function t898_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t898');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
var whatsApp = rec.querySelector('.t898__icon-whatsapp_wrapper');
if (whatsApp) {
var whatsAppHref = whatsApp.getAttribute('href');
if (whatsAppHref && (whatsAppHref.indexOf('whatsapp://') > -1 || whatsAppHref.indexOf('wa.me') > -1)) {
t898_removeExtraSymbolsFromWhatsApp(whatsApp, whatsAppHref);
}
}
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t898_removeExtraSymbolsFromWhatsApp(whatsApp, whatsAppHref) {
if (whatsAppHref && whatsAppHref.indexOf('?text=') !== -1) {
var whatsAppHrefArr = whatsAppHref.split('?text=');
whatsAppHrefArr[0] = whatsAppHrefArr[0].replace(/[\(\)+-]/g, '');
whatsAppHref = whatsAppHrefArr[0] + '?text=' + whatsAppHrefArr[1];
} else {
whatsAppHref = whatsAppHref.replace(/[\(\)+-]/, '');
}
whatsApp.setAttribute('href', whatsAppHref);
}
function t899_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t899');
if (!container) return;
var isJquery = typeof jQuery !== 'undefined';
t899_setMinHeight(recId);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t899_setMinHeight(recId);
})
);
if (isJquery) {
$(container).bind('displayChanged', function () {
t899_setMinHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t899_setMinHeight(recId);
});
}
if (window.isMobile) {
if (isJquery) {
$(window).on('orientationchange', function () {
t899_setMinHeight(recId);
});
} else {
window.addEventListener('orientationchange', function () {
t899_setMinHeight(recId);
});
}
}
}
function t899_setMinHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t899');
if (!container) return;
var wrappers = rec.querySelectorAll('.t899__wrapper');
for (var i = 0; i < wrappers.length; i++) {
var wrapper = wrappers[i];
var wrapperHeight = wrapper.offsetHeight;
var symbol = wrapper.querySelector('.t899__symbol');
var symbolHeight = symbol ? symbol.offsetHeight : 0;
if (symbolHeight > wrapperHeight) {
wrapper.style.minHeight = symbolHeight + 'px';
}
}
}
function t902_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t902');
if (!container) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
t902_unifyHeights(recId);
wrapContentHandler(rec);
window.addEventListener(
'resize',
t_throttle(function () {
t902_unifyHeights(recId);
})
);
container.addEventListener('displayChanged', function () {
t902_unifyHeights(recId);
});
}
function wrapContentHandler(rec) {
var wrappers = rec.querySelectorAll('.t902__wrap');
if (!wrappers) return;
for (var i = 0; i < wrappers.length; i++) {
var wrapper = wrappers[i];
var image = wrapper.querySelector('.t902__wrap_left');
var text = wrapper.querySelector('.t902__wrap_right');
if (!image || !text) return;
if (wrapper.clientWidth > image.offsetWidth + text.offsetWidth) {
if (wrapper.classList.contains('t902_wrapper_flexEnd')) {
wrapper.classList.remove('t902_wrapper_flexEnd');
}
} else {
if (!wrapper.classList.contains('t902_wrapper_flexEnd')) {
wrapper.classList.add('t902_wrapper_flexEnd');
}
}
}
}
function t902_unifyHeights(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t902');
if (!container) return;
var wraps = rec.querySelectorAll('.t902__wrap');
var rows = [];
var chunkSize = 2;
var cols = Array.prototype.slice.call(rec.querySelectorAll('.t-card__col'));
for (var i = 0; i < cols.length; i += chunkSize) {
rows.push(cols.slice(i, i + chunkSize));
}
if (window.innerWidth > 960) {
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var heightBox = 0;
var innerCols = [];
var bgImages = [];
for (var j = 0; j < row.length; j++) {
innerCols.push(row[j].querySelector('.t902__inner-col'));
bgImages.push(row[j].querySelector('.t902__bgimg'));
}
for (var j = 0; j < innerCols.length; j++) {
var col = innerCols[j];
var wrap = col.querySelector('.t902__wrap');
var wrapHeight = wrap.offsetHeight;
if (wrapHeight > heightBox) heightBox = wrapHeight;
}
if (heightBox > 0) {
for (var j = 0; j < innerCols.length; j++) {
if (innerCols[j]) innerCols[j].style.height = heightBox + 'px';
}
for (var j = 0; j < bgImages.length; j++) {
if (bgImages[j]) bgImages[j].style.height = heightBox + 'px';
}
}
}
} else {
var cols = rec.querySelectorAll('.t902__inner-col');
var bgImages = rec.querySelectorAll('.t902__bgimg');
for (var i = 0; i < cols.length; i++) {
cols[i].style.height = 'auto';
}
for (var i = 0; i < bgImages.length; i++) {
bgImages[i].style.height = 'auto';
}
}
for (var i = 0; i < wraps.length; i++) {
var wrap = wraps[i];
var wrapHeight = wrap.offsetHeight;
var content = wrap.querySelector('.t902__content');
var contentHeight = content.offsetHeight;
if (wrapHeight < contentHeight) {
wrap.style.minHeight = contentHeight + 'px';
}
}
}
function t905_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t905');
if (!container) return;
t905_unifyHeights(recId);
window.addEventListener('resize', function () {
t905_unifyHeights(recId);
});
window.addEventListener('load', function () {
t905_unifyHeights(recId);
});
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', function () {
t905_unifyHeights(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t905_unifyHeights(recId);
});
}
}
function t905_unifyHeights(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t905');
if (!container) return;
var cards = rec.querySelectorAll('.t905__card');
for (var i = 0; i < cards.length; i++) {
var card = cards[i];
var image = card.querySelector('.t905__image');
var imageHeight = image.offsetHeight;
var content = card.querySelector('.t905__content');
var contentHeight = content.offsetHeight;
if (contentHeight > imageHeight) {
image.style.height = contentHeight + 'px';
image.style.paddingBottom = 'initial';
}
}
}
window.t906showvideo = function (recid) {
if (document.readyState !== 'loading') {
t906_showVideo(recid);
} else {
document.addEventListener('DOMContentLoaded', function () {
t906_showVideo(recid);
});
}
function t906_showVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t906__video-container');
var videoCover = rec.querySelector('.t906__cover');
var youTubeCarrier = rec.querySelector('.t906__video-carier');
var vimeoCarrier = rec.querySelector('.t906__video-vimeo');
var htmlVideoCarrier = rec.querySelector('.t906__video-html5');
if (youTubeCarrier) {
t906toggleClasses(videoContainer, videoCover);
var youTubeID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-youtube') : '';
if (!youTubeID) return;
var videoURL = youTubeID ? 'https://www.youtube.com/embed/' + youTubeID : '';
youTubeCarrier.innerHTML =
'' +
' ';
}
if (vimeoCarrier) {
var vimeoID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-vimeo') : '';
if (!vimeoID) return;
var vimeoPrivacyHash = videoContainer
? videoContainer.getAttribute('data-content-popup-video-hash-vimeo')
: '';
var vimeoURL = '';
if (vimeoPrivacyHash) {
vimeoURL = vimeoID
? 'https://player.vimeo.com/video/' + vimeoID + '?' + vimeoPrivacyHash + '&autoplay=1'
: '';
} else {
vimeoURL = vimeoID ? 'https://player.vimeo.com/video/' + vimeoID + '?autoplay=1' : '';
}
t906toggleClasses(videoContainer, videoCover);
vimeoCarrier.innerHTML =
'' +
' ';
}
if (htmlVideoCarrier) {
var html5URL = videoContainer.getAttribute('data-content-popup-video-url-html5');
if (!html5URL) return;
t906toggleClasses(videoContainer, videoCover);
htmlVideoCarrier.innerHTML =
'' +
'' +
'Your browser does not support the video tag' +
' ' +
' ';
}
var closeButton = rec.querySelector('.t906__close');
if (closeButton) {
closeButton.addEventListener('click', function () {
t906hidevideo(recid);
});
}
var videoBg = rec.querySelector('.t906__video-bg');
if (videoBg) {
videoBg.addEventListener('click', function () {
t906hidevideo(recid);
});
}
}
function t906toggleClasses(videoContainer, videoCover) {
document.body.classList.add('t906__overflow');
if (videoCover) videoCover.classList.add('t906__hidden');
if (videoContainer) videoContainer.classList.remove('t906__hidden');
}
};
window.t906hidevideo = function (recid) {
if (document.readyState !== 'loading') {
t906_hideVideo(recid);
} else {
document.addEventListener('DOMContentLoaded', function () {
t906_hideVideo(recid);
});
}
function t906_hideVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t906__video-container');
var videoCover = rec.querySelector('.t906__cover');
var videoCarrier =
rec.querySelector('.t906__video-carier') ||
rec.querySelector('.t906__video-vimeo') ||
rec.querySelector('.t906__video-html5');
document.body.classList.remove('t906__overflow');
if (videoCover) videoCover.classList.remove('t906__hidden');
if (videoContainer) videoContainer.classList.add('t906__hidden');
if (videoCarrier) videoCarrier.innerHTML = '
';
}
};
function t908_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t908');
if (!container) return;
var items = rec.querySelectorAll('.t908__item');
var imageContainers = rec.querySelectorAll('.t908__box-img');
if (items && items.length > 0) {
items[0].classList.add('t908__item_active');
}
if (imageContainers && imageContainers.length > 0) {
imageContainers[0].classList.add('t908__box-img_active');
}
t908_changeActiveTab(recId, items, imageContainers);
}
function t908_changeActiveTab(recId, items, imageContainers) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var allRecords = document.getElementById('allrecords');
var mode = allRecords.getAttribute('data-tilda-mode');
var isLazy = allRecords.getAttribute('data-tilda-lazy');
var currentTab = 0;
for (var i = 0; i < items.length; i++) {
items[i].addEventListener('click', function () {
var item = this;
currentTab = Number(item.getAttribute('data-item-number'));
t908_switchBetweenTabs(currentTab, items, item, imageContainers, mode, isLazy);
});
items[i].addEventListener('keydown', function (event) {
var prevent = false;
var item = this;
currentTab = Number(item.getAttribute('data-item-number'));
switch (event.key) {
case 'Up':
case 'ArrowUp':
currentTab = currentTab === 1 ? items.length : currentTab - 1;
t908_switchBetweenTabs(currentTab, items, item, imageContainers, mode, isLazy);
t908_showActiveTabFromKeyboard(recId, items, currentTab);
prevent = true;
break;
case 'Down':
case 'ArrowDown':
currentTab = currentTab === items.length ? 1 : currentTab + 1;
t908_switchBetweenTabs(currentTab, items, item, imageContainers, mode, isLazy);
t908_showActiveTabFromKeyboard(recId, items, currentTab);
prevent = true;
break;
default:
break;
}
if (prevent) {
event.stopPropagation();
event.preventDefault();
}
});
}
}
function t908_switchBetweenTabs(currentTab, items, item, imageContainers, mode, isLazy) {
for (var j = 0; j < items.length; j++) {
items[j].classList.remove('t908__item_active');
}
for (var j = 0; j < imageContainers.length; j++) {
imageContainers[j].classList.remove('t908__box-img_active');
}
item.classList.add('t908__item_active');
for (var j = 0; j < imageContainers.length; j++) {
var imageContainer = imageContainers[j];
if (Number(imageContainer.getAttribute('data-item-content-number')) === currentTab) {
imageContainer.classList.add('t908__box-img_active');
}
}
if (!mode) {
if (window.lazy === 'y' || isLazy === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
}
function t908_showActiveTabFromKeyboard(recid, items, currentIndex) {
var rec = document.querySelector('#rec' + recid);
Array.prototype.forEach.call(items, function (item) {
item.classList.remove('t908__item_active');
var button = item.querySelector('.t908__textwrapper');
if (button) {
button.setAttribute('tabindex', -1);
button.setAttribute('aria-selected', false);
}
});
var currentTab = rec.querySelector('[data-item-number="' + currentIndex + '"]');
if (!currentTab) return;
currentTab.classList.add('t908__item_active');
/* a11y: change attrs for current tab */
var currentButton = currentTab.querySelector('.t908__textwrapper');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
currentButton.focus();
}
}
function t911_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var whatsappElement = rec.querySelector('.t911__whatsapp');
var telegramElement = rec.querySelector('.t911__telegram');
var telegramLinkElement = rec.querySelector('.t911__telegram_link');
var vkElement = rec.querySelector('.t911__vk');
var skypeElement = rec.querySelector('.t911__skype');
var skypeChatElement = rec.querySelector('.t911__skype_chat');
var mailElement = rec.querySelector('.t911__mail');
var viberElement = rec.querySelector('.t911__viber');
var fbElement = rec.querySelector('.t911__fb');
var phoneElement = rec.querySelector('.t911__phone');
var whatsapp = t911_getDataMessenger(whatsappElement, 'data-messenger-whatsapp');
var telegram = t911_getDataMessenger(telegramElement, 'data-messenger-telegram');
var telegramLink = t911_getDataMessenger(telegramLinkElement, 'data-messenger-telegram-link');
var vk = t911_getDataMessenger(vkElement, 'data-messenger-vk');
var skype = t911_getDataMessenger(skypeElement, 'data-messenger-skype');
var skypeChat = t911_getDataMessenger(skypeChatElement, 'data-messenger-skype-chat');
var mail = t911_getDataMessenger(mailElement, 'data-messenger-mail');
var viber = t911_getDataMessenger(viberElement, 'data-messenger-viber');
var fb = t911_getDataMessenger(fbElement, 'data-messenger-fb');
var phone = t911_getDataMessenger(phoneElement, 'data-messenger-phone');
if (telegramLink) {
if (telegramLink.search(/http/i) !== -1 || telegramLink.search(/tg/i) !== -1) {
t911_setDataMessenger(rec, '.t911__telegram_link', '', telegramLink);
} else {
t911_setDataMessenger(rec, '.t911__telegram_link', 'https://', telegramLink);
}
}
if (whatsapp) t911_setDataMessenger(rec, '.t911__whatsapp', 'https://api.whatsapp.com/send?phone=', whatsapp);
if (skype) t911_setDataMessenger(rec, '.t911__skype', 'skype:', skype, '?call');
if (skypeChat) t911_setDataMessenger(rec, '.t911__skype_chat', 'skype:', skypeChat, '?chat');
if (viber) t911_setDataMessenger(rec, '.t911__viber', 'viber://chat?number=%2B', viber);
if (phone) t911_setDataMessenger(rec, '.t911__phone', 'tel:+', phone);
if (telegram) t911_setDataMessenger(rec, '.t911__telegram', 'https://t.me/', telegram);
if (vk) t911_setDataMessenger(rec, '.t911__vk', 'https://vk.me/', vk);
if (mail) t911_setDataMessenger(rec, '.t911__mail', 'mailto:', mail);
if (fb) t911_setDataMessenger(rec, '.t911__fb', 'https://m.me/', fb);
}
function t911_getDataMessenger(element, attributeName) {
if (!element || !attributeName) return false;
return element.getAttribute(attributeName) ? element.getAttribute(attributeName) : false;
}
function t911_setDataMessenger(rec, element, stringStart, attributeName, stringEnd) {
if (!element || !attributeName) return;
var currentElement = rec.querySelector(element);
var currentStartString = stringStart ? stringStart : '';
var currentAttributeName = attributeName.replace(/[+?^${}()|[\]\\\s]/g, '');
var currentEndString = stringEnd ? stringEnd : '';
currentElement.setAttribute('href', currentStartString + currentAttributeName + currentEndString);
}
function t912_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
var container = rec.querySelector('.t912');
if (!container) return;
var isJquery = typeof jQuery !== 'undefined';
t912_setHeight(recId);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t912_setHeight(recId);
})
);
if (isJquery) {
$(container).bind('displayChanged', function () {
t912_setHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t912_setHeight(recId);
});
}
if (window.isMobile) {
if (isJquery) {
$(window).bind('orientationchange', function () {
t912_setHeight(recId);
});
} else {
window.addEventListener('orientationchange', function () {
t912_setHeight(recId);
});
}
}
}
function t912_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t912');
if (!container) return;
var imageWrappers = rec.querySelectorAll('.t912__imgwrapper');
for (var i = 0; i < imageWrappers.length; i++) {
setTimeout(t912_loadImage, 0, i);
}
function t912_loadImage(i) {
var imageWrapper = imageWrappers[i];
if (!imageWrapper) return;
var newImage = new Image();
var image = imageWrapper.querySelector('img');
var imageSrc = image.getAttribute('data-original') || image.getAttribute('src');
newImage.src = imageSrc;
newImage.onload = function () {
var imageWrapperStyle = getComputedStyle(imageWrapper, null);
var imageWrapperPaddingLeft = parseInt(imageWrapperStyle.paddingLeft) || 0;
var imageWrapperPaddingRight = parseInt(imageWrapperStyle.paddingRight) || 0;
var imageWrapperWidth = imageWrapper.clientWidth - (imageWrapperPaddingLeft + imageWrapperPaddingRight);
var newImageHeight = newImage.height;
var newImageWidth = newImage.width;
var maxHeight = newImageHeight * (imageWrapperWidth / newImageWidth);
if (newImageWidth < imageWrapperWidth) {
image.style.width = imageWrapperWidth + 'px';
}
imageWrapper.style.paddingBottom = maxHeight + 'px';
};
}
}
function t922_init(recid) {
setTimeout(function () {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var coverCarrier = rec.querySelector('.t-cover__carrier');
if (!coverCarrier) return;
coverCarrier.classList.add('js-product-img');
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
}, 500);
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}
function t923_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t923');
if (!container) return;
t923_updateSlider(recId);
window.addEventListener(
'resize',
t_throttle(function () {
t923_updateSlider(recId);
}, 200)
);
container.addEventListener('displayChanged', function () {
t923_updateSlider(recId);
});
window.addEventListener('load', function () {
t923_updateSlider(recId);
});
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t923_updateSlider(recId) {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recId);
});
}
function t930__paintIcons(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var iconWrapper = rec.querySelector('.t930__icon-wrapper');
if (!iconWrapper) return;
var url = iconWrapper.getAttribute('data-original');
var color = iconWrapper.getAttribute('data-color');
var icons = iconWrapper.querySelectorAll('.t930__icon');
if (!url || !color || !icons.length) return;
var setIconBackground = function (backgroundValue) {
Array.prototype.forEach.call(icons, function (icon) {
icon.style.backgroundImage = backgroundValue;
});
};
if (!color) {
setIconBackground('url(' + url + ')');
return;
}
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.responseType = 'document';
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
var response = xhr.response;
var svg = response.querySelector('svg');
if (!svg) return;
var figureList = svg.querySelectorAll('*:not(g):not(title):not(desc)');
figureList.forEach(function (figure) {
figure.style.fill = color;
});
var svgString = new XMLSerializer().serializeToString(svg);
var svgEncodedURL = 'url(data:image/svg+xml;base64,' + window.btoa(svgString) + ')';
setIconBackground(svgEncodedURL);
} else if (xhr.readyState === XMLHttpRequest.DONE) {
setIconBackground('url(' + url + ')');
}
};
xhr.send();
}
function t938_init(recId, margin) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t938');
if (!container) return;
t938_setImageHeight(rec, margin);
window.addEventListener(
'resize',
t_throttle(function () {
t938_setImageHeight(rec, margin);
})
);
if (typeof jQuery !== 'undefined') {
$(container).bind('displayChanged', function () {
t938_setImageHeight(rec, margin);
});
} else {
container.addEventListener('displayChanged', function () {
t938_setImageHeight(rec, margin);
});
}
}
function t938_setImageHeight(rec, margin) {
if (!rec) return;
var container = rec.querySelector('.t938');
if (!container) return;
var image = rec.querySelector('.t938__background-image');
if (window.innerWidth <= 960) {
image.style.height = null;
image.style.width = null;
} else {
image.style.height = 'calc(100% + ' + margin + 'px)';
}
image.style.visibility = null;
}
function t939_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t940_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t943_init(recId, previewMode) {
t943_showButton(recId, previewMode);
window.addEventListener(
'scroll',
t_throttle(function () {
t943_showButton(recId, previewMode);
}, 200)
);
}
function t943_showButton(recId, previewMode) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var buttonWrapper = rec.querySelector('.t943__buttonwrapper');
if (!buttonWrapper) return;
var button = rec.querySelector('.t943__btn');
if (!button) return;
var body = document.body;
var html = document.documentElement;
var windowWidth = window.innerWidth;
var windowHeight = screen.height;
var scrollHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
var scrollTop = window.scrollY;
var appearOffset = button.getAttribute('data-appearoffset');
var hideOffset = button.getAttribute('data-hideoffset');
if (previewMode && appearOffset && windowWidth < 960) {
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(screen.height * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (scrollTop >= appearOffset) {
button.classList.remove('t943__btn_hidden');
buttonWrapper.classList.remove('t943__btnwrapper_hidden');
} else {
button.classList.add('t943__btn_hidden');
buttonWrapper.classList.add('t943__btnwrapper_hidden');
}
}
if (previewMode && hideOffset && windowWidth < 960) {
if (hideOffset.indexOf('vh') > -1) {
hideOffset = Math.floor(screen.height * (parseInt(hideOffset) / 100));
}
hideOffset = parseInt(hideOffset, 10);
if (scrollHeight - hideOffset <= windowHeight + scrollTop) {
button.classList.add('t943__btn_hidden');
buttonWrapper.classList.add('t943__btnwrapper_hidden');
} else if (!appearOffset && scrollTop > appearOffset) {
/* if appearOffset was set either, then keep button visible until the first rule above is true */
button.classList.remove('t943__btn_hidden');
buttonWrapper.classList.remove('t943__btnwrapper_hidden');
}
}
}
function t945_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t945');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.setAttribute('data-popup-subscribe-inited', 'y');
rec.style.opacity = 1;
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var analitics = popup.getAttribute('data-track-popup');
var hrefs = rec.querySelectorAll('a[href*="#"]');
var popupCloseBtn = popup.querySelector('.t-popup__close');
if (popupTooltipHook) {
var recBlocks = document.querySelectorAll('.r');
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(popupTooltipHook);
});
for (var i = 0; i < recBlocks.length; i++) {
recBlocks[i].addEventListener('click', function (event) {
var target = event.target;
var href = target.closest('a[href="' + popupTooltipHook + '"]') ? target : false;
if (!href) return;
event.preventDefault();
t945_showPopup(recId);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
t945__lazyLoad();
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, popupTooltipHook);
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(recBlocks[i], popupTooltipHook);
});
}
}
t945_checkPopupHeight(recId);
window.addEventListener('resize', function () {
t945_checkPopupHeight(recId);
});
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].addEventListener('click', function () {
var url = this.getAttribute('href');
if (!url || url.substring(0, 7) != '#price:') {
t945_closePopup(recId);
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
document.body.classList.add('t-body_popupshowed');
}, 300);
}
}
});
}
popupCloseBtn.addEventListener('click', function () {
t945_closePopup(recId);
});
}
function t945_checkPopupHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
if (!popup) return;
var popupStyle = getComputedStyle(popup, null);
var popupPaddingTop = parseInt(popupStyle.paddingTop) || 0;
var popupPaddingBottom = parseInt(popupStyle.paddingBottom) || 0;
var popupHeight = popup.clientHeight - (popupPaddingTop + popupPaddingBottom);
if (window.innerHeight < popupHeight + 20) {
popup.classList.add('t945__popup_scroll');
} else {
popup.classList.remove('t945__popup_scroll');
}
}
function t945_lockScroll() {
var documentBody = document.body;
if (!documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop =
typeof window.pageYOffset !== 'undefined'
? window.pageYOffset
: (document.documentElement || documentBody.parentNode || documentBody).scrollTop;
documentBody.classList.add('t-body_scroll-locked');
documentBody.style.top = '-' + bodyScrollTop + 'px';
documentBody.setAttribute('data-popup-scrolltop', bodyScrollTop);
}
}
function t945_unlockScroll() {
var documentBody = document.body;
if (documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop = documentBody.getAttribute('data-popup-scrolltop');
documentBody.classList.remove('t-body_scroll-locked');
documentBody.style.top = null;
documentBody.removeAttribute('data-popup-scrolltop');
document.documentElement.scrollTop = parseInt(bodyScrollTop);
}
}
function t945_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t945');
if (!container) return;
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (screenMin && windowWidth < parseInt(screenMin, 10)) return;
if (screenMax && windowWidth > parseInt(screenMax, 10)) return;
var popup = rec.querySelector('.t-popup');
var range = rec.querySelector('.t-range');
if (range) t945__triggerEvent(range, 'popupOpened');
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
/* fix IOS11 cursor bug + general IOS background scroll */
var isIOS11 = /OS 11_0|OS 11_1|OS 11_2/.test(navigator.userAgent);
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && isIOS11 && !window.MSStream) {
setTimeout(function () {
t945_lockScroll();
}, 500);
}
document.addEventListener('keydown', t945_escClosePopup(recId));
t945__lazyLoad();
}
var t945_escClosePopupHandlers = {};
/**
* При каждом вызове функции мы сохраняем созданный слушатель события в переменную под ключем recId
* Таким образом когда нам нужно будет удалить этот слушатель, у нас останется ссылка на функцию
*
* @param {string} recId
* @returns {(event: KeyboardEvent) => void} Слушатель события
*/
function t945_escClosePopup(recId) {
if (t945_escClosePopupHandlers[recId]) {
return t945_escClosePopupHandlers[recId];
}
return (t945_escClosePopupHandlers[recId] = function (event) {
if (event.key === 'Escape') {
t945_closePopup(recId);
}
});
}
function t945_closePopup(recId) {
var rec = document.getElementById('rec' + recId);
var popup = rec.querySelector('.t-popup');
var popupActive = document.querySelector('.t-popup.t-popup_show');
if (popup === popupActive) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
}
popup.classList.remove('t-popup_show');
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
t945_unlockScroll();
}
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t945_escClosePopup(recId));
}
function t945__triggerEvent(el, eventName) {
var event;
if (typeof window.CustomEvent === 'function') {
event = new CustomEvent(eventName);
} else if (document.createEvent) {
event = document.createEvent('HTMLEvents');
event.initEvent(eventName, true, false);
} else if (document.createEventObject) {
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
if (el.dispatchEvent) {
el.dispatchEvent(event);
} else if (el.fireEvent) {
el.fireEvent('on' + event.eventType, event);
} else if (el[eventName]) {
el[eventName]();
} else if (el['on' + eventName]) {
el['on' + eventName]();
}
}
function t945_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t945__lazyLoad() {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t958_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t958');
if (!container) return;
var sliderContainer = rec.querySelector('.t958__slidecontainer');
var items = rec.querySelectorAll('.t958__item');
var cards = rec.querySelectorAll('.t958__card');
var totalSlides = items.length;
if (!totalSlides) {
return;
}
var sliderWidth = parseFloat(getComputedStyle(items[0], null).width.replace('px', ''));
t958_checkSize(rec);
sliderContainer.style.width = sliderWidth * totalSlides + 'px';
window.addEventListener(
'resize',
t_throttle(function () {
t958_findVisibleCards(rec);
t958_initPopup(rec);
t958_checkSize(rec);
sliderWidth = parseFloat(getComputedStyle(items[0], null).width.replace('px', ''));
sliderContainer.style.width = sliderWidth * totalSlides + 'px';
var matrix = (getComputedStyle(sliderContainer, null).transform || '')
.replace(/[^0-9\-.,]/g, '')
.split(',');
var x = matrix[12] || matrix[4];
if (-((totalSlides - 1) * sliderWidth) > x) {
sliderContainer.style.transform = 'translate(-' + (totalSlides - 1) * sliderWidth + 'px, 0)';
}
})
);
if (typeof jQuery !== 'undefined') {
$(container).bind('displayChanged', function () {
sliderContainer.style.width = '100%';
setTimeout(function () {
sliderWidth = parseFloat(getComputedStyle(items[0], null).width.replace('px', ''));
sliderContainer.style.width = sliderWidth * totalSlides + 'px';
t958_checkSize(rec);
t958_findVisibleCards(rec);
t958_initPopup(rec);
}, 300);
});
} else {
container.addEventListener('displayChanged', function () {
sliderContainer.style.width = '100%';
setTimeout(function () {
sliderWidth = parseFloat(getComputedStyle(items[0], null).width.replace('px', ''));
sliderContainer.style.width = sliderWidth * totalSlides + 'px';
t958_checkSize(rec);
t958_findVisibleCards(rec);
t958_initPopup(rec);
}, 300);
});
}
rec.querySelector('.t958__next').addEventListener('click', function () {
t958_slide(rec, 'right');
});
rec.querySelector('.t958__previous').addEventListener('click', function () {
t958_slide(rec, 'left');
});
if (window.innerWidth > 640) {
t958_findVisibleCards(rec);
} else {
t_onFuncLoad('Hammer', function () {
t958_initSliderSwipe(rec);
});
for (var i = 0; i < cards.length; i++) {
cards[i].classList.add('t958__card-visible');
}
}
t958_initPopup(rec);
var isiOS =
/iPhone|iPad|iPod/i.test(navigator.userAgent) ||
(navigator.userAgent.indexOf('Macintosh') && 'ontouchend' in document);
if (isiOS) {
var activeIndex;
var activeSlide;
if (document.readyState === 'complete') {
activeIndex = container.getAttribute('data-slide-pos');
if (activeIndex) activeIndex = parseInt(activeIndex, 10);
activeSlide = typeof activeIndex === 'number' ? items[activeIndex] : null;
if (activeSlide) t958__hideMobileSlides(activeSlide);
} else {
window.addEventListener('load', function () {
activeIndex = container.getAttribute('data-slide-pos');
if (activeIndex) activeIndex = parseInt(activeIndex, 10);
activeSlide = typeof activeIndex === 'number' ? items[activeIndex] : null;
activeSlide = items[activeIndex];
if (activeSlide) t958__hideMobileSlides(activeSlide);
});
}
}
}
function t958_checkSize(rec) {
var cards = rec.querySelectorAll('.t958__card_preview');
var mores = rec.querySelectorAll('.t958__more-wrapper');
var blockHeight = rec.querySelector('.t958__height');
var maxWidth = parseFloat(getComputedStyle(blockHeight, null).width.replace('px', ''));
var windowMargin = 80;
var windowWidth = window.innerWidth;
var cardMaxWidth = windowWidth - windowMargin;
if (maxWidth > windowWidth) {
for (var i = 0; i < cards.length; i++) {
cards[i].style.maxWidth = cardMaxWidth + 'px';
}
for (var i = 0; i < mores.length; i++) {
mores[i].style.maxWidth = cardMaxWidth + 'px';
}
} else {
for (var i = 0; i < cards.length; i++) {
cards[i].style.maxWidth = '';
}
for (var i = 0; i < mores.length; i++) {
mores[i].style.maxWidth = '';
}
}
for (var i = 0; i < cards.length; i++) {
var card = cards[i];
var cardStyle = getComputedStyle(card, null);
var cardPaddingTop = parseInt(cardStyle.paddingTop) || 0;
var cardPaddingBottom = parseInt(cardStyle.paddingBottom) || 0;
var cardHeight = card.clientHeight - (cardPaddingTop + cardPaddingBottom);
var cardInner = card.querySelector('.t958__card-inner');
var cardInnerHeight = cardInner.offsetHeight;
if (cardHeight <= cardInnerHeight) {
card.classList.add('t958__card_fade');
} else {
card.classList.remove('t958__card_fade');
}
}
}
function t958_initSliderSwipe(rec) {
var sliderWrapper = rec.querySelector('.t958__gallery');
var totalSlides = rec.querySelectorAll('.t958__item').length;
var timeout;
var isScrolling = false;
if (typeof Hammer !== 'undefined') {
delete Hammer.defaults.cssProps.userSelect;
var hammer = new Hammer(sliderWrapper, {
domEvents: true,
inputClass: Hammer.TouchInput,
recognizers: [
[
Hammer.Swipe,
{
direction: Hammer.DIRECTION_HORIZONTAL,
},
],
],
});
window.addEventListener('scroll', function () {
isScrolling = true;
clearTimeout(timeout);
timeout = setTimeout(function () {
isScrolling = false;
}, 250);
});
if (totalSlides == 1) return false;
hammer.on('swipeleft', function (event) {
if (isScrolling) return false;
sliderWrapper.setAttribute('data-slider-touch', 'yes');
if (event.isFinal) {
t958_slide(rec, 'right');
sliderWrapper.setAttribute('data-slider-touch', '');
}
});
hammer.on('swiperight', function (event) {
if (isScrolling) return false;
sliderWrapper.setAttribute('data-slider-touch', 'yes');
if (event.isFinal) {
t958_slide(rec, 'left');
sliderWrapper.setAttribute('data-slider-touch', '');
}
});
}
}
function t958_slide(rec, direction) {
var allrecords = document.getElementById('allrecords');
var container = rec.querySelector('.t958__slidecontainer');
var items = rec.querySelectorAll('.t958__item');
var totalSlides = items.length;
var sliderWidth = parseFloat(getComputedStyle(items[0], null).width.replace('px', ''));
var position = parseInt(container.getAttribute('data-slide-pos'), 10);
var isiOS =
/iPhone|iPad|iPod/i.test(navigator.userAgent) ||
(navigator.userAgent.indexOf('Macintosh') && 'ontouchend' in document);
if (direction === 'right') {
container.setAttribute('data-slide-pos', ++position);
if (position >= totalSlides) {
position = 0;
container.setAttribute('data-slide-pos', position);
}
} else {
container.setAttribute('data-slide-pos', --position);
if (position <= -1) {
position = totalSlides - 1;
container.setAttribute('data-slide-pos', position);
}
}
container.style.transform = 'translate(-' + sliderWidth * position + 'px, 0)';
container.style.transitionDuration = '.3s';
setTimeout(function () {
t958_findVisibleCards(rec);
if (isiOS) {
var activeIndex = container.getAttribute('data-slide-pos');
if (activeIndex) activeIndex = parseInt(activeIndex, 10);
var activeSlide = typeof activeIndex === 'number' ? items[activeIndex] : null;
if (activeSlide) t958__hideMobileSlides(activeSlide);
}
}, 350);
if (window.lazy === 'y' || allrecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t958_findVisibleCards(rec) {
var cards = rec.querySelectorAll('.t958__card');
var prevControl = rec.querySelector('.t958__previous');
var nextControl = rec.querySelector('.t958__next');
for (var i = 0; i < cards.length; i++) {
var card = cards[i];
card.classList.remove('t958__card-left');
card.classList.remove('t958__card-right');
card.classList.remove('t958__card-visible');
var windowWidth = window.innerWidth;
var cardLeftPos = card.getBoundingClientRect().left;
var cardRightPos = cardLeftPos + parseFloat(getComputedStyle(card, null).width.replace('px', ''));
if (cardLeftPos <= 0 && cardRightPos >= 0) {
card.classList.add('t958__card-left');
} else if (cardLeftPos <= windowWidth && cardRightPos >= windowWidth) {
card.classList.add('t958__card-right');
} else if (cardLeftPos >= 0 && cardRightPos <= windowWidth) {
card.classList.add('t958__card-visible');
}
}
var leftCard = rec.querySelector('.t958__card-left');
var rightCard = rec.querySelector('.t958__card-right');
if (leftCard) {
var leftCardRect = leftCard.getBoundingClientRect().left;
var leftCardWidth = parseFloat(getComputedStyle(leftCard, null).width.replace('px', ''));
var leftCardOffset = leftCardWidth - Math.abs(leftCardRect);
if (leftCardOffset >= 30) {
prevControl.style.width = leftCardOffset + 'px';
} else {
prevControl.style.width = 100 + 'px';
}
}
if (rightCard) {
var rightCardRect = rightCard.getBoundingClientRect().left;
var rightCardStyle = getComputedStyle(rightCard, null);
var paddingLeft = parseInt(rightCardStyle.paddingLeft) || 0;
var paddingRight = parseInt(rightCardStyle.paddingRight) || 0;
var rightCardWidth = rightCard.clientWidth - (paddingLeft + paddingRight);
var rightCardOffset = rightCardWidth - (rightCardRect + rightCardWidth - window.innerWidth);
if (rightCardOffset >= 30) {
nextControl.style.width = rightCardOffset + 'px';
} else {
nextControl.style.width = 100 + 'px';
}
}
}
function t958_initPopup(rec) {
if (rec.querySelector('.t958').classList.contains('t958_preview')) return;
var fadeCards = rec.querySelectorAll('.t958__card_fade[data-review-block^="review"]');
for (var i = 0; i < fadeCards.length; i++) {
fadeCards[i].addEventListener('click', function () {
var card = this;
if (card.classList.contains('t958__card-visible')) {
t958_showPopup(rec);
var popup = rec.querySelector('.t-popup');
var reviewId = card.getAttribute('data-review-block').replace('review', '');
var reviewPopup = popup.querySelector('.t958__popup-item[data-review-index="' + reviewId + '"]');
var popupItems = popup.querySelectorAll('.t958__popup-item');
for (var i = 0; i < popupItems.length; i++) {
popupItems[i].style.display = 'none';
}
reviewPopup.style.display = 'block';
}
});
}
}
function t958_checkPopupSize(rec) {
var popupContainer = rec.querySelector('.t-popup__container');
var popupHeight = parseFloat(getComputedStyle(popupContainer, null).height.replace('px', ''));
var windowMargin = 120;
var windowHeight = window.innerHeight - windowMargin;
if (popupHeight > windowHeight) {
popupContainer.classList.add('t-popup__container-static');
} else {
popupContainer.classList.remove('t-popup__container-static');
}
}
function t958_showPopup(rec) {
var allrecords = document.getElementById('allrecords');
var popup = rec.querySelector('.t-popup');
var popupContainer = rec.querySelector('.t-popup__container');
var popupClose = rec.querySelector('.t-popup__close');
popup.style.display = 'block';
setTimeout(function () {
popupContainer.classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t958_checkPopupSize(rec);
if (window.lazy === 'y' || allrecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 50);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
popup.removeEventListener('mousedown', t958_mousedownEvent);
popup.addEventListener('mousedown', t958_mousedownEvent);
popupClose.removeEventListener('click', t958_closePopup);
popupClose.addEventListener('click', t958_closePopup);
document.removeEventListener('keydown', t958_keydownEvent);
document.addEventListener('keydown', t958_keydownEvent);
}
function t958_mousedownEvent(event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) return;
if (event.target == this) t958_closePopup();
}
function t958_keydownEvent(event) {
if (event.keyCode == 27) t958_closePopup();
}
function t958_closePopup() {
var popupShow = document.querySelector('.t-popup.t-popup_show');
if (popupShow) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
popupShow.classList.remove('t-popup_show');
setTimeout(function () {
var popups = document.querySelectorAll('.t-popup:not(.t-popup_show)');
document.body.scrollTop = 0;
for (var i = 0; i < popups.length; i++) {
popups[i].style.display = 'none';
}
}, 300);
}
}
function t958__hideMobileSlides(activeSlide) {
if (!activeSlide) return;
var slideWrapper = activeSlide.closest('.t958__slidecontainer');
var slides = Array.prototype.slice.call(
slideWrapper.querySelectorAll('.t-slds__item:not(.t-slds__item_dummy):not([aria-hidden="true"])')
);
var slideWidth = getComputedStyle(activeSlide).width;
var maxSlidesViewed = document.documentElement.clientWidth > 960 ? 5 : 3;
if (slides.length <= maxSlidesViewed * 2) return;
var activeSlideIndex = activeSlide.getAttribute('data-slide-index');
activeSlideIndex = parseInt(activeSlideIndex, 10);
var activeIndexList = [activeSlideIndex];
for (var i = 1; i < maxSlidesViewed; i++) {
if (activeSlideIndex + i <= slides.length) {
activeIndexList.push(activeSlideIndex + i);
} else {
activeIndexList.push(i);
}
if (activeSlideIndex - i > 0) {
activeIndexList.push(activeSlideIndex - i);
} else {
activeIndexList.push(slides.length + 1 - i);
}
}
var innactiveClass = 't-slds__item-innactive';
slides.forEach(function (slide) {
var isActiveIndexSlide = activeIndexList.some(function (index) {
return parseInt(slide.getAttribute('data-slide-index'), 10) === index;
});
isActiveIndexSlide ? slide.classList.remove(innactiveClass) : slide.classList.add(innactiveClass);
slide.style.width = slideWidth && !isActiveIndexSlide ? slideWidth : '';
});
}
function t959__init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t959');
if (!container) return;
t959__updateLazyLoad(recId);
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t959__updateLazyLoad(recId) {
var allRecords = document.getElementById('allrecords');
var container = document.querySelector('#rec' + recId + ' .t959__container_mobile-flex');
var mode = allRecords.getAttribute('data-tilda-mode');
if (container && mode !== 'edit' && mode !== 'preview' && window.isMobile) {
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
container.addEventListener(
'touchmove',
t_throttle(function () {
t_lazyload_update();
})
);
});
}
}
}
function t966_init(recid) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector('.t966') : null;
var hook = menu ? menu.getAttribute('data-tooltip-hook') : '';
if (!hook) return;
var hookLinks = document.querySelectorAll('a[href="' + hook + '"]');
hookLinks = Array.prototype.filter.call(hookLinks, function (hookLink) {
var isSubmenuAllowed = hookLink.getAttribute('data-submenu-disallowed') !== 'yes';
if (isSubmenuAllowed) {
hookLink.classList.add('t966__tm-link');
hookLink.setAttribute('data-tooltip-menu-id', recid);
return true;
}
return false;
});
var parentMenu = hookLinks.length ? hookLinks[0].closest('[data-menu]') : null;
var tooltipMenu = rec.querySelector('.t966__tooltip-menu');
var isParentFixed = parentMenu && window.getComputedStyle(parentMenu).position === 'fixed';
if (tooltipMenu) tooltipMenu.setAttribute('data-pos-fixed', isParentFixed ? 'yes' : 'no');
t966_addArrow(recid, hookLinks);
t966_setUpMenu(recid, hookLinks);
t_onFuncLoad('t_submenublocks__highlightActiveLinks', function () {
t_submenublocks__highlightActiveLinks('.t966__menu-link');
});
/**
* if T804 in header or footer, the elements will be overwriten.
* It resets all event listeners. For init listeners again, we trigger
* event, that call functions
*/
var isT804Exist = !!document.querySelector('.t804');
if (isT804Exist && !rec.hasAttribute('data-t966-geo-bound')) {
rec.setAttribute('data-t966-geo-bound', 'true');
document.addEventListener('replacingCompleted', function () {
t966_init(recid);
});
}
if (menu.hasAttribute('data-full-submenu-mob') && (window.isMobile || 'ontouchend' in document)) {
t_onFuncLoad('t_submenublocks__setFullScreenMenu', function () {
t_submenublocks__setFullScreenMenu(menu);
});
}
}
function t966_divideMenu(recid, rows) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (!rows) rows = 1;
var menu = rec.querySelector('.t966');
var allRec = document.getElementById('allrecords');
var currentMode = allRec ? allRec.getAttribute('data-tilda-mode') : '';
var isEditMode = currentMode === 'edit';
var isMobileContainerClass = allRec && allRec.classList.contains('t-records_container-mobile');
var isMobileView = window.innerWidth < 980 || isMobileContainerClass;
var list = rec.querySelector('.t966__menu-list');
/* один раз запоминаем пункты в исходном порядке */
if (!rec._t966Items) {
rec._t966Items = Array.prototype.slice.call(rec.querySelectorAll('.t966__menu-item-wrapper'));
}
var items = rec._t966Items;
/* в редакторе функция вызывается повторно при переключении режимов —
убираем старые ряды и возвращаем пункты в исходный порядок */
if (isEditMode && list) {
var oldRows = list.querySelectorAll('.t966__menu-list-row');
Array.prototype.forEach.call(oldRows, function (row) {
row.parentNode.removeChild(row);
});
items.forEach(function (item) {
list.appendChild(item);
});
/* подписываемся один раз — независимо от текущего режима (моб/десктоп),
чтобы при любом переключении функция вызывалась снова */
if (!rec._t966ResizeBound) {
rec._t966ResizeBound = true;
window.addEventListener('resize', function () {
t966_divideMenu(recid, rows);
});
}
}
if (
menu &&
menu.getAttribute('data-sort-mobile') === 'yes' &&
isMobileView &&
(!isEditMode || isMobileContainerClass)
) {
if (isEditMode) {
var tooltipItemsEarly = document.querySelectorAll('.t966__tooltip-menu');
Array.prototype.forEach.call(tooltipItemsEarly, function (item) {
item.style.display = 'block';
});
}
return;
}
var maxItemsCountInRow = Math.ceil(items.length / rows);
/*задаем класс в зависимости от количества колонок, относительно 100% ширины*/
var rowClass = 't966__menu-list-row_' + (100 / rows).toFixed();
for (var i = 0; i < maxItemsCountInRow; i++) {
var row = document.createElement('div');
row.classList.add('t966__menu-list-row');
row.classList.add(rowClass);
if (list) list.appendChild(row);
}
var listRows = list ? list.querySelectorAll('.t966__menu-list-row') : [];
Array.prototype.forEach.call(items, function (item, i) {
/*добавляем элемент к соответствующей колонке*/
if (listRows[i % maxItemsCountInRow]) listRows[i % maxItemsCountInRow].appendChild(item);
});
if (isEditMode) {
var tooltipItems = document.querySelectorAll('.t966__tooltip-menu');
Array.prototype.forEach.call(tooltipItems, function (item) {
item.style.display = 'block';
});
}
}
function t966_addArrow(recid, hookLinks) {
var rec = document.getElementById('rec' + recid);
var submenuBlock = rec ? rec.querySelector('.t966') : null;
var isArrowAppend = submenuBlock.getAttribute('data-add-arrow');
if (!isArrowAppend) return;
hookLinks = Array.prototype.slice.call(hookLinks);
hookLinks.forEach(function (hookLink) {
if (hookLink.querySelector('.t966__arrow')) return;
var arrow = document.createElement('div');
arrow.classList.add('t966__arrow');
hookLink.appendChild(arrow);
/* border-color tn-atom перебивает border-color стрелочки */
var isInsideZero = hookLink.closest('.tn-atom');
var hasCustomBorderColor = window.getComputedStyle(hookLink).borderColor !== 'rgba(0, 0, 0, 0)';
if (isInsideZero && !hasCustomBorderColor) {
hookLink.style.borderColor = 'initial';
hookLink.style.border = 'none';
}
});
}
function t966_setUpMenu(recid, hookLinks) {
var rec = document.getElementById('rec' + recid);
var submenu = rec ? rec.querySelector('.t966__tooltip-menu') : null;
if (!submenu) return;
var content = submenu.querySelector('.t966__content');
var menu = rec.querySelector('.t966');
var verticalIndent = menu ? menu.getAttribute('data-tooltip-margin') : '';
var hooksAndSubmenu = hookLinks.concat(submenu);
if (window.innerWidth > 980 && !('ontouchend' in document)) {
t_onFuncLoad('t_submenublocks__addEventsDesktop', function () {
t_submenublocks__addEventsDesktop(submenu, hooksAndSubmenu, verticalIndent, '.t966');
});
} else {
t_onFuncLoad('t_submenublocks__addEventsMobile', function () {
t_submenublocks__addEventsMobile(submenu, hookLinks, verticalIndent, '.t966');
});
}
document.addEventListener('click', function (e) {
if (submenu.getAttribute('data-mobiletooltip') !== 'yes') return;
if (
!e.target.closest('.t966__tooltip-menu') &&
!e.target.classList.contains('t966__tm-link') &&
!e.target.closest('.t966__tm-link')
) {
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(submenu, '.t966');
});
}
});
window.addEventListener(
'scroll',
t_throttle(function () {
if (content) {
content.addEventListener('mouseleave', function () {
var activeEl = hookLinks.filter(function (el) {
return el.classList.contains('t966__tm-link_active');
});
var afterActiveEl = activeEl.length ? activeEl[0].nextElementSibling : null;
if (
submenu.classList.contains('t966__tooltip-menu_show') ||
(afterActiveEl && afterActiveEl.classList.contains('t966__tooltip-menu_mobile'))
) {
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(afterActiveEl, '.t966');
});
}
});
}
}, 300)
);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.isMobile || window.innerWidth < 980) return;
var mobileMenu = document.querySelector('.t966__tooltip-menu_mobile');
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(mobileMenu, '.t966');
});
}, 300)
);
var submenuLinks = submenu.querySelectorAll('a[href*="#"]');
Array.prototype.forEach.call(submenuLinks, function (link) {
link.addEventListener('click', function () {
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(submenu, '.t966', link);
});
var clickedInTooltipMenuEls = document.querySelectorAll(
'.t450, .t199__mmenu, .t280, .t282, .t204__burger, .t451, .t466'
);
Array.prototype.forEach.call(clickedInTooltipMenuEls, function (el) {
var event = document.createEvent('Event');
event.initEvent('clickedAnchorInTooltipMenu', true, true);
el.dispatchEvent(event);
});
Array.prototype.forEach.call(submenuLinks, function (otherLink) {
var linkTitle = otherLink.querySelector('.t966__menu-item-title');
if (otherLink !== link) {
if (linkTitle) linkTitle.classList.remove('t-active');
} else {
if (linkTitle) linkTitle.classList.add('t-active');
}
});
});
});
}
function t967_setLogoPadding(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec || window.innerWidth <= 980) return;
var menu = rec.querySelector('.t967');
var logo = menu ? menu.querySelector('.t967__logowrapper') : null;
var leftWrap = menu ? menu.querySelector('.t967__leftwrapper') : null;
var rightWrap = menu ? menu.querySelector('.t967__rightwrapper') : null;
var logoWidth = logo ? logo.offsetWidth : 0;
if (leftWrap) leftWrap.style.paddingRight = logoWidth / 2 + 50 + 'px';
if (rightWrap) rightWrap.style.paddingRight = logoWidth / 2 + 50 + 'px';
}
function t969_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var branches = rec.querySelector('.t969');
var tildaCopy = document.querySelector('#tildacopy');
if (!tildaCopy) return;
window.addEventListener('scroll', function () {
if (window.innerHeight + window.pageYOffset + 70 >= document.body.offsetHeight) {
var offsetBottom = 70 - (document.body.offsetHeight - (window.innerHeight + window.pageYOffset));
branches.style.bottom = offsetBottom + 'px';
} else {
branches.style.bottom = '0px';
}
});
}
function t970_init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var widget = rec.querySelector('.t970');
var closeButton = rec.querySelector('.t970__btn-close');
var mainCheckbox = rec.querySelector('#ny-widget-checkbox');
if (!widget) return;
closeButton.addEventListener('click', function () {
if (widget.getAttribute('data-nywidget-hide') === 'yes') {
widget.style.display = 'none';
} else {
mainCheckbox.checked = false;
}
});
}
function t971_init(recids) {
recids = recids.split(',');
Array.prototype.forEach.call(recids, function (recid) {
t971_createSnowfall(recid);
});
}
function t971_createSnowfall(recid) {
var snowSettings = { number: 50, minDuration: 10, maxDuration: 20 };
var wrapperBlock;
var snowfallHeight;
var wrapperType;
var rec = document.getElementById('rec' + recid);
if (recid && rec) {
var recordType = rec.getAttribute('data-parenttplid') || rec.getAttribute('data-record-type');
switch (recordType) {
case '396':
wrapperType = '.t396__artboard';
break;
case '941':
wrapperType = '.t-container';
break;
default:
wrapperType = '.t-cover';
}
wrapperBlock = rec.querySelector(wrapperType);
if (!wrapperBlock) return;
var snowfallWrapperStyles = window.getComputedStyle(wrapperBlock);
if (wrapperBlock && snowfallWrapperStyles.position !== 'static') {
snowfallHeight = snowfallWrapperStyles.height;
} else {
wrapperBlock = document.querySelector('body');
snowfallHeight = Math.round(window.innerHeight) + 'px';
}
} else {
wrapperBlock = document.querySelector('body');
snowfallHeight = Math.round(window.innerHeight) + 'px';
}
var style =
'.t971__snowfall { ' +
'position: absolute; ' +
'top: 0; ' +
'width: 100%;' +
'height: ' +
snowfallHeight +
';' +
'backface-visibility: hidden;' +
'pointer-events: none;' +
'z-index: 50000; ' +
'display: block; ' +
'overflow: hidden; ' +
'pointer-events: none; ' +
'} ' +
'.t971__snowflake { ' +
'position: absolute; ' +
'left: 0; ' +
'top: 0; ' +
'display: none;' +
'} ';
var snowfallLayer1 = document.createElement('div');
snowfallLayer1.classList.add('t971__snowfall');
snowfallLayer1.id = 't971__snowfall';
wrapperBlock.appendChild(snowfallLayer1);
var styleRule = '';
var snowfall = '';
var snowflake = [
' ',
' ',
' ',
' ',
];
for (var i = 1; i <= snowSettings.number; i++) {
var parentHeight = snowfallHeight;
var leftStart = Math.round(window.innerWidth / (100 / t971_getRandom(0, 100)));
var leftOffset = Math.round(window.innerWidth / (100 / t971_getRandom(-10, 10)));
var leftEnd = leftStart + leftOffset;
var duration = t971_getRandom(snowSettings.minDuration, snowSettings.maxDuration);
var delay = t971_getRandom(1, 30).toFixed(2) * -1;
var opacity = Math.random().toFixed(2);
var flakeStyle = t971_getRandom(0, 3);
styleRule =
'.t971__snowflake:nth-child(' +
i +
') {' +
'max-width: 40px;' +
'max-height: 40px;' +
'display: block;' +
'opacity: ' +
opacity +
';' +
'-moz-animation: snow-' +
i +
' ' +
duration +
's ' +
delay +
's ' +
'linear infinite;' +
'-webkit-animation: snow-' +
i +
' ' +
duration +
's ' +
delay +
's ' +
'linear infinite;' +
'animation: snow-' +
i +
' ' +
duration +
's ' +
delay +
's ' +
'linear infinite;' +
'}' +
'@keyframes snow-' +
i +
' {' +
'0% {' +
'transform: translate(' +
leftStart +
'px, -10px)' +
'}' +
'80% {' +
'opacity: ' +
opacity +
';' +
'}' +
'100% {' +
'opacity: 0;' +
'transform: translate(' +
leftEnd +
'px, ' +
parentHeight +
')' +
'}' +
'}';
style += styleRule;
snowfall += '' + snowflake[flakeStyle] + '
';
}
var snowfallLayer2 = document.createElement('span');
snowfallLayer2.innerHTML = snowfall;
snowfallLayer1.appendChild(snowfallLayer2);
var divStyle = document.createElement('style');
divStyle.innerHTML = style;
document.querySelector('head').appendChild(divStyle);
}
function t971_getRandom(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function t972_init(recId) {
t972_runGtag([], 'default');
t972_handleWidgetLinks(recId);
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var widget = rec.querySelector('.t972__widget');
var links = document.querySelectorAll('a[href="#opencookiebanner"]');
var cookieConsent = t972_getCookie('t_cookiesConsentGiven');
var cookieReject = t972_getCookie('t_cookiesRejectAll');
if (cookieConsent.val) {
t972_acceptCookies();
if (!widget && !links.length) return;
}
if (!cookieConsent.val && !cookieReject.val) {
var wrapper = rec.querySelector('.t972');
var cookiesBanner = wrapper.querySelector('.t972__banner');
if (widget) {
var widgetBtn = wrapper.querySelector('.t972__widget-button');
t972_showWidget(widgetBtn, cookiesBanner);
} else {
cookiesBanner.classList.add('t972__banner_show');
}
}
t972_addEvents(recId);
t972_addCookieEvents(recId);
t972_translateToggle(recId);
}
function t972_initPreview(recId) {
t972_addEvents(recId);
t972_translateToggle(recId);
}
function t972_runGtag(allowedCookiesList, action) {
var advertisingStatus = allowedCookiesList.indexOf('advertising') !== -1 ? 'granted' : 'denied';
var analyticsStatus = allowedCookiesList.indexOf('analytics') !== -1 ? 'granted' : 'denied';
t972_gtag('consent', action, {
ad_storage: advertisingStatus,
ad_user_data: advertisingStatus,
ad_personalization: advertisingStatus,
analytics_storage: analyticsStatus,
});
}
function t972_gtag() {
dataLayer.push(arguments);
}
function t972_getCookie(name) {
var matches = document.cookie.match(
new RegExp('(?:^|; )' + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + '=([^;]*)')
);
var cookie = {
name: '',
val: '',
};
if (matches) {
try {
cookie = {
name: name,
val: decodeURIComponent(matches[1]),
};
} catch (e) {
/**/
}
}
return cookie;
}
function t972_createCookie(name, value, days) {
var expires;
if (days) {
var date = new Date();
var dayInMs = 24 * 60 * 60 * 1000;
date.setTime(date.getTime() + days * dayInMs);
expires = '; expires=' + date.toGMTString();
} else {
expires = '';
}
var isInIframe = window.self !== window.top;
var isHTTPS = window.location.protocol === 'https:';
var cookieString = name + '=' + value + expires + '; path=/';
if (isInIframe) {
if (isHTTPS) {
cookieString += '; SameSite=None; Secure';
} else {
cookieString += '; SameSite=Lax';
}
} else {
cookieString += '; path=/';
}
document.cookie = cookieString;
}
function t972_deleteCookie(name) {
var cookieString = name + '=; max-age=0; path=/';
document.cookie = cookieString;
}
function t972_confirmCookies(list) {
var checkBoxes = document.querySelectorAll('.t972__categories input[name="cookie_type"]');
var selectedCookies = [];
if (list === 'all') {
Array.prototype.forEach.call(checkBoxes, function (checkBox) {
checkBox.checked = true;
});
} else if (list === 'reject') {
Array.prototype.forEach.call(checkBoxes, function (checkBox) {
checkBox.checked = false;
});
}
Array.prototype.forEach.call(checkBoxes, function (checkBox) {
if (checkBox.checked === true) {
selectedCookies.push(checkBox.value);
}
});
var cookiesRejectAll = t972_getCookie('t_cookiesRejectAll').val;
if (cookiesRejectAll && list !== 'reject') {
t972_deleteCookie('t_cookiesRejectAll');
}
var allowedCookiesList = JSON.stringify(selectedCookies);
t972_createCookie('t_cookiesCategories', allowedCookiesList, 365);
t972_acceptCookies();
t972_runGtag(allowedCookiesList, 'update');
}
function t972_acceptCookies() {
var allowedCookiesList = t972_getCookie('t_cookiesCategories').val;
var scriptsList = document.querySelectorAll(
'script[data-tilda-cookie-type]:not([data-tilda-cookie-consent="accepted"])'
);
Array.prototype.forEach.call(scriptsList, function (item) {
if (allowedCookiesList.indexOf(item.getAttribute('data-tilda-cookie-type')) !== -1) {
if (item.getAttribute('type') && item.getAttribute('type') === 'text/plain') {
var str = item.innerHTML;
item.innerHTML = '';
item.setAttribute('type', 'text/javascript');
item.innerHTML = str.replace('}, 2000);', '}, 200);');
if (allowedCookiesList.indexOf('advertising') == -1) {
if (str.indexOf('google-analytics') !== -1) {
item.innerHTML = str.replace('auto', '{ storeGac: false }');
}
}
if (allowedCookiesList.indexOf('analytics') !== -1) {
if (typeof tildastat == 'function') {
tildastat('cookieenabled');
} else {
setTimeout(function () {
if (typeof tildastat == 'function') {
tildastat('cookieenabled');
}
}, 1000);
}
}
item.setAttribute('data-tilda-cookie-consent', 'accepted');
}
if (item.getAttribute('data-src')) {
item.setAttribute('src', item.getAttribute('data-src'));
item.setAttribute('data-tilda-cookie-consent', 'accepted');
}
}
});
t972_createCookie('t_cookiesConsentGiven', 'true', 365);
}
function t972_addEvents(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t972');
if (!wrapper) return;
var allowedCookiesListData = t972_getCookie('t_cookiesCategories');
var allowedCookiesList = [];
if (allowedCookiesListData && allowedCookiesListData.val) {
allowedCookiesList = JSON.parse(allowedCookiesListData.val);
}
var settingsBtn = wrapper.querySelector('.t972__settings-btn');
var settingsHeader = wrapper.querySelector('.t972__settings-header');
var categoryTitle = wrapper.querySelectorAll('.t972__category-header');
var categoryToggle = wrapper.querySelectorAll('.t972__toggle-input');
var cookiesBanner = wrapper.querySelector('.t972__banner');
var settingsBanner = wrapper.querySelector('.t972__settings');
var widgetBtn = wrapper.querySelector('.t972__widget-button');
if (settingsBtn) {
settingsBtn.addEventListener('click', function () {
cookiesBanner.classList.remove('t972__banner_show');
settingsBanner.classList.add('t972__settings_show');
});
}
if (settingsHeader) {
settingsHeader.addEventListener('click', function () {
cookiesBanner.classList.add('t972__banner_show');
settingsBanner.classList.remove('t972__settings_show');
});
}
Array.prototype.forEach.call(categoryTitle, function (title) {
title.addEventListener('click', function () {
var categoryBody = title.closest('.t972__category').querySelector('.t972__category-body');
title.classList.toggle('t972__opened');
title.style.pointerEvents = 'none';
t972_slideToggle(categoryBody, title, 300);
});
});
Array.prototype.forEach.call(categoryToggle, function (toggle) {
toggle.addEventListener('change', function () {
var toggleText = toggle.closest('.t972__category-toggle').querySelector('.t972__toggle-txt');
if (toggle.checked) {
toggleText.classList.add('t972__category-enabled');
toggleText.textContent = t972_trans('enabled');
} else {
toggleText.classList.remove('t972__category-enabled');
toggleText.textContent = t972_trans('disabled');
}
});
});
Array.prototype.forEach.call(allowedCookiesList, function (allowed) {
var checkBox = wrapper.querySelector('.t972__toggle-input[value="' + allowed + '"]');
if (!checkBox) return;
checkBox.checked = true;
});
if (!widgetBtn) return;
widgetBtn.addEventListener('click', function () {
t972_toggleWidget(widgetBtn, cookiesBanner, settingsBanner);
});
}
function t972_toggleWidget(widgetBtn, cookiesBanner, settingsBanner) {
if (widgetBtn.classList.contains('t972__widget-button_active')) {
t972_hideWidget(widgetBtn, cookiesBanner, settingsBanner);
} else {
t972_showWidget(widgetBtn, cookiesBanner);
}
}
function t972_showWidget(widgetBtn, cookiesBanner) {
if (widgetBtn) {
widgetBtn.classList.add('t972__widget-button_active');
var closeAriaLabel = widgetBtn.getAttribute('data-alt-aria-label') || '';
var openAriaLabel = widgetBtn.getAttribute('aria-label') || '';
widgetBtn.setAttribute('aria-label', closeAriaLabel);
widgetBtn.setAttribute('data-alt-aria-label', openAriaLabel);
}
cookiesBanner.classList.add('t972__banner_show');
}
function t972_hideWidget(widgetBtn, cookiesBanner, settingsBanner) {
if (widgetBtn) {
if (widgetBtn) widgetBtn.classList.remove('t972__widget-button_active');
var openAriaLabel = widgetBtn.getAttribute('data-alt-aria-label') || '';
var closeAriaLabel = widgetBtn.getAttribute('aria-label') || '';
widgetBtn.setAttribute('aria-label', openAriaLabel);
widgetBtn.setAttribute('data-alt-aria-label', closeAriaLabel);
}
t972_hideBanners(cookiesBanner, settingsBanner);
}
function t972_hideBanners(cookiesBanner, settingsBanner) {
cookiesBanner.classList.remove('t972__banner_show');
settingsBanner.classList.remove('t972__settings_show');
}
function t972_addCookieEvents(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t972');
if (!wrapper) return;
var confirmBtn = wrapper.querySelector('.t972__confirm-btn');
var acceptBtn = wrapper.querySelector('.t972__accept-btn');
var rejectBtn = wrapper.querySelector('.t972__reject-btn');
var widgetBtn = wrapper.querySelector('.t972__widget-button');
var cookiesBanner = wrapper.querySelector('.t972__banner');
var settingsBanner = wrapper.querySelector('.t972__settings');
if (confirmBtn) {
confirmBtn.addEventListener('click', function (event) {
event.preventDefault();
t972_confirmCookies('selected');
t972_hideWidget(widgetBtn, cookiesBanner, settingsBanner);
});
}
if (acceptBtn) {
acceptBtn.addEventListener('click', function (event) {
event.preventDefault();
t972_confirmCookies('all');
t972_hideWidget(widgetBtn, cookiesBanner, settingsBanner);
});
}
if (rejectBtn) {
rejectBtn.addEventListener('click', function (event) {
var cookieCategories = t972_getCookie('t_cookiesCategories');
event.preventDefault();
t972_confirmCookies('reject');
t972_hideWidget(widgetBtn, cookiesBanner, settingsBanner);
t972_createCookie('t_cookiesRejectAll', 'true', 365);
if (cookieCategories.val) {
var cookieCategoriesList = JSON.parse(cookieCategories.val);
if (cookieCategoriesList.length) {
window.location.reload();
}
}
});
}
}
function t972_handleWidgetLinks(recId) {
var links = document.querySelectorAll('a[href="#opencookiebanner"]');
if (!links.length) return;
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t972');
var cookiesBanner = rec.querySelector('.t972__banner');
var widgetBtn = rec.querySelector('.t972__widget-button');
if (!cookiesBanner || !wrapper) return;
Array.prototype.forEach.call(links, function (link) {
link.addEventListener('click', function (event) {
event.preventDefault();
if (widgetBtn) {
widgetBtn.click();
return;
}
cookiesBanner.classList.add('t972__banner_show');
});
});
}
function t972_slideToggle(target, triggerElement, duration) {
if (!target) return;
if (!duration && duration !== 0) duration = 500;
if (window.getComputedStyle(target).display === 'none') {
return t972_slideDown(target, triggerElement, duration);
} else {
return t972_slideUp(target, triggerElement, duration);
}
}
function t972_slideUp(target, triggerElement, duration) {
if (!target) return;
if (!duration && duration !== 0) duration = 500;
target.style.transitionProperty = 'height, margin, padding';
target.style.transitionDuration = duration + 'ms';
target.style.boxSizing = 'border-box';
target.style.height = target.offsetHeight + 'px';
target.offsetHeight;
target.style.overflow = 'hidden';
target.style.height = '0';
target.style.paddingTop = '0';
target.style.paddingBottom = '0';
target.style.marginTop = '0';
target.style.marginBottom = '0';
setTimeout(function () {
triggerElement.style.pointerEvents = 'auto';
target.style.display = 'none';
target.style.height = '';
target.style.paddingTop = '';
target.style.paddingBottom = '';
target.style.marginTop = '';
target.style.marginBottom = '';
target.style.overflow = '';
target.style.transitionDuration = '';
target.style.transitionProperty = '';
}, duration);
}
function t972_slideDown(target, triggerElement, duration) {
if (!target) return;
if (!duration && duration !== 0) duration = 500;
target.style.display = '';
var cashedDisplay = window.getComputedStyle(target).display;
if (cashedDisplay === 'none') cashedDisplay = 'block';
target.style.display = cashedDisplay;
var targetHeight = target.offsetHeight;
target.style.overflow = 'hidden';
target.style.height = '0';
target.style.paddingTop = '0';
target.style.paddingBottom = '0';
target.style.marginTop = '0';
target.style.marginBottom = '0';
target.offsetHeight;
target.style.boxSizing = 'border-box';
target.style.transitionProperty = 'height, margin, padding';
target.style.transitionDuration = duration + 'ms';
target.style.height = targetHeight + 'px';
target.style.paddingTop = '';
target.style.paddingBottom = '';
target.style.marginTop = '';
target.style.marginBottom = '';
setTimeout(function () {
triggerElement.style.pointerEvents = 'auto';
target.style.height = '';
target.style.overflow = '';
target.style.transitionDuration = '';
target.style.transitionProperty = '';
}, duration);
}
function t972_translateToggle(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var wrapper = rec.querySelector('.t972');
if (!wrapper) return;
var category = wrapper.querySelectorAll('.t972__category-toggle');
Array.prototype.forEach.call(category, function (cat) {
var categoryText = cat.querySelectorAll('.t972__toggle-txt');
Array.prototype.forEach.call(categoryText, function (item) {
if (item.classList.contains('js_always-enabled')) {
item.textContent = t972_trans('alwaysEnabled');
} else {
var itemParent = item.parentNode;
var categoryInput = itemParent.querySelector('.t972__toggle-input');
if (categoryInput.checked) {
item.textContent = t972_trans('enabled');
} else {
item.textContent = t972_trans('disabled');
}
}
});
});
}
function t972_trans(key) {
var data = {
alwaysEnabled: {
EN: 'Always Enabled',
RU: 'Всегда разрешено',
FR: 'Toujours actif',
DE: 'Immer aktiv',
ES: 'Activas siempre',
PT: 'Sempre ativos',
JA: '常にアクティブ',
ZH: '始終啟用',
UK: 'Завжди дозволено',
PL: 'Zawsze aktywne',
KK: 'Әрқашан қосылады',
IT: 'Sempre attivi',
LV: 'Vienmēr iespējots',
},
enabled: {
EN: 'Enabled',
RU: 'Разрешено',
FR: 'Actif',
DE: 'Aktiv',
ES: 'Activas',
PT: 'Ativos',
JA: 'アクティブ',
ZH: '启用',
UK: 'Дозволено',
PL: 'Aktywne',
KK: 'Қосылды',
IT: 'Attivi',
LV: 'Iespējots',
},
disabled: {
EN: 'Disabled',
RU: 'Запрещено',
FR: 'Désactivé',
DE: 'Inaktiv',
ES: 'Deshabilitadas',
PT: 'Desativado',
JA: 'オフにした',
ZH: '已禁用',
UK: 'Вимкнено',
PL: 'Wyłączone',
KK: 'Өшірілген',
IT: 'Disabilitato',
LV: 'Atspējots',
},
};
var lang = (document.documentElement.lang || window.browserLang).toUpperCase() || 'RU';
return lang && data[key][lang] ? data[key][lang] : data[key].EN;
}
function t975_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var tildaCopy = document.getElementById('tildacopy');
var menu = rec.querySelector('.t975');
t_onFuncLoad('t_menu__highlightActiveLinks', function () {
t_menu__highlightActiveLinks('.t975__list-item a');
});
if (menu) menu.classList.remove('t975__beforeready');
t975_checkAnchorLinks(recid, '.t975__list-item a');
var isIphone = t975_detectIphone();
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
if ((menu && menu.getAttribute('data-hidemenuonscroll')) || isIphone) {
t975_handleScroll(menu, tildaCopy);
}
if (tildaCopy && scrollHeight > document.documentElement.clientHeight) {
t975_addCopyrightMargin(menu, tildaCopy);
t975_handleScroll(menu, tildaCopy);
}
window.addEventListener('resize', function () {
t975_changeCopyrightMargin(menu, tildaCopy);
});
}
function t975_addCopyrightMargin(menu, tildaCopy) {
if (!tildaCopy || !menu) return;
var paddingElement = document.createElement('div');
paddingElement.style.backgroundColor = '#000';
paddingElement.style.height = menu.offsetHeight + 'px';
paddingElement.classList.add('t-tildalabel-padding');
document.body.appendChild(paddingElement);
}
function t975_changeCopyrightMargin(menu, tildaCopy) {
var paddingElement = document.querySelector('.t-tildalabel-padding');
if (!paddingElement || !tildaCopy || !menu) return;
paddingElement.style.height = menu.offsetHeight + 'px';
}
function t975_detectIphone() {
var isIphone = /iPhone/.test(navigator.userAgent) && !window.MSStream;
var aspect = window.screen.width / window.screen.height;
var iphoneAspect = '0.462';
if (isIphone && aspect.toFixed(3) === iphoneAspect) {
return true;
}
}
function t975_checkAnchorLinks(recid, selector) {
var rec = document.getElementById('rec' + recid);
var anchorSelector = selector + '[href*="#"]:not(.tooltipstered)';
var navLinks = rec ? rec.querySelectorAll(anchorSelector) : [];
if (navLinks.length) {
t_onFuncLoad('t_menu__updateActiveLinks', function () {
t_menu__updateActiveLinks(navLinks, selector);
});
}
}
function t975_handleScroll(menu) {
var lastScrollTop = 0;
var delta = 5;
var timerID;
var diff;
window.addEventListener('scroll', function () {
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
var isClicked = menu ? menu.getAttribute('data-clicked-link') : '';
var currentScrollTop = window.pageYOffset;
if (
Math.abs(lastScrollTop - currentScrollTop) <= delta ||
window.pageYOffset < 0 ||
window.pageYOffset > scrollHeight - window.innerHeight
) {
return;
}
if (menu && menu.getAttribute('data-hidemenuonscroll') && !isClicked) {
var menuHeight = menu.offsetHeight;
var currentTransformValue = menu.style.transform;
if (
currentScrollTop > lastScrollTop &&
window.pageYOffset <= scrollHeight - (window.innerHeight + menuHeight)
) {
diff = 0;
if (currentTransformValue) {
diff = parseInt(currentTransformValue.replace('translateY(', ''), 10);
}
clearInterval(timerID);
timerID = setInterval(function () {
menu.style.transform = 'translateY(' + diff + 'px)';
diff += menuHeight / 50;
if (diff >= menuHeight) {
menu.style.transform = 'translateY(' + menuHeight + 'px)';
clearInterval(timerID);
}
});
} else {
diff = menuHeight;
if (currentTransformValue) {
diff = parseInt(currentTransformValue.replace('translateY(', ''), 10);
}
clearInterval(timerID);
timerID = setInterval(function () {
menu.style.transform = 'translateY(' + diff + 'px)';
diff -= menuHeight / 50;
if (diff <= 0) {
menu.style.transform = 'translateY(0px)';
clearInterval(timerID);
}
});
}
}
lastScrollTop = currentScrollTop;
});
}
function t978_init(recid, cols, openOnClick) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var submenuBlock = rec.querySelector('.t978');
var hook = submenuBlock.getAttribute('data-tooltip-hook');
var submenu = rec.querySelector('.t978__tooltip-menu');
var hookLinks = document.querySelectorAll('a[href="' + hook + '"]');
hookLinks = Array.prototype.filter.call(hookLinks, function (hookLink) {
var isSubmenuAllowed = hookLink.getAttribute('data-submenu-disallowed') !== 'yes';
if (isSubmenuAllowed) {
hookLink.classList.add('t978__tm-link');
hookLink.setAttribute('data-tooltip-menu-id', recid);
return true;
}
return false;
});
var parentMenu = hookLinks[0] ? hookLinks[0].closest('[data-menu]') : null;
var isParentFixed = parentMenu ? window.getComputedStyle(parentMenu).position === 'fixed' : false;
if (submenu) submenu.setAttribute('data-pos-fixed', isParentFixed ? 'yes' : 'no');
t978_addArrow(recid, hookLinks);
t978_setUpMenu(recid, hookLinks, cols, openOnClick);
t_onFuncLoad('t_submenublocks__highlightActiveLinks', function () {
t_submenublocks__highlightActiveLinks('.t978__menu-link, .t978__innermenu-link');
});
/**
* if T804 in header or footer, the elements will be overwriten.
* It resets all event listeners. For init listeners again, we trigger
* event, that call functions
*/
var isT804Exist = !!document.querySelector('.t804');
if (isT804Exist) {
document.addEventListener('replacingCompleted', function () {
t978_init(recid);
});
}
if (submenuBlock.hasAttribute('data-full-submenu-mob') && (window.isMobile || 'ontouchend' in document)) {
t_onFuncLoad('t_submenublocks__setFullScreenMenu', function () {
t_submenublocks__setFullScreenMenu(submenuBlock);
});
}
}
function t978_preview(recid, cols) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var submenu = rec.querySelector('.t978__tooltip-menu');
var content = submenu ? submenu.querySelector('.t978__content') : null;
if (!content) return;
var innermenu = content.querySelector('.t978__innermenu');
t978_divideMenu(recid, cols);
var submenuActiveLink = content.querySelectorAll('.t978__menu-link');
submenuActiveLink = Array.prototype.filter.call(submenuActiveLink, function (activeLink) {
return activeLink.hasAttribute('data-menu-submenu-hook') && activeLink.getAttribute('data-menu-submenu-hook');
});
var submenuHook = submenuActiveLink.length ? submenuActiveLink[0].getAttribute('data-menu-submenu-hook') : '';
if (!submenuHook) return;
var activeInnermenuWrapper = content.querySelector(
'.t978__innermenu-wrapper[data-submenu-hook="' + submenuHook + '"]'
);
var activeInnermenuContent = activeInnermenuWrapper
? activeInnermenuWrapper.querySelector('.t978__innermenu-content')
: null;
if (window.innerWidth > 980) {
if (activeInnermenuWrapper) activeInnermenuWrapper.style.display = 'block';
if (innermenu) innermenu.style.display = 'block';
if (activeInnermenuContent) activeInnermenuContent.classList.add('t978__innermenu_show');
}
}
function t978_divideMenu(recid, rows) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (!rows) rows = 1;
var wrapperList = rec.querySelectorAll('.t978__tooltip-menu .t978__content .t978__innermenu-wrapper');
Array.prototype.forEach.call(wrapperList, function (wrapper) {
var items = wrapper.querySelectorAll('.t978__innermenu-item');
var list = wrapper.querySelector('.t978__innermenu-list');
var minItemsCountInRow = Math.floor(items.length / rows);
var remainder = items.length % rows;
var rowClass = 't978__menu-col_' + rows;
for (var i = 0; i < rows; i++) {
var row = document.createElement('div');
row.classList.add('t978__menu-col');
row.classList.add(rowClass);
if (list) list.appendChild(row);
}
var listRows = list ? list.querySelectorAll('.t978__menu-col') : [];
var pointer = 0;
Array.prototype.forEach.call(listRows, function (row, i) {
var itemsArray = Array.prototype.slice.call(items);
var itemPerCol = i < remainder ? minItemsCountInRow + 1 : minItemsCountInRow;
var slicedItems = itemsArray.splice(pointer, pointer + itemPerCol);
slicedItems.forEach(function (el) {
row.appendChild(el);
});
pointer += itemPerCol;
});
});
}
function t978_addArrow(recid, hookLinks) {
var rec = document.getElementById('rec' + recid);
var submenuBlock = rec ? rec.querySelector('.t978') : null;
var isArrowAppend = submenuBlock.getAttribute('data-add-arrow');
if (!isArrowAppend) return;
hookLinks = Array.prototype.slice.call(hookLinks);
hookLinks.forEach(function (hookLink) {
if (hookLink.querySelector('.t978__arrow')) return;
var arrow = document.createElement('div');
arrow.classList.add('t978__arrow');
hookLink.appendChild(arrow);
/* border-color tn-atom перебивает border-color стрелочки */
var isInsideZero = hookLink.closest('.tn-atom');
var hasCustomBorderColor = window.getComputedStyle(hookLink).borderColor !== 'rgba(0, 0, 0, 0)';
if (isInsideZero && !hasCustomBorderColor) {
hookLink.style.borderColor = 'initial';
hookLink.style.border = 'none';
}
});
}
function t978_setUpMenu(recid, hookLinks, cols, openOnClick) {
var rec = document.getElementById('rec' + recid);
var submenu = rec ? rec.querySelector('.t978__tooltip-menu') : null;
if (!submenu) return;
var submenuBlock = rec.querySelector('.t978');
var content = submenu.querySelector('.t978__content');
var verticalIndent = submenuBlock ? submenuBlock.getAttribute('data-tooltip-margin') : '';
t978_divideMenu(recid, cols);
hookLinks = Array.prototype.slice.call(hookLinks);
if (window.innerWidth > 980 && !('ontouchend' in document)) {
t978_addEventsDesktop(submenu, hookLinks, verticalIndent, openOnClick);
} else {
t978_addEventsMobile(submenu, hookLinks, verticalIndent, openOnClick);
}
window.addEventListener(
'scroll',
t_throttle(function () {
if (content) {
content.addEventListener('mouseleave', function () {
var activeHookLinks = hookLinks.length
? hookLinks.filter(function (link) {
return link.classList.contains('t978__tm-link_active');
})
: [];
/* подменю, которое было клонировано и вставлено после ссылки в мобильной версии */
var insertedSubmenu = activeHookLinks.length ? activeHookLinks[0].nextElementSibling : null;
if (
submenu.classList.contains('t978__tooltip-menu_show') ||
(insertedSubmenu && insertedSubmenu.classList.contains('t978__tooltip-menu_mobile'))
) {
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(insertedSubmenu, '.t978');
});
}
});
}
}, 300)
);
var submenuAnchorLinks = document.querySelectorAll('.t978__tooltip-menu a[href*="#"]:not(.t978__menu-link_hook)');
submenuAnchorLinks = Array.prototype.slice.call(submenuAnchorLinks);
submenuAnchorLinks.forEach(function (link) {
link.addEventListener('click', function () {
t_onFuncLoad('t_submenublocks__hideSubmenu', function () {
t_submenublocks__hideSubmenu(submenu, '.t978', link);
});
submenuAnchorLinks.forEach(function (element) {
element.classList.remove('t-active');
});
link.classList.add('t-active');
});
});
var elements = document.querySelectorAll('.t450, .t199__mmenu, .t280, .t282, .t204__burger, .t451, .t466');
var event = document.createEvent('Event');
event.initEvent('clickedAnchorInTooltipMenu', true, true);
document.addEventListener('click', function (e) {
if (e.target.closest('.t978__tooltip-menu a[href*="#"]:not(.t978__menu-link_hook)')) {
Array.prototype.forEach.call(elements, function (el) {
el.dispatchEvent(event);
});
}
});
}
function t978_addEventsDesktop(submenu, hookLinks, verticalIndent, openOnClick) {
if (!submenu) return;
hookLinks = Array.prototype.slice.call(hookLinks);
var submenuLinks = submenu.querySelectorAll('.t978__menu-link');
var hooksAndSubmenu = hookLinks.concat(submenu);
t_onFuncLoad('t_submenublocks__addEventsDesktop', function () {
t_submenublocks__addEventsDesktop(submenu, hooksAndSubmenu, verticalIndent, '.t978');
});
Array.prototype.forEach.call(submenuLinks, function (submenuLink) {
if (submenuLink.classList.contains('t978__menu-link_hook')) {
submenuLink.addEventListener('click', function (e) {
e.preventDefault();
});
}
if (submenu.getAttribute('data-set-events') !== 'yes') {
t978_addInnermenuEvents(submenu, openOnClick);
}
});
}
function t978_addEventsMobile(submenu, hookLinks, verticalIndent, openOnClick) {
if (!submenu) return;
t_onFuncLoad('t_submenublocks__addEventsMobile', function () {
t_submenublocks__addEventsMobile(submenu, hookLinks, verticalIndent, '.t978');
});
document.addEventListener('submenuShow', function () {
var activeHookLinks = hookLinks.filter(function (el) {
return el.classList.contains('t978__tm-link_active');
});
var isSubmenuShowed = submenu.classList.contains('t978__tooltip-menu_show');
var insertedSubmenu = activeHookLinks.length ? activeHookLinks[0].nextElementSibling : null;
if (insertedSubmenu && insertedSubmenu.classList.contains('t978__tooltip-menu_mobile')) {
t978_addInnermenuEvents(insertedSubmenu, openOnClick);
} else if (submenu && isSubmenuShowed) {
t978_addInnermenuEvents(submenu, openOnClick);
}
});
}
function t978_addInnermenuEvents(submenu, openOnClick) {
if (!submenu) return;
submenu.setAttribute('data-set-events', 'yes');
var submenuLinks = submenu.querySelectorAll('.t978__menu-link');
submenuLinks = Array.prototype.slice.call(submenuLinks);
var innermenu = submenu.querySelectorAll('.t978__innermenu');
var innermenuWrapper = submenu.querySelectorAll('.t978__innermenu-wrapper');
var timer;
var submenulinksAndInnermenu = submenuLinks.slice();
Array.prototype.forEach.call(innermenu, function (menu) {
submenulinksAndInnermenu.push(menu);
});
if (
window.innerWidth <= 980 ||
((window.isMobile || ('ontouchend' in document && /Macintosh/.test(navigator.userAgent))) &&
window.innerWidth > 980)
) {
document.addEventListener('submenuHide', function () {
t978_resetSubmenu(submenuLinks, innermenuWrapper, innermenu);
});
submenuLinks.forEach(function (submenuLink) {
submenuLink.removeEventListener('click', t978_addSubmenuClickEvent);
submenuLink.addEventListener('click', t978_addSubmenuClickEvent);
});
return;
}
if (openOnClick === 'on') {
submenuLinks.forEach(function (submenuLink) {
submenuLink.addEventListener('click', function (e) {
var submenuHook = submenuLink.getAttribute('data-menu-submenu-hook');
if (!submenuHook) return;
e.preventDefault();
t978_hideAllInnermenu(submenuLink);
if (submenuLink.classList.contains('t978__menu-activelink')) {
t978_resetSubmenu(submenuLinks, innermenuWrapper, innermenu);
} else {
submenuLink.classList.add('t978__menu-activelink');
t978_showInnermenu(submenu, submenuHook);
}
});
});
} else {
submenulinksAndInnermenu.forEach(function (element) {
element.addEventListener('mouseover', function (e) {
var submenuLink = e.target.closest('.t978__menu-link');
var isInnermenu =
element.classList.contains('.t978__innermenu-content') ||
element.closest('.t978__innermenu-content');
var isInnermenuShowed =
element.classList.contains('.t978__innermenu_show') || element.closest('.t978__innermenu_show');
if (submenuLink && !submenuLink.classList.contains('.t978__menu-activelink')) {
t978_resetSubmenu(submenuLinks, innermenuWrapper, innermenu);
}
if (isInnermenu && !isInnermenuShowed) return;
clearTimeout(timer);
if (isInnermenu && isInnermenuShowed) return;
var submenuHook = element.getAttribute('data-menu-submenu-hook');
if (submenuHook) {
element.classList.add('t978__menu-hoverlink');
t978_showInnermenu(submenu, submenuHook);
}
});
element.addEventListener('mouseout', function () {
var submenuHook = element.getAttribute('data-menu-submenu-hook');
if (submenuHook) {
timer = setTimeout(function () {
t978_resetSubmenu(submenuLinks, innermenuWrapper, innermenu);
}, 300);
}
});
});
}
}
function t978_addSubmenuClickEvent(e) {
var submenuLink = this;
var submenu = submenuLink.closest('.t978__tooltip-menu');
var submenuHook = submenuLink.getAttribute('data-menu-submenu-hook');
if (submenuHook) {
e.preventDefault();
t978_hideAllInnermenu(submenuLink);
if (submenuLink.classList.contains('t978__menu-activelink')) {
t978_hideInnermenu(submenu, submenuHook);
} else {
submenuLink.classList.add('t978__menu-activelink');
t978_showInnermenu(submenu, submenuHook);
}
}
}
function t978_showInnermenu(submenu, submenuHook) {
if (!submenu) return;
var content = submenu.querySelector('.t978__content');
if (!content) return;
var innermenu = content.querySelector('.t978__innermenu');
var innermenuWrapper = content.querySelector('.t978__innermenu-wrapper[data-submenu-hook="' + submenuHook + '"]');
var activeLink = content.querySelector('.t978__menu-link[data-menu-submenu-hook="' + submenuHook + '"]');
var activeLinkWrapper = activeLink ? activeLink.parentElement : null;
if (window.innerWidth <= 980) {
if (activeLinkWrapper && innermenuWrapper) {
activeLinkWrapper.insertAdjacentElement('afterend', innermenuWrapper);
}
t_onFuncLoad('t_submenublocks__slideDown', function () {
t_submenublocks__slideDown(innermenuWrapper, 300, function () {
var overflowEvent = document.createEvent('Event');
overflowEvent.initEvent('menuOverflow', true, true);
submenu.dispatchEvent(overflowEvent);
t_onFuncLoad('t_submenublocks__processSubmenuHeight', function () {
var isBottomMenu = submenu.style.bottom;
t_submenublocks__processSubmenuHeight(submenu, innermenuWrapper, '.t978', 'open', isBottomMenu);
});
});
});
} else {
if (innermenu) innermenu.classList.add('t978__innermenu_show');
if (innermenuWrapper) innermenuWrapper.classList.add('t978__innermenu_show');
t_onFuncLoad('t_submenublocks__processSubmenuHeight', function () {
var isBottomMenu = submenu.style.bottom;
content.style.alignItems = isBottomMenu ? 'flex-end' : '';
t_submenublocks__processSubmenuHeight(submenu, innermenuWrapper, '.t978', 'open', isBottomMenu);
});
}
}
function t978_hideInnermenu(submenu, submenuHook) {
if (!submenu) return;
var content = submenu.querySelector('.t978__content');
if (!content) return;
var innermenu = content.querySelector('.t978__innermenu');
var innermenuWrapper = content.querySelector('.t978__innermenu-wrapper[data-submenu-hook="' + submenuHook + '"]');
var activeLink = content.querySelector('.t978__menu-link[data-menu-submenu-hook="' + submenuHook + '"]');
if (activeLink) {
activeLink.classList.remove('t978__menu-activelink');
activeLink.classList.remove('t978__menu-hoverlink');
}
if (window.innerWidth <= 980) {
t_onFuncLoad('t_submenublocks__slideUp', function () {
t_submenublocks__slideUp(innermenu, 300, function () {
var overflowEvent = document.createEvent('Event');
overflowEvent.initEvent('menuOverflow', true, true);
submenu.dispatchEvent(overflowEvent);
});
t_submenublocks__slideUp(innermenuWrapper, 300, function () {
var overflowEvent = document.createEvent('Event');
overflowEvent.initEvent('menuOverflow', true, true);
submenu.dispatchEvent(overflowEvent);
});
content.style.height = '';
});
} else {
if (innermenu) innermenu.classList.remove('t978__innermenu_show');
if (innermenuWrapper) innermenuWrapper.classList.remove('t978__innermenu_show');
t_onFuncLoad('t_submenublocks__processSubmenuHeight', function () {
t_submenublocks__processSubmenuHeight(submenu, innermenuWrapper, '.t978', 'close', false);
});
}
}
function t978_hideAllInnermenu(submenuLink) {
var menu = submenuLink.closest('.t978__menu');
var links = menu.querySelectorAll('.t978__menu-link');
Array.prototype.forEach.call(links, function (link) {
if (link.classList.contains('t978__menu-activelink') && link !== submenuLink) {
var linkmenu = link.closest('.t978__tooltip-menu');
var linkmenuHook = link.getAttribute('data-menu-submenu-hook');
t978_hideInnermenu(linkmenu, linkmenuHook);
}
});
}
function t978_resetSubmenu(submenuLinks, innermenuWrapper, innermenu) {
Array.prototype.forEach.call(submenuLinks, function (submenuLink) {
submenuLink.classList.remove('t978__menu-activelink');
submenuLink.classList.remove('t978__menu-hoverlink');
});
if (window.innerWidth <= 980) {
t_onFuncLoad('t_submenublocks__slideUp', function () {
if (innermenu.length) {
Array.prototype.forEach.call(innermenu, function (menu) {
t_submenublocks__slideUp(menu, 300, function () {
var overflowEvent = document.createEvent('Event');
overflowEvent.initEvent('menuOverflow', true, true);
menu.dispatchEvent(overflowEvent);
});
});
}
if (innermenuWrapper.length) {
Array.prototype.forEach.call(innermenuWrapper, function (wrapper) {
t_submenublocks__slideUp(wrapper, 300, function () {
var overflowEvent = document.createEvent('Event');
overflowEvent.initEvent('menuOverflow', true, true);
wrapper.dispatchEvent(overflowEvent);
});
});
}
});
} else {
if (innermenu.length) {
Array.prototype.forEach.call(innermenu, function (menu) {
menu.classList.remove('t978__innermenu_show');
});
}
if (innermenuWrapper.length) {
Array.prototype.forEach.call(innermenuWrapper, function (wrapper) {
wrapper.classList.remove('t978__innermenu_show');
});
}
}
}
function t979_init(recid, rowheight, guttersizer) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var grid = rec.querySelector('.t979__grid');
if (!grid) return;
var items = rec.querySelectorAll('.t979__grid-item');
var images = rec.querySelectorAll('.t979__image');
var overlayList = rec.querySelectorAll('.t979__overlay');
if (guttersizer === '') guttersizer = 0;
t979_reverse(grid);
t979_initMasonry(rec, recid, grid, rowheight, guttersizer, images);
if (typeof jQuery !== 'undefined') {
$(rec)
.find('.t979')
.bind(
'displayChanged',
t_throttle(function () {
var gutterSizer = parseInt(guttersizer, 10);
var heightSizer = parseInt(rowheight, 10);
var containerWidth = grid ? grid.offsetWidth : 0;
var imageWidths = t979_getImageWidths(grid, heightSizer);
var rows = t979_divideRows(imageWidths, containerWidth);
var heights = [];
t979_fitItemsByWidth(rows, heights, containerWidth, heightSizer, gutterSizer);
t979_updateItems(grid, rows, heights, gutterSizer);
t979_updateGridHeight(grid, heights, gutterSizer);
})
);
} else {
var currentBlock = rec.querySelector('.t979');
currentBlock.addEventListener(
'displayChanged',
t_throttle(function () {
var gutterSizer = parseInt(guttersizer, 10);
var heightSizer = parseInt(rowheight, 10);
var containerWidth = grid ? grid.offsetWidth : 0;
var imageWidths = t979_getImageWidths(grid, heightSizer);
var rows = t979_divideRows(imageWidths, containerWidth);
var heights = [];
t979_fitItemsByWidth(rows, heights, containerWidth, heightSizer, gutterSizer);
t979_updateItems(grid, rows, heights, gutterSizer);
t979_updateGridHeight(grid, heights, gutterSizer);
})
);
}
window.addEventListener(
'resize',
t_throttle(function () {
var gutterSizer = parseInt(guttersizer, 10);
var heightSizer = parseInt(rowheight, 10);
var containerWidth = grid ? grid.offsetWidth : 0;
var imageWidths = t979_getImageWidths(grid, heightSizer);
var rows = t979_divideRows(imageWidths, containerWidth);
var heights = [];
t979_fitItemsByWidth(rows, heights, containerWidth, heightSizer, gutterSizer);
t979_updateItems(grid, rows, heights, gutterSizer);
t979_updateGridHeight(grid, heights, gutterSizer);
})
);
t_onFuncLoad('imagesLoaded', function () {
imagesLoaded(grid, function () {
t979_initMasonry(rec, recid, grid, rowheight, guttersizer, images);
Array.prototype.forEach.call(images, function (img) {
img.style.display = 'block';
});
});
});
}
function t979_reverse(grid) {
if (grid && grid.classList.contains('t979__grid_reverse')) {
for (var i = grid.childElementCount - 2; i >= 0; i--) {
grid.appendChild(grid.children[i]);
}
}
}
function t979_initMasonry(rec, recid, grid, rowheight, guttersizer, images) {
var gutterSizer = parseInt(guttersizer, 10);
var heightSizer = parseInt(rowheight, 10);
Array.prototype.forEach.call(images, function (img) {
/*check for Safari and lazy-load*/
if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent) && window.lazy === 'y') {
t979__waitLazyLoadIMG(img, function () {
t979_eventOnLoadImg(grid, heightSizer, gutterSizer);
});
} else {
if (img.complete && img.naturalHeight && img.naturalWidth) {
t979_eventOnLoadImg(grid, heightSizer, gutterSizer);
} else {
img.addEventListener('load', function () {
t979_eventOnLoadImg(grid, heightSizer, gutterSizer);
});
}
}
});
}
/*lazyload images in Safari can return naturalHeight/Width equals 0. To fix it, need use setTimeout*/
function t979__waitLazyLoadIMG(img, cb) {
if (img.complete && img.naturalHeight && img.naturalWidth) {
cb();
} else {
setTimeout(function () {
t979__waitLazyLoadIMG(img, cb);
}, 500);
}
}
function t979_eventOnLoadImg(grid, heightSizer, gutterSizer) {
var containerWidth = grid ? grid.offsetWidth : 0;
var imageWidths = t979_getImageWidths(grid, heightSizer);
var rows = t979_divideRows(imageWidths, containerWidth);
var heights = [];
t979_fitItemsByWidth(rows, heights, containerWidth, heightSizer, gutterSizer);
t979_updateItems(grid, rows, heights, gutterSizer);
t979_updateGridHeight(grid, heights, gutterSizer);
}
function t979_getImageWidths(grid, heightSizer) {
var imageWidths = [];
if (!grid) return false;
var images = grid.querySelectorAll('.t979__image');
Array.prototype.forEach.call(images, function (img) {
imageWidths.push((img.naturalWidth * heightSizer) / img.naturalHeight);
});
return imageWidths;
}
function t979_divideRows(imageWidths, containerWidth) {
var rows = [];
var curRow = 0;
var rowWidth = 0;
Array.prototype.forEach.call(imageWidths, function (item) {
rowWidth += item;
if (typeof rows[curRow] == 'undefined') {
rows[curRow] = [];
}
rows[curRow].push(item);
if (rowWidth >= containerWidth) {
curRow += 1;
rowWidth = 0;
}
});
return rows;
}
function t979_fitItemsByWidth(rows, heights, containerWidth, heightSizer, gutterSizer) {
rows.forEach(function (row) {
var sumWidth = 0;
var thresholdRatio = 1.5;
var rowWidth = containerWidth - gutterSizer * (row.length - 1);
row.forEach(function (width) {
sumWidth += width;
});
var ratio = rowWidth / sumWidth;
if (ratio < thresholdRatio) {
row.forEach(function (width, curRow) {
width *= ratio;
row[curRow] = width;
});
heights.push(heightSizer * ratio);
} else {
heights.push(heightSizer);
}
sumWidth = 0;
row.forEach(function (width) {
sumWidth += width;
});
});
}
function t979_updateItems(grid, rows, heights, gutterSizer) {
if (!grid) return false;
var curRow = 0;
var curCol = 0;
var top = 0;
var left = 0;
var width = 0;
var height = 0;
var items = grid.querySelectorAll('.t979__grid-item');
Array.prototype.forEach.call(items, function (item) {
if (curCol >= rows[curRow].length) {
top += heights[curRow];
curRow++;
curCol = 0;
if (curRow !== 0) {
top += gutterSizer;
}
left = 0;
}
left += rows[curRow][curCol - 1] ? rows[curRow][curCol - 1] + gutterSizer : 0;
width = rows[curRow][curCol];
height = heights[curRow];
item.style.top = top + 'px';
item.style.left = left + 'px';
item.style.width = width + 'px';
item.style.height = height + 'px';
curCol++;
});
}
function t979_updateGridHeight(grid, heights, gutterSizer) {
var sumHeight = heights.reduce(function (cur, acc) {
return cur + acc + gutterSizer;
}, 0);
sumHeight -= gutterSizer;
if (grid) grid.style.height = sumHeight + 'px';
}
function t982_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t982');
if (!container) return;
var itemWrappers = rec.querySelectorAll('.t982__itemwrapper');
var socials = rec.querySelectorAll('.t982__socials');
for (var i = 0; i < socials.length; i++) {
var social = socials[i];
var socialAttr = social.getAttribute('data-social-links');
var links = [];
social.removeAttribute('data-social-links');
if (socialAttr) {
links = socialAttr.split(',');
for (var j = 0; j < links.length; j++) {
t982_addSocialsItem(links[j].trim(), social);
}
}
}
t982_setEqualHeight(itemWrappers);
if (typeof jQuery !== 'undefined') {
$(container).bind('displayChanged', function () {
t982_setEqualHeight(itemWrappers);
});
} else {
container.addEventListener(
'displayChanged',
t_throttle(function () {
t982_setEqualHeight(itemWrappers);
})
);
}
}
function t982_addSocialsItem(link, socialWrapper) {
var item = t982_findSocialsItem(link);
if (item) {
var block = '';
block = '';
socialWrapper.append(block);
}
}
function t982_findSocialsItem(link) {
var socials = [
{
title: 'Facebook',
str: ['facebook', 'fb.com'],
},
{
title: 'Twitter',
str: ['twitter'],
},
{
title: 'Vkontakte',
str: ['vk.com', 'vk.me'],
},
{
title: 'Odnoklassniki',
str: ['ok.ru'],
},
{
title: 'Behance',
str: ['behance'],
},
{
title: 'Vimeo',
str: ['vimeo'],
},
{
title: 'YouTube',
str: ['youtube', 'youtu.be'],
},
{
title: 'Instagram',
str: ['instagram'],
},
{
title: 'Pinterest',
str: ['pinterest'],
},
{
title: 'LinkedIn',
str: ['linkedin'],
},
{
title: 'SoundCloud',
str: ['soundcloud'],
},
{
title: 'Telegram',
str: ['telegram', 't.me'],
},
{
title: 'WhatsApp',
str: ['wa.me'],
},
];
var socialsItem;
Array.prototype.forEach.call(socials, function (item) {
Array.prototype.forEach.call(item.str, function (s) {
if (link.indexOf(s) !== -1) socialsItem = item;
});
});
return socialsItem;
}
function t982_setEqualHeight(itemWrappers) {
var maxHeight = 0;
for (var i = 0; i < itemWrappers.length; i++) {
itemWrappers[i].style.height = '';
}
for (var i = 0; i < itemWrappers.length; i++) {
var itemWrapper = itemWrappers[i];
var itemWrapperStyle = getComputedStyle(itemWrapper, null);
var itemWrapperPaddingTop = parseInt(itemWrapperStyle.paddingTop) || 0;
var itemWrapperPaddingBottom = parseInt(itemWrapperStyle.paddingBottom) || 0;
var itemWrapperHeight = itemWrapper.clientHeight - (itemWrapperPaddingTop + itemWrapperPaddingBottom);
if (itemWrapperHeight > maxHeight) maxHeight = itemWrapperHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < itemWrappers.length; i++) {
itemWrappers[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < itemWrappers.length; i++) {
itemWrappers[i].style.height = 'auto';
}
}
}
function t983_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t983');
if (!container) return;
window.addEventListener(
'resize',
t_throttle(function () {
if (window.noAdaptive && window.noAdaptive === true && window.isMobile) return;
t983_unifyHeights(recId);
t983_translateBlock(recId);
})
);
window.addEventListener('load', function () {
t983_unifyHeights(recId);
t983_translateBlock(recId);
});
container.addEventListener(
'displayChanged',
t_throttle(function () {
t983_unifyHeights(recId);
t983_translateBlock(recId);
})
);
t983_unifyHeights(recId);
t983_translateBlock(recId);
t983__updateLazyLoad(recId);
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t983_translateBlock(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t983');
if (!container) return;
var hoverBlocks = rec.querySelectorAll('.t983__card-block_hover');
var wrapMarginBottom = 35;
var isMobile = window.isMobile || window.innerWidth < 960;
for (var i = 0; i < hoverBlocks.length; i++) {
var hoverBlock = hoverBlocks[i];
var blockWrapper = t983_getParent(hoverBlock, 't983__card-block-wrapper');
var card = t983_getParent(hoverBlock, 't983__card');
var cardHeight = card.clientHeight;
var diff = cardHeight - hoverBlock.offsetHeight - wrapMarginBottom * 2;
var cardHideDiff = hoverBlock.querySelector('.t983__card-hide').offsetHeight;
blockWrapper.style.transform = 'translateY(' + diff + 'px)';
if (!isMobile) {
hoverBlock.style.transform = 'translateY(' + cardHideDiff + 'px)';
} else {
hoverBlock.style.transform = null;
}
}
if (hoverBlocks.length === 0) {
var rows = isMobile ? rec.querySelectorAll('.t983__container') : rec.querySelectorAll('.t983__row');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var cardBlocks = row.querySelectorAll('.t983__card-block');
var maxHeightRow = 0;
var card = t983_getParent(cardBlocks[0], 't983__card');
if (card) {
var cardStyle = getComputedStyle(card, null);
var cardPaddingTop = parseInt(cardStyle.paddingTop) || 0;
var cardPaddingBottom = parseInt(cardStyle.paddingBottom) || 0;
var cardHeight = card.clientHeight - (cardPaddingTop + cardPaddingBottom);
for (var j = 0; j < cardBlocks.length; j++) {
var cardHide = cardBlocks[j].querySelector('.t983__card-hide');
var cardHideHeight = cardHide ? cardHide.offsetHeight : 0;
if (cardHideHeight > maxHeightRow) maxHeightRow = cardHideHeight;
}
for (var j = 0; j < cardBlocks.length; j++) {
var cardBlock = cardBlocks[j];
var cardShow = cardBlock.querySelector('.t983__card-show');
var cardShowHeight = cardShow ? cardShow.offsetHeight : 0;
var diff = cardHeight - cardShowHeight - maxHeightRow - wrapMarginBottom * 2;
if (window.innerWidth >= 480) {
cardBlock.style.transform = 'translateY(' + diff + 'px)';
} else {
cardBlock.style.transform = null;
}
}
}
}
}
}
function t983_unifyHeights(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var main = rec.querySelector('.t983');
if (!main) return;
var container = rec.querySelector('.t983__container');
var rows = main.querySelectorAll('.t983__row');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var cardsContent = row.querySelectorAll('.t983__card-content');
var cardsWrapper = row.querySelectorAll('.t983__card-wrapper');
var card = row.querySelector('.t983__card');
var cardStyle = getComputedStyle(card, null);
var cardPaddingLeft = parseInt(cardStyle.paddingLeft) || 0;
var cardPaddingRight = parseInt(cardStyle.paddingRight) || 0;
var cardWidth = card.clientWidth - (cardPaddingLeft + cardPaddingRight);
var maxHeight = 0;
var ratio = container.getAttribute('data-ratio');
var minHeightFromRatio = 0;
switch (ratio) {
case '16_9':
minHeightFromRatio = cardWidth * 0.5625;
break;
case '4_3':
minHeightFromRatio = cardWidth * 0.75;
break;
case '3_2':
minHeightFromRatio = cardWidth * 0.6666;
break;
case '1_1':
minHeightFromRatio = cardWidth;
break;
case '2_3':
minHeightFromRatio = cardWidth * 1.5;
break;
case '3_4':
minHeightFromRatio = cardWidth * 1.3333;
break;
case '9_16':
minHeightFromRatio = cardWidth * 1.7777;
break;
}
for (var j = 0; j < cardsContent.length; j++) {
var cardContentHeight = cardsContent[j].offsetHeight;
if (cardContentHeight > maxHeight) maxHeight = cardContentHeight;
}
if (maxHeight > minHeightFromRatio) {
for (var j = 0; j < cardsWrapper.length; j++) {
cardsWrapper[j].style.paddingBottom = maxHeight + 'px';
}
} else {
for (var j = 0; j < cardsWrapper.length; j++) {
cardsWrapper[j].style.paddingBottom = null;
}
}
}
}
function t983__updateLazyLoad(recId) {
var allRecords = document.getElementById('allrecords');
if (window.lazy === 'y' || allRecords.getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
var scrollContainer = document.querySelector('#rec' + recId + ' .t983__container_mobile-flex');
var curMode = allRecords.getAttribute('data-tilda-mode');
if (scrollContainer && curMode != 'edit' && curMode != 'preview' && window.isMobile) {
scrollContainer.addEventListener(
'touchmove',
t_throttle(function () {
t_lazyload_update();
})
);
}
});
}
}
function t983_getParent(element, className) {
for (var p = element && element.parentElement; p; p = p.parentElement) {
if (p.classList.contains(className)) {
return p;
}
}
}
function t985_init(recid, searchVariants) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
if (searchVariants.length > 0) {
t985_addSearchVariants(recid, searchVariants);
}
var searchWidgetIcon = rec.querySelectorAll('.t985__search-widget-icon');
Array.prototype.forEach.call(searchWidgetIcon, function (widgetIcon) {
widgetIcon.addEventListener('click', function () {
t985_showSearch(rec);
});
});
var closeIcon = rec.querySelector('.t985__close-icon');
if (closeIcon) {
closeIcon.addEventListener('click', function () {
t985_hideSearch(rec);
});
}
var overlay = rec.querySelector('.t985__overlay');
if (overlay) {
overlay.addEventListener('click', function (event) {
var target = event.target;
var parentTarget = target.parentElement;
if (
!target.classList.contains('.t985__widgetheader') &&
!parentTarget.classList.contains('.t985__widgetheader')
) {
t985_hideSearch(rec);
}
});
}
}
function t985_addSearchVariants(recid, searchVariants) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var container = rec.querySelector('.t985__searchvariants');
// убирает все теги из строки
var cleanVariants = searchVariants.replace(/(<([^>]+)>)/gi, '');
var searchArray = cleanVariants.split(',');
Array.prototype.forEach.call(searchArray, function (variant) {
container.innerHTML += '' + variant + '
';
});
}
function t985_showSearch(rec) {
rec.querySelector('.t985__overlay').style.display = 'block';
rec.querySelector('.t985__search-widget-icon').style.display = 'none';
}
function t985_hideSearch(rec) {
rec.querySelector('.t985__overlay').style.display = 'none';
rec.querySelector('.t985__search-widget-icon').style.display = 'block';
}
function t986_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var openBtn = rec.querySelector('.t986__playbutton');
var closeBg = rec.querySelector('.t986__closevideo-bg');
if (openBtn) {
openBtn.addEventListener('click', function (e) {
e.preventDefault();
t986_showVideo(recid);
});
}
if (closeBg) {
closeBg.addEventListener('click', function () {
t986_hideVideo(recid);
});
}
}
function t986_showVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t986__video-container');
var videoCover = rec.querySelector('.t986__cover');
var youTubeCarrier = rec.querySelector('.t986__video-carier');
var vimeoCarrier = rec.querySelector('.t986__video-vimeo');
var htmlvideoCarrier = rec.querySelector('.t986__video-html5');
if (youTubeCarrier) {
t986_toggleClasses(videoCover, videoContainer);
var youTubeID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-youtube') : '';
if (!youTubeID) return;
var videoURL = youTubeID ? 'https://www.youtube.com/embed/' + youTubeID : '';
var iframe = document.createElement('iframe');
iframe.id = 'youtubeiframe' + recid;
iframe.classList.add('t986__iframe');
iframe.width = '100%';
iframe.height = '540';
iframe.src = videoURL + '?rel=0&autoplay=1';
iframe.frameBorder = '0';
iframe.setAttribute('allowfullscreen', '');
var closeLink = document.createElement('a');
closeLink.classList.add('t986__close-link');
var closeLinkContent = document.createElement('button');
closeLinkContent.setAttribute('type', 'button');
closeLinkContent.classList.add('t986__close');
closeLink.insertAdjacentElement('beforeend', closeLinkContent);
youTubeCarrier.innerHTML = '';
youTubeCarrier.insertAdjacentElement('beforeend', iframe);
youTubeCarrier.insertAdjacentElement('beforeend', closeLink);
}
if (vimeoCarrier) {
var vimeoID = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-vimeo') : '';
if (!vimeoID) return;
var vimeoPrivacyHash = videoContainer ? videoContainer.getAttribute('data-content-popup-video-hash-vimeo') : '';
var vimeoURL = '';
if (vimeoPrivacyHash) {
vimeoURL = vimeoID
? 'https://player.vimeo.com/video/' + vimeoID + '?' + vimeoPrivacyHash + '&autoplay=1'
: '';
} else {
vimeoURL = vimeoID ? 'https://player.vimeo.com/video/' + vimeoID + '?autoplay=1' : '';
}
t986_toggleClasses(videoCover, videoContainer);
vimeoCarrier.innerHTML =
'' +
'' +
' ' +
' ';
}
if (htmlvideoCarrier) {
var html5URL = videoContainer.getAttribute('data-content-popup-video-url-html5');
if (!html5URL) return;
t986_toggleClasses(videoCover, videoContainer);
htmlvideoCarrier.innerHTML =
'' +
'' +
'Your browser does not support the video tag' +
' ' +
'' +
' ' +
' ';
}
document.addEventListener('click', function (e) {
if (e.target.closest('.t986__close-link')) {
t986_hideVideo(recid);
}
});
}
function t986_toggleClasses(videoCover, videoContainer) {
document.body.classList.add('t986__overflow');
if (videoCover) videoCover.classList.add('t986__hidden');
if (videoContainer) videoContainer.classList.remove('t986__hidden');
}
function t986_hideVideo(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var videoContainer = rec.querySelector('.t986__video-container');
var videoCover = rec.querySelector('.t986__cover');
var videoCarrier =
rec.querySelector('.t986__video-carier') ||
rec.querySelector('.t986__video-vimeo') ||
rec.querySelector('.t986__video-html5');
document.body.classList.remove('t986__overflow');
if (videoCover) videoCover.classList.remove('t986__hidden');
if (videoContainer) videoContainer.classList.add('t986__hidden');
if (videoCarrier) videoCarrier.innerHTML = '
';
}
function t988_init(recId, donation) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t988');
if (!container) return;
var priceInput = rec.querySelector('.t988__price');
var priceButtons = rec.querySelectorAll('.t988__pricebtn');
var priceButtonOther = rec.querySelector('.t988__price-other');
var submit = rec.querySelector('.t988__submit');
var link = submit.parentNode;
var activeBtn = rec.querySelector('.t988__pricebtn_active');
var updatePrice = function (event) {
var value = priceInput.value;
var match = value.replace(/\D/g, '');
var href;
if (!value || value === '0' || !match || match === '0') {
priceInput.classList.add('t988__price_error');
submit.classList.add('t988__submit_error');
setTimeout(function () {
submit.classList.remove('t988__submit_error');
}, 300);
if (event) event.preventDefault();
return;
} else {
href = '#order:' + donation + '=' + match;
link.href = href;
}
};
if (activeBtn) {
priceInput.value = activeBtn.value;
updatePrice();
}
for (var i = 0; i < priceButtons.length; i++) {
var priceButton = priceButtons[i];
if (priceButton.classList.contains('t988__pricebtn_active')) {
priceInput.value = priceButton.value;
}
priceButton.addEventListener('click', function () {
var button = this;
if (!button.classList.contains('t988__price-other')) {
priceInput.value = button.value;
priceInput.style.display = 'none';
}
for (var j = 0; j < priceButtons.length; j++) {
priceButtons[j].classList.remove('t988__pricebtn_active');
}
button.classList.add('t988__pricebtn_active');
updatePrice();
});
}
if (priceButtonOther) {
priceButtonOther.addEventListener('click', function () {
priceInput.value = '';
link.href = '';
priceInput.style.display = 'block';
priceInput.focus();
});
}
priceInput.addEventListener('focus', function () {
this.classList.remove('t988__price_error');
});
submit.addEventListener('click', updatePrice);
priceInput.addEventListener('keyup', updatePrice);
}
function t989_init(recid) {
var allRec = document.getElementById('allrecords');
var lazyMode = allRec ? allRec.getAttribute('data-tilda-lazy') : '';
var rec = document.getElementById('rec' + recid);
var bulletsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var slides = rec.querySelectorAll('.t-slds__item');
var bullets = rec.querySelectorAll('.t-slds__thumbsbullet');
var currentBlock = rec.querySelector('.t989');
var activePos = bulletsWrapper ? bulletsWrapper.getAttribute('data-thumbs-active') : '0';
Array.prototype.forEach.call(slides, function (slide, i) {
if (i === parseInt(activePos, 10)) slide.classList.add('t-slds__item_active');
});
Array.prototype.forEach.call(bullets, function (bullet, i) {
if (i === parseInt(activePos, 10)) bullet.classList.add('t-slds__item_active');
});
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid);
t989_checkArrowsDisplay(rec);
});
var thumbsTimeout = bulletsWrapper ? bulletsWrapper.getAttribute('data-thumbs-timeout') : '';
if (thumbsTimeout > 0) {
t989_thumbs_initAutoPlay(rec);
}
window.addEventListener(
'resize',
t_throttle(function () {
t989_checkArrowsDisplay(rec);
t_slds_updateSlider(recid);
if (window.lazy === 'y' || lazyMode === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 300)
);
if (currentBlock) {
currentBlock.addEventListener('displayChanged', function () {
t_onFuncLoad('t_slds_updateSlider', function () {
t_slds_updateSlider(recid);
});
if (window.lazy === 'y' || lazyMode === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
t989_addEvents(rec);
}
function t989_addEvents(rec) {
var bulletsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var bullets = rec.querySelectorAll('.t-slds__thumbsbullet');
var arrowRight = rec.querySelector('.t989__arrow-right');
var arrowLeft = rec.querySelector('.t989__arrow-left');
var mobileWrapperRight = rec.querySelector('.t989__mobile-arrows .t-slds__arrow_wrapper-right');
var mobileWrapperLeft = rec.querySelector('.t989__mobile-arrows .t-slds__arrow_wrapper-left');
var thumbsTimeout = bulletsWrapper ? bulletsWrapper.getAttribute('data-thumbs-timeout') : '';
if (arrowRight) {
arrowRight.addEventListener('click', function () {
t989_next(rec);
if (thumbsTimeout > 0) t989_thumbs_initAutoPlay(rec);
});
}
if (arrowLeft) {
arrowLeft.addEventListener('click', function () {
t989_prev(rec);
if (thumbsTimeout > 0) t989_thumbs_initAutoPlay(rec);
});
}
if (mobileWrapperRight) {
mobileWrapperRight.addEventListener('click', function () {
t989_next(rec);
if (thumbsTimeout > 0) t989_thumbs_initAutoPlay(rec);
});
}
if (mobileWrapperLeft) {
mobileWrapperLeft.addEventListener('click', function () {
t989_prev(rec);
if (thumbsTimeout > 0) t989_thumbs_initAutoPlay(rec);
});
}
Array.prototype.forEach.call(bullets, function (bullet) {
bullet.addEventListener('click', function () {
t989_slideIntoView(rec, bullet);
if (thumbsTimeout > 0) t989_thumbs_initAutoPlay(rec);
});
});
}
function t989_checkArrowsDisplay(rec) {
var bullets = rec.querySelectorAll('.t-slds__thumbsbullet');
var arrowRight = rec.querySelector('.t989__arrow-right');
var arrowLeft = rec.querySelector('.t989__arrow-left');
var thumbsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var thumbsCycle = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-cycle') : null;
var activeThumb = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-active') : '0';
if (thumbsCycle === 'yes') {
if (arrowLeft) arrowLeft.style.display = 'block';
if (arrowLeft) arrowRight.style.display = 'block';
} else {
if (arrowLeft) arrowLeft.style.display = parseInt(activeThumb, 10) > 0 ? 'block' : 'none';
if (arrowLeft) arrowRight.style.display = parseInt(activeThumb, 10) < bullets.length - 1 ? 'block' : 'none';
}
}
function t989_slideIntoView(rec, bullet) {
var container = rec.querySelector('.t989__thumbsbullets-container');
var thumbsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var containerWidth = container ? container.offsetWidth : 0;
var containerLeftPos = container ? container.getBoundingClientRect().left + window.pageXOffset : 0;
var containerRightPos = containerLeftPos + containerWidth;
var thumbsCycle = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-cycle') : null;
var bulletFor = bullet.getAttribute('data-slide-bullet-for');
var bulletRightPos = bullet.offsetWidth + bullet.getBoundingClientRect().left + window.pageXOffset;
var hiddenPart;
var direction;
if (bulletRightPos > containerRightPos) {
hiddenPart = bulletRightPos - containerRightPos;
direction = 'right';
}
if (container && container.getBoundingClientRect().left > bullet.getBoundingClientRect().left) {
hiddenPart = container.getBoundingClientRect().left - bullet.getBoundingClientRect().left + 12;
direction = 'left';
}
if (parseInt(bulletFor, 10)) {
var slideID = (parseInt(bulletFor, 10) - 1).toString();
if (thumbsWrapper) thumbsWrapper.setAttribute('data-thumbs-active', slideID);
}
if (hiddenPart) {
t989_slide(rec, direction, hiddenPart);
}
if (thumbsCycle !== 'yes') {
setTimeout(function () {
t989_checkArrowsDisplay(rec);
}, 300);
}
}
function t989_next(rec) {
var bullets = rec.querySelectorAll('.t-slds__thumbsbullet');
var thumbsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var thumbsCycle = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-cycle') : null;
var activeThumb = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-active') : '0';
var activeThumbValue = parseInt(activeThumb, 10);
if (activeThumbValue < bullets.length) {
activeThumbValue++;
}
if (activeThumbValue === bullets.length && thumbsCycle === 'yes') {
activeThumbValue = 0;
}
var activeBullet = bullets[activeThumbValue];
if (activeBullet) t989__triggerEvent(activeBullet, 'click');
}
function t989_prev(rec) {
var bullets = rec.querySelectorAll('.t-slds__thumbsbullet');
var thumbsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var activeThumb = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-active') : '0';
var activeThumbValue = parseInt(activeThumb, 10);
var thumbsCycle = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-cycle') : null;
if (activeThumbValue > 0) {
activeThumbValue--;
} else if (thumbsCycle === 'yes') {
activeThumbValue = bullets.length - 1;
}
var slide = bullets.length ? bullets[activeThumbValue] : null;
if (slide) t989__triggerEvent(slide, 'click');
if (thumbsWrapper) thumbsWrapper.setAttribute('data-thumbs-active', activeThumbValue);
}
function t989_slide(rec, direction, offset) {
var allRec = document.getElementById('allrecords');
var lazyMode = allRec ? allRec.getAttribute('data-tilda-lazy') : '';
var thumbsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var dataSlideOffset = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-offset') : '0';
var slideOffsetValue = parseInt(dataSlideOffset, 10);
var slideOffset;
if (direction === 'right') {
slideOffset = slideOffsetValue + Math.abs(offset) + 12;
} else {
slideOffset = slideOffsetValue > Math.abs(offset) ? slideOffsetValue - Math.abs(offset) : 0;
}
if (thumbsWrapper) {
thumbsWrapper.style.transform = 'translate(-' + slideOffset + 'px, 0)';
thumbsWrapper.style.transitionDuration = '.3s';
thumbsWrapper.setAttribute('data-thumbs-offset', slideOffset);
}
if (window.lazy === 'y' || lazyMode === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t989_thumbs_initAutoPlay(rec) {
var thumbsWrapper = rec.querySelector('.t-slds__thumbsbullet-wrapper');
var bullets = rec.querySelectorAll('.t-slds__thumbsbullet');
var timeOut = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-timeout') : '0';
var intervalID = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-interval-id') : null;
var activeThumb = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-active') : '0';
var thumbsCycle = thumbsWrapper ? thumbsWrapper.getAttribute('data-thumbs-cycle') : null;
timeOut = parseInt(timeOut, 10);
activeThumb = parseInt(activeThumb, 10);
if (parseInt(intervalID, 10)) {
clearInterval(parseInt(intervalID, 10));
}
var thumbsIntervalId = setInterval(function () {
t989_next(rec);
}, timeOut);
if (thumbsWrapper) thumbsWrapper.setAttribute('data-thumbs-interval-id', thumbsIntervalId.toString());
if (bullets.length - 1 === activeThumb && thumbsCycle !== 'yes') {
if (intervalID) {
clearInterval(thumbsIntervalId);
}
}
}
function t989__triggerEvent(el, eventName) {
var event;
if (typeof window.CustomEvent === 'function') {
event = new CustomEvent(eventName);
} else if (document.createEvent) {
event = document.createEvent('HTMLEvents');
event.initEvent(eventName, true, false);
} else if (document.createEventObject) {
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
if (el.dispatchEvent) {
el.dispatchEvent(event);
} else if (el.fireEvent) {
el.fireEvent('on' + event.eventType, event);
} else if (el[eventName]) {
el[eventName]();
} else if (el['on' + eventName]) {
el['on' + eventName]();
}
}
function t992_init(recid) {
t992_highlight();
t992_checkAnchorLinks(recid);
}
function t992_highlight() {
var url = window.location.href;
var pathname = window.location.pathname;
var hash = window.location.hash;
if (url.substr(url.length - 1) === '/') {
url = url.slice(0, -1);
}
if (pathname.substr(pathname.length - 1) === '/') {
pathname = pathname.slice(0, -1);
}
if (pathname.charAt(0) === '/') {
pathname = pathname.slice(1);
}
if (pathname === '') {
pathname = '/';
}
var shouldBeActiveElements = document.querySelectorAll(
".t992__list-item a[href='" +
url +
"'], " +
".t992__list-item a[href='" +
url +
"/'], " +
".t992__list-item a[href='" +
pathname +
"'], " +
".t992__list-item a[href='/" +
pathname +
"'], " +
".t992__list-item a[href='" +
pathname +
"/'], " +
".t992__list-item a[href='/" +
pathname +
"/'], " +
".t992__list-item a[href='/" +
hash +
"/']"
);
Array.prototype.forEach.call(shouldBeActiveElements, function (link) {
link.classList.add('t-active');
});
}
function t992_checkAnchorLinks(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec || window.innerWidth < 980) return;
var navLinks = rec.querySelectorAll(".t992__list-item a[href*='#']");
navLinks = Array.prototype.filter.call(navLinks, function (navLink) {
return !navLink.classList.contains('tooltipstered');
});
if (navLinks.length) {
t992_catchScroll(navLinks);
}
}
function t992_catchScroll(navLinks) {
var clickedSectionID = null;
var sections = [];
var sectionToNavigationLinkID = {};
var interval = 100;
var lastCall;
var timeoutID;
navLinks = navLinks.reverse();
navLinks.forEach(function (link) {
var currentSection = t992_getSectionByHref(link);
if (currentSection && currentSection.id) {
sections.push(currentSection);
sectionToNavigationLinkID[currentSection.id] = link;
}
});
t992_updateSectionsOffsets(sections);
sections.sort(function (a, b) {
var firstTopOffset = parseInt(a.getAttribute('data-offset-top'), 10) || 0;
var secondTopOffset = parseInt(b.getAttribute('data-offset-top'), 10) || 0;
return secondTopOffset - firstTopOffset;
});
window.addEventListener(
'resize',
t_throttle(function () {
t992_updateSectionsOffsets(sections);
}, 200)
);
if (typeof jQuery !== 'undefined') {
$('.t992').bind('displayChanged', function () {
t992_updateSectionsOffsets(sections);
});
} else {
var footerEls = document.querySelectorAll('.t992');
Array.prototype.forEach.call(footerEls, function (footer) {
footer.addEventListener('displayChanged', function () {
t992_updateSectionsOffsets(sections);
});
});
}
var menuEls = document.querySelectorAll('.t992');
Array.prototype.forEach.call(menuEls, function (menu) {
menu.addEventListener('displayChanged', function () {
t992_updateSectionsOffsets(sections);
});
});
setInterval(function () {
t992_updateSectionsOffsets(sections);
}, 5000);
t992_highlightNavLinks(navLinks, sections, sectionToNavigationLinkID, clickedSectionID);
navLinks.forEach(function (navLink, i) {
navLink.addEventListener('click', function () {
var clickedSection = t992_getSectionByHref(navLink);
if (!navLink.classList.contains('tooltipstered') && clickedSection && clickedSection.id) {
navLinks.forEach(function (link, index) {
if (index === i) {
link.classList.add('t-active');
} else {
link.classList.remove('t-active');
}
});
clickedSectionID = clickedSection.id;
}
});
});
window.addEventListener('scroll', function () {
var dateNow = new Date().getTime();
if (lastCall && dateNow < lastCall + interval) {
clearTimeout(timeoutID);
timeoutID = setTimeout(
function () {
lastCall = dateNow;
clickedSectionID = t992_highlightNavLinks(
navLinks,
sections,
sectionToNavigationLinkID,
clickedSectionID
);
},
interval - (dateNow - lastCall)
);
} else {
lastCall = dateNow;
clickedSectionID = t992_highlightNavLinks(navLinks, sections, sectionToNavigationLinkID, clickedSectionID);
}
});
}
function t992_updateSectionsOffsets(sections) {
sections.forEach(function (section) {
var sectionTopPos = section.getBoundingClientRect().top + window.pageYOffset;
section.setAttribute('data-offset-top', sectionTopPos);
});
}
function t992_getSectionByHref(curlink) {
if (!curlink) return;
var href = curlink.getAttribute('href');
var curLinkValue = href ? href.replace(/\s+/g, '') : '';
if (curLinkValue.indexOf('/') === 0) curLinkValue = curLinkValue.slice(1);
if (href && curlink.matches('[href*="#rec"]')) {
curLinkValue = curLinkValue.replace(/.*#/, '');
return document.getElementById(curLinkValue);
} else {
var selector = href ? href.trim() : '';
var slashIndex = selector.indexOf('#') !== -1 ? selector.indexOf('#') : false;
if (typeof slashIndex === 'number') {
selector = selector.slice(slashIndex + 1);
} else {
slashIndex = selector.indexOf('/') !== -1 ? selector.indexOf('/') : false;
if (typeof slashIndex === 'number') selector = selector.slice(slashIndex + 1);
}
var fullSelector = `.r[data-record-type="215"] a[name="${selector}"], .r[data-parenttplid="215"] a[name="${selector}"]`;
return document.querySelector(fullSelector) ? document.querySelector(fullSelector).closest('.r') : null;
}
}
function t992_highlightNavLinks(navLinks, sections, sectionToNavigationLinkID, clickedSectionID) {
var scrollPosition = window.pageYOffset;
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
var returnValue = clickedSectionID;
var lastSection = sections.length ? sections[sections.length - 1] : null;
var lastSectionTopPos = lastSection ? lastSection.getAttribute('data-offset-top') : '0';
lastSectionTopPos = parseInt(lastSectionTopPos, 10) || 0;
/*if first section is not at the page top (under first blocks)*/
if (sections.length && clickedSectionID === null && lastSectionTopPos > scrollPosition + 300) {
navLinks.forEach(function (link) {
link.classList.remove('t-active');
});
return null;
}
for (var i = 0; i < sections.length; i++) {
var sectionTopPos = sections[i].getAttribute('data-offset-top');
var navLink = sections[i].id ? sectionToNavigationLinkID[sections[i].id] : null;
if (scrollPosition + 300 >= sectionTopPos || (i === 0 && scrollPosition >= scrollHeight - window.innerHeight)) {
if (clickedSectionID === null && navLink && !navLink.classList.contains('t-active')) {
navLinks.forEach(function (link) {
link.classList.remove('t-active');
});
if (navLink) navLink.classList.add('t-active');
returnValue = null;
} else if (clickedSectionID !== null && sections[i].id && clickedSectionID === sections[i].id) {
returnValue = null;
}
break;
}
}
return returnValue;
}
function t993__paintIcons(recid, iconSize) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var iconsList = rec.querySelectorAll('.t993__btn-img');
iconsList.forEach(function (icon) {
var iconURL = icon.getAttribute('data-original');
if (!iconURL) return;
var iconColor = icon.getAttribute('data-icon-color') || '';
if (!iconColor) {
icon.style.visibility = 'visible';
return;
}
if (
iconURL.indexOf('/lib__tildaicon__') === -1 &&
iconURL.indexOf('/lib/tildaicon/') === -1 &&
iconURL.indexOf('/lib/icons/tilda/') === -1
) {
icon.style.visibility = 'visible';
return;
}
var xhr = new XMLHttpRequest();
xhr.open('GET', iconURL, true);
xhr.responseType = 'document';
xhr.onload = function () {
if (xhr.status >= 200 && xhr.status < 400) {
var response = xhr.response;
var svg = response.querySelector('svg');
var figureList = svg.querySelectorAll('*:not(g):not(title):not(desc)');
for (var j = 0; j < figureList.length; j++) {
figureList[j].setAttribute('fill', iconColor);
}
if (typeof window.btoa !== 'undefined') {
var svgString = new XMLSerializer().serializeToString(svg);
var svgEncodedURL = 'url(data:image/svg+xml;base64,' + window.btoa(svgString) + ')';
icon.style.backgroundImage = svgEncodedURL;
icon.style.visibility = 'visible';
} else {
svg.setAttribute('width', iconSize);
icon.parentNode.prepend(svg);
icon.remove();
}
}
};
xhr.send();
});
}
function t996_init(recid, pad) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t996__calcCoverWidth(rec);
window.addEventListener(
'resize',
t_throttle(function () {
t996__calcCoverWidth(rec);
}, 300)
);
}
function t996__calcCoverWidth(rec) {
var cover = rec.querySelector('.t996__cover-wrapper');
var container = rec.querySelector('.t996__container');
var containerWidth = container ? container.offsetWidth : 0;
var windowWidth = window.innerWidth;
var coverWidth = windowWidth - (windowWidth - containerWidth) / 2;
if (cover) cover.style.width = coverWidth + 'px';
}
function t999_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t1000_init(recId, margin) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1000');
if (!container) return;
t1000_setImageHeight(rec, margin);
window.addEventListener(
'resize',
t_throttle(function () {
t1000_setImageHeight(rec, margin);
})
);
if (typeof jQuery !== 'undefined') {
$(container).bind('displayChanged', function () {
t1000_setImageHeight(rec, margin);
});
} else {
container.addEventListener('displayChanged', function () {
t1000_setImageHeight(rec, margin);
});
}
}
function t1000_setImageHeight(rec, margin) {
if (!rec) return;
var container = rec.querySelector('.t1000');
if (!container) return;
var image = rec.querySelector('.t1000__background-image');
if (window.innerWidth <= 960) {
image.style.height = null;
image.style.width = null;
} else {
image.style.height = 'calc(100% + ' + margin + 'px)';
}
image.style.visibility = null;
}
function t1003_init(recId, angle) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1003');
if (!container) return;
t1003_calc(rec, recId, angle);
window.addEventListener(
'resize',
t_throttle(function () {
t1003_calc(rec, recId, angle);
}, 300)
);
window.addEventListener('load', function () {
t1003_calc(rec, recId, angle);
});
container.addEventListener('displayChanged', function () {
t1003_calc(rec, recId, angle);
/*fix for Safari, update animation name need to reinit animation*/
var content = container.querySelector('.t1003__content');
var contentAnimName = content ? window.getComputedStyle(content).animationName : '';
if (!contentAnimName) return;
content.style.animationName = '';
setTimeout(function () {
content.style.animationName = contentAnimName;
});
});
}
function t1003_calc(rec, recId, angle) {
var wrapper = rec.querySelector('.t1003__wrapper');
var contentWrapper = rec.querySelector('.t1003__content-wrapper');
var content = rec.querySelector('.t1003__content');
var items = content.querySelectorAll('.t1003__item');
var img = items[0].querySelector('.t1003__bgimg');
var index = 0;
if (img) {
for (var i = 0; i < items.length; i++) {
if (items[i].querySelector('.t1003__bgimg').classList.contains('loaded')) {
index = i;
break;
}
}
}
var itemWidth = items[index].offsetWidth;
var windowWidth = window.innerWidth;
var itemsToDisplay = parseInt(windowWidth / itemWidth) + 3;
var direction = '';
if (angle) t1003_calcRotatedWidth(rec, angle);
if (wrapper.getAttribute('data-marquee-direction') === 'opposite') direction = 'right';
for (var i = 1; i < items.length; i++) {
t1003__remove(items[i]);
}
for (var i = 0; i < itemsToDisplay; i++) {
if (direction === 'right') {
content.insertBefore(items[index].cloneNode(true), items[0]);
} else {
content.insertBefore(items[index].cloneNode(true), items[0].nextSibling);
}
}
t1003_anim(rec, itemWidth, recId, direction);
content.style.animationName = 't1003__anim-scrolling_' + recId;
contentWrapper.style.opacity = '1';
}
function t1003_calcRotatedWidth(rec, angle) {
var outer = rec.querySelector('.t1003__outer');
var wrapper = rec.querySelector('.t1003__wrapper');
var wrapperOpacity = wrapper.style.opacity;
wrapper.removeAttribute('style');
angle = parseFloat(angle.replace('deg', ''), 10);
var windowWidth = window.innerWidth;
var angleRad = (angle * Math.PI) / 180;
var sin = Math.sin(angleRad);
var paddingCoeff = Math.abs(Math.tan(angleRad) / 2);
var padding = windowWidth * paddingCoeff;
var rotatedHeight = Math.abs(sin * windowWidth);
wrapper.style.width = 'calc(100vw + ' + padding + 'px)';
wrapper.style.padding = '0 ' + padding + 'px';
if (wrapperOpacity) wrapper.style.opacity = wrapperOpacity;
var wrapperStyle = getComputedStyle(wrapper, null);
var wrapperPaddingTop = parseInt(wrapperStyle.paddingTop) || 0;
var wrapperPaddingBottom = parseInt(wrapperStyle.paddingBottom) || 0;
var wrapperPaddingLeft = parseInt(wrapperStyle.paddingLeft) || 0;
var wrapperPaddingRight = parseInt(wrapperStyle.paddingRight) || 0;
var wrapperWidth = wrapper.clientWidth - (wrapperPaddingLeft + wrapperPaddingRight);
var wrapperHeight = wrapper.clientHeight - (wrapperPaddingTop + wrapperPaddingBottom);
var operator = sin < 0 ? '' : '-';
outer.style.height = rotatedHeight + wrapperHeight + 'px';
if (window.isIE) {
wrapper.style.width = '';
wrapper.style.marginLeft = '-' + wrapperWidth / 2 + 'px';
wrapper.style.marginTop = operator + wrapperHeight / 2 + 'px';
}
}
function t1003_anim(rec, itemWidth, id, direction) {
var animationName = 't1003__anim-scrolling_' + id;
var speedAttr = rec.querySelector('.t1003__wrapper').getAttribute('data-marquee-speed');
var start;
var end;
var speed;
var seconds;
var styleAnimation = rec.querySelector('#' + animationName);
if (styleAnimation) t1003__remove(styleAnimation);
if (!speedAttr) return;
seconds = parseFloat(speedAttr.replace('s', ''));
/* время, за которое будет проезжать 100px */
speed = (itemWidth / 100) * seconds;
rec.querySelector('.t1003__content').style.animationDuration = speed + 's';
if (direction === 'right') {
start = itemWidth * -1;
end = 0;
} else {
start = 0;
end = itemWidth * -1;
}
var style = document.createElement('style');
style.id = animationName;
style.innerHTML =
'@keyframes ' +
animationName +
'{' +
'0% {' +
'transform: translateX(' +
start +
'px);' +
'-webkit-transform: translateX(' +
start +
'px);' +
'}' +
'100% {' +
'transform: translateX(' +
end +
'px);' +
'-webkit-transform: translateX(' +
end +
'px);' +
'}' +
'}';
rec.appendChild(style);
}
function t1003__remove(el) {
if (el && el.parentNode) {
el.parentNode.removeChild(el);
}
}
function t1013_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var currentBlock = rec.querySelector('.t-popup');
var currentHook = currentBlock ? currentBlock.getAttribute('data-tooltip-hook') : '';
var currentAnalitics = currentBlock ? currentBlock.getAttribute('data-track-popup') : '';
if (!currentHook) return false;
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(currentHook);
});
document.addEventListener('click', function (event) {
var href = event.target.closest('a[href="' + currentHook + '"]');
if (href) {
event.preventDefault();
t1013_showPopup(recid);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recid);
});
if (currentAnalitics) {
var virtTitle = currentHook;
if (virtTitle.substring(0, 7) === '#popup:') virtTitle = virtTitle.substring(7);
Tilda.sendEventToStatistics(currentAnalitics, virtTitle);
}
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, currentHook);
});
}
function t1013_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var popup = rec.querySelector('.t-popup');
var videoContainer = rec.querySelector('.t1013__html5video');
var videoCarrier = rec.querySelector('.t1013__video-carier');
var videoURL = videoContainer ? videoContainer.getAttribute('data-content-popup-video-url-html5video') : '';
if (videoCarrier) {
videoCarrier.innerHTML =
'' +
'' +
'Your browser does not support the video tag' +
' ';
}
if (popup) popup.style.display = 'block';
t1013_setHeight(recid);
setTimeout(function () {
var popupContainer = popup ? popup.querySelector('.t-popup__container') : null;
if (popupContainer) popupContainer.classList.add('t-popup__container-animated');
if (popup) popup.classList.add('t-popup_show');
popup.focus();
t_onFuncLoad('t_popup__trapFocus', function () {
t_popup__trapFocus(popup);
});
}, 50);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
document.body.classList.add('t1013__body_popupshowed');
if (popup) {
popup.addEventListener('click', function (e) {
if (e.target === popup) t1013_popup_close(recid);
});
}
var popupClose = popup ? popup.querySelector('.t-popup__close') : null;
if (popupClose) {
popupClose.addEventListener('click', function () {
t1013_popup_close(recid);
});
}
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) t1013_popup_close(recid);
});
}
function t1013_setHeight(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var videoCarrier = rec.querySelector('.t1013__video-carier');
var carrierParent = videoCarrier ? videoCarrier.parentNode : null;
var videoWidth = videoCarrier ? videoCarrier.offsetWidth : 0;
var calculatedHeight = videoWidth * 0.5625;
if (videoCarrier) videoCarrier.style.height = calculatedHeight + 'px';
if (carrierParent) carrierParent.style.height = calculatedHeight + 'px';
}
function t1013_popup_close(recid) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
document.body.classList.remove('t1013__body_popupshowed');
var rec = document.getElementById('rec' + recid);
if (!rec) return false;
var popup = rec.querySelector('.t-popup');
var videoCarrier = rec.querySelector('.t1013__video-carier');
if (popup) popup.classList.remove('t-popup_show');
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
if (videoCarrier) videoCarrier.innerHTML = '';
if (popup && !popup.classList.contains('t-popup_show')) {
popup.style.display = 'none';
}
}, 300);
}
/* deprecated */
function t1013_sendPopupEventToStatistics(popupname) {
var virtPage = '/tilda/popup/';
var virtTitle = 'Popup: ';
if (popupname.substring(0, 7) === '#popup:') {
popupname = popupname.substring(7);
}
virtPage += popupname;
virtTitle += popupname;
if (ga) {
if (window.mainTracker !== 'tilda') {
ga('send', {
hitType: 'pageview',
page: virtPage,
title: virtTitle,
});
}
}
if (window.mainMetrika > '' && window[window.mainMetrika]) {
window[window.mainMetrika].hit(virtPage, {
title: virtTitle,
referer: window.location.href,
});
}
}
function t1014_initPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1014');
if (!container) return;
rec.setAttribute('data-animationappear', 'off');
rec.setAttribute('data-popup-subscribe-inited', 'y');
rec.style.opacity = 1;
var documentBody = document.body;
var hrefs = rec.querySelectorAll('a[href*="#"]');
var popup = rec.querySelector('.t-popup');
var popupCloseBtn = popup.querySelector('.t-popup__close');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
var analitics = popup.getAttribute('data-track-popup');
if (popupTooltipHook) {
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(popupTooltipHook);
});
document.addEventListener('click', function (event) {
var target = event.target;
var href = target.closest('a[href="' + popupTooltipHook + '"]') ? target : false;
if (!href) return;
event.preventDefault();
t1014_createPopup(recId);
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
t1014__lazyLoad();
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, popupTooltipHook);
}
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, popupTooltipHook);
});
}
popup.addEventListener(
'scroll',
t_throttle(function () {
t1014__lazyLoad();
})
);
popup.addEventListener('click', function (event) {
if (event.target === this) t1014_closePopup();
});
popupCloseBtn.addEventListener('click', t1014_closePopup);
for (var i = 0; i < hrefs.length; i++) {
hrefs[i].addEventListener('click', function () {
var url = this.getAttribute('href');
if (!url || (url.substring(0, 7) != '#price:' && url.substring(0, 7) != '#order:')) {
t1014_closePopup();
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
documentBody.classList.add('t-body_popupshowed');
}, 300);
}
}
});
}
}
function t1014_lockScroll() {
var documentBody = document.body;
if (!documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop =
typeof window.pageYOffset !== 'undefined'
? window.pageYOffset
: (document.documentElement || documentBody.parentNode || documentBody).scrollTop;
documentBody.classList.add('t-body_scroll-locked');
documentBody.style.top = '-' + bodyScrollTop + 'px';
documentBody.setAttribute('data-popup-scrolltop', bodyScrollTop);
}
}
function t1014_unlockScroll() {
var documentBody = document.body;
if (documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop = documentBody.getAttribute('data-popup-scrolltop');
documentBody.classList.remove('t-body_scroll-locked');
documentBody.style.top = null;
documentBody.removeAttribute('data-popup-scrolltop');
document.documentElement.scrollTop = parseInt(bodyScrollTop);
}
}
function t1014_createPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1014');
if (!container) return;
var popup = rec.querySelector('.t-popup');
var documentBody = document.body;
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
documentBody.classList.add('t-body_popupshowed');
documentBody.classList.add('t1014__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
setTimeout(function () {
t1014_lockScroll();
}, 500);
}
document.addEventListener('keydown', t1014_escClosePopup);
}
function t1014_escClosePopup(event) {
if (event.key === 'Escape') t1014_closePopup();
}
function t1014_closePopup() {
var popupAll = document.querySelectorAll('.t-popup');
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
document.body.classList.remove('t1014__body_popupshowed');
for (var i = 0; i < popupAll.length; i++) {
popupAll[i].classList.remove('t-popup_show');
}
/* fix IOS11 cursor bug + general IOS background scroll */
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && !window.MSStream) {
t1014_unlockScroll();
}
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
for (var i = 0; i < popupHide.length; i++) {
popupHide[i].style.display = 'none';
}
}, 300);
document.removeEventListener('keydown', t1014_escClosePopup);
}
function t1014__lazyLoad() {
var allRecords = document.getElementById('allrecords');
if (window.lazy === 'y' || (allRecords && allRecords.getAttribute('data-tilda-lazy') === 'yes')) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t1014_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t1015_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t1016_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
var t1025_POPUP_SHOWED_EVENT_NAME = 'catalog:popupShowed';
var t1025_POPUP_CLOSED_EVENT_NAME = 'catalog:popupClosed';
function t1025__init(recid) {
setTimeout(function () {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t1025__unifyRightColumnWidth(recid);
var container = document.querySelector('#rec' + recid + ' .t1025');
if (container) {
container.addEventListener('displayChanged', function () {
setTimeout(function () {
t1025__unifyRightColumnWidth(recid);
}, 100);
});
}
t1025_initPopup(recid);
t1025__hoverZoom_init(recid);
t1025__updateLazyLoad(recid);
t1025__alignButtons_init(recid);
t_onFuncLoad('t_store_addProductQuantityEvents', function () {
t1025_initProductQuantity(recid);
});
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}, 500);
}
function t1025__unifyRightColumnWidth(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
/* не вычислять ширину для скрытых блоков (ME602, ME603, BF703) */
if (
rec.classList.contains('t395__off') ||
rec.classList.contains('t397__off') ||
rec.classList.contains('t400__off') ||
rec.classList.contains('t1281__off')
)
return;
var wrapper = rec.querySelector('.t1025__col');
if (!wrapper) return;
var items = wrapper.querySelectorAll('.t1025__item');
if (
items &&
items.length &&
(items[0].classList.contains('t1025__item_fixed-width') ||
items[0].classList.contains('t1025__item_under-description'))
) {
return;
}
var maxWidth = 0;
var maxPriceWidth = 0;
var maxButtonsWidth = 0;
Array.prototype.forEach.call(items, function (item) {
var col = item.querySelector('.t1025__price-buttons');
if (col) {
if (col.classList.contains('t1025__price-buttons_in-row')) {
var price = col.querySelector('.t1025__price-wrapper');
var buttons = col.querySelector('.t1025__btn-wrapper');
if (price) {
var priceWidth = parseInt(window.getComputedStyle(price).width, 10);
if (priceWidth === 0 || isNaN(priceWidth)) priceWidth = price.offsetWidth;
if (priceWidth > maxPriceWidth) maxPriceWidth = priceWidth;
}
if (buttons) {
var buttonsRect = buttons.getBoundingClientRect();
var buttonsWidth = Math.ceil(buttonsRect.width);
if (buttonsWidth > maxButtonsWidth) maxButtonsWidth = buttonsWidth;
}
} else {
var colRect = col.getBoundingClientRect();
var curWidth = Math.ceil(colRect.width);
if (curWidth > maxWidth) maxWidth = curWidth;
}
}
});
Array.prototype.forEach.call(items, function (item) {
var col = item.querySelector('.t1025__price-buttons');
if (col) {
if (col.classList.contains('t1025__price-buttons_in-row')) {
var price = col.querySelector('.t1025__price-wrapper');
var buttons = col.querySelector('.t1025__btn-wrapper');
if (price) price.style.width = 0;
if (buttons) buttons.style.width = 0;
col.style.width = 0;
} else {
col.style.width = 0;
}
}
});
Array.prototype.forEach.call(items, function (item) {
var col = item.querySelector('.t1025__price-buttons');
if (col) {
if (col.classList.contains('t1025__price-buttons_in-row')) {
var price = col.querySelector('.t1025__price-wrapper');
var buttons = col.querySelector('.t1025__btn-wrapper');
if (price) price.style.width = maxPriceWidth + 'px';
if (buttons) buttons.style.width = maxButtonsWidth + 'px';
if (maxPriceWidth > 0 || maxButtonsWidth > 0) {
col.style.width = maxPriceWidth + maxButtonsWidth + 'px';
}
} else if (maxWidth > 0) {
col.style.width = maxWidth + 'px';
}
}
});
}
function t1025_initProductQuantity(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var productList = rec.querySelectorAll('.t1025__item, .t1025__product-full');
Array.prototype.forEach.call(productList, function (product) {
t_store_addProductQuantityEvents(product);
});
}
function t1025__showMore(recid) {
var rec = document.querySelector('#rec' + recid + ' .t1025');
if (!rec) return;
var cardsCount = parseInt(rec.getAttribute('data-show-count'), 10);
if (isNaN(cardsCount) || cardsCount < 1) {
return;
}
var showMoreButton = rec.querySelector('.t1025__showmore');
if (!showMoreButton) return;
const showMoreTextContainer = showMoreButton.querySelector('.js-btn-txt');
if (showMoreTextContainer) {
showMoreTextContainer.textContent = t1025__dict();
}
var productCards = rec.querySelectorAll('.t1025__item');
var cardsLenght = productCards.length;
var originalDisplayProperty = window.getComputedStyle(productCards[0]).display;
if (cardsLenght > cardsCount) {
showMoreButton.style.removeProperty('display');
}
Array.prototype.forEach.call(productCards, function (card) {
card.style.display = 'none';
});
t1025__showSeparator(rec, cardsCount);
for (var i = 0; i < cardsCount; i++) {
if (productCards[i]) {
productCards[i].style.display = originalDisplayProperty;
}
}
window.addEventListener('resize', function () {
Array.prototype.forEach.call(productCards, function (card) {
card.style.display = 'none';
});
for (var i = 0; i < cardsCount; i++) {
if (productCards[i]) {
productCards[i].style.display = originalDisplayProperty;
}
}
});
var showedCardsCount = 0;
showMoreButton.addEventListener('click', function () {
/* считаем сколько карточек уже показано и прибавляем к числу "сколько показывать до кнопки ещё" */
Array.prototype.forEach.call(productCards, function (product) {
if (product.style.display === originalDisplayProperty) {
showedCardsCount++;
}
});
cardsCount += showedCardsCount;
for (var i = 0; i < cardsCount; i++) {
if (productCards[i]) {
productCards[i].style.display = originalDisplayProperty;
}
}
if (cardsCount >= cardsLenght) {
showMoreButton.style.display = 'none';
}
t1025__showSeparator(rec, cardsCount);
if (rec.querySelector('[data-buttons-v-align]')) {
t1025__alignButtons(recid);
}
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
function t1025__showSeparator(rec, cardsCount) {
if (window.jQuery && rec instanceof jQuery) {
rec = rec.get(0);
}
var allSeparators = rec.querySelectorAll('.t1025__separator_number');
Array.prototype.forEach.call(allSeparators, function (separator) {
separator.classList.add('t1025__separator_hide');
if (separator.getAttribute('data-product-separator-number') <= cardsCount) {
separator.classList.remove('t1025__separator_hide');
}
});
}
function t1025__dict() {
var dictionary = {
EN: 'Load more',
RU: 'Загрузить еще',
FR: 'Charger plus',
DE: 'Mehr laden',
ES: 'Carga más',
PT: 'Carregue mais',
UK: 'Завантажити ще',
JA: 'もっと読み込む',
ZH: '裝載更多',
};
var language = window.browserLang;
return dictionary[language] ? dictionary[language] : dictionary['EN'];
}
function t1025__alignButtons_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (!rec.querySelector('[data-buttons-v-align]')) {
return;
}
try {
t1025__alignButtons(recid);
if (document.querySelector('.t-records').getAttribute('data-tilda-mode') === 'edit') {
setInterval(function () {
t1025__alignButtons(recid);
}, 200);
}
window.addEventListener(
'resize',
t_throttle(function () {
if (typeof window.noAdaptive !== 'undefined' && window.noAdaptive === true && window.isMobile) {
return;
}
t1025__alignButtons(recid);
})
);
var wrapperBlock = rec.querySelector('.t1025');
if (wrapperBlock) {
wrapperBlock.addEventListener('displayChanged', function () {
t1025__alignButtons(recid);
});
}
if (window.isMobile) {
window.addEventListener('orientationchange', function () {
t1025__alignButtons(recid);
});
}
} catch (error) {
console.log('buttons-v-align error: ' + error.message);
}
}
function t1025__alignButtons(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var maxHeight = 0;
var wrappers = rec.querySelectorAll('.t1025__textwrapper');
var container = rec.querySelector('.t1025__parent');
if (container) {
var productInRow = parseInt(container.getAttribute('data-blocks-per-row'), 10);
}
var mobileView = window.innerWidth <= 480;
var tableView = window.innerWidth <= 960 && window.innerWidth > 480;
var mobileOneRow = window.innerWidth <= 960 && rec.querySelector('.t1025__container_mobile-flex');
var mobileTwoItemsInRow = window.innerWidth <= 480 && rec.querySelector('.t1025 .mobile-two-columns');
if (mobileView) {
productInRow = 1;
}
if (tableView) {
productInRow = 2;
}
if (mobileTwoItemsInRow) {
productInRow = 2;
}
if (mobileOneRow) {
productInRow = 999999;
}
var count = 1;
var wrappersInRow = [];
Array.prototype.forEach.call(wrappers, function (wrapper) {
wrapper.style.height = 'auto';
if (productInRow === 1) {
wrapper.style.height = 'auto';
} else {
wrappersInRow.push(wrapper);
if (wrapper.offsetHeight > maxHeight) {
maxHeight = wrapper.offsetHeight;
}
Array.prototype.forEach.call(wrappersInRow, function (wrapperInRow) {
wrapperInRow.style.height = maxHeight + 'px';
});
if (count === productInRow) {
count = 0;
maxHeight = 0;
wrappersInRow = [];
}
count++;
}
});
}
function t1025__hoverZoom_init(recid) {
if (window.isMobile) {
return;
}
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var col = rec.querySelector('.t1025__col');
try {
if (!col || col.getAttribute('data-hover-zoom') !== 'yes') return;
var hoverScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = hoverScript;
script.onload = function () {
setTimeout(function () {
t_hoverZoom_init(recid);
}, 500);
};
script.onerror = function (error) {
console.log('Upload script error: ', error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t1025__updateLazyLoad(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var scrollContainer = rec.querySelector(' .t1025__container_mobile-flex');
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
if (scrollContainer && currentMode !== 'edit' && currentMode !== 'preview') {
scrollContainer.addEventListener(
'scroll',
t_throttle(function () {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
})
);
}
}
function t1025_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var openerLink = rec.querySelectorAll('[href^="#prodpopup"]');
var popup = rec.querySelector('.t-popup');
Array.prototype.forEach.call(openerLink, function (link) {
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
var productLinks = document.querySelectorAll('.r a[href$="#!/tproduct/' + recid + '-' + productLid + '"]');
Array.prototype.forEach.call(productLinks, function (productLink) {
productLink.addEventListener('click', function () {
if (rec.querySelector('[data-product-lid=' + productLid + ']')) {
var currentLink = productLink.querySelector('[href^="#prodpopup"]');
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
currentLink.dispatchEvent(event);
}
});
});
link.addEventListener('click', clickOnceHandler, false);
function clickOnceHandler(event) {
event.preventDefault();
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid + ' #t1025__product-' + productLid + '');
});
link.removeEventListener('click', clickOnceHandler, false);
}
link.addEventListener('click', showPopupHandler, false);
function showPopupHandler(event) {
event.preventDefault();
if (
event.target.classList.contains('t1002__addBtn') ||
event.target.parentNode.classList.contains('t1002__addBtn')
) {
return;
}
t1025_showPopup(recid);
var product = link.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
var allProducts = popup.querySelectorAll('.js-product');
Array.prototype.forEach.call(allProducts, function (product) {
product.style.display = 'none';
});
var productFull = popup.querySelector('.js-product[data-product-lid="' + productLid + '"]');
productFull.style.display = 'block';
var analitics = popup.getAttribute('data-track-popup');
if (analitics && productFull && window.Tilda) {
var productName = productFull.querySelector('.js-product-name');
if (productName) {
var virtualTitle = productName.textContent;
if (!virtualTitle) {
virtualTitle = 'prod' + productLid;
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
var currentUrl = window.location.href;
if (currentUrl.indexOf('#!/tproduct/') === -1 && currentUrl.indexOf('%23!/tproduct/') === -1) {
if (typeof history.replaceState !== 'undefined') {
window.history.replaceState(
'',
'',
window.location.href + '#!/tproduct/' + recid + '-' + productLid
);
}
}
t1025_updateSlider(recid + ' #t1025__product-' + productLid);
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
});
if (document.querySelectorAll('#record' + recid).length === 0) {
t1025_checkUrl(recid);
}
if (popup && popup.hasAttribute('data-fixed-button')) {
t1025_fixedPopupButton(recid);
}
}
function t1025_checkUrl(recid) {
// Если URL уже обработан другим блоком, пропускаем
if (window.catalogUrlProcessed) return;
var currentUrl = window.location.href;
var tprodIndex =
(currentUrl.indexOf('#!/tproduct/') + 1 ||
currentUrl.indexOf('%23!/tproduct/') + 1 ||
currentUrl.indexOf('#%21%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('#!%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('%23%21%2Ftproduct%2F') + 1) - 1;
if (tprodIndex !== -1) {
var currentUrl = currentUrl.substring(tprodIndex, currentUrl.length);
var curProdLid = currentUrl.substring(currentUrl.indexOf('-') + 1, currentUrl.length);
if (curProdLid) {
var curProdLidMatch = curProdLid.match(/([0-9]+)/g);
if (curProdLidMatch) {
curProdLid = curProdLidMatch[0];
}
}
if (currentUrl.indexOf(recid) === -1) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (currentUrl.indexOf(recid) !== 0 && rec.querySelector('[data-product-lid="' + curProdLid + '"]')) {
var currentLink = rec.querySelector('[data-product-lid="' + curProdLid + '"] [href^="#prodpopup"]');
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
if (currentLink) {
currentLink.dispatchEvent(event);
}
if (typeof rec.scrollIntoView === 'function') {
rec.scrollIntoView({ block: 'start' });
}
window.catalogUrlProcessed = true;
}
}
}
function t1025_updateSlider(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft) || 0;
var paddingRight = parseInt(slider.style.paddingRight) || 0;
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var position = parseFloat(sliderWrapper.getAttribute('data-slider-pos'));
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
function t1025_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_triggerEvent(popup, t1025_POPUP_SHOWED_EVENT_NAME);
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 100);
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t1025_closePopup(body, popup);
}
});
var closeButtons = rec.querySelectorAll('.t-popup__close, .t1025__close-text');
Array.prototype.forEach.call(closeButtons, function (button) {
button.addEventListener('click', function () {
t1025_closePopup(body, popup);
});
});
document.addEventListener('keydown', function (event) {
var isGalleryShowedOldLib = document.body.classList.contains('t-zoomer__show');
if (isGalleryShowedOldLib) return;
var isGalleryShowedNewLib = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowedNewLib) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (popup && popup.classList.contains('t-popup_show')) {
if (event.keyCode === 27) {
t1025_closePopup(body, popup);
}
}
});
if (window.isSafari) {
setTimeout(function () {
popup.scrollTop = 1;
});
}
}
function t1025_closePopup(body, popup) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
popup.classList.remove('t-popup_show');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tproduct/');
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove < 0) {
indexToRemove = currentUrl.indexOf('%23!/tproduct/');
}
currentUrl = currentUrl.substring(0, indexToRemove);
setTimeout(function () {
popup.scrollTop = 0;
popup.style.display = 'none';
if (typeof history.replaceState !== 'undefined') {
window.history.replaceState('', '', currentUrl);
}
}, 300);
t_triggerEvent(popup, t1025_POPUP_CLOSED_EVENT_NAME);
}
function t1025_fixedPopupButton(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var MOBILE_MAX_WIDTH = 560;
var popup = rec.querySelector('.t-popup');
var popupContainer = popup.querySelector('.t-popup__container');
var btnWrappers = rec.querySelectorAll('.t1025__btn-wrapper');
Array.prototype.forEach.call(btnWrappers, function (el) {
el.classList.add('t1025__btn-wrapper-fixed');
});
function addStyle() {
popupContainer.style.paddingBottom = '90px';
// убираем transform чтобы блок не влиял на position: fixed у детей
// инлайн important можно добавить только так
popupContainer.style.cssText += ';transform:none !important;';
}
function resetStyle() {
popupContainer.style.paddingBottom = '';
popupContainer.style.transform = '';
}
function handleResize() {
if (window.innerWidth > MOBILE_MAX_WIDTH) {
resetStyle();
return;
}
addStyle();
}
if (window.isMobile) {
window.addEventListener('orientationchange', handleResize);
}
popup.addEventListener(t1025_POPUP_SHOWED_EVENT_NAME, function () {
setTimeout(function () {
handleResize();
});
});
popup.addEventListener(t1025_POPUP_CLOSED_EVENT_NAME, function () {
resetStyle();
});
window.addEventListener('resize', handleResize);
}
function t1029_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t1032_init(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var orderLinks = rec.querySelectorAll('a[href^="#order"]');
if (orderLinks.length !== 0) {
Array.prototype.forEach.call(orderLinks, function (orderLink) {
orderLink.addEventListener('click', function () {
var linkElement = this;
var payBoxElement = document.querySelector('.js-payment-systembox');
if (!payBoxElement) {
return;
}
t1032_setCoordinateToPaymentBox(linkElement, payBoxElement);
payBoxElement.style.marginTop = '0';
payBoxElement.style.marginLeft = '0';
window.addEventListener('resize', function () {
if (getComputedStyle(payBoxElement, null).display === 'block' && linkElement) {
t1032_setCoordinateToPaymentBox(linkElement, payBoxElement);
}
});
});
});
}
}
function t1032_setCoordinateToPaymentBox(linkElement, payBoxElement) {
var oldTopCoord = 0;
var newTopCoord = 0;
var linkTopOffset = linkElement.getBoundingClientRect().top + window.pageYOffset;
var linkLeftOffset = linkElement.getBoundingClientRect().left + window.pageXOffset;
var offsetParent = linkElement.closest('.t1032__col');
var offsetParentDimensions = t1032_getElementDimension(offsetParent);
var payBoxDimensions = t1032_getElementDimension(payBoxElement);
var paddingParent = offsetParentDimensions.paddingLeft + offsetParentDimensions.paddingRight;
var top = linkTopOffset + offsetParentDimensions.height - payBoxDimensions.height;
var left = linkLeftOffset + (offsetParentDimensions.width - paddingParent) / 2 - payBoxDimensions.width / 2;
oldTopCoord = payBoxElement.style.top;
payBoxElement.style.top = top + 'px';
payBoxElement.style.left = left + 'px';
newTopCoord = payBoxElement.style.top;
var difference = 21;
if (parseInt(oldTopCoord, 10) - parseInt(newTopCoord, 10) === difference) {
payBoxElement.style.top = top + difference + 'px';
}
/* Polyfill: Element.matches */
if (!Element.prototype.matches) {
Element.prototype.matches =
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector ||
Element.prototype.mozMatchesSelector ||
Element.prototype.webkitMatchesSelector ||
Element.prototype.oMatchesSelector;
}
/* Polyfill: Element.closest */
if (!Element.prototype.closest) {
Element.prototype.closest = function (s) {
var el = this;
while (el && el.nodeType === 1) {
if (Element.prototype.matches.call(el, s)) {
return el;
}
el = el.parentElement || el.parentNode;
}
return null;
};
}
}
function t1032_unifyHeights(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var container = rec.querySelector(' .t1032 .t-container');
if (!container) return;
var allRows = container.querySelectorAll('.t1032__row');
for (var i = 0; i < allRows.length; i++) {
var allTitles = allRows[i].querySelectorAll('.t-card__title');
var allDescriptions = allRows[i].querySelectorAll('.t-card__descr');
var allWrappers = allRows[i].querySelectorAll('.t1032__wrapper');
var highestTitle = 0;
var highestDescription = 0;
var highestWrapper = 0;
Array.prototype.forEach.call(allTitles, function (title) {
title.style.height = 'auto';
var titleDimension = t1032_getElementDimension(title);
if (titleDimension.height > highestTitle) {
highestTitle = titleDimension.height;
}
});
if (window.innerWidth >= 960 && t1032_isVisible(container)) {
Array.prototype.forEach.call(allTitles, function (title) {
title.style.height = highestTitle + 'px';
});
} else {
Array.prototype.forEach.call(allTitles, function (title) {
title.style.height = 'auto';
});
}
Array.prototype.forEach.call(allDescriptions, function (description) {
description.style.height = 'auto';
var descriptionDimension = t1032_getElementDimension(description);
if (descriptionDimension.height > highestDescription) {
highestDescription = descriptionDimension.height;
}
});
if (window.innerWidth >= 960 && t1032_isVisible(container)) {
Array.prototype.forEach.call(allDescriptions, function (description) {
description.style.height = highestDescription + 'px';
});
} else {
Array.prototype.forEach.call(allDescriptions, function (description) {
description.style.height = 'auto';
});
}
Array.prototype.forEach.call(allWrappers, function (wrapper) {
wrapper.style.height = 'auto';
var wrapperDimension = t1032_getElementDimension(wrapper);
if (wrapperDimension.height > highestWrapper) {
highestWrapper = wrapperDimension.height;
}
});
if (window.innerWidth >= 960 && t1032_isVisible(container)) {
Array.prototype.forEach.call(allWrappers, function (wrapper) {
wrapper.style.height = highestWrapper + 'px';
});
} else {
Array.prototype.forEach.call(allWrappers, function (wrapper) {
wrapper.style.height = 'auto';
});
}
}
}
function t1032_getElementDimension(element) {
var zeroes = {
height: 0,
width: 0,
paddingLeft: 0,
paddingRight: 0,
};
if (!element) return zeroes;
var elStyle = getComputedStyle(element);
if (!elStyle) return zeroes;
return {
height: parseFloat(elStyle.height.replace('px', ''), 10),
width: parseFloat(elStyle.width.replace('px', ''), 10),
paddingLeft: parseFloat(elStyle.paddingLeft.replace('px', ''), 10),
paddingRight: parseFloat(elStyle.paddingRight.replace('px', ''), 10),
};
}
function t1032_isVisible(element) {
return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);
}
/* t1035 */
function t1035__init(recId) {
var rec = document.querySelector('#rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1035');
// Превью видео
var thumbContainer = container.querySelector('.t1035__thumb-container');
var thumbWrapper = thumbContainer.querySelector('.t1035__thumb-wrapper');
var thumbType = thumbWrapper.getAttribute('data-video-type');
var thumbId = thumbWrapper.getAttribute('data-video-id');
var thumbImage = thumbWrapper.getAttribute('data-video-image');
// Основное видео
var videoContainer = container.querySelector('.t1035__video-container');
var videoWrapper = videoContainer.querySelector('.t1035__video-wrapper');
var videoType = videoWrapper.getAttribute('data-video-type');
var videoId = videoWrapper.getAttribute('data-video-id');
// Кнопки управление
var thumbCloseBtn = thumbContainer.querySelector('.t1035__thumb-close-btn');
var videoCloseBtn = videoContainer.querySelector('.t1035__video-close-btn');
window.t1035 = {
thumbWidth: '',
thumbHeight: '',
videoWidth: '',
videoHeight: '',
escapeKeydown: '',
changeThumbRutubeState: '',
changeVideoRutubeState: '',
changeThumbVimeoState: '',
};
function t1035__initThumbPlayer() {
if (thumbType && (thumbId || thumbImage)) {
if (thumbType === 'img') {
t1035__addVideo(thumbWrapper, 't1035__thumb');
t1035__setThumbVideo(rec, thumbContainer, thumbType);
} else if (thumbType) {
t1035__createPlayer(thumbWrapper, 't1035__thumb').then(function (player) {
var thumbVideo = player.videoEl;
if (player.videoType === 'vimeo') {
t1035__handleVimeoControl(player);
} else if (player.videoType === 'rutube') {
t1035__handleRutubeControl(thumbWrapper, player);
} else {
player.mute();
player.play();
}
if (thumbType === 'mp4') {
// отключаем: контекстное меню
if (!container.classList.contains('t1035_previewmode')) {
thumbVideo.addEventListener('contextmenu', function (event) {
event.preventDefault();
});
}
}
// a11y
if (videoType && videoId) {
thumbVideo.addEventListener('keydown', function (event) {
var key = event.key || event.keyCode;
if (['Enter', 13, ' ', 32].indexOf(key) !== -1) {
t1035__openWidget(rec, container, thumbWrapper, videoWrapper);
}
});
}
t1035__setThumbVideo(rec, thumbContainer, thumbType);
});
}
}
}
if (document.readyState === 'complete') {
t1035__initThumbPlayer();
} else {
window.addEventListener('load', t1035__initThumbPlayer, { once: true });
}
if (videoType && videoId) {
videoContainer.style.removeProperty('display');
}
t1035__initDelayedVisibility(container, thumbCloseBtn);
if (!container.classList.contains('t1035_previewmode')) {
thumbCloseBtn.addEventListener('click', function () {
container.style.display = 'none';
});
}
if (window.isMobile || container.classList.contains('t1035_previewmode')) {
thumbCloseBtn.style.opacity = 1;
videoCloseBtn.style.opacity = 1;
}
videoCloseBtn.addEventListener('click', function () {
t1035__closeWidget(container, thumbWrapper, videoWrapper);
});
}
function t1035__initDelayedVisibility(container, thumbCloseBtn) {
var storageItem = container.getAttribute('data-storage-item');
var delta = container.getAttribute('data-storage-delta') * 86400;
var today = Math.floor(Date.now() / 1000);
var lastOpen = null;
var currentDelta;
try {
lastOpen = localStorage.getItem(storageItem);
currentDelta = today - lastOpen;
} catch (e) {
console.log('Your web browser does not support localStorage.');
}
if (lastOpen === null || currentDelta >= delta) {
container.classList.remove('t1035_closed');
}
if (!container.classList.contains('t1035_previewmode')) {
thumbCloseBtn.addEventListener('click', function (event) {
container.classList.add('t1035_closed');
if (delta) {
try {
localStorage.setItem(storageItem, Math.floor(Date.now() / 1000));
} catch (e) {
console.log('Your web browser does not support localStorage.');
}
}
event.preventDefault();
});
}
}
function t1035__setThumbVideo(rec, thumbContainer, type) {
var container = rec.querySelector('.t1035');
var thumbWrapper = thumbContainer.querySelector('.t1035__thumb-wrapper');
var thumbVideo = thumbContainer.querySelector('.t1035__thumb');
var aspectRatio = thumbWrapper.style.aspectRatio;
container.style.removeProperty('display');
thumbContainer.style.removeProperty('display');
if (!aspectRatio) {
// если пользователь не задал соотношение сторон
if (type === 'youtube' || type === 'youtube-shorts') {
aspectRatio = type === 'youtube-shorts' ? 9 / 16 : 16 / 9;
thumbWrapper.style.aspectRatio = type === 'youtube-shorts' ? '9/16' : '16/9';
} else if (type === 'img') {
aspectRatio = 3 / 4;
thumbWrapper.style.aspectRatio = '3/4';
} else if (
type === 'vkvideo' ||
type === 'rutube' ||
type === 'kinescope' ||
type === 'boomstream' ||
type === 'vimeo'
) {
aspectRatio = 16 / 9;
thumbWrapper.style.aspectRatio = '16/9';
} else {
aspectRatio = thumbVideo.videoWidth / thumbVideo.videoHeight;
thumbWrapper.style.aspectRatio = thumbVideo.videoWidth + '/' + thumbVideo.videoHeight;
}
} else {
// если пользователь задал соотношение сторон
var operands = aspectRatio.split('/');
if (operands[0] && operands[1]) {
aspectRatio = parseFloat(operands[0]) / parseFloat(operands[1]);
}
}
t1035__setThumbSize(thumbWrapper, thumbVideo, type, aspectRatio);
var videoWrapper = rec.querySelector('.t1035__video-wrapper');
var videoType = videoWrapper.getAttribute('data-video-type');
var videoId = videoWrapper.getAttribute('data-video-id');
if (videoType && videoId) {
thumbWrapper.addEventListener('click', function () {
t1035__openWidget(rec, container, thumbWrapper, videoWrapper);
});
}
}
function t1035__setThumbSize(thumbWrapper, thumbVideo, type, aspectRatio) {
var maxSize = '125px';
var isImageThumb = type === 'img';
var isSquare = Math.abs(aspectRatio - 1) <= 0.1;
var isVertical = aspectRatio < 0.9;
var isHorizontal = aspectRatio > 1.1;
// устанавливаем ограничение для превью
if (isSquare) {
if (isImageThumb) {
thumbWrapper.style.width = maxSize;
thumbWrapper.style.maxWidth = t1035__setThumbSizeStyle(maxSize, 'vw');
} else {
thumbWrapper.style.maxWidth = maxSize;
thumbWrapper.style.maxHeight = maxSize;
}
} else if (isHorizontal) {
if (isImageThumb) {
thumbWrapper.style.height = maxSize;
thumbWrapper.style.maxHeight = t1035__setThumbSizeStyle(maxSize, 'vh');
} else {
thumbWrapper.style.maxWidth = '';
thumbWrapper.style.maxHeight = maxSize;
}
} else if (isVertical) {
if (isImageThumb) {
thumbWrapper.style.width = maxSize;
thumbWrapper.style.maxWidth = t1035__setThumbSizeStyle(maxSize, 'vw');
} else {
thumbWrapper.style.maxWidth = maxSize;
thumbWrapper.style.maxHeight = '';
}
}
// запоминаем размеры превью
var thumbVideoStyles = window.getComputedStyle(thumbVideo);
window.t1035.thumbWidth = thumbVideoStyles.getPropertyValue('width');
window.t1035.thumbHeight = thumbVideoStyles.getPropertyValue('height');
}
function t1035__setThumbSizeStyle(size, units) {
return 'min(' + size + ', calc(100' + units + ' - 50px))';
}
function t1035__setVideoSize(videoWrapper, video, videoType) {
if (!video) return;
var videoWidth = video.videoWidth;
var videoHeight = video.videoHeight;
var size560 = 560;
var size315 = 315;
var size280 = 280;
if (!videoWidth && !videoHeight) {
if (videoType !== 'youtube-shorts' && videoType !== 'rutube') {
videoWidth = size560;
videoHeight = size315;
} else if (videoType === 'rutube') {
videoWidth = size560;
videoHeight = size280;
}
}
var customRatioValue = videoWrapper.getAttribute('data-video-ratio');
var videoRatio = customRatioValue ? customRatioValue.replace('_', '/') : videoWidth + '/' + videoHeight;
var videoRatioParts = videoRatio.split('/');
var videoRatioWidth = parseInt(videoRatioParts[0], 10);
var videoRatioHeight = parseInt(videoRatioParts[1], 10);
videoWrapper.style.aspectRatio = videoRatio;
videoWrapper.style.width = videoWidth + 'px';
videoWrapper.style.height = videoHeight + 'px';
// 315x560
var aspectRatio = customRatioValue ? videoRatioWidth / videoRatioHeight : videoWidth / videoHeight;
var isSquare = Math.abs(aspectRatio - 1) <= 0.1;
var isVertical = aspectRatio < 0.9;
var isHorizontal = aspectRatio > 1.1;
if (isSquare) {
videoWrapper.style.maxWidth = t1035__setVideoSizeStyle(size560, 'vw');
videoWrapper.style.maxHeight = t1035__setVideoSizeStyle(size560, 'vh');
videoWrapper.style.removeProperty('width');
} else if (isHorizontal) {
videoWrapper.style.maxWidth = t1035__setVideoSizeStyle(videoWidth, 'vw');
videoWrapper.style.maxHeight = t1035__setVideoSizeStyle(videoHeight, 'vh');
videoWrapper.style.removeProperty('width');
} else if (isVertical || videoType === 'youtube-shorts') {
videoWrapper.style.maxWidth = t1035__setVideoSizeStyle(size315, 'vw');
videoWrapper.style.maxHeight = t1035__setVideoSizeStyle(size560, 'vh');
videoWrapper.style.removeProperty('height');
}
}
function t1035__setVideoSizeStyle(size, units) {
return 'min(' + size + 'px, calc(100' + units + ' - 50px))';
}
function t1035__openWidget(rec, container, thumbWrapper, videoWrapper) {
var videoPlayBtn = container.querySelector('.t1035__video-play-btn');
var videoCloseBtn = container.querySelector('.t1035__video-close-btn');
var analitics = container.getAttribute('data-track-popup');
var recId = rec.id.replace('rec', '');
var hook = 'TildaVideoWidget' + recId;
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, hook);
}
// Приводим в начальное состояние
if (window.t1035.videoWidth) {
videoWrapper.style.width = window.t1035.videoWidth;
}
if (window.t1035.videoHeight) {
videoWrapper.style.height = window.t1035.videoHeight;
}
t1035__stopThumbPlayer(thumbWrapper);
t1035__startVideoPlayer(container, videoWrapper, videoPlayBtn);
videoPlayBtn.style.display = 'none';
container.classList.add('t1035__container--is_opened');
videoCloseBtn.style.removeProperty('display');
t1035__showButtonAfterDelay(container);
window.t1035.escapeKeydown = t1035__escapeKeydown.bind(null, container, thumbWrapper, videoWrapper);
document.addEventListener('keydown', window.t1035.escapeKeydown);
}
/**
* Отображение кнопки по таймеру
*
* @param {HTMLDivElement} container - контейнер блока
*/
function t1035__showButtonAfterDelay(container) {
var videoActionBtn = container.querySelector('.t1035__button-container');
if (videoActionBtn) {
var timer = videoActionBtn.getAttribute('data-timer') || '0.3';
if (timer) {
timer = parseFloat(timer) * 1000;
var timerId = setTimeout(function () {
videoActionBtn.style.removeProperty('display');
clearTimeout(timerId);
}, timer);
}
}
}
/**
* Остановка превью видео
*
* @param {HTMLDivElement} thumbWrapper - обертка превью видео
*/
function t1035__stopThumbPlayer(thumbWrapper) {
var thumbPlayer = t1035__getPlayer(thumbWrapper);
if (thumbPlayer) {
thumbPlayer.pause();
// Формат mp4 сбрасываем к началу
if (thumbPlayer.videoType === 'mp4') {
thumbPlayer.start();
} else if (thumbPlayer.videoType === 'rutube') {
window.removeEventListener('message', window.t1035.changeThumbRutubeState);
window.t1035.changeThumbRutubeState = '';
}
}
}
/**
* Запускаем основное видео, если плеер был ранее установлен, иначе загружаем его и запускаем основное видео
*
* @param {HTMLDivElement} container - контейнер блока
* @param {HTMLDivElement} videoWrapper - контейнер основного видео
* @param {HTMLButtonElement} videoPlayBtn - кнока play основного видео
*/
function t1035__startVideoPlayer(container, videoWrapper, videoPlayBtn) {
var videoPlayer = t1035__getPlayer(videoWrapper);
if (videoPlayer) {
videoPlayer.start();
videoPlayer.unMute();
videoPlayer.play();
} else {
t1035__createPlayer(videoWrapper, 't1035__video').then(function (player) {
var videoEl = player.videoEl;
if (player.videoType === 'vimeo') {
t1035__handleVimeoControl(player, true);
} else if (player.videoType === 'rutube') {
var videoId = videoWrapper.getAttribute('data-video-id');
window.t1035.changeVideoRutubeState = t1035__changePostMessageState.bind(null, function (message) {
if (message.type === 'player:ready' && message.data && message.data.videoId === videoId) {
window.removeEventListener('message', window.t1035.changeVideoRutubeState);
window.t1035.changeVideoRutubeState = '';
player.start();
player.unMute();
player.play();
}
});
player.state();
window.addEventListener('message', window.t1035.changeVideoRutubeState);
} else {
player.unMute();
player.play();
}
t1035__setVideoSize(videoWrapper, videoEl, player.videoType);
if (player.videoType === 'mp4') {
// fullscreen на двойной клик
videoWrapper.addEventListener('dblclick', function () {
try {
videoEl.requestFullscreen();
} catch (error) {
console.error('An error occurred while trying to request fullscreen: ', error);
}
});
// добавить controls в fullscreen
// и убрать оформление мешающиее полноэкранному просмотру
var borderWidth = videoWrapper.style.borderWidth;
var borderRadius = videoWrapper.style.borderRadius;
document.addEventListener('fullscreenchange', function () {
if (videoEl.requestFullscreen) {
if (document.fullscreenElement || document.webkitFullscreenElement) {
videoEl.setAttribute('controls', 'controls');
videoEl.style.objectFit = 'contain';
videoWrapper.style.removeProperty('border-width');
videoWrapper.style.removeProperty('border-radius');
} else {
videoEl.removeAttribute('controls');
videoEl.style.removeProperty('object-fit');
videoWrapper.style.borderWidth = borderWidth;
videoWrapper.style.borderRadius = borderRadius;
}
}
});
if (!container.classList.contains('t1035_previewmode')) {
// отключаем: контекстное меню
videoEl.addEventListener('contextmenu', function (event) {
event.preventDefault();
});
}
videoWrapper.addEventListener('click', function () {
t1035__swapPlayPause(player, videoPlayBtn);
});
// a11y
[videoWrapper, videoPlayBtn].forEach(function (element) {
element.addEventListener('keydown', function (event) {
var key = event.key || event.keyCode;
if (['Enter', 13, ' ', 32].indexOf(key) !== -1) {
t1035__swapPlayPause(player, videoPlayBtn);
}
});
});
// ставим на паузу при выходе со страницы
window.addEventListener('blur', function () {
player.pause();
videoPlayBtn.style.display = 'block';
});
}
if (!window.t1035.videoWidth || !window.t1035.videoHeight) {
var videoStyles = window.getComputedStyle(videoEl);
if (!window.t1035.videoWidth) {
window.t1035.videoWidth = videoStyles.getPropertyValue('width');
if (window.t1035.videoWidth === '0px') window.t1035.videoWidth = '315px';
videoWrapper.style.width = window.t1035.videoWidth;
}
if (!window.t1035.videoHeight) {
var aspectRatio = videoWrapper.getAttribute('data-video-ratio');
var videoHeightWithRatio = t1035__getHeightWithAspectRatio(window.t1035.videoWidth, aspectRatio);
if (videoHeightWithRatio) {
window.t1035.videoHeight = videoHeightWithRatio + 'px';
} else {
window.t1035.videoHeight = videoStyles.getPropertyValue('height');
if (window.t1035.videoHeight === '0px') window.t1035.videoHeight = '560px';
}
videoWrapper.style.height = window.t1035.videoHeight;
}
}
});
}
}
/**
* Вычисление высоты видео по заданной ширине и соотношению сторон
*
* @param {number|string} width - ширина видео - может приходить в виде строки с px, например "560px"
* @param {string} aspectRatio - соотношение сторон в формате "ширина_высота", приходят всегда в виде строки, например "16_9"
* @returns {number} - высота видео
*/
function t1035__getHeightWithAspectRatio(width, aspectRatio) {
if (!width || !aspectRatio) return 0;
var operands = aspectRatio.split('_');
var ratioWidth = operands[0];
var ratioHeight = operands[1];
if (!ratioWidth || !ratioHeight) return 0;
var videoHeight = (parseFloat(width) * ratioHeight) / ratioWidth;
return videoHeight || 0;
}
/**
* Закрытие и остановка основного видео, запуск превью видео
*
* @param {HTMLDivElement} container - контейнер блока
* @param {HTMLDivElement} thumbWrapper - контейнер превью видео
* @param {HTMLDivElement} videoWrapper - контейнер основного видео
*/
function t1035__closeWidget(container, thumbWrapper, videoWrapper) {
var videoPlayBtn = container.querySelector('.t1035__video-play-btn');
var videoActionBtn = container.querySelector('.t1035__button-container');
var videoCloseBtn = container.querySelector('.t1035__video-close-btn');
var thumbPlayer = t1035__getPlayer(thumbWrapper);
var videoPlayer = t1035__getPlayer(videoWrapper);
if (videoActionBtn) videoActionBtn.style.display = 'none';
videoCloseBtn.style.display = 'none';
videoPlayBtn.style.display = 'none';
document.removeEventListener('keydown', window.t1035.escapeKeydown);
window.t1035.escapeKeydown = '';
videoWrapper.classList.add('t1035__video-wrapper--animate');
if (videoPlayer) {
videoPlayer.mute();
if (videoPlayer.videoType === 'mp4') {
videoWrapper.style.width = window.t1035.thumbWidth;
videoWrapper.style.height = window.t1035.thumbHeight;
}
}
var timerId = setTimeout(function () {
container.classList.remove('t1035__container--is_opened');
videoWrapper.classList.remove('t1035__video-wrapper--animate');
if (videoPlayer) {
videoPlayer.pause();
}
if (thumbPlayer) {
if (thumbPlayer.videoType === 'rutube') {
t1035__handleRutubeControl(thumbWrapper, thumbPlayer);
} else {
thumbPlayer.play();
}
}
clearTimeout(timerId);
}, 140);
}
// a11y
function t1035__escapeKeydown(container, thumbWrapper, videoWrapper, event) {
var key = event.code || event.key;
if (['Escape', 27].indexOf(key) !== -1) {
var isGalleryShowed = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowed) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (isPopupShowed) return;
t1035__closeWidget(container, thumbWrapper, videoWrapper);
}
}
// переключение play в pause
function t1035__swapPlayPause(videoPlayer, videoPlayBtn) {
if (document.fullscreenElement || document.webkitFullscreenElement) return;
if (videoPlayer.state()) {
videoPlayer.play();
videoPlayBtn.style.display = 'none';
} else {
videoPlayer.pause();
videoPlayBtn.style.display = 'block';
}
}
/**
* Добавление разметки видео
*
* @param {HTMLDivElement} videoWrapper контейнер видео
* @param {string} className - класс превью или основного видео
*/
function t1035__addVideo(videoWrapper, className) {
var videoType = videoWrapper.getAttribute('data-video-type');
var videoId = videoWrapper.getAttribute('data-video-id');
var videoHash = videoWrapper.getAttribute('data-video-hash');
var videoImage = videoWrapper.getAttribute('data-video-image');
var videoClassName = className + ' ' + className + '_' + videoType;
var videoSrc = '';
var videoHashQuery = '';
var isThumbVideo = className === 't1035__thumb';
videoId = videoId ? videoId.trim() : '';
videoHash = videoHash ? videoHash.trim() : '';
if (videoType === 'youtube' || videoType === 'youtube-shorts') {
if (videoType === 'youtube-shorts') {
videoClassName += ' ' + className + '_youtube';
}
videoWrapper.insertAdjacentHTML('afterbegin', '
');
} else if (videoType === 'vimeo') {
var regExp =
/(?:https?:\/\/)?(?:www\.)?(?:vimeo\.com\/|player\.vimeo\.com\/video\/|api\.vimeo\.com\/videos\/)?(\d+)/;
var match = videoId.match(regExp);
videoId = match && match[1] ? match[1] : videoId;
videoHashQuery = '?autoplay=1';
videoHashQuery += isThumbVideo ? '&controls=0&loop=1' : '';
videoHashQuery += videoHash ? '&h=' + videoHash : '';
videoSrc = 'https://player.vimeo.com/video/' + videoId + videoHashQuery;
videoWrapper.insertAdjacentHTML(
'afterbegin',
'
'
);
} else if (videoType === 'rutube') {
videoHashQuery = '?autoplay=1';
videoHashQuery += isThumbVideo ? '&loop=1&autostartmute=1' : '';
videoHashQuery += videoHash ? '&p=' + videoHash : '';
videoSrc = 'https://rutube.ru/embed/' + videoId + videoHashQuery;
videoWrapper.insertAdjacentHTML(
'afterbegin',
'
'
);
} else if (videoType === 'kinescope') {
var rec = videoWrapper.closest('.t-rec');
var recId = rec.id.replace('rec', '');
var kinescopeId = 'kinescope';
kinescopeId += isThumbVideo ? 'thumb' : 'video';
kinescopeId += recId;
kinescopeId += '_' + Math.floor(Math.random() * 101);
videoSrc = 'https://kinescope.io/embed/' + videoId;
videoWrapper.insertAdjacentHTML(
'afterbegin',
'
'
);
} else if (videoType === 'vkvideo') {
var regExp = /(?:video|video_ext\.php\?oid=|clip=?|)(-?\d+)_(\d+)|oid=(-?\d+)&id=(\d+)(?:.*?hash=([a-f0-9]+))?/;
var match = videoId.match(regExp);
var oid = '';
var id = '';
if (match) {
oid = match[1] || match[3];
id = match[2] || match[4];
if (!videoHash && match[5]) videoHash = match[5];
}
videoHashQuery = '?oid=' + oid + '&id=' + id;
videoHashQuery += videoHash ? '&hash=' + videoHash : '';
videoHashQuery += isThumbVideo ? '&loop=1' : '';
videoHashQuery += '&autoplay=1&js_api=1';
videoSrc = 'https://vkvideo.ru/video_ext.php' + videoHashQuery;
videoWrapper.insertAdjacentHTML(
'afterbegin',
'
'
);
} else if (videoType === 'boomstream') {
videoHashQuery = '&autostart=1';
videoHashQuery += isThumbVideo ? '&loop=1' : '';
if (videoId.indexOf('?') === -1) videoHashQuery = videoHashQuery.replace('&', '?');
videoSrc = videoId + videoHashQuery;
videoWrapper.insertAdjacentHTML(
'afterbegin',
'
'
);
} else if (videoType === 'mp4') {
videoWrapper.insertAdjacentHTML(
'afterbegin',
'' +
'Your browser does not support the video tag.' +
' '
);
} else if (videoType === 'img') {
videoWrapper.insertAdjacentHTML(
'afterbegin',
'' +
' ' +
'
'
);
}
}
function t1035__getPlayer(videoWrapper) {
var player = videoWrapper.TildaVideoPlayer;
return player || null;
}
function t1035__createPlayer(videoWrapper, className) {
if (videoWrapper.TildaVideoPlayer) {
return Promise.resolve(videoWrapper.TildaVideoPlayer);
}
var videoType = videoWrapper.getAttribute('data-video-type');
// Создаем видео
t1035__addVideo(videoWrapper, className);
if (videoType === 'mp4') {
return t1035__initPlayerHtmlVideo(videoWrapper);
} else if (videoType === 'youtube' || videoType === 'youtube-shorts') {
return t1035__initPlayerYoutube(videoWrapper);
} else if (videoType === 'vimeo') {
return t1035__initPlayerVimeo(videoWrapper);
} else if (videoType === 'rutube') {
return t1035__initPlayerRutube(videoWrapper);
} else if (videoType === 'kinescope') {
return t1035__initPlayerKinescope(videoWrapper);
} else if (videoType === 'vkvideo') {
return t1035__initPlayerVKvideo(videoWrapper);
} else if (videoType === 'boomstream') {
return t1035__initPlayerBoomstream(videoWrapper);
}
return Promise.reject(console.warn('unsupported video type:', videoType));
}
function t1035__changePostMessageState(callback, event) {
if (event && event.data && typeof event.data === 'string') {
var message = JSON.parse(event.data);
if (callback) callback(message);
}
}
function t1035__initPlayerHtmlVideo(videoWrapper) {
var videoType = 'mp4';
return new Promise(function (resolve, reject) {
var video = videoWrapper.querySelector('video');
if (!video) return reject(new Error(videoType + ': Video Element not Found'));
video.addEventListener('loadedmetadata', function () {
var player = {
videoType,
videoEl: video,
pause: function () {
return video.pause();
},
play: function () {
return video.play();
},
mute: function () {
return (video.muted = true);
},
unMute: function () {
return (video.muted = false);
},
start: function () {
return (video.currentTime = 0);
},
state: function () {
return video.paused;
},
};
videoWrapper.TildaVideoPlayer = player;
return resolve(player);
});
video.preload = 'metadata';
});
}
function t1035__initPlayerYoutube(videoWrapper) {
var videoId = videoWrapper.getAttribute('data-video-id');
var videoType = videoWrapper.getAttribute('data-video-type');
return new Promise(function (resolve, reject) {
var iframe = videoWrapper.querySelector('.t1035__iframe');
if (!iframe) return reject(new Error(videoType + ': IFrame Element not Found'));
t_onFuncLoad('t_loadJsFile', function () {
t_loadJsFile('https://www.youtube.com/iframe_api');
});
t_onFuncLoad('YT', function () {
// если плеера еще нет, то пробуем создать плеер еще раз через некоторое время
if (!YT.Player) {
return setTimeout(function () {
t1035__initPlayerYoutube(videoWrapper).then(resolve);
}, 300);
}
var isYoutbeShorts = videoType === 'youtube-shorts';
var youtubeWidth = isYoutbeShorts ? '315' : '560';
var youtubeHeight = isYoutbeShorts ? '560' : '315';
var params = {
origin: window.location.protocol + '//' + window.location.host,
loop: 1,
autoplay: 1,
mute: 1,
playsinline: 1,
controls: 0,
};
if (videoId) {
var regex = /start=(\d+)/;
var match = videoId.match(regex);
if (match) params.start = match[1];
if (videoId.indexOf('?') !== -1) videoId = videoId.split('?')[0];
}
params.playlist = videoId;
new YT.Player(iframe, {
videoId: videoId,
width: youtubeWidth,
height: youtubeHeight,
playerVars: params,
events: {
onReady: function (e) {
var YTplayer = e.target;
var player = {
videoType,
videoEl: videoWrapper.querySelector('.t1035__iframe'),
player: YTplayer,
pause: function () {
return YTplayer.pauseVideo();
},
play: function () {
return YTplayer.playVideo();
},
mute: function () {
return YTplayer.mute();
},
unMute: function () {
return YTplayer.unMute();
},
start: function () {
return YTplayer.seekTo(0);
},
state: function () {
return YTplayer.getPlayerState();
},
};
videoWrapper.TildaVideoPlayer = player;
return resolve(player);
},
},
});
});
});
}
function t1035__handleVimeoControl(player, isVideo) {
window.t1035.changeThumbVimeoState = t1035__changePostMessageState.bind(null, function (message) {
if (message && message.event === 'ready') {
window.removeEventListener('message', window.t1035.changeThumbVimeoState);
window.t1035.changeThumbVimeoState = '';
if (isVideo) {
player.start();
player.unMute();
} else {
player.mute();
}
player.play();
}
});
window.addEventListener('message', window.t1035.changeThumbVimeoState);
}
function t1035__initPlayerVimeo(videoWrapper) {
var videoType = 'vimeo';
function t1035__doVimeoCommand(iframe, command) {
if (!iframe || !iframe.contentWindow) return;
iframe.contentWindow.postMessage(JSON.stringify(command), '*');
}
return new Promise(function (resolve, reject) {
var iframe = videoWrapper.querySelector('iframe');
if (!iframe) return reject(new Error(videoType + ': IFrame Element not Found'));
var player = {
videoType,
videoEl: iframe,
pause: function () {
return t1035__doVimeoCommand(iframe, { method: 'pause', value: true });
},
play: function () {
return t1035__doVimeoCommand(iframe, { method: 'play', value: true });
},
mute: function () {
return t1035__doVimeoCommand(iframe, { method: 'setVolume', value: 0 });
},
unMute: function () {
return t1035__doVimeoCommand(iframe, { method: 'setVolume', value: 1 });
},
start: function () {
return t1035__doVimeoCommand(iframe, { method: 'seekTo', value: 0 });
},
state: function () {
return t1035__doVimeoCommand(iframe, { method: 'getPaused' });
},
};
videoWrapper.TildaVideoPlayer = player;
resolve(player);
});
}
function t1035__handleRutubeControl(thumbWrapper, player) {
var videoId = thumbWrapper.getAttribute('data-video-id');
window.t1035.changeThumbRutubeState = t1035__changePostMessageState.bind(null, function (message) {
if (message.data) {
if (message.type === 'player:ready' && message.data.videoId === videoId) {
player.play();
} else if (message.type === 'player:changeState' && message.data.state === 'stopped') {
player.start();
player.play();
}
}
});
player.state();
window.addEventListener('message', window.t1035.changeThumbRutubeState);
}
function t1035__initPlayerRutube(videoWrapper) {
var videoType = 'rutube';
function t1035__doRutubeCommand(iframe, command, data) {
if (!iframe || !iframe.contentWindow) return;
iframe.contentWindow.postMessage(
JSON.stringify({
type: 'player:' + command,
data: data,
}),
'*'
);
}
return new Promise(function (resolve, reject) {
var iframe = videoWrapper.querySelector('iframe');
if (!iframe) return reject(new Error(videoType + ': IFrame Element not Found'));
var player = {
videoType,
videoEl: iframe,
pause: function () {
return t1035__doRutubeCommand(iframe, 'pause', {});
},
play: function () {
return t1035__doRutubeCommand(iframe, 'play', {});
},
mute: function () {
return t1035__doRutubeCommand(iframe, 'mute', {});
},
unMute: function () {
return t1035__doRutubeCommand(iframe, 'unMute', {});
},
start: function () {
return t1035__doRutubeCommand(iframe, 'setCurrentTime', { time: 0 });
},
state: function () {
t1035__doRutubeCommand(iframe, 'changeState', {});
},
};
videoWrapper.TildaVideoPlayer = player;
return resolve(player);
});
}
function t1035__initPlayerKinescope(videoWrapper) {
var videoType = 'kinescope';
return new Promise(function (resolve, reject) {
var iframe = videoWrapper.querySelector('iframe');
if (!iframe) return reject(new Error(videoType + ': IFrame Element not Found'));
t_onFuncLoad('t_loadJsFile', function () {
t_loadJsFile('https://player.kinescope.io/latest/iframe.player.js');
});
t_onFuncLoad('Kinescope', function () {
var id = iframe.id;
var url = iframe.src;
Kinescope.IframePlayer.create(id, {
url,
behavior: {
loop: true,
autoPlay: true,
},
}).then(function (KinescopePlayer) {
var player = {
videoType,
videoEl: iframe,
player: KinescopePlayer,
pause: function () {
return KinescopePlayer.pause();
},
play: function () {
return KinescopePlayer.play();
},
mute: function () {
return KinescopePlayer.mute();
},
unMute: function () {
return KinescopePlayer.unmute();
},
start: function () {
return KinescopePlayer.seekTo(0);
},
state: function () {
return KinescopePlayer.getState();
},
};
videoWrapper.TildaVideoPlayer = player;
resolve(player);
});
});
});
}
function t1035__initPlayerVKvideo(videoWrapper) {
var videoType = 'vkvideo';
return new Promise(function (resolve, reject) {
var iframe = videoWrapper.querySelector('iframe');
if (!iframe) return reject(new Error(videoType + ': IFrame Element not Found'));
t_onFuncLoad('t_loadJsFile', function () {
t_loadJsFile('https://vkvideo.ru/js/api/videoplayer.js');
});
t_onFuncLoad('VK', function () {
var VKPlayer = VK.VideoPlayer(iframe);
var player = {
videoType,
videoEl: iframe,
player: VKPlayer,
pause: function () {
return VKPlayer.pause();
},
play: function () {
return VKPlayer.play();
},
mute: function () {
return VKPlayer.mute();
},
unMute: function () {
return VKPlayer.unmute();
},
start: function () {
return VKPlayer.seek(0);
},
state: function () {
return VKPlayer.getState();
},
};
videoWrapper.TildaVideoPlayer = player;
return resolve(player);
});
});
}
function t1035__initPlayerBoomstream(videoWrapper) {
var videoType = 'boomstream';
function t1035__doBoomstreamCommand(iframe, method) {
iframe.contentWindow.postMessage(method, '*');
}
return new Promise(function (resolve, reject) {
var iframe = videoWrapper.querySelector('iframe');
if (!iframe) return reject(new Error(videoType + ': IFrame Element not Found'));
var videoUrl = iframe.src;
var regExp = /boomstream.com\/(?:balancer\/)?([A-Za-z0-9-]+)/;
var match = videoUrl.match(regExp);
if (!match) return reject(new Error(videoType + ': VideoID not Found'));
var player = {
videoType,
videoEl: iframe,
pause: function () {
return t1035__doBoomstreamCommand(iframe, {
code: match[1],
method: 'action',
action: 'pause',
data: '',
});
},
play: function () {
return t1035__doBoomstreamCommand(iframe, {
code: match[1],
method: 'action',
action: 'play',
data: '',
});
},
mute: function () {
return t1035__doBoomstreamCommand(iframe, {
code: match[1],
method: 'action',
action: 'mute',
data: '',
});
},
unMute: function () {
return t1035__doBoomstreamCommand(iframe, {
code: match[1],
method: 'action',
action: 'unmute',
data: '',
});
},
start: function () {
return t1035__doBoomstreamCommand(iframe, {
code: match[1],
method: 'action',
action: 'seek',
data: '0',
});
},
state: function () {
return t1035__doBoomstreamCommand(iframe, {
code: match[1],
method: 'action',
action: 'getStatus',
data: '0',
});
},
};
videoWrapper.TildaVideoPlayer = player;
return resolve(player);
});
}
function t1045_onSuccess(form) {
/* TODO: jqeury in js */
if (!(form instanceof Element)) form = form[0];
var inputsWrapper = form.querySelector('.t-form__inputsbox');
var inputsWrapperStyle = getComputedStyle(inputsWrapper, null);
var inputsWrapperPaddingTop = parseInt(inputsWrapperStyle.paddingTop) || 0;
var inputsWrapperPaddingBottom = parseInt(inputsWrapperStyle.paddingBottom) || 0;
var inputsWrapperHeight = inputsWrapper.clientHeight - (inputsWrapperPaddingTop + inputsWrapperPaddingBottom);
var inputsOffset = inputsWrapper.getBoundingClientRect().top + window.pageYOffset;
var inputsBottom = inputsWrapperHeight + inputsOffset;
var successBox = form.querySelector('.t-form__successbox');
var successBoxOffset = successBox.getBoundingClientRect().top + window.pageYOffset;
var target = 0;
var windowHeight = window.innerHeight;
var body = document.body;
var html = document.documentElement;
var documentHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
if (window.innerWidth > 960) {
target = successBoxOffset - 200;
} else {
target = successBoxOffset - 100;
}
var tildaLabel = document.querySelector('.t-tildalabel');
// TODO: временная проверка для сообщения об успехе
var allRecords = document.getElementById('allrecords');
var isTeam = allRecords && allRecords.getAttribute('data-tilda-te') === 'y';
var isNewSuccessbox = isTeam && window.t_forms__isNewSuccessBox;
if (successBoxOffset > window.scrollY || documentHeight - inputsBottom < windowHeight - 100) {
if (!isNewSuccessbox) {
inputsWrapper.classList.add('t1045__inputsbox_hidden');
}
setTimeout(function () {
if (windowHeight > documentHeight && tildaLabel) {
t1045__fadeOut(tildaLabel);
}
}, 300);
} else {
t1045__scroll(target);
setTimeout(function () {
if (!isNewSuccessbox) {
inputsWrapper.classList.add('t1045__inputsbox_hidden');
}
}, 400);
}
var successUrl = form.getAttribute('data-success-url');
if (successUrl) {
t_forms__handleRedirect(form, successUrl, successBox);
}
}
function t1045__fadeOut(el) {
if (el.style.display === 'none') return;
var opacity = 1;
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity -= 0.1;
if (opacity <= 0.1) {
clearInterval(timer);
el.style.display = 'none';
el.style.opacity = null;
}
}, 50);
}
function t1045__scroll(target) {
var duration = 400;
var start = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0);
var change = target - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
document.body.setAttribute('data-scrollable', 'true');
/* easeInOutCubic animation included in the library */
function t1045__easeInOutCubic(currentTime, change) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t1045__animateScroll() {
currentTime += increment;
window.scrollTo(0, t1045__easeInOutCubic(currentTime, change));
if (currentTime < duration) {
setTimeout(t1045__animateScroll, increment);
} else {
document.body.removeAttribute('data-scrollable');
}
}
t1045__animateScroll();
}
function t1046_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1046');
if (!container) return;
container.classList.remove('t1046__beforeready');
window.addEventListener(
'scroll',
t_throttle(function () {
t1046_appearMenu(rec);
}, 200)
);
t1046_appearMenu(rec);
}
function t1046_appearMenu(rec) {
var container = rec.querySelector('.t1046');
var appearOffset = container.getAttribute('data-appearoffset');
var scrollTop = window.pageYOffset;
var windowHeight = window.innerHeight;
var body = document.body;
var html = document.documentElement;
var documentHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
if (window.innerWidth <= 980 && appearOffset) appearOffset = '150';
if (!appearOffset) appearOffset = '0';
if (appearOffset.indexOf('vh') > -1) {
appearOffset = Math.floor(windowHeight * (parseInt(appearOffset) / 100));
}
appearOffset = parseInt(appearOffset, 10);
if (scrollTop >= appearOffset && scrollTop + windowHeight + 70 <= documentHeight) {
if (getComputedStyle(container, null).visibility === 'hidden') {
container.style.bottom = '-100px';
container.style.visibility = 'visible';
t1046__fadeIn(container);
t1046__animate(container, 'bottom');
}
} else {
container.style.visibility = 'hidden';
container.style.opacity = '0';
}
}
function t1046__animate(element, animate) {
var duration = 400;
var start = parseInt(getComputedStyle(element, null)[animate]);
var change = 0 - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
/* easeInOutCubic animation included in the library */
function t1046__easeInOutCubic(currentTime, start, change) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t1046__animateElement() {
currentTime += increment;
element.style[animate] = t1046__easeInOutCubic(currentTime, start, change) + 'px';
if (currentTime < duration) {
setTimeout(t1046__animateElement, increment);
} else {
element.style[animate] = '0px';
}
}
t1046__animateElement();
}
function t1046__fadeIn(el) {
if (el.style.display === 'block') return;
var opacity = 0;
el.style.opacity = opacity;
el.style.display = 'block';
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity += 0.1;
if (opacity >= 1.0) {
clearInterval(timer);
el.style.display = '';
}
}, 40);
}
function t1046_onSuccess(form) {
/* TODO: jqeury in js */
if (!(form instanceof Element)) form = form[0];
var inputsWrapper = form.querySelector('.t-form__inputsbox');
var inputsWrapperStyle = getComputedStyle(inputsWrapper, null);
var inputsWrapperPaddingTop = parseInt(inputsWrapperStyle.paddingTop) || 0;
var inputsWrapperPaddingBottom = parseInt(inputsWrapperStyle.paddingBottom) || 0;
var inputsWrapperHeight = inputsWrapper.clientHeight - (inputsWrapperPaddingTop + inputsWrapperPaddingBottom);
var inputsOffset = inputsWrapper.getBoundingClientRect().top + window.pageYOffset;
var inputsBottom = inputsWrapperHeight + inputsOffset;
var successBox = form.querySelector('.t-form__successbox');
var successBoxOffset = successBox.getBoundingClientRect().top + window.pageYOffset;
var target = 0;
var windowHeight = window.innerHeight;
var body = document.body;
var html = document.documentElement;
var documentHeight = Math.max(
body.scrollHeight,
body.offsetHeight,
html.clientHeight,
html.scrollHeight,
html.offsetHeight
);
if (window.innerWidth > 960) {
target = successBoxOffset - 200;
} else {
target = successBoxOffset - 100;
}
var tildaLabel = document.querySelector('.t-tildalabel');
// TODO: временная проверка для сообщения об успехе
var allRecords = document.getElementById('allrecords');
var isTeam = allRecords && allRecords.getAttribute('data-tilda-te') === 'y';
var isNewSuccessbox = isTeam && window.t_forms__isNewSuccessBox;
if (successBoxOffset > window.scrollY || documentHeight - inputsBottom < windowHeight - 100) {
if (!isNewSuccessbox) {
inputsWrapper.classList.add('t1046__inputsbox_hidden');
}
setTimeout(function () {
if (windowHeight > documentHeight && tildaLabel) {
t1046__fadeOut(tildaLabel);
}
}, 300);
} else {
t1046__scroll(target);
setTimeout(function () {
if (!isNewSuccessbox) {
inputsWrapper.classList.add('t1046__inputsbox_hidden');
}
}, 400);
}
var successUrl = form.getAttribute('data-success-url');
if (successUrl) {
t_forms__handleRedirect(form, successUrl, successBox);
}
}
function t1046__fadeOut(el) {
if (el.style.display === 'none') return;
var opacity = 1;
var timer = setInterval(function () {
el.style.opacity = opacity;
opacity -= 0.1;
if (opacity <= 0.1) {
clearInterval(timer);
el.style.display = 'none';
el.style.opacity = null;
}
}, 50);
}
function t1046__scroll(target) {
var duration = 400;
var start = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0);
var change = target - start;
var currentTime = 0;
var increment = 16; /* same amount of milliseconds as requestAnimationFrame */
document.body.setAttribute('data-scrollable', 'true');
/* easeInOutCubic animation included in the library */
function t1046__easeInOutCubic(currentTime, change) {
if ((currentTime /= duration / 2) < 1) {
return (change / 2) * currentTime * currentTime * currentTime + start;
} else {
return (change / 2) * ((currentTime -= 2) * currentTime * currentTime + 2) + start;
}
}
function t1046__animateScroll() {
currentTime += increment;
window.scrollTo(0, t1046__easeInOutCubic(currentTime, change));
if (currentTime < duration) {
setTimeout(t1046__animateScroll, increment);
} else {
document.body.removeAttribute('data-scrollable');
}
}
t1046__animateScroll();
}
function t1047_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
/* t1049 */
function t1049__init(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var container = rec.querySelector('.t1049');
var thumbVideo = rec.querySelector('.t1049__thumb');
var thumbWrapper = rec.querySelector('.t1049__thumb-wrapper');
var thumbCloseBtn = rec.querySelector('.t1049__thumb-close-btn');
var isMP4ThumbVideo = thumbVideo.classList.contains('t1049__thumb_mp4');
var isYoutubeThumbVideo = thumbVideo.classList.contains('t1049__thumb_youtube');
var isImageThumb = thumbVideo.classList.contains('t1049__thumb_img');
// container: скрывает содежимое, и имеет анимируемое появление, но из-за этого в Firefox не работает border-radius у video
// wrapper: создан с целью корректировать border-radius во всех браузерах через overflow:hidden
var mainContainer = rec.querySelector('.t1049__video-container');
var mainWrapper = rec.querySelector('.t1049__video-wrapper');
var mainVideo = rec.querySelector('.t1049__video');
var isMP4MainVideo = mainVideo.classList.contains('t1049__video_mp4');
var isYoutubeMainVideo = mainVideo.classList.contains('t1049__video_youtube');
var playBtn = rec.querySelector('.t1049__video-play-btn');
var actionBtn = rec.querySelector('.t1049__button-container');
var videoCloseBtn = rec.querySelector('.t1049__video-close-btn');
var thumbVideoYoutubePlayer;
var mainVideoYoutubePlayer;
var setYoutubePlayer = function (video, id, onReadyPlayer, onPlayerStateChange) {
var isYoutbeShorts = video.classList.contains('t1049__video_youtube-shorts');
var youtubeWidth = isYoutbeShorts ? '315' : '560';
var youtubeHeight = isYoutbeShorts ? '560' : '315';
return new YT.Player(video, {
videoId: id,
width: youtubeWidth,
height: youtubeHeight,
playerVars: {
origin: window.location.protocol + '//' + window.location.host,
loop: 1,
autoplay: 1,
playsinline: 1,
playlist: id,
showinfo: 0,
controls: 0,
autohide: 1,
rel: 0,
},
events: {
onReady: function (event) {
event.target.playVideo();
if (typeof onReadyPlayer === 'function') {
onReadyPlayer();
}
},
onStateChange: function () {
if (typeof onPlayerStateChange === 'function') {
onPlayerStateChange();
}
},
},
});
};
var initYoutubePlayer = function (callback) {
var youtubePlayerSrc = 'https://www.youtube.com/iframe_api';
if (!document.querySelector('script[src="' + youtubePlayerSrc + '"]')) {
var script = document.createElement('script');
script.src = youtubePlayerSrc;
script.onload = function () {
if (typeof window['onYouTubeIframeAPIReady'] !== 'function') {
window['onYouTubeIframeAPIReady'] = function () {
callback();
};
} else {
t_onFuncLoad('YT', function () {
callback();
});
}
};
document.head.appendChild(script);
} else {
t_onFuncLoad('YT', function () {
callback();
});
}
};
var showThumbVideo = function () {
var thumbContainer = rec.querySelector('.t1049__thumb-container');
var animate = container.getAttribute('data-animate-style');
if (animate) {
container.classList.add('t-animate');
}
container.style.removeProperty('display');
thumbContainer.style.removeProperty('display');
};
var setThumbSize = function (aspectRatio) {
var maxSize = '125px';
// устанавливаем ограничение для превью
if (Math.abs(aspectRatio - 1) <= 0.1) {
// квадратное видео
if (isImageThumb) {
thumbWrapper.style.width = maxSize;
thumbWrapper.style.maxWidth = 'min(' + maxSize + ', calc(100vw - 50px))';
} else {
thumbWrapper.style.maxWidth = maxSize;
thumbWrapper.style.maxHeight = maxSize;
}
} else if (aspectRatio > 1.1) {
// горизонтальное видео
if (isImageThumb) {
thumbWrapper.style.height = maxSize;
thumbWrapper.style.maxHeight = 'min(' + maxSize + ', calc(100vh - 50px))';
} else {
thumbWrapper.style.maxWidth = '';
thumbWrapper.style.maxHeight = maxSize;
}
} else if (aspectRatio < 0.9) {
// вертикальное видео
if (isImageThumb) {
thumbWrapper.style.width = maxSize;
thumbWrapper.style.maxWidth = 'min(' + maxSize + ', calc(100vw - 50px))';
} else {
thumbWrapper.style.maxWidth = maxSize;
thumbWrapper.style.maxHeight = '';
}
}
// запоминаем размеры превью
var thumbVideoStyles = window.getComputedStyle(thumbVideo);
thumbWidth = thumbVideoStyles.getPropertyValue('width');
thumbHeight = thumbVideoStyles.getPropertyValue('height');
};
var setThumbVideo = function (type) {
showThumbVideo(rec);
var aspectRatio = thumbWrapper.style.aspectRatio;
if (!aspectRatio) {
// если пользователь не задал соотношение сторон
if (type === 'youtube') {
var isThumbYoutbeShorts = thumbVideo.classList.contains('t1049__thumb_youtube-shorts');
aspectRatio = isThumbYoutbeShorts ? 9 / 16 : 16 / 9;
thumbWrapper.style.aspectRatio = isThumbYoutbeShorts ? '9/16' : '16/9';
} else if (type === 'image') {
aspectRatio = 3 / 4;
thumbWrapper.style.aspectRatio = '3/4';
} else {
aspectRatio = thumbVideo.videoWidth / thumbVideo.videoHeight;
thumbWrapper.style.aspectRatio = thumbVideo.videoWidth + '/' + thumbVideo.videoHeight;
}
} else {
// если пользователь задал соотношение сторон
var operands = aspectRatio.split('/');
if (operands[0] && operands[1]) {
aspectRatio = parseFloat(operands[0]) / parseFloat(operands[1]);
}
}
setThumbSize(aspectRatio);
thumbWrapper.addEventListener('click', function () {
if (
(isMP4MainVideo && mainVideo.getAttribute('data-src') === null) ||
(isYoutubeMainVideo && mainVideo.getAttribute('data-id') === '')
) {
return;
}
openWidget();
});
};
var getMainVideo = function () {
var mainDatasrc = mainVideo.getAttribute('data-src');
if (mainDatasrc) {
mainVideo.setAttribute('src', mainDatasrc);
mainVideo.preload = 'auto';
}
};
if (thumbVideo) {
if (isImageThumb) {
setThumbVideo('image');
}
if (isMP4ThumbVideo) {
var thumbAlreadyInit = false;
var thumbSetSize = function () {
if (thumbAlreadyInit) return;
thumbAlreadyInit = true;
setThumbVideo('mp4');
};
thumbVideo.addEventListener('loadedmetadata', thumbSetSize);
thumbVideo.addEventListener('loadeddata', thumbSetSize);
// события loadeddata/loadedmetadata могут не произойти, поэтому src было пустое
// и только сейчас будет загружено видео для превью
thumbVideo.preload = 'metadata';
var thumbDatasrc = thumbVideo.getAttribute('data-src');
if (thumbDatasrc) {
// для мобильных превью может быть большим, что приводит к блокировке рендеринга
if (window.isMobile) {
var timeout = 0;
// Chrome only:
var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
if (connection) {
if (connection.effectiveType !== '4g') {
timeout = 2000;
}
}
if (window.isiOS) {
timeout = 2000;
}
setTimeout(function () {
thumbVideo.setAttribute('src', thumbDatasrc);
}, timeout);
} else {
thumbVideo.setAttribute('src', thumbDatasrc);
}
}
// отключаем: контекстное меню
if (!container.classList.contains('t1049_previewmode')) {
thumbVideo.addEventListener('contextmenu', function (event) {
event.preventDefault();
});
}
}
if (isYoutubeThumbVideo) {
var initThumbVideoYoutubePlayer = function () {
var id = thumbVideo.getAttribute('data-id');
window.YT.ready(function () {
thumbVideoYoutubePlayer = setYoutubePlayer(thumbVideo, id, function () {
thumbVideoYoutubePlayer.playVideo();
thumbVideoYoutubePlayer.mute();
thumbVideo = rec.querySelector('.t1049__thumb.t1049__thumb_youtube');
thumbVideo.style.pointerEvents = 'none';
setThumbVideo('youtube');
});
});
};
initYoutubePlayer(initThumbVideoYoutubePlayer);
}
// a11y
thumbVideo.addEventListener('keydown', function (event) {
var key = event.key || event.keyCode;
if (['Enter', 13, ' ', 32].indexOf(key) !== -1) {
if (
(isMP4MainVideo && mainVideo.getAttribute('data-src') === null) ||
(isYoutubeMainVideo && mainVideo.getAttribute('data-id') === '')
) {
return;
}
openWidget();
}
});
}
if (mainVideo) {
var mainWidth;
var mainHeight;
var mainAlreadyInit = false;
var mainSetSize = function () {
if (mainAlreadyInit) return;
mainAlreadyInit = true;
setMainSize(rec);
};
if (isMP4MainVideo) {
// после получения видео для превью, переходим к загрузке основного
getMainVideo();
mainVideo.addEventListener('loadedmetadata', mainSetSize);
mainVideo.addEventListener('loadeddata', mainSetSize);
}
// переключение play в pause
var swapPlayPause = function () {
if (isMP4MainVideo) {
if (mainVideo.paused) {
mainVideo.play();
} else {
mainVideo.pause();
}
}
if (isYoutubeMainVideo && mainVideoYoutubePlayer) {
var state = mainVideoYoutubePlayer.getPlayerState();
if (state === YT.PlayerState.PAUSED) {
mainVideoYoutubePlayer.playVideo();
playBtn.style.display = 'none';
} else if (state === YT.PlayerState.PLAYING) {
mainVideoYoutubePlayer.pauseVideo();
playBtn.style.display = 'block';
}
}
};
if (isMP4MainVideo) {
// a11y
[mainWrapper, playBtn].forEach(function (element) {
element.addEventListener('keydown', function (event) {
var key = event.key || event.keyCode;
if (['Enter', 13, ' ', 32].indexOf(key) !== -1) {
swapPlayPause();
}
});
});
// ставим на паузу при выходе со страницы
window.addEventListener('blur', function () {
if (!mainVideo.paused) {
mainVideo.pause();
}
});
var mainVideoIsFullscreen = false;
// fullscreen на двойной клик
mainWrapper.addEventListener('dblclick', function () {
try {
mainVideo.requestFullscreen();
mainVideoIsFullscreen = true;
} catch (error) {
console.error('An error occurred while trying to request fullscreen: ', error);
}
});
// добавить controls в fullscreen
// и убрать оформление мешающиее полноэкранному просмотру
var borderWidth = mainWrapper.style.borderWidth;
var borderRadius = mainWrapper.style.borderRadius;
document.addEventListener('fullscreenchange', function () {
if (mainVideoIsFullscreen) {
if (document.fullscreenElement || document.webkitFullscreenElement) {
mainVideo.setAttribute('controls', 'controls');
mainVideo.style.objectFit = 'contain';
mainWrapper.style.removeProperty('border-width');
mainWrapper.style.removeProperty('border-radius');
} else {
mainVideo.removeAttribute('controls');
mainVideo.style.removeProperty('objectFit');
mainWrapper.style.borderWidth = borderWidth;
mainWrapper.style.borderRadius = borderRadius;
}
}
});
mainVideo.addEventListener('playing', function () {
playBtn.style.display = 'none';
});
mainVideo.addEventListener('pause', function () {
playBtn.style.display = 'block';
});
if (!container.classList.contains('t1049_previewmode')) {
// отключаем: контекстное меню
mainVideo.addEventListener('contextmenu', function (event) {
event.preventDefault();
});
}
}
if (isMP4MainVideo || isYoutubeMainVideo) {
mainContainer.style.removeProperty('display');
mainWrapper.addEventListener('click', function () {
swapPlayPause();
});
}
}
if (!container.classList.contains('t1049_previewmode')) {
thumbCloseBtn.addEventListener('click', function () {
container.style.display = 'none';
});
}
if (window.isMobile || container.classList.contains('t1049_previewmode')) {
thumbCloseBtn.style.opacity = 1;
videoCloseBtn.style.opacity = 1;
}
videoCloseBtn.addEventListener('click', function () {
closeWidget();
});
var thumbWidth;
var thumbHeight;
var setMainSize = function () {
var mainVideoWidth = mainVideo.videoWidth;
var mainVideoHeight = mainVideo.videoHeight;
mainWrapper.style.aspectRatio = mainVideoWidth + '/' + mainVideoHeight;
mainWrapper.style.width = mainVideoWidth + 'px';
mainWrapper.style.height = mainVideoHeight + 'px';
var isYoutbeWrapper = mainWrapper.classList.contains('t1049__video-wrapper_youtube');
var isYoutbeShortsWrapper = mainWrapper.classList.contains('t1049__video-wrapper_youtube-shorts');
var setSizeStyle = function (size, units) {
return 'min(' + size + 'px, calc(100' + units + ' - 50px))';
};
// 315x560
var aspectRatio = mainVideoWidth / mainVideoHeight;
if (Math.abs(aspectRatio - 1) <= 0.1) {
// квадратное видео
mainWrapper.style.maxWidth = setSizeStyle(560, 'vw');
mainWrapper.style.maxHeight = setSizeStyle(560, 'vh');
} else if (aspectRatio > 1.1 || isYoutbeWrapper) {
// горизонтальное видео
mainWrapper.style.maxWidth = setSizeStyle(560, 'vw');
mainWrapper.style.maxHeight = setSizeStyle(315, 'vh');
mainWrapper.style.height = '';
} else if (aspectRatio < 0.9 || isYoutbeShortsWrapper) {
// вертикальное видео
mainWrapper.style.maxWidth = setSizeStyle(315, 'vw');
mainWrapper.style.maxHeight = setSizeStyle(560, 'vh');
mainWrapper.style.width = '';
}
};
var openWidget = function () {
var analitics = container.getAttribute('data-track-popup');
var hook = 'TildaVideoWidget' + recid;
if (analitics && window.Tilda) {
Tilda.sendEventToStatistics(analitics, hook);
}
// приводим в начальное состояние
if (mainWidth) {
mainWrapper.style.width = mainWidth;
}
if (mainHeight) {
mainWrapper.style.height = mainHeight;
}
if (isMP4MainVideo) {
mainVideo.muted = false;
mainVideo.autoplay = true;
mainVideo.currentTime = 0;
playBtn.style.display = 'none'; // fix bug: кнопку play видно ещё до анимации
mainVideo.play();
}
if (isYoutubeMainVideo) {
if (!mainVideoYoutubePlayer) {
var isUnMuted = false;
var onReadyPlayer = function () {
mainVideoYoutubePlayer.unMute();
};
var onPlayerStateChange = function (event) {
if (
mainVideoYoutubePlayer.isMuted() &&
mainVideoYoutubePlayer.getPlayerState() == 2 &&
!isUnMuted
) {
mainVideoYoutubePlayer.unMute();
mainVideoYoutubePlayer.playVideo();
isUnMuted = true;
}
};
var initMainVideoYoutubePlayer = function () {
var id = mainVideo.getAttribute('data-id');
window.YT.ready(function () {
mainVideoYoutubePlayer = setYoutubePlayer(mainVideo, id, onReadyPlayer, onPlayerStateChange);
});
};
initYoutubePlayer(initMainVideoYoutubePlayer);
playBtn.style.display = 'none';
} else {
mainVideoYoutubePlayer.seekTo(0);
mainVideoYoutubePlayer.playVideo();
}
mainSetSize();
}
if (isYoutubeThumbVideo && thumbVideoYoutubePlayer) {
thumbVideoYoutubePlayer.pauseVideo();
}
container.classList.add('t1049__container--is_opened');
videoCloseBtn.style.removeProperty('display');
if (isMP4ThumbVideo) {
thumbVideo.pause();
thumbVideo.currentTime = 0;
}
document.addEventListener('keydown', escapeKeydown);
// кнопка показывается по таймеру
if (actionBtn) {
var timer = actionBtn.getAttribute('data-timer') || '0.3';
if (timer) {
setTimeout(
function () {
actionBtn.style.removeProperty('display');
},
parseFloat(timer) * 1000
);
}
}
if (!mainWidth || !mainHeight) {
var mainVideoStyles = window.getComputedStyle(mainVideo);
if (!mainWidth) {
mainWidth = mainVideoStyles.getPropertyValue('width');
mainWrapper.style.width = mainWidth;
}
if (!mainHeight) {
mainHeight = mainVideoStyles.getPropertyValue('height');
mainWrapper.style.height = mainHeight;
}
}
};
var closeWidget = function () {
if (actionBtn) {
actionBtn.style.display = 'none';
}
videoCloseBtn.style.display = 'none';
playBtn.style.display = 'none';
document.removeEventListener('keydown', escapeKeydown);
mainVideo.muted = true;
mainVideo.autoplay = false;
// 'трансформируем' основное в превью
var timeTransition = 200;
mainWrapper.classList.add('t1049__video-wrapper--animate');
if (!isYoutubeThumbVideo && !thumbVideoYoutubePlayer) {
mainWrapper.style.width = thumbWidth;
mainWrapper.style.height = thumbHeight;
}
setTimeout(function () {
container.classList.remove('t1049__container--is_opened');
mainWrapper.classList.remove('t1049__video-wrapper--animate');
if (isMP4ThumbVideo) {
thumbVideo.play();
}
if (isYoutubeThumbVideo && thumbVideoYoutubePlayer) {
thumbVideoYoutubePlayer.playVideo();
}
if (isMP4MainVideo) {
mainVideo.pause();
}
if (isYoutubeMainVideo && mainVideoYoutubePlayer) {
mainVideoYoutubePlayer.pauseVideo();
}
}, timeTransition * 0.7);
};
// a11y
var escapeKeydown = function (event) {
var key = event.code || event.key;
if (['Escape', 27].indexOf(key) !== -1) {
var isGalleryShowed = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowed) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (isPopupShowed) return;
closeWidget();
}
};
}
function t1051__createPieChart(recId, sectorColor, pieBgColor, bgcolor, diagramWidth, diameter) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1051');
if (!container) return;
var radius;
if (diameter > 300 || diameter == '' || diameter < 100) {
if (diameter == '') {
radius = 100;
diameter = 200;
}
if (diameter > 300) {
radius = 150;
diameter = 300;
}
if (diameter < 100) {
radius = 50;
diameter = 100;
}
} else {
radius = diameter / 2;
}
if (diagramWidth == '') diagramWidth = 10;
if (diagramWidth > radius) diagramWidth = 10;
if (diagramWidth < 1) diagramWidth = 1;
/*check Retina*/
if (window.devicePixelRatio >= 2) {
var oldSize = diameter;
radius = radius * 2;
diameter = diameter * 2;
diagramWidth = diagramWidth * 2;
}
/*border id drawing at the edge of circle, so we need correct the radius to fin into canvas*/
var correction = +diagramWidth / 2;
var itemsPie = rec.querySelectorAll('.t1051__pie');
var dataArray = Array.prototype.map.call(itemsPie, function (pie) {
return pie.getAttribute('data-number');
});
for (var i = 0; i < itemsPie.length; i++) {
var canvas = itemsPie[i];
canvas.setAttribute('width', diameter);
canvas.setAttribute('height', diameter);
var context = canvas.getContext('2d');
if (window.devicePixelRatio >= 2) {
canvas.style.width = oldSize + 'px';
canvas.style.height = oldSize + 'px';
}
for (var j = 0; j < 2; j++) {
if (j === 1 && dataArray[i] == 0) continue;
/*0 - bg, 1 - percent sector*/
if (j == 0) {
context.strokeStyle = pieBgColor;
var angle = Math.PI * 2;
context.lineWidth = diagramWidth - 1;
} else {
context.strokeStyle = sectorColor;
var angle = Math.PI * 2 * (dataArray[i] / 100);
context.lineWidth = diagramWidth;
}
context.beginPath();
context.lineCap = 'round';
context.moveTo(diameter - correction, radius);
context.arc(radius, radius, radius - correction, 0, angle, false);
context.stroke();
}
}
}
function t1061_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var wrapperBlock = rec.querySelector('.t1061');
var videoLazys = rec.querySelectorAll('.t-video-lazyload');
if (videoLazys.length) {
t_onFuncLoad('t_video_lazyload__setHeight', function () {
for (var i = 0; i < videoLazys.length; i++) {
t_video_lazyload__setHeight(videoLazys[i]);
}
window.addEventListener('resize', function () {
for (var i = 0; i < videoLazys.length; i++) {
t_video_lazyload__setHeight(videoLazys[i]);
}
});
if (!wrapperBlock) return;
wrapperBlock.addEventListener('displayChanged', function () {
for (var i = 0; i < videoLazys.length; i++) {
t_video_lazyload__setHeight(videoLazys[i]);
}
});
});
}
var thumbnails = rec.querySelectorAll('.t1061__video-thumbnail');
if (!thumbnails.length) return;
Array.prototype.forEach.call(thumbnails, function (thumbnail) {
var videoWrap = thumbnail.closest('.t1061__wrap-video');
var video = videoWrap.querySelector('.t-video-lazyload');
var videoId = video.getAttribute('data-videolazy-id');
var videoType = video.getAttribute('data-videolazy-type');
t1061__setThumbnailImg(thumbnail, videoType, videoId);
thumbnail.addEventListener('click', function (event) {
event.preventDefault();
t_onFuncLoad('t_video_lazyload__addVideo', function () {
t_video_lazyload__addVideo(video);
thumbnail.remove();
});
});
});
}
function t1061__setThumbnailImg(thumbnailEl, videoType, videoId) {
function setBgImage(url) {
thumbnailEl.style.backgroundImage = url;
}
if (videoType === 'youtube') {
var standardDefinitionUrl = 'https://img.youtube.com/vi/' + videoId + '/sddefault.jpg';
var fallbackUrl = 'https://img.youtube.com/vi/' + videoId + '/hqdefault.jpg';
var tempImage = new Image();
tempImage.onload = function () {
// Some youtube videos doesnt have sddefault version of thumbnail because it must be added by the user.
// We need to fallback to thumbnails that are always available. hqdefault is autogenerated.
// We cannot always use hqdefault because we must try to display the thumbnail selected by the user if possible.
// There is no other way to detect youtube 404 placeholder, but to check their specific dimensions.
if (this.width === 120 && this.height === 90) {
setBgImage('url("' + fallbackUrl + '")');
} else {
setBgImage('url("' + standardDefinitionUrl + '")');
}
};
tempImage.onerror = function () {
setBgImage('url("' + fallbackUrl + '")');
};
tempImage.src = standardDefinitionUrl;
return;
}
if (videoType === 'vimeo') {
setBgImage('url("https://vumbnail.com/' + videoId + '.jpg")');
return;
}
if (videoType === 'kinescope') {
setBgImage('url("https://kinescope.io/' + videoId + '/poster/md.jpg")');
return;
}
if (videoType === 'boomstream') {
setBgImage('url("https://play.boomstream.com/' + videoId + '/poster")');
return;
}
if (videoType === 'rutube') {
setBgImage('url("https://rutube.ru/api/video/' + videoId + '/thumbnail/?redirect=1")');
return;
}
}
function t1067_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1067');
if (!container) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var rows = rec.querySelectorAll('.t1067__row');
Array.prototype.forEach.call(rows, function (row) {
var descriptions = row.querySelectorAll('.t-card__descr');
var maxHeight = 0;
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
for (var i = 0; i < descriptions.length; i++) {
var description = descriptions[i];
var descriptionStyle = getComputedStyle(description, null);
var descriptionPaddingTop = parseInt(descriptionStyle.paddingTop) || 0;
var descriptionPaddingBottom = parseInt(descriptionStyle.paddingBottom) || 0;
var descriptionHeight = description.clientHeight - (descriptionPaddingTop + descriptionPaddingBottom);
if (descriptionHeight > maxHeight) maxHeight = descriptionHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
}
});
}
function t1068_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1068');
if (!container) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
t1068_setEqualHeight(recId);
window.addEventListener(
'resize',
t_throttle(function () {
t1068_setEqualHeight(recId);
})
);
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', function () {
t1068_setEqualHeight(recId);
});
} else {
container.addEventListener('displayChanged', function () {
t1068_setEqualHeight(recId);
});
}
}
function t1068_setEqualHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1068');
if (!container) return;
var rows = rec.querySelectorAll('.t1068__row');
Array.prototype.forEach.call(rows, function (row) {
var titles = row.querySelectorAll('.t1068__title');
var descriptions = row.querySelectorAll('.t1068__descr');
var prices = row.querySelectorAll('.t1068__price');
var imageWrappers = row.querySelectorAll('.t1068__imgwrapper');
if (titles.length > 0) t1068_updateHeight(titles);
if (descriptions.length > 0) t1068_updateHeight(descriptions);
if (prices.length > 0) t1068_updateHeight(prices);
if (imageWrappers.length > 0) {
t1068_updateHeight(imageWrappers);
window.onload = function () {
t1068_updateHeight(imageWrappers);
};
}
});
}
function t1068_updateHeight(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t1069_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1069');
if (!container) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var rows = rec.querySelectorAll('.t1069__row');
Array.prototype.forEach.call(rows, function (row) {
var titles = row.querySelectorAll('.t-card__title');
var descriptions = row.querySelectorAll('.t-card__descr');
var prices = row.querySelectorAll('.t1069__price');
var subtitles = row.querySelectorAll('.t-card__uptitle');
if (titles.length > 0) t1069_equalHeight(titles);
if (descriptions.length > 0) t1069_equalHeight(descriptions);
if (prices.length > 0) t1069_equalHeight(prices);
if (subtitles.length > 0) t1069_equalHeight(subtitles);
});
}
function t1069_equalHeight(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t1070_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1070');
if (!container) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var rows = rec.querySelectorAll('.t1070__row');
Array.prototype.forEach.call(rows, function (row) {
var titles = row.querySelectorAll('.t-card__title');
var descriptions = row.querySelectorAll('.t-card__descr');
var prices = row.querySelectorAll('.t1070__price');
var images = row.querySelectorAll('.t1070__img');
if (titles.length > 0) t1070_equalHeight(titles);
if (descriptions.length > 0) t1070_equalHeight(descriptions);
if (prices.length > 0) t1070_equalHeight(prices);
if (images.length > 0) {
var promises = [];
for (var i = 0; i < images.length; i++) {
var image = images[i];
var promise = new Promise(function (resolve) {
if (image.complete) return resolve();
image.addEventListener('load', resolve);
});
promises.push(promise);
}
Promise.all(promises).then(function () {
t1070_equalHeight(images);
});
}
});
}
function t1070_equalHeight(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t1071_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1071');
if (!container) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var rows = rec.querySelectorAll('.t1071__row');
Array.prototype.forEach.call(rows, function (row) {
var descriptions = row.querySelectorAll('.t-card__descr');
var maxHeight = 0;
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
for (var i = 0; i < descriptions.length; i++) {
var description = descriptions[i];
var descriptionStyle = getComputedStyle(description, null);
var descriptionPaddingTop = parseInt(descriptionStyle.paddingTop) || 0;
var descriptionPaddingBottom = parseInt(descriptionStyle.paddingBottom) || 0;
var descriptionHeight = description.clientHeight - (descriptionPaddingTop + descriptionPaddingBottom);
if (descriptionHeight > maxHeight) maxHeight = descriptionHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < descriptions.length; i++) {
descriptions[i].style.height = '';
}
}
});
}
function t1071_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1071');
if (!container) return;
var bgImages = rec.querySelectorAll('.t1071__bgimg');
for (var i = 0; i < bgImages.length; i++) {
var bgImage = bgImages[i];
var bgImageWidth = bgImage.getAttribute('data-image-width');
var bgImageHeight = bgImage.getAttribute('data-image-height');
var ratio = bgImageHeight / bgImageWidth;
var paddingBottom = ratio * 100;
bgImage.style.paddingBottom = paddingBottom + '%';
}
}
function t1072_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1072');
if (!container) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
if (document.fonts && document.fonts.ready) {
document.fonts.ready.then(function () {
t1072_equalHeight(rec);
});
} else {
setTimeout(function () {
t1072_equalHeight(rec);
}, 500);
}
}
function t1072_equalHeight(rec) {
var rows = rec.querySelectorAll('.t1072__row');
Array.prototype.forEach.call(rows, function (row) {
var titles = row.querySelectorAll('.t1072__title');
var texts = row.querySelectorAll('.t-card__descr');
var prices = row.querySelectorAll('.t1072__price');
var headers = row.querySelectorAll('.t1072__header');
if (titles.length > 0) t1072_equalHeightElems(titles);
if (texts.length > 0) t1072_equalHeightElems(texts);
if (prices.length > 0) t1072_equalHeightElems(prices);
if (headers.length > 0) t1072_equalHeightElems(headers);
});
}
function t1072_equalHeightElems(elements) {
var maxHeight = 0;
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var elementStyle = getComputedStyle(element, null);
var elementPaddingTop = parseInt(elementStyle.paddingTop) || 0;
var elementPaddingBottom = parseInt(elementStyle.paddingBottom) || 0;
var elementHeight = element.clientHeight - (elementPaddingTop + elementPaddingBottom);
if (elementHeight > maxHeight) maxHeight = elementHeight;
}
if (window.innerWidth >= 960) {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = maxHeight + 'px';
}
} else {
for (var i = 0; i < elements.length; i++) {
elements[i].style.height = '';
}
}
}
function t1073_setHeight(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1073');
if (!container) return;
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
var bgImages = rec.querySelectorAll('.t1073__bgimg');
for (var i = 0; i < bgImages.length; i++) {
var bgImage = bgImages[i];
var bgImageWidth = bgImage.getAttribute('data-image-width');
var bgImageHeight = bgImage.getAttribute('data-image-height');
var ratio = bgImageHeight / bgImageWidth;
var paddingBottom = ratio * 100;
bgImage.style.paddingBottom = paddingBottom + '%';
}
}
function t1074_init(recId) {
t_onFuncLoad('t_card__moveClickOnCard', function () {
t_card__moveClickOnCard(recId);
});
t_onFuncLoad('t_card__addFocusOnTab', function () {
t_card__addFocusOnTab(recId);
});
}
function t1093__init(recID) {
var rec = document.getElementById('rec' + recID);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
if (!popup) return;
t1093__processGlobalObj();
t1093__updateGlobalObj('popupList', popup, 'array');
t1093__processPopupClassList(popup);
var popupContainer = popup.querySelector('.t-popup__container');
if (!popupContainer) return;
var elementIds = popup.getAttribute('data-popup-rec-ids');
if (!elementIds) return;
elementIds = elementIds.split(',');
elementIds.forEach(function (elementId) {
var pairedRecord = t1093__getBlockById(elementId);
if (!pairedRecord) return;
popupContainer.appendChild(pairedRecord);
t1093__setPointerEventsToZeroBlock(pairedRecord);
/**
* while we remove zero from DOM and append it to popup, its listeners are removed,
* so we need to init them again.
*/
var blockId = pairedRecord.id && pairedRecord.id.replace('rec', '');
t_onFuncLoad('t396_init', function () {
t396_init(blockId);
});
});
var currentEvent = t1093__getGlobalObjValue('isMobile') ? 'orientationchange' : 'resize';
window.removeEventListener(currentEvent, t1093__resizeAllPopups);
window.addEventListener(currentEvent, t1093__resizeAllPopups);
t1093__processScrollablePopup(popup);
}
function t1093__getBlockById(elementId) {
var pairedRecord = document.getElementById('rec' + elementId) || document.getElementById(elementId);
if (!pairedRecord) {
var hookLink = document.querySelector('a[name="' + elementId + '"]');
pairedRecord = hookLink && hookLink.nextElementSibling;
}
if (!pairedRecord) return null;
var recordType = pairedRecord.getAttribute('data-parenttplid') || pairedRecord.getAttribute('data-record-type');
if (recordType !== '396' && recordType !== '121') return null;
return pairedRecord;
}
/**
* t1093_popupList - all popup's DOM elements
* t1093_resizeTimer - timer (setTimeout) for resize event
* t1093_hoverTimer - timer (setTimeout) for hover event
* t1093_hoverTimerHook - hook of the popup that t1093_hoverTimer is going to close
* t1093_activeHoverHook - current active hook on hover (from hook-link or popup)
*/
function t1093__processGlobalObj() {
if (typeof window.t1093_popupList === 'undefined') window.t1093_popupList = [];
if (typeof window.t1093_resizeTimer === 'undefined') window.t1093_resizeTimer = 0;
if (typeof window.t1093_hoverTimer === 'undefined') window.t1093_hoverTimer = 0;
if (typeof window.t1093_hoverTimerHook === 'undefined') window.t1093_hoverTimerHook = '';
if (typeof window.t1093_activeHoverHook === 'undefined') window.t1093_activeHoverHook = '';
if (typeof window.t1093_isMobile === 'undefined') {
window.t1093_isMobile =
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ||
('ontouchend' in document && navigator.userAgent.indexOf('AppleWebKit') !== -1);
}
if (typeof window.t1093_windowWidth === 'undefined') window.t1093_windowWidth = t1093__getWindowWidth();
if (typeof window.t1093_isMobRes === 'undefined') window.t1093_isMobRes = window.t1093_windowWidth < 980;
if (typeof window.t1093_isSafari === 'undefined') {
window.t1093_isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
}
}
function t1093__processScrollablePopup(popup) {
if (!popup) return;
var popupContainer = popup.querySelector('.t-popup__container');
if (!popupContainer) return;
popup.style.display = 'block';
var popupHeight = popupContainer.offsetHeight;
popup.style.display = '';
var windowHeight = window.t1093_isMobile ? document.documentElement.clientHeight : window.innerHeight;
if (popupHeight > windowHeight) {
popupContainer.classList.add('t-popup__container-static');
}
}
function t1093__updateGlobalObj(key, value, type) {
switch (type) {
case 'array':
window['t1093_' + key].push(value);
break;
case 'boolean':
window['t1093_' + key] = value;
break;
case 'string':
window['t1093_' + key] = value || '';
break;
case 'timeout':
if (window['t1093_' + key]) clearTimeout(window['t1093_' + key]);
window['t1093_' + key] = value;
break;
}
}
/**
*
* @param {'isMobile' | 'isMobRes' | 'popupList' | 'isSafari' | 'activeHoverHook' | 'hoverTimer' | 'hoverTimerHook'} key
* @return {Boolean | string | HTMLElement[]}
*/
function t1093__getGlobalObjValue(key) {
return window['t1093_' + key];
}
function t1093__getWindowWidth() {
return t1093__getGlobalObjValue('isMobile') ? document.documentElement.clientWidth : window.innerWidth;
}
function t1093__resizeAllPopups() {
var newTimeout = setTimeout(function () {
var currentWindowWidth = t1093__getWindowWidth();
var isMobile = currentWindowWidth < 980;
var isMobileResolution = t1093__getGlobalObjValue('isMobRes');
if (isMobile === isMobileResolution) return;
t1093__updateGlobalObj('isMobRes', isMobile, 'boolean');
t1093__getGlobalObjValue('popupList').forEach(function (popup) {
t1093__processPopupClassList(popup);
});
t1093__updateGlobalObj('resizeTimer', 0, 'timeout');
}, 500);
t1093__updateGlobalObj('resizeTimer', newTimeout, 'timeout');
}
function t1093__processPopupClassList(popup) {
t1093__clearPopupClassList(popup);
var popupClassList = [];
var safariDesktopClassName = 't-popup-safari';
var isMobileResolution = t1093__getGlobalObjValue('isMobRes');
var isSafari = t1093__getGlobalObjValue('isSafari');
if (!isMobileResolution && isSafari && !popup.classList.contains(safariDesktopClassName)) {
popupClassList.push(safariDesktopClassName);
}
var animAttr = 'data-anim';
var mobileAttr = animAttr + '-mobile';
var attrValue = popup.getAttribute(animAttr);
if (isMobileResolution) {
var mobileAttrValue = popup.getAttribute(mobileAttr);
if (mobileAttrValue) attrValue = mobileAttrValue;
}
if ((isMobileResolution && attrValue !== 'empty') || (!isMobileResolution && attrValue)) {
popupClassList.push('t-popup-anim-' + attrValue);
popupClassList.push('t-popup-transition');
}
popupClassList.forEach(function (className) {
popup.classList.add(className);
});
}
function t1093__clearPopupClassList(popup) {
popup.classList.remove('t-popup-transition');
for (var key = 0; key < popup.classList.length; key++) {
var className = popup.classList[key];
if (className.indexOf('t-popup-anim-') !== -1) popup.classList.remove(className);
}
}
function t1093__setPointerEventsToZeroBlock(rec) {
var artBoard = rec.querySelector('.t396__artboard');
if (!artBoard) return;
var abFilter = artBoard.querySelector('.t396__filter');
var artBoardStyle = getComputedStyle(artBoard);
var abFilterBG = abFilter ? getComputedStyle(abFilter).backgroundImage : '';
var hasBG =
abFilterBG !== 'none' ||
artBoardStyle.backgroundColor !== 'rgba(0, 0, 0, 0)' ||
artBoardStyle.backgroundImage !== 'none';
if (hasBG) artBoard.classList.add('t396__artboard_pointer-events-auto');
}
function t1093__initPopup(recID) {
var rec = document.getElementById('rec' + recID);
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = '1';
var popup = rec.querySelector('.t-popup');
var hook = t1093__getHookFromPopup(popup);
if (!popup || !hook) return;
t1093__generatePopupObj();
t1093__updatePopupObjValue('hookList', hook);
var isMobile = t1093__getGlobalObjValue('isMobile');
var isHoverTrigger = t1093__getBooleanPopupAttribute(popup, 'hover-trigger') && !isMobile;
if (isHoverTrigger) {
t1093__updatePopupObjValue('hoverHookList', hook);
popup.classList.add('t-popup_hover-trigger');
}
t1093__setListenersForPopup(popup, isHoverTrigger);
t1093__setListenersForDocument(isHoverTrigger);
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, hook);
});
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(hook);
});
if (!isHoverTrigger) t1093__setAnalyticsListeners(popup);
if (t1093__getBooleanPopupAttribute(popup, 'open-on-page-load')) {
t1093__onReady(function () {
/* wait for 1 sec after DOMConententLoaded before open popup */
setTimeout(function () {
t1093__showCurrentPopup(popup);
}, 1000);
});
}
}
function t1093__onReady(callback) {
document.readyState !== 'loading' ? callback() : document.addEventListener('DOMContentLoaded', callback);
}
function t1093__generatePopupObj() {
if (window.tPopupObj) return;
window.tPopupObj = {
hookList: [],
hoverHookList: [],
openPopUpList: [],
};
}
function t1093__updatePopupObjValue(key, value) {
if (!window.tPopupObj || !window.tPopupObj[key]) return;
if (window.tPopupObj[key].indexOf(value) === -1) window.tPopupObj[key].push(value);
}
/**
*
* @param {'hookList' | 'hoverHookList' | 'openPopUpList'} key
* @return {Array}
*/
function t1093__getPopupObjValue(key) {
return window.tPopupObj[key];
}
/**
* События хук-ссылки всплывают до попапа, внутри которого она лежит.
* Такая иерархия приводит к показу или закрытию не того попапа.
* Так как обработчик хук-ссылки уже отработал до всплытия, такое событие нужно игнорировать.
*
* @param {Event} event
*/
function t1093__isBubbledFromHookLink(event) {
var currentTarget = event.currentTarget;
if (currentTarget === event.target || !currentTarget.classList.contains('t-popup')) {
return false;
}
var hookSelector = t1093__createSelectorFromHookList(true);
if (!hookSelector) {
return false;
}
var hookLink = event.target.closest(hookSelector);
return Boolean(hookLink && currentTarget.contains(hookLink));
}
function t1093__showOnHover(e) {
if (t1093__isBubbledFromHookLink(e)) return;
var popup = e.target.closest('.t-popup');
if (!popup) e.preventDefault();
if (popup && !popup.classList.contains('t-popup_show')) return;
var targetHook = t1093__getHookOnHover(e);
var isHookLinkHovered = t1093__isHookLinkHovered(e);
t1093__cancelPlannedClosingOnHover(targetHook, isHookLinkHovered);
var activeHoverHook = t1093__getGlobalObjValue('activeHoverHook');
if (targetHook && targetHook === activeHoverHook) return;
// При наведении на другую хук-ссылку закрываем предыдущие попапы, которые нужно закрывать
if (isHookLinkHovered) {
t1093__closePrevPopupsOnOpenAnother(targetHook, popup, true);
}
t1093__updateGlobalObj('activeHoverHook', targetHook, 'string');
t1093__processCurrentPopupOnShow(targetHook);
}
/**
* Отменяет закрытие попапа, запланированное в t1093__hideOnHover.
*
* Отмена избирательная: наведение на попап гасит таймер, только если этот попап сам
* попал бы под запланированное закрытие. Иначе уход курсора с хук-ссылки на фон
* родительского попапа отменял бы закрытие вложенного попапа, и тот висел бы открытым.
*
* @param {string} targetHook - хук попапа под курсором
* @param {Boolean} isHookLinkHovered - курсор наведён на хук-ссылку
*/
function t1093__cancelPlannedClosingOnHover(targetHook, isHookLinkHovered) {
if (!t1093__getGlobalObjValue('hoverTimer')) return;
if (!isHookLinkHovered) {
var openPopupList = t1093__getPopupObjValue('openPopUpList');
var plannedIndex = openPopupList.indexOf(t1093__getGlobalObjValue('hoverTimerHook'));
// Если мы наводимся на другой попап, который был открыт раньше того, который планируем закрывать – отменять таймер не нужно.
// Такой попап обычно является родительским попапом
if (plannedIndex !== -1 && openPopupList.indexOf(targetHook) < plannedIndex) {
return;
}
}
t1093__updateGlobalObj('hoverTimer', 0, 'timeout');
t1093__updateGlobalObj('hoverTimerHook', '', 'string');
}
/**
* Курсор наведён именно на хук-ссылку, а не на попап или его содержимое.
*
* @param {Event} event
*/
function t1093__isHookLinkHovered(event) {
var targetHref = event.currentTarget.getAttribute('href');
if (!targetHref) return false;
return t1093__getPopupObjValue('hoverHookList').indexOf(targetHref) !== -1;
}
function t1093__hideOnHover(event) {
// Планировать закрытие попапа нужно, только когда курсор действительно вышел за его пределы,
// иначе запланированное закрытие вложенного попапа подменялось бы закрытием родительского.
if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) return;
var targetHook = t1093__getHookOnHover(event);
var newTimeout = setTimeout(function () {
t1093__updateGlobalObj('activeHoverHook', '', 'string');
var openPopupList = t1093__getPopupObjValue('openPopUpList');
var openPopupIndex = openPopupList.indexOf(targetHook);
if (openPopupIndex !== -1) {
t1093__closePopup(false, openPopupIndex, false);
}
t1093__updateGlobalObj('hoverTimer', 0, 'timeout');
t1093__updateGlobalObj('hoverTimerHook', '', 'string');
}, 300);
t1093__updateGlobalObj('hoverTimer', newTimeout, 'timeout');
t1093__updateGlobalObj('hoverTimerHook', targetHook, 'string');
}
function t1093__getHookOnHover(e) {
var target = e.currentTarget;
var targetHref = target.getAttribute('href');
var popup = target.closest('.t-popup');
var hookList = t1093__getPopupObjValue('hoverHookList');
if (hookList.length && hookList.indexOf(targetHref) !== -1) return targetHref;
return t1093__getHookFromPopup(popup) || targetHref || '';
}
function t1093__showOnClick(e) {
var hookList = t1093__getPopupObjValue('hookList');
if (!hookList.length) return;
var target = e.target;
var hookListSelector = t1093__createSelectorFromHookList(false);
var targetLink = target.closest(hookListSelector);
if (!targetLink) return;
e.preventDefault();
var targetHook = targetLink.getAttribute('href') || '';
/* if popup is already opened, we need to close it by click on the same hook-link.
Do not close, if popup opened by JS: from block-modifier T188 */
var openPopupList = t1093__getPopupObjValue('openPopUpList');
var openPopupIndex = openPopupList.indexOf(targetHook);
if (openPopupIndex !== -1 && e.isTrusted) {
t1093__closePopup(false, openPopupIndex, false);
return;
}
// При клике на другую хук-ссылку закрываем предыдущие попапы, которые нужно закрывать
t1093__closePrevPopupsOnOpenAnother(targetHook, null, false);
t1093__processCurrentPopupOnShow(targetHook);
}
/**
* Закрывает ранее открытые попапы перед показом нового.
*
* Попапы добавляются в очередь один за одним, поэтому обрабатываем их с вершины стэка, пока они закрываемые.
* Попап закрывается, если у него включена настройка «закрывать при открытии другого» или если он открыт
* по ховеру — такой попап уступает место попапу соседней хук-ссылки.
*
* @param {string} targetHook - хук попапа, который собираемся открыть
* @param {HTMLElement | null} parentPopup - попап, внутри которого лежит хук-ссылка
* @param {Boolean} isHoverTrigger - попап показывается по ховеру
*/
function t1093__closePrevPopupsOnOpenAnother(targetHook, parentPopup, isHoverTrigger) {
if (!targetHook) return;
var openPopupList = t1093__getPopupObjValue('openPopUpList');
var closeFromIndex = -1;
// Находим index попапа, начиная с которого нужно закрыть все предыдущие
for (var index = openPopupList.length - 1; index >= 0; index--) {
var openedPopupHook = openPopupList[index];
if (openedPopupHook === targetHook) break;
var openedPopup = t1093__getPopupByHook(openedPopupHook);
// Как только разобрали все попапы до родительского, прекращаем обработку
if (!openedPopup || openedPopup === parentPopup) break;
var shouldCloseByUserSetting = openedPopup.getAttribute('data-popup-close-on-open-another') === 'true';
var shouldCloseByHoverPopupLogic = isHoverTrigger && openedPopup.classList.contains('t-popup_hover-trigger');
var shouldClosePopup = shouldCloseByUserSetting || shouldCloseByHoverPopupLogic;
// Как только встречаем попап, который закрывать не нужно, прекаращаем обработку
if (!shouldClosePopup) break;
closeFromIndex = index;
}
if (closeFromIndex !== -1) {
t1093__closePopup(false, closeFromIndex, false);
}
}
function t1093__getPopupByHook(hookName) {
if (!hookName) return null;
return document.querySelector('[data-tooltip-hook="' + hookName + '"]');
}
function t1093__getHookFromPopup(popup) {
return (popup && popup.getAttribute('data-tooltip-hook')) || '';
}
function t1093__processCurrentPopupOnShow(targetHook) {
if (!targetHook) return;
var currentPopup = t1093__getPopupByHook(targetHook);
var currentPopupRec = currentPopup && currentPopup.closest('.r');
t1093__showCurrentPopup(currentPopup);
if (currentPopupRec) {
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(currentPopupRec.id.replace('rec', ''));
});
}
var artBoard = currentPopup.querySelector('.t396__artboard');
var artBoardOverflow = artBoard ? getComputedStyle(artBoard).overflow : 'hidden';
var isScrollablePopup = currentPopup.querySelector('.t-popup__container-static');
var isPopupHasDisabledBG = t1093__getBooleanPopupAttribute(currentPopup, 'disabled-bg');
var isPopupHasLockScroll = t1093__getBooleanPopupAttribute(currentPopup, 'disable-lock-scroll');
// overflow может содержать два значения, например: "hidden auto"
var isArtBoardScrollable = ['auto', 'scroll'].some(overflow => artBoardOverflow.includes(overflow));
if (isArtBoardScrollable) {
currentPopup.classList.add('t-popup-scrollable-artboard');
}
if (isScrollablePopup) {
if (isPopupHasLockScroll) t1093__updateBodyOnAction('add');
if (isPopupHasDisabledBG) currentPopup.classList.remove('t-popup-disabled-bg');
} else if (isPopupHasDisabledBG) currentPopup.classList.add('t-popup-disabled-bg');
}
function t1093__getBooleanPopupAttribute(popup, attrName) {
return popup.getAttribute('data-popup-' + attrName) === 'y';
}
/**
*
* @param {Boolean} isHoverTrigger
* @return {string}
*/
function t1093__createSelectorFromHookList(isHoverTrigger) {
var hookListName = isHoverTrigger ? 'hoverHookList' : 'hookList';
var hookList = t1093__getPopupObjValue(hookListName);
var selectorList = hookList.map(function (hook) {
return 'a[href="' + hook + '"]';
});
return selectorList.join(', ');
}
function t1093__setListenersForPopup(popup, isHoverTrigger) {
if (!popup) return;
if (isHoverTrigger) {
t1093__processEventsOnHover(popup);
} else {
popup.removeEventListener('click', t1093__closePopupOnClick);
popup.addEventListener('click', t1093__closePopupOnClick);
}
popup.removeEventListener('click', t1093__closePopupOnCloseButton);
popup.addEventListener('click', t1093__closePopupOnCloseButton);
}
function t1093__setListenersForDocument(isHoverTrigger) {
if (isHoverTrigger) {
var selectorList = t1093__createSelectorFromHookList(isHoverTrigger);
var hookLinks = Array.prototype.slice.call(document.querySelectorAll(selectorList));
hookLinks.forEach(function (link) {
t1093__processEventsOnHover(link);
});
} else {
document.removeEventListener('click', t1093__showOnClick);
document.addEventListener('click', t1093__showOnClick);
}
document.removeEventListener('click', t1093__processCloseLink);
document.removeEventListener('keydown', t1093__closeOnESC);
document.addEventListener('keydown', t1093__closeOnESC);
document.addEventListener('click', t1093__processCloseLink);
}
function t1093__setAnalyticsListeners(popup) {
var popupAnalytics = popup.getAttribute('data-track-popup');
if (!popupAnalytics) return;
var currentHook = t1093__getHookFromPopup(popup);
document.addEventListener('click', function (e) {
var hookLink = e.target.closest('a[href="' + currentHook + '"]');
if (!hookLink) return;
if (window.Tilda) Tilda.sendEventToStatistics(popupAnalytics, currentHook);
});
}
function t1093__processEventsOnHover(elem) {
elem.removeEventListener('mouseover', t1093__showOnHover);
elem.removeEventListener('mouseout', t1093__hideOnHover);
elem.addEventListener('mouseover', t1093__showOnHover);
elem.addEventListener('mouseout', t1093__hideOnHover);
}
function t1093__closeOnESC(e) {
if (e.keyCode === 27) {
e.preventDefault();
t1093__closePopup(false, -1, true);
}
}
function t1093__processCloseLink(e) {
var isCloseLink = e.target.closest('a[href="#closepopup"]');
var isAllCloseLink = e.target.closest('a[href="#closeallpopup"]');
if (!isCloseLink && !isAllCloseLink) return;
e.preventDefault();
t1093__closePopup(Boolean(isAllCloseLink), -1, true);
}
function t1093__closeOnLink(e) {
var openPopupList = t1093__getPopupObjValue('openPopUpList');
if (!openPopupList.length) return;
var popupLink = e.target.closest('a[href*="#"]');
if (!popupLink) return;
var exceptionSelectors = [
'.t978__tm-link',
'.t966__tm-link',
'.t794__tm-link',
'a[href="#closepopup"]',
'a[href="#closeallpopup"]',
'a[data-fe-part-link]',
];
var isLinkHasSubmenu = exceptionSelectors.some(function (selector) {
return popupLink.closest(selector);
});
if (!isLinkHasSubmenu) t1093__closePopup(true, -1, true);
}
function t1093__closePopupOnClick(e) {
var isPopupBackground = !e.target.closest('.t-popup__container');
if (!isPopupBackground) return;
var popup = e.target.closest('.t-popup');
var currentPopupHook = t1093__getHookFromPopup(popup);
var openPopupList = t1093__getPopupObjValue('openPopUpList');
var currentPopupIndex = openPopupList.indexOf(currentPopupHook);
t1093__closePopup(false, currentPopupIndex, true);
}
function t1093__closePopupOnCloseButton(e) {
var isCloseButton = e.target.closest('.t-popup__close');
if (!isCloseButton) return;
t1093__closePopup(false, -1, true);
}
/**
*
* @param {HTMLElement} popup - popup element
*/
function t1093__showCurrentPopup(popup) {
if (!popup) return;
if (popup.closeTimerID) clearTimeout(popup.closeTimerID);
var rec = popup.closest('.r');
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (screenMin && windowWidth < parseInt(screenMin, 10)) return;
if (screenMax && windowWidth > parseInt(screenMax, 10)) return;
var popupHook = t1093__getHookFromPopup(popup);
t1093__updatePopupObjValue('openPopUpList', popupHook);
document.removeEventListener('click', t1093__closeOnLink);
document.addEventListener('click', t1093__closeOnLink);
popup.style.display = 'block';
var popupBG = popup.nextElementSibling;
if (popupBG) popupBG.classList.add('t-popup__bg-active');
var allRecords = document.getElementById('allrecords');
var isLazy = allRecords ? allRecords.getAttribute('data-tilda-lazy') === 'yes' : false;
if (window.lazy === 'y' || isLazy) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
/*
* to prevent incorrect styles of artboard elements,
* should trigger resize event on first time
*/
var artBoard = popup.querySelector('.t396__artboard');
if (artBoard && !popup.resizeProcessed) {
var blockID = artBoard.getAttribute('data-artboard-recid') || '';
t_onFuncLoad('t396_doResize', function () {
t396_doResize(blockID);
popup.resizeProcessed = true;
});
}
var galleryElems = Array.prototype.slice.call(popup.querySelectorAll('[data-elem-type="gallery"]'));
if (galleryElems.length) {
t_onFuncLoad('t_slds_updateSlider', function () {
galleryElems.forEach(function (element) {
t_slds_updateSlider([element]);
});
});
}
var formElems = Array.prototype.slice.call(popup.querySelectorAll('[data-elem-type="form"]'));
formElems.forEach(function (elem) {
var form = elem.querySelector('.t-form');
if (!form) return;
form.removeAttribute('data-success-popup');
});
/**
* Из-за асинхронности может быть ситуация, что к моменту открытия попапа,
* он был уже закрыт при быстром перемещении мыши и триггером по ховеру.
* В таком случае мы должны проверить актуальный список openPopUpList,
* и убедиться что хук всё еще содержится внутри этого списка.
*/
setTimeout(function () {
var openPopupList = t1093__getPopupObjValue('openPopUpList');
if (!Array.isArray(openPopupList)) return;
var currentPopupHook = t1093__getHookFromPopup(popup);
if (!openPopupList.includes(currentPopupHook)) return;
popup.focus();
var popupContainer = popup.querySelector('.t-popup__container');
if (popupContainer) popupContainer.classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_onFuncLoad('t_popup__trapFocus', function () {
t_popup__trapFocus(popup);
});
}, 50);
var popupTimer = t1093__getTimer(popup, 'open');
var needFadeOut = t1093__getResponsiveAttr(popup, 'anim-close') === 'fadein';
if (needFadeOut) {
popup.openTimerID = setTimeout(function () {
popup.classList.add('t-popup-fadeout');
popup.openTimerID = 0;
}, popupTimer);
}
if ((popupTimer && window.lazy === 'y') || isLazy) {
setTimeout(function () {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}, popupTimer);
}
if (!t1093__getBooleanPopupAttribute(popup, 'disable-lock-scroll')) {
t1093__updateBodyOnAction('add');
}
}
/**
*
* @param {Boolean} closeAll
* @param {Number} index
* @param {Boolean} removeAnimOnCloseFromHook
*/
function t1093__closePopup(closeAll, index, removeAnimOnCloseFromHook) {
var openPopupList = t1093__getPopupObjValue('openPopUpList');
if (!openPopupList.length) return;
var popupList = t1093__processClosedPopupList(closeAll, index);
if (!popupList.length) return;
// Body нужно обновить только если нет других блокирующих попапов
if (t1093__closePopup_isLastPopupWithLockedScroll()) {
t1093__updateBodyOnAction('remove');
}
popupList.forEach(function (popup) {
popup.classList.remove('t-popup_show');
if (popup.openTimerID) clearTimeout(popup.openTimerID);
t1093__removeAnimationOnClose(popup);
if (removeAnimOnCloseFromHook) t1093__removeAnimFromHookLinkOnClose(popup);
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
var popupCloseTimer = t1093__getTimer(popup, 'close');
popup.closeTimerID = setTimeout(function () {
if (!popup.classList.contains('t-popup_show')) popup.style.display = 'none';
var popupBG = popup.nextElementSibling;
if (popupBG) popupBG.classList.remove('t-popup__bg-active');
popup.classList.remove('t-popup-fadeout');
t1093__pauseAllVideo(popup);
popup.closeTimerID = 0;
}, popupCloseTimer);
});
}
/**
*
* @param {'add' | 'remove'} action
*/
function t1093__updateBodyOnAction(action) {
var triggeredEvent = action === 'add' ? 'popupShowed' : 'popupHidden';
var body = document.body;
if (typeof t_triggerEvent === 'function') t_triggerEvent(body, triggeredEvent);
body.classList[action]('t-body_popupshowed');
}
function t1093__pauseAllVideo(popup) {
if (!popup) return;
var videoElems = Array.prototype.slice.call(
popup.querySelectorAll('[data-elem-type="video"], [data-elem-type="gallery"]')
);
videoElems.forEach(function (element) {
var videoElem = element.querySelector('video, iframe');
if (!videoElem) return;
if (videoElem.tagName === 'VIDEO') videoElem.pause();
var videoSRC = videoElem.src;
if (videoElem.tagName !== 'IFRAME' || !videoSRC) return;
if (videoSRC.indexOf('&enablejsapi=1') !== -1) {
videoElem.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
}
if (videoSRC.indexOf('rutube') !== -1) {
videoElem.contentWindow.postMessage('{"type":"player:pause","data":"{}"}', '*');
}
if (videoSRC.indexOf('vk') !== -1) {
t_loadJsFile('https://vkvideo.ru/js/api/videoplayer.js', function () {
const VKPlayer = VK.VideoPlayer(videoElem);
VKPlayer.pause();
});
}
if (videoSRC.indexOf('vimeo') !== -1 && videoSRC.indexOf('&api=1') !== -1) {
videoElem.contentWindow.postMessage('{"method":"pause","value":"true"}', '*');
}
if (videoSRC.indexOf('kinescope') !== -1) {
t_onFuncLoad('t_loadJsFile', () => {
t_loadJsFile('https://player.kinescope.io/latest/iframe.player.js');
});
t_onFuncLoad('Kinescope', () => {
const id = videoElem.id;
const url = videoElem.src;
Kinescope.IframePlayer.create(id, { url }).then(KinescopePlayer => {
KinescopePlayer.pause();
});
});
}
});
}
/**
* only for T1093
*
* @param {HTMLElement} popup
* @param {'open' | 'close'} action
* @return {number}
*/
function t1093__getTimer(popup, action) {
var isMobileResolution = t1093__getGlobalObjValue('isMobRes');
if (typeof isMobileResolution === 'undefined') return 50; /* default timer for other blocks */
var isZeroTimer = t1093__getResponsiveAttr(popup, 'anim-close') === 'empty';
if ((isZeroTimer && action === 'close') || !popup.classList.contains('t-popup-transition')) return 0;
var popupTimer = popup.getAttribute('data-anim-timeout');
if (popupTimer) popupTimer *= 1000;
return popupTimer || 0;
}
/**
* only for T1093
*
* @param {HTMLElement} popup
* @param {string} attr
* @return {string | null}
*/
function t1093__getResponsiveAttr(popup, attr) {
var isMobileResolution = t1093__getGlobalObjValue('isMobRes');
if (typeof isMobileResolution === 'undefined') return null;
var currentAttr = 'data-' + attr;
if (isMobileResolution) {
var attrMob = popup.getAttribute(currentAttr + '-mobile');
if (attrMob) return attrMob;
}
return popup.getAttribute(currentAttr);
}
function t1093__removeAnimFromHookLinkOnClose(popup) {
var popupHook = t1093__getHookFromPopup(popup);
var popupInitLinks = Array.prototype.slice.call(document.querySelectorAll('a[href="' + popupHook + '"]'));
popupInitLinks.forEach(function (link) {
var animEl = link.closest('.js-sbs-anim-trigger_click');
if (!animEl) return;
var animElID = animEl.getAttribute('data-elem-id');
var animElArtBoard = animEl.closest('.t396__artboard');
var alreadyAnimatedEls = Array.prototype.slice.call(animElArtBoard.querySelectorAll('.t-sbs-anim_started'));
alreadyAnimatedEls.forEach(function (animEl) {
var triggersList = animEl.getAttribute('data-animate-sbs-trgels');
if (!triggersList || triggersList.indexOf(animElID) === -1) return;
animEl.classList.remove('t-sbs-anim_started');
});
});
}
/**
*
* @param {Boolean} closeAll
* @param {Number} index
* @return {HTMLElement[] | []}
*/
function t1093__processClosedPopupList(closeAll, index) {
var openPopupList = t1093__getPopupObjValue('openPopUpList');
var hookList = closeAll ? openPopupList : openPopupList.slice(index);
var popupSelectors = hookList.map(function (hook) {
return '[data-tooltip-hook="' + hook + '"]';
});
popupSelectors = popupSelectors.join(', ');
t1093__clearPopupObjKey('openPopUpList', closeAll, index);
return Array.prototype.slice.call(document.querySelectorAll(popupSelectors));
}
function t1093__removeAnimationOnClose(popup) {
var popupAnimElems = Array.prototype.slice.call(popup.querySelectorAll('.t-animate_started'));
var windowWidth = (window.tn && window.tn.curResolution) || window.innerWidth;
popupAnimElems.forEach(function (elem) {
if (windowWidth < 1200 && elem.getAttribute('data-animate-mobile') !== 'y') return;
elem.classList.remove('t-animate_started');
elem.classList.add('t-animate_wait');
});
}
/**
*
* @param {string} key - key of window.tPopupObj
* @param {Boolean} emptyAll
* @param {Number} index
*/
function t1093__clearPopupObjKey(key, emptyAll, index) {
if (!window.tPopupObj || !window.tPopupObj[key]) return;
if (emptyAll) {
window.tPopupObj[key] = [];
} else if (index === -1) {
window.tPopupObj[key].pop();
} else {
window.tPopupObj[key] = window.tPopupObj[key].slice(0, index);
}
}
/**
* Попап считается последним, если:
* - нет других отркытых попапов
* - есть открытие попапы, но они не блокируют скролл
*
* Данная фукнция нужная для проверки необходимости обновления блокировки скролла.
*
* Бывают попапы-баннеры, которые не блокируют скролл, которые просто отображаются как обычные элементы и их не обязательно закрывать.
* @returns {Boolean}
*/
function t1093__closePopup_isLastPopupWithLockedScroll() {
var popups = t1093__getPopupObjValue('openPopUpList')
.map(hook => document.querySelector('[data-tooltip-hook="' + hook + '"]'))
.filter(Boolean);
// Если остались открытые попапы-баннеры БЕЗ блокировки скролла, то текущий попап может считаться последним
// Если попапов больше нет, то текущий так же считаетс последним
return popups.every(popup => t1093__getBooleanPopupAttribute(popup, 'disable-lock-scroll'));
}
function t1103__paintIcons(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
var icon = rec.querySelector('.t1103__icon');
if (!icon) return;
var iconStyle = window.getComputedStyle(icon);
var iconColor = iconStyle.getPropertyValue('fill');
var iconURL = icon.getAttribute('data-original');
if (!iconURL) return;
if (
iconURL.indexOf('/lib__tildaicon__') === -1 &&
iconURL.indexOf('/lib/tildaicon/') === -1 &&
iconURL.indexOf('tild6135-6632-4230-a438-613739663436') === -1 //Fish rec icon
) {
icon.style.backgroundImage = 'url(' + iconURL + ')';
return;
}
var xhr = new XMLHttpRequest();
xhr.open('GET', iconURL);
xhr.responseType = 'document';
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
var response = xhr.response;
var svg = response.querySelector('svg');
if (!svg) return;
var figureList = svg.querySelectorAll('*:not(g):not(title):not(desc)');
figureList.forEach(function (figure) {
figure.style.fill = iconColor;
});
var svgString = new XMLSerializer().serializeToString(svg);
var svgEncodedURL = 'url(data:image/svg+xml;base64,' + window.btoa(svgString) + ')';
icon.style.backgroundImage = svgEncodedURL;
} else if (xhr.readyState === XMLHttpRequest.DONE) {
icon.style.backgroundImage = 'url(' + iconURL + ')';
}
};
xhr.send();
}
function t1108_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector('.t1108');
if (!container) return;
var lines = rec.querySelectorAll('.t1108__line');
var blocksCount = parseInt(container.getAttribute('data-blocks-count'), 10);
var circleCount = 4;
if (blocksCount !== 4) circleCount = 8;
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
var cirqles = line.querySelector('.t1108__cirqle');
for (var j = 0; j < circleCount; j++) {
line.append(cirqles.cloneNode(true));
}
}
function t1108_update() {
var col = rec.querySelector('.t1108__col');
var colWidth = 0;
var bgImg = rec.querySelector('.t1108__bgimg');
var bgWidth = 0;
var imgMaxWidth = 0;
if (col) {
var colStyle = getComputedStyle(col, null);
var colPaddingLeft = parseInt(colStyle.paddingLeft) || 0;
var colPaddingRight = parseInt(colStyle.paddingRight) || 0;
colWidth = col.clientWidth - (colPaddingLeft + colPaddingRight);
}
if (bgImg) bgWidth = bgImg.offsetWidth;
imgMaxWidth = colWidth - bgWidth > 0 ? colWidth - bgWidth : 4;
for (var i = 0; i < lines.length; i++) {
lines[i].style.maxWidth = imgMaxWidth + 'px';
}
}
if (window.isMobile) {
if (typeof jQuery !== 'undefined') {
$(window).on('orientationchange', t_throttle(t1108_update));
} else {
window.addEventListener('orientationchange', t_throttle(t1108_update));
}
} else {
window.addEventListener('resize', t_throttle(t1108_update));
}
if (typeof jQuery !== 'undefined') {
$(container).on('displayChanged', t_throttle(t1108_update));
} else {
container.addEventListener('displayChanged', t_throttle(t1108_update));
}
t1108_update();
}
function t1118_init(recId) {
t_onFuncLoad('t_faq_init', function () {
t_faq_init(recId);
});
t1118_closeSecondOpenedCard(recId);
}
function t1118_closeSecondOpenedCard(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var cards = rec.querySelectorAll('.t_faq__header_opened');
if (!cards[1]) return;
if (window.innerWidth < 960) {
cards[1].classList.remove('t_faq__header_opened');
cards[1].nextElementSibling.style.display = 'none';
}
}
function t1119_init(recId) {
t_onFuncLoad('t_faq_init', function () {
t_faq_init(recId);
});
}
/**
* @typedef {Object} Product
* @prop {string} name - имя
* @prop {string} price - цена
* @prop {string} uid
* @prop {string} inv - количество
* @prop {string} [img] - URL изображения
* @prop {string} [sku]
* @prop {ProductOption[]} [options] - варианты продукта
*
* @typedef {Object} ProductOption
* @prop {string} option - название варианта
* @prop {string} variant - значение варианта
* @prop {string} price - цена варианта
*/
/**
* @typedef {Object} SoldOutEventDetail
* @prop {HTMLElement} buttonBuyElement - Кнопка покупки, связанная с событием.
* @prop {Product} product - Кнопка покупки, связанная с событием.
* @prop {()=>void} renderSoldOutMessage - Кнопка покупки, связанная с событием.
*
* @typedef {CustomEvent} SoldOutEvent
*/
/**
* @typedef {Object} AvailableEventDetail
* @prop {HTMLElement} buttonBuyElement - Кнопка покупки, связанная с событием.
*
* @typedef {CustomEvent} AvailableEvent
*/
/**
* Инициализация блока
* @param {string} recId
* @param {string} notifyBtnText Текст кнопки в карточке товара
* @returns
*/
function t1122_init(recId, notifyBtnText) {
if (!window.CustomEvent) return;
var thisBlockCount = document.querySelectorAll('.t1122').length;
if (thisBlockCount > 1) {
t1122_handleMultipleBlocksOnPage(thisBlockCount);
}
if (thisBlockCount > 1 && window.t1122_isInited) return;
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
if (!popup) return;
window.t1122_isInited = true;
rec.setAttribute('data-animationappear', 'off');
rec.setAttribute('data-popup-subscribe-inited', 'y');
rec.style.opacity = '1';
// Назначаем ссылку сами, т.к. в блоке нет поля $a.linkhook
var popupLink = '#popup:out-of-stock';
popup.setAttribute('data-tooltip-hook', popupLink);
t1122_handleProductNotifyBtn(recId, popup, notifyBtnText);
t1122_handlePopupLinks(recId);
t1122_setPopupAccessibility(popupLink);
t1122_handlePopupClose(recId, popup);
t1122_handleEditorPageLink(recId, popup);
popup.addEventListener(
'scroll',
t_throttle(function () {
t1122_updateLazyload();
})
);
}
/**
* Обрабатывает случай, когда на странице много таких же блоков
*/
function t1122_handleMultipleBlocksOnPage(blocksCount) {
var errorText = '';
var errorTexts = {
RU:
'Ошибка: На странице присутствуют ' +
blocksCount +
' виджета подписки на поступление товара (блок ST600). Пожалуйста, удалите дубликаты. Блоки могут находиться на странице Header или Footer.',
EN:
'Error: There are ' +
blocksCount +
' out of stock widgets on the page (block ST600). Please remove duplicates. Blocks can be located in the Header or Footer of the page.',
};
var lang = t1122_getLang();
errorText = errorTexts[lang] || errorTexts['EN'];
var errorTextElements = document.querySelectorAll('.t1122__error');
errorTextElements.forEach(function (errorTextEl) {
errorTextEl.style.display = '';
errorTextEl.textContent = errorText;
});
if (!window.t1122_isAlertShowed) {
window.t1122_isAlertShowed = true;
console.error(errorText);
alert(errorText);
}
}
/**
* Получает селектор ссылки для кнопки открытия попапа
* @param {string} url
* @returns {string}
*/
function t1122_getLinkSelector(url) {
return 'a[href$="' + url + '"]';
}
/**
* Настраивает поведение кнопки открытия попапа на странице режактирования сайта
* @param {string} recId
* @param {Element} popup
*/
function t1122_handleEditorPageLink(recId, popup) {
var allRecords = document.getElementById('allrecords');
var currentMode = allRecords.getAttribute('data-tilda-mode');
if (currentMode !== 'edit') return;
var popupLink = t1122_getPopupLink(popup);
var showPopupSelector = t1122_getLinkSelector(popupLink);
var showPopupBtn = document.querySelector(showPopupSelector);
if (!showPopupBtn) return;
/** @type {Product} */
var productData = {
uid: '123456789',
name: 'Underwater wearable watch',
sku: '700.936.37',
img: 'https://static.tildacdn.com/tild3536-6236-4535-b035-663833623266/noroot.png',
options: [
{
option: 'Bracelet size',
variant: 'S',
price: null,
},
],
price: null,
inv: 1,
};
showPopupBtn.addEventListener('click', function (event) {
event.preventDefault();
t1122_insertProductDataIntoPopup(productData, popup);
t1122_showPopup(recId);
});
}
/**
* Настраивает поведение кнопки вызова попапа и кнопки "Купить" у товара
* @param {Element} popup
* @param {string} notifyBtnText Текст кнопки
*/
function t1122_handleProductNotifyBtn(recId, popup, notifyBtnText) {
var productElements = document.querySelectorAll('.js-product');
if (!productElements) return;
var popupLink = popup.getAttribute('data-tooltip-hook');
var insertBtnClass = 'js-out-of-stock-inserted-block';
t_onFuncLoad('t_store__collectProductDataByElement', function () {
document.addEventListener('tStoreSoldOut', onSoldOutEvent);
});
document.addEventListener('tStoreAvailable', onAvailableEvent);
/** @param {SoldOutEvent} soldOutEvent */
function onSoldOutEvent(soldOutEvent) {
var buyBtn = soldOutEvent.detail.buttonBuyElement;
if (!buyBtn) return;
var oldInsertedBtn = buyBtn.parentNode.querySelector('.' + insertBtnClass);
if (oldInsertedBtn) {
t1122_removeElement(oldInsertedBtn);
}
var newInsertBtn = t1122_createPopupButton(popupLink, notifyBtnText, buyBtn);
buyBtn.insertAdjacentElement('afterend', newInsertBtn);
buyBtn.style.display = 'none';
buyBtn.classList.add('t_catalog__prod-popup__btn-replaced');
var effectNameFirst = buyBtn.getAttribute('data-btneffects-first');
var effectNameSecond = buyBtn.getAttribute('data-btneffects-second');
if (effectNameFirst) {
newInsertBtn.setAttribute('data-btneffects-first', effectNameFirst);
} else if (effectNameSecond) {
newInsertBtn.setAttribute('data-btneffects-second', effectNameSecond);
}
// фикс для товара с вариантами, когда кнопка может появиться при выборе варианта товара с количеством 0
var effects = buyBtn.querySelector('.t-btn_wrap-effects') || buyBtn.querySelector('.t-btn_effects');
if (effects) {
newInsertBtn.appendChild(effects.cloneNode(true));
}
var buyBtnStyle = buyBtn.querySelector('style');
if (buyBtnStyle) {
newInsertBtn.appendChild(buyBtnStyle.cloneNode(true));
}
newInsertBtn.classList.add(insertBtnClass);
newInsertBtn.addEventListener('click', function (notifyBtnClickEvent) {
notifyBtnClickEvent.preventDefault();
var productEl = buyBtn.closest('.js-product');
var productData;
// Событие не возникает при изменении доп опций
// Берем информацию сначала из полей продукта.
// Если его нет, то из события.
if (productEl) {
productData = t_store__collectProductDataByElement(productEl);
}
if (!productData) {
productData = soldOutEvent.detail.product;
}
t1122_insertProductDataIntoPopup(productData, popup);
t1122_showPopup(recId);
});
if (typeof soldOutEvent.detail.renderSoldOutMessage === 'function') {
soldOutEvent.detail.renderSoldOutMessage();
}
}
/** @param {SoldOutEvent} availableEvent */
function onAvailableEvent(availableEvent) {
var buyBtn = availableEvent.detail.buttonBuyElement;
if (!buyBtn) return;
var oldInsertedBtn = buyBtn.parentNode.querySelector('.' + insertBtnClass);
if (oldInsertedBtn) {
t1122_removeElement(oldInsertedBtn);
}
buyBtn.style.display = '';
}
}
/**
* Создает кнопку подписки со стилями кнопки "Купить"
* @param {string} popupLink
* @param {string} btnText
* @param {Element} buyBtn
* @returns {Element}
*/
function t1122_createPopupButton(popupLink, btnText, buyBtn) {
var btn = document.createElement('a');
btn.href = popupLink;
btn.style.display = '';
btn.classList.add('t1122__popup-btn');
buyBtn.classList.forEach(function (className) {
// Добавляем все классы, кроме тех, на которых завязаны JS и disabled
if (
className.indexOf('js-') === 0 ||
className.indexOf('_disabled') !== -1 ||
className === 't_catalog__prod-popup__btn-replaced'
)
return;
btn.classList.add(className);
});
var span = document.createElement('span');
span.textContent = btnText;
span.classList.add('t-btnflex__text');
btn.appendChild(span);
return btn;
}
/**
* Удаляет элемент из DOM с поддержкой IE8+
* @param {Element} el
*/
function t1122_removeElement(el) {
if (el.parentNode !== null) {
el.parentNode.removeChild(el);
}
}
/**
* Настраивает поведение ссылок в попапе
* @param {string} recId
*/
function t1122_handlePopupLinks(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var hrefs = rec.querySelectorAll('a[href*="#"]');
var submitHref = rec.querySelector('.t-submit[href*="#"]');
if (submitHref) {
submitHref.addEventListener('click', function () {
document.body.classList.remove('t-body_scroll-locked');
});
}
hrefs.forEach(function (href) {
href.addEventListener('click', function () {
var url = this.getAttribute('href');
if (!url || url.substring(0, 7) != '#price:') {
t1122_closePopup(recId);
if (!url || url.substring(0, 7) == '#popup:') {
setTimeout(function () {
t1122_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
}, 300);
}
}
});
});
}
/**
* Обработка закрытия попапа
* @param {string} recId
* @param {Element} popup
*/
function t1122_handlePopupClose(recId, popup) {
var popupLink = t1122_getPopupLink(popup);
var popupCloseBtn = popup.querySelector('.t-popup__close');
popup.addEventListener('click', function (event) {
var windowWithoutScrollBar = window.innerWidth - 17;
if (event.clientX > windowWithoutScrollBar) return;
if (event.target === this) t1122_closePopup(recId);
});
popupCloseBtn.addEventListener('click', function () {
t1122_closePopup(recId);
});
function escClosePopup(event) {
var key = event.key || event.keyCode;
if (key === 'Escape' || key === 'Esc' || key === 27) t1122_closePopup(recId);
}
popup.addEventListener('tildamodal:show' + popupLink, function () {
document.addEventListener('keydown', escClosePopup);
});
popup.addEventListener('tildamodal:close' + popupLink, function () {
document.removeEventListener('keydown', escClosePopup);
});
}
/**
* Настраивает доступность кнопок, открывающих попап
* @param {string} popupLink
*/
function t1122_setPopupAccessibility(popupLink) {
// a11y: add attributes to the trigger button
t_onFuncLoad('t_popup__addAttributesForAccessibility', function () {
t_popup__addAttributesForAccessibility(popupLink);
});
// a11y: add class to the trigger buttin for focus
t_onFuncLoad('t_popup__addClassOnTriggerButton', function () {
t_popup__addClassOnTriggerButton(document, popupLink);
});
}
/**
* Cкрывает сообщение об успехе в попапе если оно есть
* @param {Element} popup
*/
function t1122_updatePopupDefaults(popup) {
var hiddenFormEl = popup.querySelector('.js-successbox');
if (hiddenFormEl) {
hiddenFormEl.style.display = 'none';
}
var hiddenFormEl = popup.querySelector('.t1122__inputsbox_hidden');
if (hiddenFormEl) {
hiddenFormEl.classList.remove('t1122__inputsbox_hidden');
}
}
/**
* Получает ссылку на попап
* @param {Element} popup
* @returns {string}
*/
function t1122_getPopupLink(popup) {
return popup.getAttribute('data-tooltip-hook');
}
function t1122_showPopup(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var windowWidth = window.innerWidth;
var screenMin = rec.getAttribute('data-screen-min');
var screenMax = rec.getAttribute('data-screen-max');
if (screenMin && windowWidth < parseInt(screenMin, 10)) return;
if (screenMax && windowWidth > parseInt(screenMax, 10)) return;
var popup = rec.querySelector('.t-popup');
var popupLink = popup.getAttribute('data-tooltip-hook');
var ranges = rec.querySelectorAll('.t-range');
var documentBody = document.body;
ranges.forEach(function (range) {
t1122_triggerEvent(range, 'popupOpened');
});
t1122_updatePopupDefaults(popup);
t_onFuncLoad('t_popup__showPopup', function () {
t_popup__showPopup(popup);
});
t_onFuncLoad('t_popup__resizePopup', function () {
t_popup__resizePopup(recId);
});
t1122_triggerEvent(document.body, 'popupShowed');
documentBody.classList.add('t-body_popupshowed');
documentBody.classList.add('t1122__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (t1122_isIOS11()) {
setTimeout(t1122_lockScroll, 500);
}
t1122_updateLazyload();
t1122_triggerEvent(popup, 'tildamodal:show' + popupLink);
t_onFuncLoad('t_forms__calculateInputsWidth', function () {
t_forms__calculateInputsWidth(recId);
});
// analytics
var analytics = popup.getAttribute('data-track-popup');
if (analytics && window.Tilda) {
Tilda.sendEventToStatistics(analytics, popupLink);
}
}
function t1122_closePopup(recId) {
var rec = document.getElementById('rec' + recId);
var popup = rec.querySelector('.t-popup');
var popupTooltipHook = popup.getAttribute('data-tooltip-hook');
/* Блок BF504 (.t945__popup) не запрещает скролл страницы, так что при закрытии попапа мы не берём его в список отркытых попапов */
var popupAll = document.querySelectorAll('.t-popup_show:not(.t-feed__post-popup):not(.t945__popup)');
if (popupAll.length == 1) {
t1122_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
} else {
var newPopup = [];
popupAll.forEach(function (popup) {
if (popup.getAttribute('data-tooltip-hook') === popupTooltipHook) {
popup.classList.remove('t-popup_show');
newPopup.push(popup);
}
});
if (newPopup.length === popupAll.length) {
t1122_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t-body_popupshowed');
}
}
t1122_triggerEvent(document.body, 'popupHidden');
popup.classList.remove('t-popup_show');
document.body.classList.remove('t1122__body_popupshowed');
/* fix IOS11 cursor bug + general IOS background scroll */
if (t1122_isIOS11()) {
t1122_unlockScroll();
}
// a11y: add focus to the trigger button after popup closing
t_onFuncLoad('t_popup__addFocusOnTriggerButton', function () {
t_popup__addFocusOnTriggerButton();
});
setTimeout(function () {
var popupHide = document.querySelectorAll('.t-popup:not(.t-popup_show)');
popupHide.forEach(function (popup) {
popup.style.display = 'none';
});
}, 300);
t1122_triggerEvent(popup, 'tildamodal:close' + popupTooltipHook);
}
/**
* Вставляет данные товара в попап
* @param {Product} productData
* @param {Element} popup
*/
function t1122_insertProductDataIntoPopup(productData, popup) {
var imgEl = popup.querySelector('.js-product-img');
var titleEl = popup.querySelector('.js-product-title');
var optionsEl = popup.querySelector('.js-product-options');
var formEl = popup.querySelector('.t-form');
if (imgEl) {
if (productData.img) {
imgEl.style.backgroundImage = 'url("' + productData.img + '")';
imgEl.style.display = '';
} else {
imgEl.style.display = 'none';
}
}
if (titleEl) {
titleEl.innerHTML = '';
if (productData.name) {
var titleTextEl = t1122_createProductTitleEl(productData.name);
titleEl.appendChild(titleTextEl);
}
}
var renderOptions = {};
if (optionsEl) {
optionsEl.innerHTML = '';
if (productData.options) {
renderOptions = t1122_prepareOptionsForRender(productData.options);
}
for (var key in renderOptions) {
var optionEl = t1122_createProductOptionEl(key + ': ' + renderOptions[key]);
optionsEl.appendChild(optionEl);
}
if (productData.sku) {
var skuOptionEl = t1122_createProductOptionEl(t1122_unescapeQuotes(productData.sku));
optionsEl.appendChild(skuOptionEl);
}
}
// Hidden inputs
var hiddenInputsEl = popup.querySelector('.js-product-hidden');
if (!hiddenInputsEl) {
hiddenInputsEl = document.createElement('div');
hiddenInputsEl.classList.add('js-product-hidden');
formEl.appendChild(hiddenInputsEl);
} else {
hiddenInputsEl.innerHTML = '';
}
var hiddenInputArray = [];
// Создание строки детального описания
var subscriptionHiddenInputArray = [];
var detailsArray = [];
if (productData.sku) {
detailsArray.push(productData.sku);
}
for (var key in renderOptions) {
detailsArray.push(key + ': ' + renderOptions[key]);
}
if (productData.name) {
subscriptionHiddenInputArray.push(productData.name);
}
if (detailsArray.length) {
subscriptionHiddenInputArray.push('(' + detailsArray.join(', ') + ')');
}
if (productData.price !== undefined) {
subscriptionHiddenInputArray.push('-', productData.price);
}
hiddenInputArray.push(
t1122_createProductHiddenInput('product_subscription', subscriptionHiddenInputArray.join(' '))
);
hiddenInputArray.push(t1122_createProductHiddenInput('price', productData.price));
hiddenInputArray.forEach(function (input) {
hiddenInputsEl.appendChild(input);
});
}
function t1122_createProductOptionEl(text) {
var optionEl = document.createElement('p');
optionEl.classList.add('t1122__product-option');
optionEl.textContent = text;
return optionEl;
}
function t1122_createProductTitleEl(text) {
var titleEl = document.createElement('h3');
titleEl.classList.add('t1122__product-title', 't-descr', 't-descr_sm');
titleEl.textContent = t1122_unescapeQuotes(text);
return titleEl;
}
/**
* Создает скрытый инпут
* @param {string} name
* @param {string} value
* @returns
*/
function t1122_createProductHiddenInput(name, value) {
var uidInputEl = document.createElement('input');
uidInputEl.setAttribute('type', 'hidden');
uidInputEl.name = name;
uidInputEl.value = value;
return uidInputEl;
}
function t1122_onSuccess(form) {
t_onFuncLoad('t_forms__onSuccess', function () {
t_forms__onSuccess(form);
});
}
function t1122_updateLazyload() {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
/**
* Создает новый массив опции для рендера, учитывая мультиопции
* @param {ProductOption[]} options
* @returns {Object}
*/
function t1122_prepareOptionsForRender(options) {
/** @type {Object} */
var renderOptions = {};
options.forEach(function (item) {
if (!item.variant) return;
if (renderOptions[item.option]) {
renderOptions[item.option] += ', ' + item.variant;
} else {
renderOptions[item.option] = item.variant;
}
});
return renderOptions;
}
function t1122_lockScroll() {
var documentBody = document.body;
if (!documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop =
typeof window.pageYOffset !== 'undefined'
? window.pageYOffset
: (document.documentElement || documentBody.parentNode || documentBody).scrollTop;
documentBody.classList.add('t-body_scroll-locked');
documentBody.style.top = '-' + bodyScrollTop + 'px';
documentBody.setAttribute('data-popup-scrolltop', bodyScrollTop);
}
}
function t1122_unlockScroll() {
var documentBody = document.body;
if (documentBody.classList.contains('t-body_scroll-locked')) {
var bodyScrollTop = documentBody.getAttribute('data-popup-scrolltop');
documentBody.classList.remove('t-body_scroll-locked');
documentBody.style.top = null;
documentBody.removeAttribute('data-popup-scrolltop');
document.documentElement.scrollTop = parseInt(bodyScrollTop);
}
}
function t1122_isIOS11() {
return (
/iPhone|iPad|iPod/i.test(navigator.userAgent) &&
!window.MSStream &&
window.isiOSVersion &&
window.isiOSVersion[0] === 11
);
}
/**
* Получает текущий язык сайта в uppercase
* @returns {string}
*/
function t1122_getLang() {
var lang = '';
var allrecords = document.querySelector('#allrecords');
if (allrecords) {
lang = allrecords.getAttribute('data-tilda-project-lang');
}
if (!lang) {
lang = (window.navigator.userLanguage || window.navigator.language).slice(0, 2);
}
return lang ? lang.toUpperCase() : 'EN';
}
function t1122_triggerEvent(el, eventName) {
t_onFuncLoad('t_triggerEvent', function () {
t_triggerEvent(el, eventName);
});
}
/**
* Декодирует символы на кавычки
*
* @param {string} str
* @returns {string}
**/
function t1122_unescapeQuotes(str) {
if (!str) {
return '';
}
var map = {
'"': '"',
''': "'",
};
return str.replace(/"|'/g, function (match) {
return map[match];
});
}
function t1211_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t1211_handleCodeBlocks(rec);
}
function t1211_handleCodeBlocks(rec) {
var codeBlocks = rec.querySelectorAll('.t-redactor__highlightcode code');
if (!codeBlocks.length) return;
t_onFuncLoad('t_loadJsFile', function () {
t_loadJsFile(
'https://static.tildacdn.com/js/highlight.min.js',
t1211_addHighlightCodeBlocks.bind(this, codeBlocks)
);
});
t_onFuncLoad('t_loadCSSFile', function () {
t_loadCSSFile('https://static.tildacdn.com/css/highlight.min.css');
t_loadCSSFile(
'https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;700&display=swap',
t1211_addFontFamily.bind(this, codeBlocks)
);
});
}
function t1211_addHighlightCodeBlocks(codeBlocks) {
t_onFuncLoad('hljs', function () {
if (!window.hljs.highlightBlock) return;
for (var i = 0; i < codeBlocks.length; i++) {
window.hljs.highlightBlock(codeBlocks[i]);
}
});
}
function t1211_addFontFamily(codeBlocks) {
for (var i = 0; i < codeBlocks.length; i++) {
codeBlocks[i].style.fontFamily = '"Source Code Pro", monospace';
}
}
function t1261_init(recId, dropdownMenuItems) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t1261_drawDropdownMenu(rec, dropdownMenuItems);
t1261_drawBurgerMenu(rec);
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recId);
});
t_onFuncLoad('t_menuBurger__init', function () {
t_menuBurger__init(recId);
});
var block = rec.querySelector('.t1261');
if (!block || block.classList.contains('t1261_previemode')) return;
t_onFuncLoad('t_menu__highlightActiveLinks', function () {
t_menu__highlightActiveLinks('.t1261__link-item');
});
t_onFuncLoad('t_menu__findAnchorLinks', function () {
t_menu__findAnchorLinks(recId, '.t1261__link-item');
});
t1261_drawMenuScroll(rec);
t1261_drawSearch(rec);
}
function t1261_drawMenuScroll(rec) {
var menu = rec.querySelector('.t1261');
var menuPanel = rec.querySelector('.t1261__panel');
var dataAppearOffset = menu.getAttribute('data-appearoffset');
var dataBgOpacityScroll = menu.getAttribute('data-bgopacity-scroll');
function t1261_appearMenu(dataAppearOffset) {
if (window.pageYOffset >= dataAppearOffset) {
if (menuPanel.classList.contains('t1261__panel_beforeready')) {
menuPanel.classList.remove('t1261__panel_beforeready');
}
} else {
menuPanel.classList.add('t1261__panel_beforeready');
}
}
function t1261_getAppearMenuParseNumber(string) {
if (string.indexOf('vh') > -1) {
string = Math.floor(window.innerHeight * (parseInt(string, 10) / 100));
}
return parseInt(string, 10);
}
function t1261_changeBgOpacityScroll() {
if (window.pageYOffset > 20) {
menuPanel.classList.add('t1261__panel_bg-scroll');
} else {
menuPanel.classList.remove('t1261__panel_bg-scroll');
}
}
if (
(menuPanel.classList.contains('.t1261__panel_previemode') ||
!menuPanel.classList.contains('.t1261__panel_fixed')) &&
!dataAppearOffset &&
!dataBgOpacityScroll
)
return;
if (dataAppearOffset) {
dataAppearOffset = t1261_getAppearMenuParseNumber(dataAppearOffset);
t1261_appearMenu(dataAppearOffset);
}
if (dataBgOpacityScroll) {
t1261_changeBgOpacityScroll();
}
window.addEventListener(
'scroll',
t_throttle(function () {
if (dataAppearOffset) t1261_appearMenu(dataAppearOffset);
if (dataBgOpacityScroll) t1261_changeBgOpacityScroll();
})
);
}
function t1261_drawSearch(rec) {
var searchWrap = rec.querySelector('.js-search-wrap');
if (!searchWrap) return;
var allRecords = document.getElementById('allrecords');
if (!allRecords) return;
var projectId = allRecords.getAttribute('data-tilda-project-id');
var searchInput = searchWrap.querySelector('.js-search-input');
if (!searchInput) return;
var searchReset = searchWrap.querySelector('.js-search-reset');
if (!searchReset) return;
var searchLoading = searchWrap.querySelector('.js-search-loading');
if (!searchLoading) return;
var searchContainer = searchWrap.querySelector('.js-search-found');
if (!searchContainer) return;
var lang = (window.navigator.userLanguage || window.navigator.language).toUpperCase().slice(0, 2);
// Language override based on attribute
var projectLang = allRecords.getAttribute('data-tilda-project-lang');
if (projectLang) lang = projectLang;
/* Checking allowed languages. Default is English */
var acceptedLangs = ['EN', 'RU', 'FR', 'DE', 'ES', 'PT', 'UK', 'JA', 'ZH', 'PL', 'KK', 'IT', 'LV'];
if (acceptedLangs.indexOf(lang) === -1) {
lang = 'EN';
}
var translation = {
notFound: {
EN: 'Nothing found',
RU: 'Ничего не найдено',
FR: "Rien n'a été trouvé",
DE: 'Nichts gefunden',
ES: 'Nada Encontrado',
PT: 'Nada encontrado',
UK: 'Нічого не знайдено',
JA: '何も見つかりません',
ZH: '没有发现',
PL: 'Nic nie znaleziono',
KK: 'Ештеңе табылмады',
IT: 'Non abbiamo trovato nulla',
LV: 'Nekas nav atrasts',
},
errorOccurred: {
EN: 'An error occurred while sending the request',
RU: 'При отправке запроса произошла ошибка',
FR: "Une erreur est survenue pendant l'envoi de la demande",
DE: 'Fehler beim Senden der Anforderung',
ES: 'Se produjo un error al enviar la solicitud',
PT: 'Ocorreu um erro ao enviar o pedido',
UK: 'При відправленні запиту виникла помилка',
JA: 'リクエストを送信中にエラーが発生しました',
ZH: '发送请求时出错',
PL: 'Wystąpił błąd podczas wysyłania żądania',
KK: 'Сұрау жіберу кезінде қате пайда болды',
IT: "Si è verificato un errore durante l'invio della richiesta",
LV: 'Radās kļūda nosūtot pieprasījumu',
},
errorOccurredText: {
EN: 'The server could not respond to the request',
RU: 'Сервер не смог ответить на запрос',
FR: "Le serveur n'a pas pu répondre à la demande",
DE: 'Der Server konnte nicht auf die Anfrage antworten',
ES: 'El servidor no ha podido responder a la solicitud',
PT: 'O servidor não conseguiu responder ao pedido',
UK: 'Сервер не зміг відповісти на запит',
JA: 'サーバが要求に応答することができませんでした',
ZH: '服务器无法响应请求',
PL: 'Serwer nie odpowiada',
KK: 'Сервер сұрауына жауап алмады,',
IT: 'Il server non ha potuto rispondere alla richiesta',
LV: 'Serveris nevarēja atbildēt uz pieprasījumu',
},
description: {
EN: 'Description',
RU: 'Описание',
FR: 'La description',
DE: 'Beschreibung',
ES: 'Descripción',
PT: 'Descrição',
UK: 'Опис',
JA: '説明',
ZH: '描述',
PL: 'Opis',
KK: 'Сипаттамасы',
IT: 'Descrizione',
LV: 'Apraksts',
},
};
var searchTargetData = searchWrap.getAttribute('data-search-target');
var activePage = 1;
var defaultUrl = 'https://search.tildacdn.com/search/?p=' + projectId + '&num=10&hs=50&st=' + searchTargetData;
var options = {
action: 'GET',
onLoad: t1261_handleSearchLoading,
onLoadDone: t1261_handleSearchLoadingDone,
onSuccess: t1261_drawSearchResult,
onError: t1261_addSearchError,
};
function t1261_showSearchButton(searchButton, searchButtonClass) {
searchButton.classList.add(searchButtonClass + '_show');
}
function t1261_hideSearchButton(searchButton, searchButtonClass) {
searchButton.classList.remove(searchButtonClass + '_show');
}
function t1261_sendSearchRequest(options) {
var xhr = new XMLHttpRequest();
if (options.onLoad) options.onLoad();
xhr.open(options.action, options.url, true);
xhr.onload = function () {
try {
if (options.onSuccess) options.onSuccess(xhr.response);
} catch (e) {}
if (options.onLoadDone) options.onLoadDone();
};
xhr.onabort = function (error) {
console.info(error);
if (options.onLoadDone) options.onLoadDone();
};
xhr.onerror = function () {
if (options.onLoadDone) options.onLoadDone();
if (options.onError) {
var text =
translation.errorOccurred[lang] +
' ' +
translation.errorOccurredText[lang] +
'. ' +
' ' +
translation.description[lang] +
': ' +
xhr.status +
' ' +
xhr.statusText;
options.onError(text);
}
};
xhr.timeout = 30000;
xhr.ontimeout = function (error) {
console.info(error);
if (options.onLoadDone) options.onLoadDone();
};
xhr.responseType = 'json';
xhr.send();
}
function t1261_handleSearchResetButton() {
searchReset.addEventListener('click', function () {
searchInput.value = '';
searchContainer.innerHTML = '';
activePage = 1;
t1261_hideSearchButton(searchReset, 't1261__search-reset');
});
}
function t1261_drawSearchResult(response) {
var pages = response.pages;
if (!pages.length) {
t1261_addSearchError(translation.notFound[lang], 'not-found');
return;
}
if (activePage != 1) {
t1261_appendSearchListItem(pages);
return;
}
t1261_drawSearchList(pages);
if (response.pagin > 1) t1261_handleSearchListScroll(response.pagin);
}
function t1261_drawSearchList(pages) {
var html = t1261_getSearchListHTML(pages);
searchContainer.innerHTML = '';
searchContainer.insertAdjacentHTML('beforeend', html);
}
function t1261_getSearchListHTML(pages) {
var html = '';
html += '';
html += '';
Array.prototype.forEach.call(pages, function (page) {
html += t1261_getSearchListItemHTML(page);
});
html += ' ';
html += ' ';
return html;
}
function t1261_escapeHtml(text) {
var div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
function t1261_stripHtmlTags(text) {
var div = document.createElement('div');
div.innerHTML = text;
return div.textContent || div.innerText || '';
}
function t1261_getSearchListItemHTML(page) {
var html = '';
var displayTitle = page.title || '';
// Удаляем все HTML теги и экранируем перед обработкой
if (displayTitle) {
displayTitle = t1261_stripHtmlTags(displayTitle);
displayTitle = t1261_escapeHtml(displayTitle);
}
// Если есть highlight, попробуем найти подсвеченные слова и заменить их в title
if (page.highlight && page.title) {
// Извлекаем все подсвеченные слова из highlight
var highlightMatches = page.highlight.match(/(.*?)<\/b>/gi);
if (highlightMatches && highlightMatches.length > 0) {
// Собираем все уникальные слова из всех тегов
var searchWords = [];
for (var i = 0; i < highlightMatches.length; i++) {
var wordMatch = highlightMatches[i].match(/(.*?)<\/b>/i);
if (wordMatch && wordMatch[1]) {
var word = wordMatch[1];
if (searchWords.indexOf(word) === -1) {
searchWords.push(word);
}
}
}
// Заменяем все найденные слова в title с подсветкой
for (var j = 0; j < searchWords.length; j++) {
var escapedWord = searchWords[j].replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
var regex = new RegExp('(?![^<]*>)(' + escapedWord + ')', 'gi');
displayTitle = displayTitle.replace(regex, '$1 ');
}
}
} else if (page.highlight) {
// Если title нет, используем highlight как есть (он приходит с сервера)
displayTitle = page.highlight;
}
html += '';
html += '';
html += '' + displayTitle + '
';
html += ' ';
html += ' ';
return html;
}
function t1261_appendSearchListItem(pages) {
var searchList = rec.querySelector('.t1261__search-list');
if (!searchList) return;
var html = '';
Array.prototype.forEach.call(pages, function (page) {
html += t1261_getSearchListItemHTML(page);
});
searchList.insertAdjacentHTML('beforeend', html);
}
function t1261_handleSearchLoading() {
t1261_showSearchButton(searchLoading, 't1261__search-loading-icon');
t1261_hideSearchButton(searchReset, 't1261__search-reset');
}
function t1261_handleSearchLoadingDone() {
t1261_showSearchButton(searchReset, 't1261__search-reset');
t1261_hideSearchButton(searchLoading, 't1261__search-loading-icon');
}
function t1261_handleSearchListScroll(totalPage) {
var searchList = rec.querySelector('.t1261__search-list');
if (!searchList) return;
searchList.addEventListener('scroll', function () {
if (searchList.scrollTop + searchList.clientHeight >= searchList.scrollHeight && totalPage !== activePage) {
activePage += 1;
options.url = defaultUrl + '&q=' + encodeURIComponent(searchInput.value) + '&page=' + activePage;
t1261_sendSearchRequest(options);
}
});
}
function t1261_addSearchError(text, type) {
var html = t1261_getSearchErrorHTML(text, type);
searchContainer.innerHTML = '';
searchContainer.insertAdjacentHTML('beforeend', html);
}
function t1261_getSearchErrorHTML(text, type) {
var html = '';
html += '';
if (type === 'not-found') {
html += '
';
html += '';
html +=
' ';
html +=
' ';
html +=
' ';
html +=
' ';
html +=
' ';
html +=
' ';
html += ' ';
html += ' ';
}
html += '
';
html += text;
html += '
';
html += '
';
return html;
}
function t1261_handleSearch() {
var inputValue = searchInput.value.trim();
activePage = 1;
inputValue
? t1261_showSearchButton(searchReset, 't1261__search-reset')
: t1261_hideSearchButton(searchReset, 't1261__search-reset');
if (inputValue.length < 2) {
searchContainer.innerHTML = '';
return;
}
options.url = defaultUrl + '&q=' + encodeURIComponent(inputValue) + '&page=' + activePage;
t1261_sendSearchRequest(options);
}
var searchButton = searchWrap.querySelector('.t1261__search-button');
if (searchButton) {
searchButton.addEventListener('click', function () {
t1261_handleSearch();
});
}
searchInput.addEventListener('keyup', function (event) {
if (event.key === 'Enter') t1261_handleSearch();
});
searchInput.addEventListener(
'input',
t_throttle(function () {
t1261_handleSearch();
}, 500)
);
t1261_handleSearchResetButton();
}
/**
* Отвечает за добаление и обработку данных для меню из каталога
* @param {HTMLElement} rec
* @param {Object} dropdownMenuItems – данные из каталога, либо из меню в блоке
* @returns
*/
function t1261_drawDropdownMenu(rec, dropdownMenuItems) {
var menuBtn = rec.querySelector('.js-dropdown-menu-btn');
if (!menuBtn) return;
t1261_handleDropdownFixedMenuCatalogButton(rec, menuBtn);
if (!dropdownMenuItems) return;
var dropdownMenu = rec.querySelector('.t1261__dropdown');
if (!dropdownMenu) return;
// Если для кнопки Каталог задана ссылка, то не отрисовываем дропдаун меню
var menuBtnHref = menuBtn.getAttribute('href');
if (menuBtnHref && menuBtnHref !== null) return;
// Если пришла строка - парсим, если объект - используем как есть
if (typeof dropdownMenuItems === 'string') {
try {
dropdownMenuItems = JSON.parse(dropdownMenuItems);
} catch (e) {
console.error('T1261: Ошибка парсинга данных меню', e);
return;
}
}
if (!Array.isArray(dropdownMenuItems)) return;
var dropdownMenuHTML = t1261_getDropdownMenuHTML(dropdownMenuItems);
var dropdownList = dropdownMenu.querySelector('.t1261__dropdown-list');
if (!dropdownList) return;
dropdownList.innerHTML = dropdownMenuHTML;
var block = rec.querySelector('.t1261');
if (!block || block.classList.contains('t1261_previemode')) return;
t1261_handleDropdownEvents(rec, menuBtn);
}
function t1261_handleDropdownEvents(rec, menuBtn) {
var dropdownWrapper = rec.querySelector('.t1261__dropdown-wrapper');
if (!dropdownWrapper) return;
var menuBtnIcon = menuBtn.querySelector('.t-btnflex__icon');
function handleMenuClick(event) {
event.preventDefault();
event.stopPropagation();
dropdownWrapper.classList.toggle('t1261__dropdown_open');
menuBtn.classList.toggle('t1261__catalog-button_open');
if (menuBtnIcon) menuBtnIcon.classList.toggle('t-btnflex__icon_default_glyph');
}
function handleWrapperClick(event) {
if (event.target === this) {
closeDropdown();
}
}
function handleEscape(event) {
if (event.key === 'Escape' && dropdownWrapper.classList.contains('t1261__dropdown_open')) {
closeDropdown();
}
}
function closeDropdown() {
dropdownWrapper.classList.remove('t1261__dropdown_open');
menuBtn.classList.remove('t1261__catalog-button_open');
if (menuBtnIcon) menuBtnIcon.classList.remove('t-btnflex__icon_default_glyph');
}
menuBtn.removeEventListener('click', handleMenuClick);
dropdownWrapper.removeEventListener('click', handleWrapperClick);
document.removeEventListener('keydown', handleEscape);
menuBtn.addEventListener('click', handleMenuClick);
dropdownWrapper.addEventListener('click', handleWrapperClick);
document.addEventListener('keydown', handleEscape);
}
/**
* Генерация HTML разметки меню из JSON данных
* @param {Array} dropdownMenuItems - данные для меню
* @returns {string} HTML разметка
*/
function t1261_getDropdownMenuHTML(dropdownMenuItems) {
var dropdownMenuHTML = Array.prototype.map
.call(dropdownMenuItems, function (item) {
var hasSubmenu = item.submenu && item.submenu.length > 0;
var html = '';
html += '' + (item.title || '') + ' ';
if (hasSubmenu) {
var submenuHTML = Array.prototype.map
.call(item.submenu, function (subItem) {
var subHtml = ' ';
return subHtml;
})
.join('');
html += '';
}
html += '';
return html;
})
.join('');
return dropdownMenuHTML;
}
function t1261_handleDropdownFixedMenuCatalogButton(rec, menuBtn) {
var catalogButton = rec.querySelector('.t1261__fixed-menu .t-menuwidgeticons__link_catalog');
if (!catalogButton) return;
var menuPanel = rec.querySelector('.t1261__panel');
catalogButton.addEventListener('click', function (event) {
event.preventDefault();
event.stopPropagation();
if (menuPanel && menuPanel.classList.contains('t1261__panel_static')) {
window.scrollTo(0, 0);
}
menuBtn.click();
});
}
/**
* Отвечает за работу бургерного меню
*
* @param {HTMLElement} rec
* @returns
*/
function t1261_drawBurgerMenu(rec) {
var burger = rec.querySelector('.js-burger');
if (!burger) return;
var burgerMenu = rec.querySelector('.js-burger-menu');
if (!burgerMenu) return;
var burgerMenuButton = burger.querySelector('button[type="button"]');
if (!burgerMenuButton) return;
function handleBurgerMenuClick() {
burgerMenu.classList.toggle('t1261__menu_show');
}
function handleBurgerMenuOverlayClick(event) {
var target = event.target;
var targetBurgerMenu = target.closest('.js-burger-menu');
var targetBurgerMenuButton = target.closest('.js-burger');
var targetMenuLink = target.closest('.t1261__link-item:not(.t1261__link-item_submenu)');
var targetSubMenuLink = target.closest('.t1261__list-item .t-menusub__link-item');
if (!(targetMenuLink || targetSubMenuLink) && (targetBurgerMenu || targetBurgerMenuButton)) {
return;
}
burgerMenu.classList.remove('t1261__menu_show');
burgerMenuButton.classList.remove('t-menu-burger_open');
}
document.removeEventListener('click', handleBurgerMenuOverlayClick);
burgerMenuButton.removeEventListener('click', handleBurgerMenuClick);
document.addEventListener('click', handleBurgerMenuOverlayClick);
burgerMenuButton.addEventListener('click', handleBurgerMenuClick);
}
function t1272_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t1272_bindDesktopLinks(rec);
t1272_initCentering(recId);
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recId);
});
t_onFuncLoad('t_menuBurger__init', function () {
t_menuBurger__init(recId);
});
t1272_handleLangWidget(rec);
}
function t1272_bindDesktopLinks(rec) {
var linkItems = rec.querySelectorAll('.t-menu__link-item');
var subMenuLinks = rec.querySelectorAll('.t-menusub__link-item');
Array.prototype.forEach.call(linkItems, function (link) {
link.addEventListener('click', function (e) {
// Если клик на стрелке - не закрывать меню
var arrow = e.target.closest('.t-menusub__arrow');
if (arrow) return;
if (
(link.classList.contains('t-menusub__target-link') &&
(!link.getAttribute('href') || link.getAttribute('href') === '#')) ||
link.classList.contains('tooltipstered') ||
link.classList.contains('t794__tm-link') ||
link.classList.contains('t966__tm-link') ||
link.classList.contains('t978__tm-link') ||
link.classList.contains('t978__menu-link_hook')
) {
return;
}
t1272_hideMenuOnMobile(link, rec);
});
});
Array.prototype.forEach.call(subMenuLinks, function (subMenuLink) {
subMenuLink.addEventListener('click', function (e) {
// Если клик на стрелке - не закрывать меню
var arrow = e.target.closest('.t-menusub__arrow');
if (arrow) return;
// Если ссылка является хуком - не закрывать меню
if (
subMenuLink.hasAttribute('data-menu-submenu-hook') ||
subMenuLink.classList.contains('t794__tm-link') ||
subMenuLink.hasAttribute('data-tooltip-menu-id')
) {
return;
}
t1272_hideMenuOnMobile(subMenuLink, rec);
});
});
}
function t1272_initCentering(recId) {
function recalc() {
t1272_centerElementInMenu(recId, {
containerSelector: '.t-menu-base__maincontainer_logocenter',
centerSelector: '.t-menu-base__logowrapper_center',
leftSideSelector: '.t-menu-base__list_leftside',
});
t1272_centerElementInMenu(recId, {
containerSelector: '.t-menu-base__maincontainer_logoleft',
centerSelector: '.t-menu-base__leftwrapper_center',
leftSideSelector: '.t-menu-base__logowrapper_left',
});
}
recalc();
window.addEventListener('resize', t_throttle(recalc, 200));
}
function t1272_createMobileMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t1272_menuBase__createMobileMenu', function () {
t1272_menuBase__createMobileMenu(recid, '.t-menu-base');
});
// Закрытие меню по клику на лого и кнопки
// (якорные ссылки в пунктах меню покрываются t1272_bindDesktopLinks)
var wrappersLinks = rec.querySelectorAll('.t-menu-base__logo a, .t-menu-base__buttons a');
Array.prototype.forEach.call(wrappersLinks, function (link) {
link.addEventListener('click', function () {
t1272_hideMenuOnMobile(link, rec);
});
});
}
function t1272_hideMenuOnMobile(link, rec) {
if (!rec || !link || window.innerWidth > 960) return false;
var menu = rec.querySelector('.t-menu-base');
var burger = rec.querySelector('.tmenu-mobile');
if (!menu.classList.contains('t-menu-base__burgermenu_opened')) return false;
if (!link.matches('[href*="#"]')) return false;
if (
menu.classList.contains('t-menu-base_positionabsolute') ||
(burger && !burger.classList.contains('tmenu-mobile_positionfixed'))
) {
menu.style.display = 'none';
menu.style.opacity = '0';
}
t1272_closeMobileMenu(rec);
}
/**
* Обрабатывает закрытие меню в мобильной версии
* Cбрасывает все классы открытого состояния
* @param {Element} rec
* @param {Object} [options]
*/
function t1272_closeMobileMenu(rec, options) {
var menu = rec.querySelector('.t-menu-base');
var mobileMenu = rec.querySelector('.tmenu-mobile');
var mobileBurger = mobileMenu ? mobileMenu.querySelector('.t-menuburger') : null;
if (menu && menu.classList.contains('t-menu-base__burgermenu_opened')) {
t_menuBase__FadeOut(menu, 300);
menu.classList.remove('t-menu-base__burgermenu_opened');
}
if (mobileMenu) mobileMenu.classList.remove('tmenu-mobile_opened');
if (mobileBurger) {
mobileBurger.classList.remove('t-menuburger-opened', 't-menu-burger_open');
mobileBurger.setAttribute('aria-expanded', 'false');
}
document.body.classList.remove('t1272__body_menushowed');
if (options && options.currentMode === 'edit') {
document.body.classList.remove('t-menu-base_opened');
}
}
/**
* Если задан логтип по центру, либо логтип слева, а пункты меню по центру,
* то надо высчитывать ширину левой части
*/
function t1272_centerElementInMenu(recId, selectors) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var container = rec.querySelector(selectors.containerSelector);
if (!container) return;
var centerBlock = container.querySelector(selectors.centerSelector);
if (!centerBlock) return;
var leftSideBlock = container.querySelector(selectors.leftSideSelector);
if (!leftSideBlock) return;
var centerWidth = centerBlock.offsetWidth || 0;
// Если центральный блок пустой (нет лого), не ограничиваем ширину боковых блоков
if (centerWidth === 0) return;
var gap = 50;
var containerPadding = parseInt(getComputedStyle(container).paddingLeft, 10) || 0;
var sideWidth = (container.offsetWidth - containerPadding * 2 - gap * 2 - centerWidth) / 2;
// Временно ограничиваем flex для корректного измерения scrollWidth
leftSideBlock.style.flex = '0 0 auto';
leftSideBlock.style.maxWidth = 'none';
// Минимальная ширина, нужная содержимому блока (например, логотипу)
var contentMinWidth = leftSideBlock.scrollWidth || 0;
// Сбрасываем временные стили
leftSideBlock.style.flex = '';
leftSideBlock.style.maxWidth = '';
// Если содержимое шире чем нужно для центрирования — не применяем ограничение:
if (contentMinWidth > sideWidth) return;
leftSideBlock.style.flex = '1 1 ' + sideWidth + 'px';
leftSideBlock.style.maxWidth = sideWidth + 'px';
}
function t1272_handleLangWidget(rec) {
var langDropdown = rec.querySelector('.t-menu-base__langs_dropdown');
if (!langDropdown) return;
var langButton = rec.querySelector('.js-lang-button');
if (!langButton) return;
var timer;
function positionLangDropdown() {
var dropdownRect = langDropdown.getBoundingClientRect();
var viewportHeight = window.innerHeight;
var spaceBelow = viewportHeight - dropdownRect.bottom;
var spaceAbove = dropdownRect.top;
if (spaceBelow < 0 && spaceAbove > Math.abs(spaceBelow)) {
langDropdown.classList.add('t-menu-base__langs_dropdown_top');
} else {
langDropdown.classList.remove('t-menu-base__langs_dropdown_top');
}
}
function showLangDropdown() {
clearTimeout(timer);
// Если дропдаун уже показан — только отменяем таймер скрытия, не пересчитываем позицию
if (langDropdown.classList.contains('t-menu-base__langs_dropdown_show')) return;
// Сбрасываем классы позиционирования от предыдущего открытия
langDropdown.classList.remove(
't-menu-base__langs_dropdown_top',
't-menu-base__langs_dropdown_overflowed',
't-menu-base__langs_dropdown_overflowed_left'
);
// Скрываем визуально, но сохраняем layout — чтобы getBoundingClientRect вернул корректные размеры
langDropdown.style.visibility = 'hidden';
langDropdown.classList.add('t-menu-base__langs_dropdown_show');
positionLangDropdown();
recalcHorizontalCoord();
langDropdown.style.visibility = '';
}
function hideLangDropdown() {
timer = setTimeout(function () {
langDropdown.classList.remove('t-menu-base__langs_dropdown_show');
}, 300);
}
function recalcHorizontalCoord() {
if (!langDropdown) return;
var MOBILE_WIDTH = 960;
var isMobile = window.innerWidth <= MOBILE_WIDTH;
if (isMobile) return;
var langDropdownRect = langDropdown.getBoundingClientRect();
var windowWidth = window.innerWidth;
if (langDropdownRect.right > windowWidth) {
langDropdown.classList.add('t-menu-base__langs_dropdown_overflowed');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed_left');
} else if (langDropdownRect.left < 0) {
langDropdown.classList.add('t-menu-base__langs_dropdown_overflowed_left');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed');
} else {
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed_left');
}
}
recalcHorizontalCoord();
window.addEventListener('resize', t_throttle(recalcHorizontalCoord, 200));
langButton.addEventListener('mouseenter', showLangDropdown);
langButton.addEventListener('mouseleave', hideLangDropdown);
langDropdown.addEventListener('mouseenter', showLangDropdown);
langDropdown.addEventListener('mouseleave', hideLangDropdown);
}
function t1272_menuBase__createMobileMenu(recid, selector) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector(selector);
var mobileMenu = rec.querySelector('.tmenu-mobile');
if (!mobileMenu) return;
var mobileMenuOpenClass = 'tmenu-mobile_opened';
var mobileMediaQuery = window.matchMedia('(max-width: 960px)');
var menuMobileBurgerhook = menu ? menu.getAttribute('data-mobile-burgerhook') : '';
// Режим burgerhook: бургер оборачивается в ссылку, дальнейшая логика не нужна
if (menu && menu.classList.contains(selector.slice(1) + '__mobile_burgerhook') && menuMobileBurgerhook) {
var mobileBurger =
mobileMenu.querySelector('.tmenu-mobile__burger') || mobileMenu.querySelector('.t-menuburger');
if (mobileBurger) {
var mobileBurgerParent = mobileBurger.parentElement;
var link = document.createElement('a');
link.href = menuMobileBurgerhook;
if (mobileBurgerParent) {
link.appendChild(mobileBurger);
mobileBurgerParent.appendChild(link);
}
}
return;
}
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
var mobileBurger = mobileMenu.querySelector('.t-menuburger');
// Открытие/закрытие по клику на бургер
mobileBurger.addEventListener('click', function (event) {
if (mobileMenu.classList.contains(mobileMenuOpenClass)) {
t1272_closeMobileMenu(rec, { currentMode: currentMode });
} else {
t_menuBase__fadeIn(menu, 300, function () {
if (menu.style.transform) menu.style.transform = '';
if (menu.style.opacity) menu.style.opacity = '';
});
mobileMenu.classList.add(mobileMenuOpenClass);
mobileBurger.classList.add('t-menuburger-opened', 't-menu-burger_open');
var isDropdown = menu.classList.contains('t-menu-base__burgermenu__dropdown');
var isFixedMobileMenu = mobileMenu.classList.contains('tmenu-mobile_positionfixed');
var isFullwidthOrDefault =
menu.classList.contains('t-menu-base__burgermenu__fullwidth') ||
menu.classList.contains('t-menu-base__burgermenu__default');
var shouldShowOverlay = !isDropdown && !(isFullwidthOrDefault && !isFixedMobileMenu);
if (shouldShowOverlay) {
document.body.classList.add('t1272__body_menushowed');
}
menu.classList.add('t-menu-base__burgermenu_opened');
mobileBurger.setAttribute('aria-expanded', 'true');
if (menu.classList.contains('tmenu-mobile__menucontent_fixed')) {
var burgerHeight = getComputedStyle(mobileMenu).height;
var burgerBorderSize = getComputedStyle(mobileMenu).borderBottom || 0;
menu.style.top = burgerHeight + burgerBorderSize;
}
if (currentMode === 'edit') {
document.body.classList.add('t-menu-base_opened');
}
}
t1272_menuBase__checkOverflow(recid, selector);
});
// Закрытие по клику на оверлей, кнопку закрытия в sidebar или якорную ссылку
// Слушатель вешается всегда, проверка ширины — внутри через matchMedia,
document.addEventListener('click', function (e) {
if (!mobileMediaQuery.matches) return;
if (
!e.target.closest(
'.t-menu-base__overlay, .t-menu-base__burgermenu__close-button, a[href*="#"]:not(.tooltipstered):not(.t794__tm-link):not(.t978__tm-link):not(.t966__tm-link):not(.t978__menu-link_hook):not(.t-menuwidgeticons__link_wishlist):not(.t-menuwidgeticons__link_cart)'
)
)
return;
if (!menu) return;
var isSidebar = menu.classList.contains('t-menu-base__burgermenu__sidebar');
if (!isSidebar && !menu.classList.contains('tmenu-mobile__menucontent_fixed')) return;
t1272_closeMobileMenu(rec);
});
// Закрытие по клику на пункт меню внутри блока
rec.addEventListener('click', function (e) {
if (!mobileMediaQuery.matches) return;
if (!menu || !menu.classList.contains('tmenu-mobile__menucontent_fixed')) return;
var menuLink = e.target.closest(
'.t-menu__link-item, .t978__submenu-link, .t978__innermenu-link, .t966__menu-link, .t-menusub__link-item, .t-btn, .t794__link'
);
if (!menuLink) return;
var submenuHooks = ['t978__menu-link_hook', 't978__tm-link', 't966__tm-link', 't794__tm-link'];
var isSubmenuHook = submenuHooks.some(function (cls) {
return menuLink.classList.contains(cls);
});
var isTargetLinkWithoutHref =
menuLink.classList.contains('t-menusub__target-link') &&
(!menuLink.getAttribute('href') || menuLink.getAttribute('href') === '#');
if (isSubmenuHook || isTargetLinkWithoutHref) {
menu.addEventListener('menuOverflow', function () {
t1272_menuBase__checkOverflow(recid, selector);
});
return;
}
t1272_closeMobileMenu(rec);
});
// Сброс стилей при переходе на десктоп + пересчёт top бургера
t_menuBase_updateMobileMenuTop(rec);
window.addEventListener(
'resize',
t_throttle(function () {
if (window.innerWidth > 960) {
if (menu) menu.style.opacity = '';
if (menu) menu.style.display = '';
if (menu) menu.style.height = '';
if (menu) menu.style.overflowY = '';
if (menu) {
var customTopPosition = menu.getAttribute('data-top') || '';
menu.style.top = customTopPosition;
}
mobileMenu.classList.remove(mobileMenuOpenClass);
}
t1272_menuBase__checkOverflow(recid, selector);
t_menuBase_updateMobileMenuTop(rec);
}, 200)
);
// Закрытие по Esc
document.addEventListener('keydown', function (e) {
if (e.keyCode !== 27) return;
if (window.innerWidth > 960) return;
if (!mobileMenu || !mobileMenu.classList.contains(mobileMenuOpenClass)) return;
t1272_closeMobileMenu(rec);
});
function t_menuBase_updateMobileMenuTop(rec) {
var mobileFixedMenu = rec.querySelector('.tmenu-mobile.tmenu-mobile_positionfixed');
var mobileMenu = rec.querySelector('.tmenu-mobile__menucontent_fixed');
if (!mobileFixedMenu || !mobileMenu) return;
if (window.innerWidth <= 960) {
var computedStyle = window.getComputedStyle(mobileFixedMenu);
var baseMobileMenuHeight = 64;
var height = parseFloat(computedStyle.height) || baseMobileMenuHeight;
var borderBottom = parseFloat(computedStyle.borderBottomWidth) || 0;
var menuBase = rec.querySelector('.t-menu-base');
var isSidebar = menuBase.classList.contains('t-menu-base__burgermenu__sidebar');
var isFullscreen = menuBase.classList.contains('t-menu-base__burgermenu__fullscreen');
var top = isSidebar || isFullscreen ? 0 : height + borderBottom;
mobileMenu.style.setProperty('top', top + 'px', 'important');
} else {
mobileMenu.style.setProperty('top', '0px');
}
}
}
function t1272_menuBase__checkOverflow(recid, selector) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector(selector) : null;
if (!menu) return;
var oldMobileMenuSelector = rec.querySelector(selector + '__mobile');
var burger = oldMobileMenuSelector ? oldMobileMenuSelector : rec.querySelector('.tmenu-mobile');
if (!burger) return;
var burgerHeight = burger.offsetHeight;
var windowHeight = document.documentElement.clientHeight;
var menuPosition = menu.style.position || window.getComputedStyle(menu).position;
var menuHeight = menu.offsetHeight;
var isFullscreen = menu.classList.contains('t-menu-base__burgermenu__fullscreen');
if (!isFullscreen && menuPosition === 'fixed' && menuHeight > windowHeight - burgerHeight) {
var availableHeight = windowHeight - burgerHeight;
menu.style.overflow = 'auto';
if (!menu.classList.contains('t-menu-base_sidebar')) {
menu.style.maxHeight = availableHeight + 'px';
}
}
}
// Глобальная карта данных о блоках с табами
// Структура: {
// [recid]: {
// type: '1281' | '395' | '397',
// tabRecIds: [[recId1, recId2], [recId3]], // recIds для каждого таба по индексу
// parentRecid: string | null,
// userClickedTab: number | null
// }
// }
window.t1281_tabsMap = {};
window.t1281_isRestoringFromUrl = false;
window.T1281_TAB_BLOCKS = ['395', '397', '1281'];
function t1281_init(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var allRecords = document.getElementById('allrecords');
var tildaMode = allRecords ? allRecords.getAttribute('data-tilda-mode') : '';
var tildaLazyMode = allRecords ? allRecords.getAttribute('data-tilda-lazy') : '';
var tabs = rec ? rec.querySelectorAll('.t1281__tab') : [];
var col = rec.querySelector('.t1281__col');
var wrapper = rec.querySelector('.t1281__wrapper');
if (tabs.length) {
tabs.forEach(function (tab, index) {
tab.setAttribute('data-tab-number', index + 1);
});
t1281_addTabBlockToTabsMap(recid, tabs);
t1281_associateBlocksWithTabs(tabs, recid);
}
if (tildaMode !== 'edit' && tildaMode !== 'preview') {
t1281_scrollToTabs(recid);
t1281_addA11yAttributesToActiveTab(rec);
}
if (tabs.length) {
t1281_updateContent(recid);
t1281_updateContentBySelect(recid);
}
t1281_addListeners(tabs, rec, recid, tildaMode, tildaLazyMode);
t1281_addLinkClickListener(recid);
var t1281Block = rec.querySelector('.t1281');
if (t1281Block) {
t1281Block.addEventListener('displayChanged', function () {
t1281_updateContent(recid);
t1281_updateSelect(recid);
});
}
if (col && wrapper) {
t1281_addScrollListeners(rec, col, wrapper);
}
t1281_handleScrollHintVisibility(rec, col);
//в tildascripts коллбэк проверяет необходимость отрисовки блоков контента
window.dispatchEvent(new CustomEvent('tildatab:change'));
}
function t1281_addTabBlockToTabsMap(recid, tabs) {
var tabRecIds = [];
var childTabBlocks = [];
var recordType = '1281';
Array.prototype.forEach.call(tabs, function (tab) {
var recIds = t1281_getTabRecIds(tab);
tabRecIds.push(recIds);
recIds.forEach(function (childRecid) {
var childEl = document.getElementById('rec' + childRecid);
if (childEl && t1281_isTabBlock(childEl)) {
childTabBlocks.push(childRecid);
}
});
});
window.t1281_tabsMap[recid] = {
type: recordType,
tabRecIds: tabRecIds,
parentRecid: null,
userClickedTab: null,
};
childTabBlocks.forEach(function (childRecid) {
if (window.t1281_tabsMap[childRecid]) {
window.t1281_tabsMap[childRecid].parentRecid = recid;
}
});
for (var parentId in window.t1281_tabsMap) {
if (!window.t1281_tabsMap.hasOwnProperty(parentId) || parentId === recid) continue;
var parentData = window.t1281_tabsMap[parentId];
for (var i = 0; i < parentData.tabRecIds.length; i++) {
if (parentData.tabRecIds[i].indexOf(recid) !== -1) {
window.t1281_tabsMap[recid].parentRecid = parentId;
return;
}
}
}
}
function t1281_handleScrollHintVisibility(rec, col) {
var hintIcon = rec.querySelector('.t1281__scroll-icon-container');
var fadeLeft = col.classList.contains('t1281__fade_left');
var fadeRight = col.classList.contains('t1281__fade_right');
if (!hintIcon) return;
if (fadeLeft || fadeRight) {
hintIcon.style.display = 'flex';
} else {
hintIcon.style.display = 'none';
}
}
function t1281_addScrollListeners(rec, col, wrapper) {
var t1281_updateGradientsThrottled = t_throttle(function () {
t1281_updateGradients(col);
}, 100);
var t1281_handleScrollHintVisibilityThrottled = t_throttle(function () {
t1281_handleScrollHintVisibility(rec, col);
}, 100);
var resizeObserver = new ResizeObserver(function () {
t1281_updateGradientsThrottled();
t1281_handleScrollHintVisibilityThrottled();
});
resizeObserver.observe(wrapper);
col.addEventListener('scroll', t1281_updateGradientsThrottled);
}
function t1281_updateGradients(col) {
var scrollLeft = col.scrollLeft;
var elWidth = col.getBoundingClientRect().width;
col.classList.toggle('t1281__fade_left', scrollLeft > 0);
col.classList.toggle('t1281__fade_right', scrollLeft + elWidth < col.scrollWidth);
}
function t1281_addA11yAttributesToActiveTab(rec) {
var activeTab = rec.querySelector('.t1281__tab_active');
if (!activeTab) return;
var currentButton = activeTab.querySelector('.t1281__title');
if (currentButton) {
currentButton.setAttribute('tabindex', 0);
currentButton.setAttribute('aria-selected', true);
}
var tabList = rec.querySelector('.t1281__wrapper');
if (tabList) tabList.setAttribute('data-tab-current', activeTab.getAttribute('data-tab-number'));
}
function t1281_associateBlocksWithTabs(tabs, recid) {
Array.prototype.forEach.call(tabs, function (tab, i) {
var blockIds = t1281_getTabRecIds(tab);
if (!blockIds.length) return;
var firstBlock = document.getElementById('rec' + blockIds[0]);
if (!firstBlock) return;
t1281_setAttributeValue(firstBlock, 'aria-labelledby', 'tab' + (i + 1) + '_' + recid);
t1281_setAttributeValue(firstBlock, 'role', 'tabpanel');
t1281_setAttributeValue(firstBlock, 'tabindex', '0');
});
}
function t1281_setAttributeValue(block, attribute, value) {
if (block && !block.getAttribute(attribute)) {
block.setAttribute(attribute, value);
}
}
function t1281_addListeners(tabs, rec, recid, tildaMode, tildaLazyMode) {
var wrapper = rec.querySelector('.t1281__wrapper');
wrapper.addEventListener('click', function (event) {
var targetTab = event.target.closest('.t1281__tab');
if (targetTab && targetTab.classList.contains('t1281__tab_active') && !event.isTrusted) return;
if (!targetTab) return;
t1281_switchBetweenTabs(
recid,
parseInt(targetTab.dataset.tabNumber),
targetTab,
tildaMode,
tildaLazyMode,
true,
true
);
});
wrapper.addEventListener('keydown', function (event) {
var targetTab = event.target.closest('.t1281__tab');
if (targetTab && targetTab.classList.contains('t1281__tab_active') && !event.isTrusted) return;
t1281_handleKeyNavigation(event, tabs, rec, recid, tildaMode, tildaLazyMode);
});
}
function t1281_handleKeyNavigation(event, tabs, rec, recid, tildaMode, tildaLazyMode) {
var wrapper = rec.querySelector('.t1281__wrapper');
if (!wrapper) return;
var currentIndex = Number(wrapper.getAttribute('data-tab-current'));
switch (event.key) {
case 'Left':
case 'ArrowLeft':
currentIndex = currentIndex === 1 ? tabs.length : currentIndex - 1;
break;
case 'Right':
case 'ArrowRight':
currentIndex = currentIndex === tabs.length ? 1 : currentIndex + 1;
break;
default:
return;
}
var targetTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
t1281_switchBetweenTabs(recid, currentIndex, targetTab, tildaMode, tildaLazyMode, true, true);
t1281_showActiveTabFromKeyboard(recid, currentIndex);
event.stopPropagation();
event.preventDefault();
}
function t1281_switchBetweenTabs(recid, tabNumber, targetTab, tildaMode, tildaLazyMode, isUrlSync, isUserAction) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (isUrlSync === undefined) isUrlSync = true;
if (isUserAction === undefined) isUserAction = false;
if (isUserAction && window.t1281_tabsMap[recid]) {
window.t1281_tabsMap[recid].userClickedTab = tabNumber;
}
t1281_switchAttributes(rec, targetTab);
var tabList = rec.querySelector('.t1281__wrapper');
if (!tabList) return;
tabList.setAttribute('data-tab-current', tabNumber);
t1281_updateContent(recid);
t1281_updateSelect(recid);
if (
isUrlSync &&
tildaMode !== 'edit' &&
tildaMode !== 'preview' &&
tabNumber &&
typeof history.replaceState !== 'undefined'
) {
try {
t1281_syncUrlWithTabs(isUserAction ? recid : null);
} catch (err) {}
}
var event = document.createEvent('Event');
event.initEvent('displayChanged', true, true);
window.dispatchEvent(new CustomEvent('tildatab:change'));
t1281_handleHookBlocks(targetTab, event);
t1281_dispatchGalaxyBlockEvent(event);
t1281_handleLazyUpdate(tildaLazyMode);
}
function t1281_handleHookBlocks(targetTab, event) {
var hookBlocks = targetTab.getAttribute('data-tab-rec-ids').split(',');
var hooksCopy = hookBlocks.slice();
hooksCopy.forEach(function (recid) {
var currentRec = document.getElementById('rec' + recid);
if (!currentRec) return;
var recordType = t1281_getRecordType(currentRec);
if (window.T1281_TAB_BLOCKS.includes(recordType)) {
var activeTab = currentRec.querySelector('.t' + recordType + '__tab_active');
if (!activeTab) return;
hookBlocks = hookBlocks.concat(activeTab.getAttribute('data-tab-rec-ids').split(','));
}
});
hookBlocks.forEach(function (curRecid) {
var currentRec = document.getElementById('rec' + curRecid);
if (!currentRec) return;
/* TODO: old */
var currentRecChildren = currentRec.querySelectorAll(
'.t-feed, .t-store, .t-store__product-snippet, .t117, .t121, .t132, .t223, .t226, .t228, .t229, .t230, .t268, .t279, .t341, .t346, .t347, .t349, .t351, .t353, .t384, .t385, .t386, .t396, .t400, .t404, .t409, .t410, .t412, .t418, .t422, .t425, .t428, .t433, .t448, .t456, .t477, .t478, .t480, .t486, .t498, .t504, .t506, .t509, .t511, .t517, .t518, .t519, .t520, .t532, .t533, .t538, .t539, .t544, .t545, .t552, .t554, .t569, .t570, .t577, .t592, .t598, .t599, .t601, .t604, .t605, .t609, .t615, .t616, .t650, .t659, .t670, .t675, .t686, .t688, .t694, .t698, .t700, .t726, .t728, .t730, .t734, .t738, .t740, .t744, .t754, .t760, .t762, .t764, .t774, .t776, .t778, .t780, .t786, .t798, .t799, .t801, .t813, .t814, .t822, .t826, .t827, .t829, .t842, .t843, .t849, .t850, .t851, .t856, .t858, .t859, .t860, .t881, .t889, .t902, .t912, .t923, .t937, .t958, .t959, .t979, .t982, .t983, .t989, .t994, .t1053, .t1067, .t1068, .t1069, .t1070, .t1071, .t1072, .t1186'
);
Array.prototype.forEach.call(currentRecChildren, function (child) {
child.dispatchEvent(event);
});
var displayChangedBlock = currentRec.querySelector('[data-display-changed="true"]');
if (displayChangedBlock) displayChangedBlock.dispatchEvent(event);
});
}
function t1281_dispatchGalaxyBlockEvent(event) {
var galaxyEffectBlocks = document.querySelectorAll('.t826');
Array.prototype.forEach.call(galaxyEffectBlocks, function (galaxyEffectBlock) {
galaxyEffectBlock.dispatchEvent(event);
});
}
function t1281_handleLazyUpdate(lazyMode) {
if (window.lazy === 'y' || lazyMode === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}
function t1281_switchAttributes(rec, targetTab) {
var activeTab = rec.querySelector('.t1281__tab_active');
if (activeTab) {
activeTab.classList.remove('t1281__tab_active');
var activeButton = activeTab.querySelector('.t1281__title');
if (activeButton) {
activeButton.setAttribute('tabindex', -1);
activeButton.setAttribute('aria-selected', false);
}
}
targetTab.classList.add('t1281__tab_active');
var targetButton = targetTab.querySelector('.t1281__title');
if (targetButton) {
targetButton.setAttribute('tabindex', 0);
targetButton.setAttribute('aria-selected', true);
}
}
function t1281_showActiveTabFromKeyboard(recid, currentIndex) {
var rec = document.getElementById('rec' + recid);
var currentTab = rec.querySelector('[data-tab-number="' + currentIndex + '"]');
if (!currentTab) return;
var currentButton = currentTab.querySelector('.t1281__title');
/* a11y: change attrs for current tab */
if (currentButton) {
currentButton.focus();
currentButton.offsetHeight;
}
var tabList = rec.querySelector('.t1281__wrapper');
if (tabList) tabList.setAttribute('data-tab-current', currentIndex);
}
function t1281_getNotActiveHooks(tabs, activeTab, hookBlocks) {
var hooks = [];
Array.prototype.forEach.call(tabs, function (tab) {
if (tab !== activeTab) {
var notActiveHooks = tab.getAttribute('data-tab-rec-ids').split(',');
notActiveHooks.forEach(function (hook) {
if (hooks.indexOf(hook) === -1 && hookBlocks.indexOf(hook) === -1) hooks.push(hook);
});
}
});
return hooks;
}
function t1281_updateContent(recid) {
var rec = document.getElementById('rec' + recid);
var activeTabs = rec ? rec.querySelectorAll('.t1281__tab_active') : null;
if (activeTabs.length !== 1) return;
var activeTab = activeTabs[0];
var tabs = rec.querySelectorAll('.t1281__tab');
var hookBlocks = activeTab.getAttribute('data-tab-rec-ids').split(',');
var notActiveHooks = t1281_getNotActiveHooks(tabs, activeTab, hookBlocks);
var popupBlocks = [
190, 217, 312, 331, 358, 364, 365, 390, 702, 706, 746, 750, 756, 768, 862, 868, 890, 945, 1013, 1014,
];
t1281_handleVisibility(recid, rec, activeTab, hookBlocks, popupBlocks);
t1281_handleUpdateTabs(recid, notActiveHooks, popupBlocks);
t1281_handleScroll();
}
function t1281_handleVisibility(recid, rec, activeTab, hookBlocks, popupBlocks) {
var select = rec ? rec.querySelector('.t1281__select') : null;
var isVisible = t1281_checkVisibillityEl(activeTab) || t1281_checkVisibillityEl(select);
hookBlocks.forEach(function (hook) {
if (!hook) return;
var hookEl = document.getElementById('rec' + hook);
var hookElRecordType = t1281_getRecordType(hookEl);
if (isVisible) {
if (hookEl) {
hookEl.classList.remove('t1281__off');
hookEl.classList.remove('t395__off');
hookEl.classList.remove('t397__off');
hookEl.setAttribute('aria-hidden', false);
hookEl.style.opacity = '';
t1281_restoreTabHashOnShow(hookEl, hookElRecordType);
}
} else {
var isPopupBlock = popupBlocks.some(function (id) {
return hookElRecordType == String(id);
});
if (hookEl && !isPopupBlock) {
hookEl.setAttribute('data-animationappear', 'off');
hookEl.classList.add('t1281__off');
hookEl.setAttribute('aria-hidden', true);
t1281_reloadIframes(hookEl);
}
}
t1281_updateTabsByHook(hookElRecordType, hookEl, hook, recid);
});
}
function t1281_handleUpdateTabs(recid, notActiveHooks, popupBlocks) {
notActiveHooks.forEach(function (notActiveID) {
if (!notActiveID) return;
var hookEl = document.getElementById('rec' + notActiveID);
var hookElRecordType = t1281_getRecordType(hookEl);
var isPopupBlock = popupBlocks.some(function (id) {
return hookElRecordType == String(id);
});
if (hookEl && !isPopupBlock) {
hookEl.setAttribute('data-connect-with-tab', 'yes');
hookEl.setAttribute('data-animationappear', 'off');
hookEl.classList.add('t1281__off');
hookEl.setAttribute('aria-hidden', true);
t1281_reloadIframes(hookEl);
}
t1281_updateTabsByHook(hookElRecordType, hookEl, notActiveID, recid);
});
}
function t1281_handleScroll() {
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
if (scrollHeight - window.innerHeight < window.pageYOffset) {
window.scrollTo(0, 0);
}
}
function t1281_updateTabsByHook(hookElRecordType, hookEl, currentId, recid) {
if (recid === currentId) return;
switch (hookElRecordType) {
case '395':
if (window.t395_alltabs_updateContent && window.t395_updateSelect) {
window.t395_alltabs_updateContent(currentId);
window.t395_updateSelect(currentId);
}
break;
case '397':
if (window.t397_alltabs_updateContent && window.t397_updateSelect) {
window.t397_alltabs_updateContent(currentId);
window.t397_updateSelect(currentId);
}
break;
case '1281':
t1281_updateContent(currentId);
t1281_updateSelect(currentId);
break;
}
}
function t1281_checkVisibillityEl(el) {
return !!(el && (el.offsetWidth || el.offsetHeight || el.getClientRects().length));
}
function t1281_updateContentBySelect(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var select = rec.querySelector('.t1281__select');
if (select) {
select.addEventListener('change', function () {
var tabEl = rec.querySelector(".t1281__tab[data-tab-rec-ids='" + select.value + "']");
if (tabEl) tabEl.click();
});
}
}
function t1281_addLinkClickListener(recid) {
document.addEventListener('click', function (e) {
var currentLink = e.target.closest('[href*="#!/tab/"]');
if (!currentLink) return;
var hash = currentLink.getAttribute('href');
if (!hash) return;
var params = t1281_parseTabParams(hash);
var hasOwnHash = params.hasOwnProperty(recid);
var hasDeepHash = !hasOwnHash && t1281_findTabNumberByDeepestHash(recid, params) !== null;
if (hasOwnHash || hasDeepHash) {
t1281_scrollToTabs(recid, hash);
}
});
}
function t1281_updateSelect(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var activeTab = rec.querySelector('.t1281__tab_active');
var select = rec.querySelector('.t1281__select');
if (select) select.value = activeTab ? activeTab.getAttribute('data-tab-rec-ids') : '';
}
function t1281_parseTabParams(hashPart) {
var params = {};
if (!hashPart || hashPart.indexOf('#!/tab/') === -1) return params;
var tabIndex = hashPart.indexOf('#!/tab/');
hashPart = hashPart.substring(tabIndex + '#!/tab/'.length);
hashPart.split('&').forEach(function (pair) {
if (!pair) return;
var parts = pair.split('-');
if (parts.length === 2) {
var blockId = parts[0];
var tabNum = parseInt(parts[1], 10);
if (blockId && !isNaN(tabNum)) {
params[blockId] = tabNum;
}
}
});
return params;
}
function t1281_createTabHash(tabParams) {
var pairs = [];
for (var recid in tabParams) {
if (tabParams.hasOwnProperty(recid)) {
pairs.push(recid + '-' + tabParams[recid]);
}
}
return pairs.length ? '#!/tab/' + pairs.join('&') : '';
}
function t1281_getUrlParts() {
var curUrl = window.location.href;
var hashIndex = curUrl.indexOf('#!/tab/');
if (hashIndex === -1) hashIndex = curUrl.indexOf('%23!/tab/');
if (hashIndex !== -1) {
return {
baseUrl: curUrl.substring(0, hashIndex),
tabParams: t1281_parseTabParams(decodeURI(curUrl.substring(hashIndex))),
};
}
var anchorIndex = curUrl.indexOf('#');
return {
baseUrl: anchorIndex !== -1 ? curUrl.substring(0, anchorIndex) : curUrl,
tabParams: {},
};
}
function t1281_syncUrlWithTabs(clickedRecid) {
if (window.t1281_isRestoringFromUrl || !clickedRecid) return;
var urlParts = t1281_getUrlParts();
var tabParams = urlParts.tabParams;
var clickedTabNumber = t1281_getActiveTabNumber(clickedRecid);
if (clickedTabNumber === null) return;
t1281_deleteChildHash(clickedRecid, tabParams);
t1281_deleteParentHash(clickedRecid, tabParams);
t1281_createHash(clickedRecid, clickedTabNumber, tabParams);
t1281_clearChildClicks(clickedRecid);
try {
window.history.replaceState('', '', urlParts.baseUrl + t1281_createTabHash(tabParams));
} catch (err) {}
}
function t1281_getActiveTabNumber(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return null;
var mapData = window.t1281_tabsMap[recid];
var type = mapData ? mapData.type : '1281';
var activeTab = rec.querySelector('.t' + type + '__tab_active');
if (!activeTab) return null;
var num = activeTab.getAttribute('data-tab-number');
return num
? parseInt(num, 10)
: Array.prototype.indexOf.call(rec.querySelectorAll('.t' + type + '__tab'), activeTab) + 1;
}
function t1281_deleteChildHash(recid, tabParams) {
delete tabParams[recid];
var mapData = window.t1281_tabsMap[recid];
if (!mapData) return;
for (var i = 0; i < mapData.tabRecIds.length; i++) {
for (var j = 0; j < mapData.tabRecIds[i].length; j++) {
var childRecid = mapData.tabRecIds[i][j];
if (window.t1281_tabsMap[childRecid]) {
t1281_deleteChildHash(childRecid, tabParams);
}
}
}
}
function t1281_deleteParentHash(recid, tabParams) {
var mapData = window.t1281_tabsMap[recid];
while (mapData && mapData.parentRecid) {
delete tabParams[mapData.parentRecid];
mapData = window.t1281_tabsMap[mapData.parentRecid];
}
}
function t1281_createHash(recid, tabNumber, tabParams) {
var rec = document.getElementById('rec' + recid);
if (!rec) {
tabParams[recid] = tabNumber;
return;
}
var mapData = window.t1281_tabsMap[recid];
var type = mapData ? mapData.type : '1281';
var activeTab = rec.querySelector('.t' + type + '__tab_active');
if (!activeTab) {
tabParams[recid] = tabNumber;
return;
}
var childIds = t1281_getTabRecIds(activeTab);
var hasNonDefaultChild = false;
var childHashes = {};
for (var i = 0; i < childIds.length; i++) {
var childEl = document.getElementById('rec' + childIds[i]);
if (!childEl) continue;
var childMapData = window.t1281_tabsMap[childIds[i]];
if (!childMapData && !t1281_isTabBlock(childEl)) continue;
if (t1281_isBlockHidden(childEl)) continue;
var childTabNum = t1281_getActiveTabNumber(childIds[i]);
if (childTabNum === null) continue;
var wasClicked = childMapData && childMapData.userClickedTab !== null;
if (childTabNum !== 1 || wasClicked) {
hasNonDefaultChild = true;
t1281_createHash(childIds[i], wasClicked ? childMapData.userClickedTab : childTabNum, childHashes);
}
}
if (hasNonDefaultChild) {
for (var key in childHashes) {
if (childHashes.hasOwnProperty(key)) tabParams[key] = childHashes[key];
}
} else {
tabParams[recid] = tabNumber;
}
}
function t1281_clearChildClicks(parentRecid) {
var mapData = window.t1281_tabsMap[parentRecid];
if (!mapData) return;
var activeIdx = t1281_getActiveTabNumber(parentRecid);
if (activeIdx === null) return;
for (var i = 0; i < mapData.tabRecIds.length; i++) {
if (i === activeIdx - 1) continue;
for (var j = 0; j < mapData.tabRecIds[i].length; j++) {
var childRecid = mapData.tabRecIds[i][j];
if (window.t1281_tabsMap[childRecid]) {
window.t1281_tabsMap[childRecid].userClickedTab = null;
t1281_clearChildClicks(childRecid);
}
}
}
}
function t1281_tabContainsDeepestHash(tab, tabParams) {
var ids = t1281_getTabRecIds(tab);
for (var i = 0; i < ids.length; i++) {
if (tabParams[ids[i]]) return true;
var childEl = document.getElementById('rec' + ids[i]);
if (!childEl) continue;
var childType = t1281_getRecordType(childEl);
if (window.T1281_TAB_BLOCKS.indexOf(childType) === -1) continue;
var childTabs = childEl.querySelectorAll('.t' + childType + '__tab');
for (var j = 0; j < childTabs.length; j++) {
if (t1281_tabContainsDeepestHash(childTabs[j], tabParams)) return true;
}
}
return false;
}
function t1281_findTabNumberByDeepestHash(recid, tabParams) {
var rec = document.getElementById('rec' + recid);
if (!rec) return null;
var tabs = rec.querySelectorAll('.t1281__tab');
for (var i = 0; i < tabs.length; i++) {
if (t1281_tabContainsDeepestHash(tabs[i], tabParams)) return i + 1;
}
return null;
}
function t1281_restoreNestedTabsFromUrl(activeTab, tabParams) {
t1281_getTabRecIds(activeTab).forEach(function (childRecid) {
var childEl = document.getElementById('rec' + childRecid);
if (!childEl) return;
var childType = t1281_getRecordType(childEl);
if (window.T1281_TAB_BLOCKS.indexOf(childType) === -1) return;
var childTabNumber = tabParams[childRecid] || t1281_findTabNumberByDeepestHash(childRecid, tabParams);
if (!childTabNumber) return;
var newActiveTab = t1281_activateTabDirect(childEl, childType, childTabNumber);
if (!newActiveTab) return;
t1281_updateBlock(childType, childRecid);
t1281_restoreNestedTabsFromUrl(newActiveTab, tabParams);
});
}
function t1281_scrollToTabs(recid, hash) {
var rec = document.getElementById('rec' + recid);
var curUrl = '';
try {
curUrl = decodeURI(hash || window.location.href);
} catch (err) {}
var tabHashPrefix = '#!/tab/';
if (curUrl.indexOf(tabHashPrefix) === -1) return;
var hashPart = curUrl.substring(curUrl.indexOf(tabHashPrefix));
var tabParams = t1281_parseTabParams(tabHashPrefix + hashPart.substring(tabHashPrefix.length));
var tabNumber = tabParams[recid] || t1281_findTabNumberByDeepestHash(recid, tabParams);
if (!tabNumber) return;
window.t1281_isRestoringFromUrl = true;
var firstOptionSelect = rec ? rec.querySelector('.t1281__wrapper_mobile .t1281__select option') : null;
if (firstOptionSelect) firstOptionSelect.selected = false;
var tabBlock = rec ? rec.querySelector('.t1281') : null;
var tabs = rec.querySelectorAll('.t1281__tab');
Array.prototype.forEach.call(tabs, function (tab, i) {
if (i === tabNumber - 1) {
tab.classList.add('t1281__tab_active');
} else {
tab.classList.remove('t1281__tab_active');
}
});
var tabList = rec.querySelector('.t1281__wrapper');
if (tabList) tabList.setAttribute('data-tab-current', tabNumber);
t1281_updateContent(recid);
t1281_updateSelect(recid);
var tabsMob = rec.querySelectorAll('.t1281__wrapper_mobile .t1281__select option');
if (tabsMob.length >= tabNumber) tabsMob[tabNumber - 1].selected = true;
var activeTab = tabs[tabNumber - 1];
if (activeTab) {
t1281_restoreNestedTabsFromUrl(activeTab, tabParams);
}
if (tabParams[recid] && window.t1281_tabsMap[recid]) {
window.t1281_tabsMap[recid].userClickedTab = tabNumber;
}
window.t1281_isRestoringFromUrl = false;
if (hash) {
setTimeout(function () {
t1281_scrollToEl(tabBlock);
}, 50);
} else if (tabBlock) {
var lastRecidInHash = t1281_getLastRecidInHash(tabParams);
if (lastRecidInHash === recid) {
setTimeout(function () {
t1281_scrollToEl(tabBlock);
}, 50);
}
}
}
function t1281_restoreTabHashOnShow(hookEl, hookElRecordType) {
if (window.T1281_TAB_BLOCKS.indexOf(hookElRecordType) === -1) return;
var hookRecid = hookEl.id.replace('rec', '');
var tabParamsSource = t1281_getUrlParts().tabParams;
var savedTabNumber = tabParamsSource[hookRecid] || t1281_findTabNumberByDeepestHash(hookRecid, tabParamsSource);
var activeTabSelector = '.t' + hookElRecordType + '__tab_active';
var tabs = hookEl.querySelectorAll('.t' + hookElRecordType + '__tab');
if (savedTabNumber && tabs.length >= savedTabNumber) {
var targetTab = tabs[savedTabNumber - 1];
var currentActiveTab = hookEl.querySelector(activeTabSelector);
if (targetTab && targetTab !== currentActiveTab) {
t1281_activateTabDirect(hookEl, hookElRecordType, savedTabNumber);
if (hookElRecordType === '1281') {
t1281_updateContent(hookRecid);
}
}
}
var activeTab = hookEl.querySelector(activeTabSelector);
if (!activeTab) {
if (tabs.length > 0) {
activeTab = tabs[0];
activeTab.classList.add('t' + hookElRecordType + '__tab_active');
} else {
return;
}
}
t1281_getTabRecIds(activeTab).forEach(function (nestedId) {
var nestedEl = document.getElementById('rec' + nestedId);
if (nestedEl) {
t1281_restoreTabHashOnShow(nestedEl, t1281_getRecordType(nestedEl));
}
});
}
function t1281_scrollToEl(el) {
var startPosition = window.pageYOffset;
var startTime = null;
var duration = 300;
function getElTopPos() {
var elTopPos = el.getBoundingClientRect().top + window.pageYOffset;
elTopPos = window.innerWidth > 960 ? elTopPos - 200 : elTopPos - 100;
if (elTopPos < 0) elTopPos = 0;
var documentHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
var bottomViewportPoint = documentHeight - document.documentElement.clientHeight;
if (elTopPos > bottomViewportPoint) elTopPos = bottomViewportPoint;
return elTopPos;
}
function t1281_easeInQuad(timeElapsed, startPosition, distance, duration) {
timeElapsed /= duration;
return distance * timeElapsed * timeElapsed + startPosition;
}
requestAnimationFrame(function scrollAnimation(currentTime) {
if (startTime === null) startTime = currentTime;
var timeElapsed = currentTime - startTime;
var elTopPos = getElTopPos();
window.scrollTo(0, t1281_easeInQuad(timeElapsed, startPosition, elTopPos - startPosition, duration));
document.body.setAttribute('data-scrollable', 'true');
if (timeElapsed < duration) {
requestAnimationFrame(scrollAnimation);
} else {
window.scrollTo(0, elTopPos);
document.body.removeAttribute('data-scrollable');
}
});
}
function t1281_getRecordType(el) {
return el ? el.getAttribute('data-parenttplid') || el.getAttribute('data-record-type') : '';
}
function t1281_isTabBlock(el) {
return window.T1281_TAB_BLOCKS.indexOf(t1281_getRecordType(el)) !== -1;
}
function t1281_isBlockHidden(el) {
return (
el.classList.contains('t1281__off') || el.classList.contains('t395__off') || el.classList.contains('t397__off')
);
}
function t1281_getTabRecIds(tab) {
var attr = tab.getAttribute('data-tab-rec-ids') || '';
return attr ? attr.split(',').filter(Boolean) : [];
}
function t1281_getLastRecidInHash(tabParams) {
var lastRecid = null;
for (var recid in tabParams) {
if (tabParams.hasOwnProperty(recid)) {
lastRecid = recid;
}
}
return lastRecid;
}
function t1281_updateBlock(type, recid) {
switch (type) {
case '1281':
t1281_updateContent(recid);
t1281_updateSelect(recid);
break;
case '395':
if (window.t395_alltabs_updateContent) window.t395_alltabs_updateContent(recid);
if (window.t395_updateSelect) window.t395_updateSelect(recid);
break;
case '397':
if (window.t397_alltabs_updateContent) window.t397_alltabs_updateContent(recid);
if (window.t397_updateSelect) window.t397_updateSelect(recid);
break;
}
}
function t1281_activateTabDirect(el, type, tabNumber) {
var tabSelector = '.t' + type + '__tab';
var activeSelector = '.t' + type + '__tab_active';
var tabs = el.querySelectorAll(tabSelector);
if (tabs.length < tabNumber) return null;
var currentActive = el.querySelector(activeSelector);
if (currentActive) {
currentActive.classList.remove('t' + type + '__tab_active');
}
tabs[tabNumber - 1].classList.add('t' + type + '__tab_active');
Array.prototype.forEach.call(tabs, function (tab, index) {
if (!tab.hasAttribute('data-tab-number')) {
tab.setAttribute('data-tab-number', index + 1);
}
});
var wrapper = el.querySelector('.t' + type + '__wrapper');
if (wrapper) wrapper.setAttribute('data-tab-current', tabNumber);
return tabs[tabNumber - 1];
}
/**
* Перезагружаем iframe внутри вкладок, чтобы остановить и перезапустить видеоплееры
*/
function t1281_reloadIframes(el) {
var iframes = el.querySelectorAll('.t-video-lazyload iframe');
if (!iframes.length) return;
Array.prototype.forEach.call(iframes, function (iframe) {
var iframeSrc = iframe.getAttribute('src');
if (iframeSrc) iframe.setAttribute('src', iframeSrc);
});
}
var t1301_POPUP_SHOWED_EVENT_NAME = 'catalog:popupShowed';
var t1301_POPUP_CLOSED_EVENT_NAME = 'catalog:popupClosed';
function t1301__init(recid) {
t_onFuncLoad('t_prod__init', function () {
t_prod__init(recid);
});
t1301_initPopup(recid);
t1301__hoverZoom_init(recid);
t1301__updateLazyLoad(recid);
t1301_initQuantityInputs(recid);
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var quantityBtns = rec.querySelectorAll(
'.t1301__col .t-catalog__prod__quantity, .t1301__product-full .t-catalog__prod__quantity'
);
if (quantityBtns.length) {
t_onFuncLoad('t_catalog_addProductQuantityEvents', function () {
t1301_initProductQuantity(recid);
});
}
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
}
function t1301_initProductQuantity(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var productList = rec.querySelectorAll('.t1301__col, .t1301__product-full');
Array.prototype.forEach.call(productList, function (product) {
t_catalog_addProductQuantityEvents(product);
});
}
function t1301__showMore(recid) {
var rec = document.querySelector('#rec' + recid + ' .t1301');
if (!rec) return;
var cardsShowLimit = parseInt(rec.getAttribute('data-show-count'), 10);
if (isNaN(cardsShowLimit) || cardsShowLimit <= 0) return;
var showMoreButton = rec.querySelector('.t1301__showmore');
if (!showMoreButton) return;
const showMoreTextContainer = showMoreButton.querySelector('.js-btn-txt');
if (showMoreTextContainer) {
showMoreTextContainer.textContent = t1301__dict();
}
showMoreButton.style.removeProperty('display');
var allProductCards = rec.querySelectorAll('.t1301__col');
Array.prototype.forEach.call(allProductCards, function (productCard) {
productCard.style.display = 'none';
});
var cardsNumber = allProductCards.length;
t1301__showSeparator(rec, cardsShowLimit);
for (var i = 0; i < cardsShowLimit; i++) {
if (allProductCards[i]) {
allProductCards[i].style.removeProperty('display');
}
}
showMoreButton.addEventListener('click', function () {
var currentColumns = rec.querySelectorAll('.t1301__col');
var currentColumnsShowed = 0;
Array.prototype.forEach.call(currentColumns, function (column) {
if (column.style.display !== 'none') {
++currentColumnsShowed;
}
});
for (var i = 0; i < cardsShowLimit + currentColumnsShowed; i++) {
if (allProductCards[i]) {
allProductCards[i].style.removeProperty('display');
}
}
var event = document.createEvent('HTMLEvents');
event.initEvent('displayChanged', true, false);
rec.dispatchEvent(event);
if (cardsShowLimit + currentColumnsShowed >= cardsNumber) {
showMoreButton.style.display = 'none';
}
t1301__showSeparator(rec, cardsShowLimit + currentColumnsShowed);
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
}
function t1301__showSeparator(rec, cardsShowLimit) {
if (window.jQuery && rec instanceof jQuery) {
rec = rec.get(0);
}
var allSeparators = rec.querySelectorAll('.t1301__separator_number');
Array.prototype.forEach.call(allSeparators, function (separator) {
separator.classList.add('t1301__separator_hide');
if (separator.getAttribute('data-product-separator-number') <= cardsShowLimit) {
separator.classList.remove('t1301__separator_hide');
}
});
}
function t1301__dict() {
var dictionary = {
EN: 'Load more',
RU: 'Загрузить еще',
FR: 'Charger plus',
DE: 'Mehr laden',
ES: 'Carga más',
PT: 'Carregue mais',
UK: 'Завантажити ще',
JA: 'もっと読み込む',
ZH: '裝載更多',
};
var language = window.browserLang;
return dictionary[language] ? dictionary[language] : dictionary['EN'];
}
function t1301__hoverZoom_init(recid) {
if (window.isMobile) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
try {
if (!rec.querySelector('[data-hover-zoom]')) {
return;
}
var hoverScript = 'https://static.tildacdn.com/js/tilda-hover-zoom-1.0.min.js';
if (document.querySelector("script[src^='" + hoverScript + "']")) {
t_onFuncLoad('t_hoverZoom_init', function () {
t_hoverZoom_init(recid);
});
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = hoverScript;
script.onload = function () {
setTimeout(function () {
t_hoverZoom_init(recid);
}, 500);
};
script.onerror = function (error) {
console.log('Upload script error: ', error);
};
document.head.appendChild(script);
}
} catch (error) {
console.log('Zoom image init error: ' + error.message);
}
}
function t1301__updateLazyLoad(recid) {
var scrollContainer = document.querySelector('#rec' + recid + ' .t1301__container_mobile-flex');
var tRecords = document.querySelector('.t-records');
if (!tRecords) return;
var currentMode = tRecords.getAttribute('data-tilda-mode');
var colFixed = document.querySelector('#rec' + recid + ' .t1301__col_fixed');
var allRecords = document.getElementById('allrecords');
var scrollFunc = t_throttle(function () {
if (window.lazy === 'y' || (allRecords && allRecords.getAttribute('data-tilda-lazy') === 'yes')) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
});
if (currentMode !== 'edit' && currentMode !== 'preview') {
if (scrollContainer) scrollContainer.addEventListener('scroll', scrollFunc);
if (colFixed) {
var popup = document.querySelector('#rec' + recid + ' .t-popup');
if (popup) popup.addEventListener('scroll', scrollFunc);
}
}
}
function t1301_initPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var allPopupLinks = rec.querySelectorAll('[href^="#prodpopup"]');
if (!allPopupLinks.length) return;
var popup = rec.querySelector('.t-popup');
popup.addEventListener('mousedown', function (event) {
var windowWidth = window.innerWidth;
var maxScrollBarWidth = 17;
var windowWithoutScrollBar = windowWidth - maxScrollBarWidth;
if (event.clientX > windowWithoutScrollBar) {
return;
}
if (event.target === this) {
t1301_closePopup(document.body, popup);
}
});
Array.prototype.forEach.call(allPopupLinks, function (popupLink) {
var product = popupLink.closest('.js-product');
var productLid = product.getAttribute('data-product-lid');
/* ищем среди всех блоков ссылки по которым можно открыть попап текущего блока */
var productLinks = document.querySelectorAll('.r a[href$="#!/tproduct/' + recid + '-' + productLid + '"]');
Array.prototype.forEach.call(productLinks, function (productLink) {
productLink.addEventListener('click', function () {
/* перепроверяем что попап ещё существует */
if (rec.querySelector('[data-product-lid="' + productLid + '"]')) {
var linkToPopup = product.querySelector('[href^="#prodpopup"]');
if (linkToPopup) {
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
linkToPopup.dispatchEvent(event);
}
}
});
});
popupLink.addEventListener('click', clickOnceHandler, { once: true });
function clickOnceHandler(event) {
event.preventDefault();
t_onFuncLoad('t_sldsInit', function () {
t_sldsInit(recid + ' #t1301__product-' + productLid);
});
popupLink.removeEventListener('click', clickOnceHandler, false);
}
popupLink.addEventListener('click', function (event) {
event.preventDefault();
if (
event.target.classList.contains('t1002__addBtn') ||
event.target.parentNode.classList.contains('t1002__addBtn')
) {
return;
}
t1301_showPopup(recid);
Array.prototype.forEach.call(popup.querySelectorAll('.js-product'), function (product) {
product.style.display = 'none';
});
var productFull = popup.querySelector('.js-product[data-product-lid="' + productLid + '"]');
if (productFull) {
productFull.style.display = 'block';
}
var analitics = popup.getAttribute('data-track-popup');
if (analitics && productFull && window.Tilda) {
var productName = productFull.querySelector('.js-product-name');
if (productName) {
var virtualTitle = productName.textContent;
if (!virtualTitle) {
virtualTitle = 'prod' + productLid;
}
Tilda.sendEventToStatistics(analitics, virtualTitle);
}
}
var currentUrl = window.location.href;
if (currentUrl.indexOf('#!/tproduct/') === -1 && currentUrl.indexOf('%23!/tproduct/') === -1) {
if (history.replaceState) {
window.history.replaceState(
'',
'',
window.location.href + '#!/tproduct/' + recid + '-' + productLid
);
}
}
t1301_updateSlider(recid + ' #t1301__product-' + productLid);
setTimeout(function () {
if (
window.lazy === 'y' ||
document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes'
) {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 500);
});
});
if (!document.getElementById('record' + recid)) {
t1301_checkUrl(recid);
}
if (popup && popup.hasAttribute('data-fixed-button')) {
t1301_fixedPopupButton(recid);
}
}
function t1301_checkUrl(recid) {
if (!window.catalogUrlProcessedByRecid) {
window.catalogUrlProcessedByRecid = {};
}
if (window.catalogUrlProcessedByRecid[recid]) return;
var currentUrl = window.location.href;
var tprodIndex =
(currentUrl.indexOf('#!/tproduct/') + 1 ||
currentUrl.indexOf('%23!/tproduct/') + 1 ||
currentUrl.indexOf('#%21%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('#!%2Ftproduct%2F') + 1 ||
currentUrl.indexOf('%23%21%2Ftproduct%2F') + 1) - 1;
if (tprodIndex !== -1) {
var currentUrl = currentUrl.substring(tprodIndex, currentUrl.length);
var curProdLid = currentUrl.substring(currentUrl.indexOf('-') + 1, currentUrl.length);
if (curProdLid) {
var curProdLidMatch = curProdLid.match(/([0-9]+)/g);
if (curProdLidMatch) {
curProdLid = curProdLidMatch[0];
}
}
if (currentUrl.indexOf(recid) === -1) return;
var rec = document.getElementById('rec' + recid);
if (!rec) return;
if (currentUrl.indexOf(recid) !== 0 && rec.querySelector('[data-product-lid="' + curProdLid + '"]')) {
var currentLink = rec.querySelector('[data-product-lid="' + curProdLid + '"] [href^="#prodpopup"]');
var event = document.createEvent('HTMLEvents');
event.initEvent('click', true, false);
if (currentLink) {
currentLink.dispatchEvent(event);
}
if (typeof rec.scrollIntoView === 'function') {
rec.scrollIntoView({ block: 'start' });
}
window.catalogUrlProcessedByRecid[recid] = true;
}
}
}
function t1301_updateSlider(recid) {
var rec = document.querySelector('#rec' + recid);
if (!rec) return;
t_onFuncLoad('t_slds_SliderWidth', function () {
t_slds_SliderWidth(recid);
});
var sliderWrapper = rec.querySelector('.t-slds__items-wrapper');
var slider = rec.querySelector('.t-slds__container');
var paddingLeft = parseInt(slider.style.paddingLeft, 10) || 0;
var paddingRight = parseInt(slider.style.paddingRight, 10) || 0;
var sliderWidth = slider.clientWidth - (paddingLeft + paddingRight);
var position = parseInt(sliderWrapper.getAttribute('data-slider-pos'), 10);
sliderWrapper.style.transform = 'translate3d(-' + sliderWidth * position + 'px, 0, 0)';
t_onFuncLoad('t_slds_UpdateSliderHeight', function () {
t_slds_UpdateSliderHeight(recid);
});
t_onFuncLoad('t_slds_UpdateSliderArrowsHeight', function () {
t_slds_UpdateSliderArrowsHeight(recid);
});
}
function t1301_showPopup(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var popup = rec.querySelector('.t-popup');
popup.style.display = 'block';
setTimeout(function () {
popup.querySelector('.t-popup__container').classList.add('t-popup__container-animated');
popup.classList.add('t-popup_show');
t_triggerEvent(popup, t1301_POPUP_SHOWED_EVENT_NAME);
}, 50);
setTimeout(function () {
if (window.lazy === 'y' || document.getElementById('allrecords').getAttribute('data-tilda-lazy') === 'yes') {
t_onFuncLoad('t_lazyload_update', function () {
t_lazyload_update();
});
}
}, 300);
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t-body_popupshowed');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
document.body.dispatchEvent(event);
var closeButtons = document.querySelectorAll('.t-popup__close, .t1301__close-text');
Array.prototype.forEach.call(closeButtons, function (closeButton) {
closeButton.addEventListener('click', function () {
t1301_closePopup(document.body, popup);
});
});
document.addEventListener('keydown', function (event) {
var isGalleryShowedOldLib = document.body.classList.contains('t-zoomer__show');
if (isGalleryShowedOldLib) return;
var isGalleryShowedNewLib = document.body.classList.contains('t-zoomer__active');
if (isGalleryShowedNewLib) return;
var isPopupShowed = document.body.classList.contains('t-body_popupshowed');
if (!isPopupShowed) return;
if (popup && popup.classList.contains('t-popup_show')) {
if (event.key === 'Escape') {
t1301_closePopup(document.body, popup);
}
}
});
}
function t1301_closePopup(body, popup) {
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
body.classList.remove('t-body_popupshowed');
popup.classList.remove('t-popup_show');
var event = document.createEvent('HTMLEvents');
event.initEvent('twishlist_addbtn', true, false);
body.dispatchEvent(event);
var currentUrl = window.location.href;
var indexToRemove = currentUrl.indexOf('#!/tproduct/');
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && indexToRemove !== -1) {
indexToRemove = currentUrl.indexOf('%23!/tproduct/');
}
currentUrl = currentUrl.substring(0, indexToRemove);
setTimeout(function () {
popup.scrollTop = 0;
popup.style.display = 'none';
if (history.replaceState) {
window.history.replaceState('', '', currentUrl);
}
}, 300);
t_triggerEvent(popup, t1301_POPUP_CLOSED_EVENT_NAME);
}
function t1301_fixedPopupButton(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var MOBILE_MAX_WIDTH = 560;
var popup = rec.querySelector('.t-popup');
var popupContainer = popup.querySelector('.t-popup__container');
var btnWrappers = rec.querySelectorAll('.t1301__btn-wrapper');
Array.prototype.forEach.call(btnWrappers, function (el) {
el.classList.add('t1301__btn-wrapper-fixed');
});
function addStyle() {
popupContainer.style.paddingBottom = '90px';
// убираем transform чтобы блок не влиял на position: fixed у детей
// инлайн important можно добавить только так
popupContainer.style.cssText += ';transform:none !important;';
}
function resetStyle() {
popupContainer.style.paddingBottom = '';
popupContainer.style.transform = '';
}
function handleResize() {
if (window.innerWidth > MOBILE_MAX_WIDTH) {
resetStyle();
return;
}
addStyle();
}
if (window.isMobile) {
window.addEventListener('orientationchange', handleResize);
}
popup.addEventListener(t1301_POPUP_SHOWED_EVENT_NAME, function () {
setTimeout(function () {
handleResize();
});
});
popup.addEventListener(t1301_POPUP_CLOSED_EVENT_NAME, function () {
resetStyle();
});
window.addEventListener('resize', handleResize);
}
function t1301_initQuantityInputs(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var quantityInputs = rec.querySelectorAll('.t-catalog__prod__quantity-input');
Array.prototype.forEach.call(quantityInputs, function (input) {
var maxValue = parseInt(input.getAttribute('max'), 10);
var minValue = parseInt(input.getAttribute('min'), 10);
input.addEventListener('input', function (e) {
var value = parseInt(e.target.value, 10);
if (value > maxValue) {
input.value = 99999;
return;
}
if (value < minValue) {
input.value = 1;
}
});
});
}
function t1362_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t1362_bindDesktopLinks(rec);
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recId);
});
t_onFuncLoad('t_menuBurger__init', function () {
t_menuBurger__init(recId);
});
var langButtons = rec.querySelectorAll('.js-lang-button');
langButtons.forEach(function (button) {
t1362_handleLangWidget(button);
});
t1362_initBurgerMenu(recId);
t1362_checkMobileHeaderOverflow(rec);
t1362_setFullwidthPadding(rec);
}
/**
* Рассчитывает и устанавливает позицию dropdown-бургер-меню относительно шапки
* На десктопе учитывает горизонтальное выравнивание (left/right)
* @param {HTMLElement} rec
*/
function t1362_positionDropdown(rec) {
function calcDropdownTop(menu, isMobile) {
var topPadding = isMobile ? 0 : 10;
var coordMenu = menu.getBoundingClientRect();
var topCoord = coordMenu.bottom - topPadding;
return topCoord;
}
function calcDropdownLeft(coordMenuWrapper, edgePadding) {
var wrapperLeftCoord = coordMenuWrapper.left;
var leftCoord = wrapperLeftCoord < edgePadding ? edgePadding : wrapperLeftCoord;
return leftCoord;
}
function calcDropdownRight(coordMenuWrapper, edgePadding) {
var viewportWidth = window.innerWidth;
var wrapperRightCoord = coordMenuWrapper.right;
var rightCoord =
wrapperRightCoord > viewportWidth - edgePadding ? edgePadding : viewportWidth - wrapperRightCoord;
return rightCoord;
}
function recalc() {
var menu = rec.querySelector('.t-menu-popover');
if (!menu) return;
var dropdownMenu = rec.querySelector('.t-menu-popover__burgermenu__dropdown');
if (!dropdownMenu) return;
var burgerBtn = rec.querySelector('.t-menu-burger');
if (!burgerBtn) return;
var MOBILE_WIDTH = 960;
var isMobile = window.innerWidth <= MOBILE_WIDTH;
dropdownMenu.style.top = calcDropdownTop(menu, isMobile) + 'px';
if (isMobile) return;
var menuWrapper = rec.querySelector('.t-menu-popover__maincontainer');
if (!menuWrapper) return;
var coordMenuWrapper = menuWrapper.getBoundingClientRect();
var edgePadding = 5;
var isLeftAligned = dropdownMenu.classList.contains('t-menu-popover__burgermenu__dropdown_left');
var isRightAligned = dropdownMenu.classList.contains('t-menu-popover__burgermenu__dropdown_right');
if (isLeftAligned) {
dropdownMenu.style.left = calcDropdownLeft(coordMenuWrapper, edgePadding) + 'px';
}
if (isRightAligned) {
dropdownMenu.style.right = calcDropdownRight(coordMenuWrapper, edgePadding) + 'px';
}
}
recalc();
window.addEventListener('resize', t_throttle(recalc, 200));
}
/**
* Навешивает обработчики кликов на пункты десктопного меню
* Предотвращает закрытие поповера при клике на стрелку подменю
* или на ссылки-хуки/target-link
* @param {HTMLElement} rec
*/
function t1362_bindDesktopLinks(rec) {
var linkItems = rec.querySelectorAll('.t-menu__link-item');
var subMenuLinks = rec.querySelectorAll('.t-menusub__link-item');
Array.prototype.forEach.call(linkItems, function (link) {
link.addEventListener('click', function (e) {
// Если клик на стрелке - не закрывать меню
var arrow = e.target.closest('.t-menusub__arrow');
if (arrow) return;
if (
link.classList.contains('t-menusub__target-link') ||
link.classList.contains('tooltipstered') ||
link.classList.contains('t794__tm-link') ||
link.classList.contains('t966__tm-link') ||
link.classList.contains('t978__tm-link')
) {
return;
}
});
});
Array.prototype.forEach.call(subMenuLinks, function (subMenuLink) {
subMenuLink.addEventListener('click', function (e) {
// Если клик на стрелке - не закрывать меню
var arrow = e.target.closest('.t-menusub__arrow');
if (arrow) return;
// Если ссылка является хуком - не закрывать меню
if (
subMenuLink.hasAttribute('data-menu-submenu-hook') ||
subMenuLink.classList.contains('t794__tm-link') ||
subMenuLink.hasAttribute('data-tooltip-menu-id')
) {
return;
}
var burgerIcon = rec.querySelector('.t-menu-popover');
if (burgerIcon) burgerIcon.classList.remove('t-menu-popover_open');
});
});
}
/**
* Инициализирует виджет переключателя языков: показывает/скрывает дропдаун при наведении
* Корректирует позиционирование, если виджет не умещается
* @param {HTMLElement} langButton - кнопка-триггер переключателя языков (.js-lang-button)
*/
function t1362_handleLangWidget(langButton) {
if (!langButton) return;
var langDropdown = langButton.nextElementSibling;
if (!langDropdown && !langDropdown.classList.contains('t-menu-base__langs_dropdown')) return;
var timer;
function positionLangDropdown() {
if (!langDropdown) return;
var dropdownRect = langDropdown.getBoundingClientRect();
var viewportHeight = window.innerHeight;
var spaceBelow = viewportHeight - dropdownRect.bottom;
var spaceAbove = dropdownRect.top;
if (spaceBelow < 0 && spaceAbove > Math.abs(spaceBelow)) {
langDropdown.classList.add('t-menu-base__langs_dropdown_top');
} else {
langDropdown.classList.remove('t-menu-base__langs_dropdown_top');
}
}
function showLangDropdown() {
clearTimeout(timer);
// Если дропдаун уже показан — только отменяем таймер скрытия, не пересчитываем позицию
if (langDropdown.classList.contains('t-menu-base__langs_dropdown_show')) return;
// Сбрасываем классы позиционирования от предыдущего открытия
langDropdown.classList.remove(
't-menu-base__langs_dropdown_top',
't-menu-base__langs_dropdown_overflowed',
't-menu-base__langs_dropdown_overflowed_left'
);
// Скрываем визуально, но сохраняем layout — чтобы getBoundingClientRect вернул корректные размеры
langDropdown.style.visibility = 'hidden';
langDropdown.classList.add('t-menu-base__langs_dropdown_show');
positionLangDropdown();
recalcHorizontalCoord();
langDropdown.style.visibility = '';
}
function hideLangDropdown() {
var TIMEOUT = 300;
timer = setTimeout(function () {
langDropdown.classList.remove('t-menu-base__langs_dropdown_show');
}, TIMEOUT);
}
function recalcHorizontalCoord() {
if (!langDropdown) return;
var langDropdownRect = langDropdown.getBoundingClientRect();
var windowWidth = window.innerWidth;
if (langDropdownRect.right > windowWidth) {
langDropdown.classList.add('t-menu-base__langs_dropdown_overflowed');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed_left');
} else if (langDropdownRect.left < 0) {
langDropdown.classList.add('t-menu-base__langs_dropdown_overflowed_left');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed');
} else {
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed_left');
}
}
recalcHorizontalCoord();
// Снимаем предыдущие обработчики если они были (повторная инициализация)
if (langButton._t1362LangHandlers) {
var prev = langButton._t1362LangHandlers;
langButton.removeEventListener('mouseenter', prev.show);
langButton.removeEventListener('mouseleave', prev.hide);
prev.dropdown.removeEventListener('mouseenter', prev.show);
prev.dropdown.removeEventListener('mouseleave', prev.hide);
if (prev.resizeHandler) {
window.removeEventListener('resize', prev.resizeHandler);
}
}
var resizeHandler = t_throttle(recalcHorizontalCoord, 200);
window.addEventListener('resize', resizeHandler);
langButton._t1362LangHandlers = {
show: showLangDropdown,
hide: hideLangDropdown,
dropdown: langDropdown,
resizeHandler: resizeHandler,
};
langButton.addEventListener('mouseenter', showLangDropdown);
langButton.addEventListener('mouseleave', hideLangDropdown);
langDropdown.addEventListener('mouseenter', showLangDropdown);
langDropdown.addEventListener('mouseleave', hideLangDropdown);
}
/**
* Инициализирует бургер-меню: обработчики открытия/закрытия, клик по оверлею,
* закрытие по Escape и якорным ссылкам, пересчёт fullscreen при ресайзе
* @param {string} recId
*/
function t1362_initBurgerMenu(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recId);
});
var burgerList = rec.querySelectorAll('.t1362 .t-menu-burger');
var menu = rec.querySelector('.t-menu-popover__burgermenu');
var menuBlock = rec.querySelector('.t1362');
var overlay = rec.querySelector('.t-menu-popover__overlay');
rec.addEventListener('t1362:closeburger', function () {
t1362_closeMenu(rec, menu, overlay);
var burger = rec.querySelector('.t-menu-burger');
if (burger) {
burger.classList.remove('t-menu-burger_open');
burger.setAttribute('aria-expanded', 'false');
}
});
var currentMode = document.querySelector('.t-records').getAttribute('data-tilda-mode');
Array.prototype.forEach.call(burgerList, function (burger) {
burger.addEventListener('click', function (e) {
e.preventDefault();
e.stopImmediatePropagation();
var isMenuOpen = menu && menu.classList.contains('t-menu-popover__burgermenu_opened');
if (isMenuOpen) {
t1362_closeMenu(rec, menu, overlay);
burger.classList.remove('t-menu-burger_open');
burger.setAttribute('aria-expanded', 'false');
if (currentMode === 'edit') {
// закрывает бургер-меню в режиме редактирования
document.body.classList.remove('t-menu-popover_opened');
}
} else {
t1362_showMenu(rec, menu, overlay);
burger.classList.add('t-menu-burger_open');
burger.setAttribute('aria-expanded', 'true');
if (currentMode === 'edit') {
// открывает бургер-меню в режиме редактирования
document.body.classList.add('t-menu-popover_opened');
}
}
});
});
if (menuBlock) {
menuBlock.addEventListener('clickedAnchorInTooltipMenu', function () {
t1362_closeMenu(rec, menu, overlay);
});
}
rec.addEventListener('click', function (e) {
var MOBILE_WIDTH = 960;
if (window.innerWidth > MOBILE_WIDTH) return;
var submenuClassList = [
'.t1362 .t-menusub__target-link',
'.t966__tm-link',
'.t978__tm-link',
'.t978__menu-link_hook',
];
var isContainsSubmenuClass = submenuClassList.some(function (className) {
return e.target.closest(className);
});
if (!isContainsSubmenuClass) return;
});
var navLinks = rec.querySelectorAll(
'.t1362 a.t-menu__link-item[href*="#"], .t1362 a.t-menusub__link-item[href*="#"]'
);
navLinks = Array.prototype.filter.call(navLinks, function (navLink) {
return !navLink.classList.contains('tooltipstered');
});
document.addEventListener('click', function (e) {
if (
e.target.closest(
'.t-menu-popover__overlay, .t-menu-popover__burgermenu__close-button, a[href*="#"]:not(.tooltipstered):not(.t794__tm-link):not(.t978__tm-link):not(.t966__tm-link):not(.t978__menu-link_hook):not(.t-menuwidgeticons__link_wishlist):not(.t-menuwidgeticons__link_cart):not(.t-menusub__target-link)'
)
) {
t1362_closeMenu(rec, menu, overlay);
}
if (
menu.classList.contains('t-menu-popover__burgermenu__dropdown') &&
menu.classList.contains('t-menu-popover__burgermenu_opened')
) {
var isClickInsideMenu = e.target.closest('.t-menu-popover__burgermenu__dropdown');
var isClickOnButton = e.target.closest('.t-menu-burger');
if (!isClickInsideMenu && !isClickOnButton) {
t1362_closeMenu(rec, menu, overlay);
}
}
});
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) {
t1362_closeMenu(rec, menu, overlay);
}
});
// Пересчёт fullscreen при ресайзе (ориентация/зум), пока меню открыто
window.addEventListener(
'resize',
t_throttle(function () {
if (
menu &&
menu.classList.contains('t-menu-popover__burgermenu__fullscreen') &&
menu.classList.contains('t-menu-popover__burgermenu_opened')
) {
t1362_checkFullscreenSize(rec);
}
}, 200)
);
}
/**
* Устанавливает padding-top бургер-меню типа fullwidth равным высоте шапки,
* чтобы контент начинался ниже фиксированного хедера
* Пересчитывается при ресайзе
* @param {HTMLElement} rec
*/
function t1362_setFullwidthPadding(rec) {
var container = rec.querySelector('.t-menu-popover');
if (!container) return;
if (!container.classList.contains('t-menu-popover_fullwidth')) {
return;
}
function recalc() {
var burger = rec.querySelector('.t-menu-popover__burgermenu');
if (!burger) return;
burger.style.paddingTop = container.offsetHeight + 'px';
}
recalc();
window.addEventListener('resize', t_throttle(recalc, 200));
}
/**
* Открывает бургер-меню: добавляет CSS-классы открытия, закрывает открытые
* подменю в хедере, для dropdown позиционирует и ограничивает высоту,
* для fullscreen запускает проверку переполнения контента.
* @param {HTMLElement} rec
* @param {HTMLElement} menu - элемент бургер-меню (.t-menu-popover__burgermenu)
* @param {HTMLElement} overlay - элемент оверлея (.t-menu-popover__overlay)
*/
function t1362_showMenu(rec, menu, overlay) {
if (!menu) return;
var openHeaderSubmenus = rec.querySelectorAll('.t-menu-popover .t-menusub__menu.t-menusub__menu_show');
Array.prototype.forEach.call(openHeaderSubmenus, function (sub) {
if (typeof t_menusubmulti__hideSubmenu === 'function') t_menusubmulti__hideSubmenu(sub);
});
var container = rec.querySelector('.t-menu-popover');
if (!container) return;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
if (!menu.classList.contains('t-menu-popover__burgermenu__dropdown')) {
document.body.classList.add('t1362__body_menushowed');
}
menu.classList.add('t-menu-popover__burgermenu_opened');
container.classList.add('t-menu-popover_showed');
if (overlay) overlay.classList.add('t-menu-popover__burgermenu_opened');
if (menu.classList.contains('t-menu-popover__burgermenu__dropdown')) {
var dropdownMenuContent = menu.querySelector('.t-menu-popover__container');
var dropdownMenuRect = menu.getBoundingClientRect();
// Если подменю не влезает по высоте, то ограничиваем его высоту и добавляем скролл
if (dropdownMenuContent && dropdownMenuRect.bottom > winHeight) {
var bottomPadding = 40;
var dropdownMenuUpdatedHeight = winHeight - dropdownMenuRect.top - bottomPadding;
dropdownMenuContent.style.height = dropdownMenuUpdatedHeight + 'px';
dropdownMenuContent.style.overflowY = 'scroll';
menu.classList.add('t-menu-popover__burgermenu__dropdown_overflowed');
}
t1362_positionDropdown(rec);
}
// Вызываем проверку размера для fullscreen меню
if (menu.classList.contains('t-menu-popover__burgermenu__fullscreen')) {
t1362_checkFullscreenSize(rec);
}
}
/**
* Закрывает бургер-меню: убирает CSS-классы открытия, сбрасывает состояние
* кнопки бургера и aria-expanded. Для не-dropdown вариантов скрывает
* контейнер с задержкой, соответствующей CSS-переходу
* @param {HTMLElement} rec
* @param {HTMLElement} menu - элемент бургер-меню (.t-menu-popover__burgermenu)
* @param {HTMLElement} overlay - элемент оверлея (.t-menu-popover__overlay)
*/
function t1362_closeMenu(rec, menu, overlay) {
if (!menu) return;
var container = rec.querySelector('.t-menu-popover');
if (!container) return;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t1362__body_menushowed');
menu.classList.remove('t-menu-popover__burgermenu_opened');
if (container.classList.contains('t-menu-popover_dropdown')) {
container.classList.remove('t-menu-popover_showed');
} else {
setTimeout(function () {
container.classList.remove('t-menu-popover_showed');
}, 300);
}
if (overlay) overlay.classList.remove('t-menu-popover__burgermenu_opened');
var burger = rec.querySelector('.t-menu-burger');
if (burger) {
burger.classList.remove('t-menu-burger_open');
burger.setAttribute('aria-expanded', 'false');
}
}
/**
* Управляет горизонтальным скроллом шапки на мобильных устройствах:
* включает overflow-x: auto только если контент шапки шире контейнера
* Пересчитывается при ресайзе
* @param {HTMLElement} rec
*/
function t1362_checkMobileHeaderOverflow(rec) {
var mainContainer = rec.querySelector('.t-menu-popover__maincontainer');
if (!mainContainer) return;
var mainWrapper = rec.querySelector('.t-menu-popover__mainwrapper');
if (!mainWrapper) return;
// добавляем overflow-y для шапки в мобильной версии только, если есть переполнение
function recalc() {
var MOBILE_WIDTH = 960;
var isMobile = window.innerWidth <= MOBILE_WIDTH;
if (!isMobile) {
mainContainer.style.overflowX = 'unset';
return;
}
if (mainWrapper.scrollWidth > mainContainer.offsetWidth) {
mainContainer.style.overflowX = 'auto';
} else {
mainContainer.style.overflowX = 'unset';
}
}
recalc();
window.addEventListener('resize', t_throttle(recalc, 200));
}
/**
* Проверяет fullscreen-отображение меню на переполнение контентом
* Если пунктов много и они упираются в шапку, добавляет отступ сверху
* @param {string} recId
*/
function t1362_checkFullscreenSize(rec) {
var burgerMenu = rec.querySelector('.t-menu-popover__burgermenu__fullscreen');
if (!burgerMenu) return;
var listWrapper = burgerMenu.querySelector('.t-menu-popover__burgermenu__list-wrapper');
var additional = burgerMenu.querySelector('.t1362__additional');
if (!listWrapper) return;
listWrapper.style.paddingTop = '';
var contentHeight = listWrapper.scrollHeight + (additional ? additional.scrollHeight : 0);
var MOBILE_WIDTH = 960;
var isMobile = window.innerWidth <= MOBILE_WIDTH;
var CONTENT_TOP_PADDING = isMobile ? 40 : 60;
var burgerPaddingTop = parseFloat(getComputedStyle(burgerMenu).paddingTop) || 0;
var availableHeight = window.innerHeight - burgerPaddingTop - CONTENT_TOP_PADDING;
if (contentHeight <= availableHeight) return;
listWrapper.style.paddingTop = CONTENT_TOP_PADDING + 'px';
}
/**
* Единая точка входа для инициализации блока t3112
* @param {string} recid
* @param {string} previewmode - "yes" если режим редактора, "" если на сайте
*/
function t3112_init(recid, previewmode) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
t_onFuncLoad('t3112_initMenu', function () {
t3112_initMenu(recid);
});
if (previewmode === '') {
t_onFuncLoad('t3112_checkSize', function () {
t3112_checkSize(recid);
setInterval(function () {
t3112_checkSize(recid);
}, 800);
});
}
var menuContent = rec.querySelector('.t3112__menu__content');
var hasAppearOffset = menuContent && menuContent.getAttribute('data-appearoffset');
var hasHideOffset = menuContent && menuContent.getAttribute('data-hideoffset');
if (previewmode === 'yes' && (hasAppearOffset || hasHideOffset)) {
var wrapperBlock = rec.querySelector('.t3112__menu__content');
if (wrapperBlock) {
wrapperBlock.classList.remove('t3112__beforeready');
}
t_onFuncLoad('t3112_appearMenu', function () {
t3112_appearMenu(recid);
window.addEventListener(
'scroll',
t_throttle(function () {
t3112_appearMenu(recid);
})
);
});
}
}
/**
* Инициализирует виджет переключателя языков: показывает/скрывает дропдаун при наведении
* Корректирует позиционирование, если виджет не умещается
* @param {HTMLElement} langButton - кнопка-триггер переключателя языков (.js-lang-button)
*/
function t3112_handleLangWidget(langButton) {
if (!langButton) return;
var langDropdown = langButton.nextElementSibling;
if (!langDropdown || !langDropdown.classList.contains('t-menu-base__langs_dropdown')) return;
var timer;
function positionLangDropdown() {
var dropdownRect = langDropdown.getBoundingClientRect();
var viewportHeight = window.innerHeight;
var spaceBelow = viewportHeight - dropdownRect.bottom;
var spaceAbove = dropdownRect.top;
if (spaceBelow < 0 && spaceAbove > Math.abs(spaceBelow)) {
langDropdown.classList.add('t-menu-base__langs_dropdown_top');
} else {
langDropdown.classList.remove('t-menu-base__langs_dropdown_top');
}
}
function showLangDropdown() {
clearTimeout(timer);
langDropdown.classList.add('t-menu-base__langs_dropdown_show');
positionLangDropdown();
}
function hideLangDropdown() {
timer = setTimeout(function () {
langDropdown.classList.remove('t-menu-base__langs_dropdown_show');
}, 300);
}
langButton.removeEventListener('mouseenter', showLangDropdown);
langButton.removeEventListener('mouseleave', hideLangDropdown);
langDropdown.removeEventListener('mouseenter', showLangDropdown);
langDropdown.removeEventListener('mouseleave', hideLangDropdown);
langButton.addEventListener('mouseenter', showLangDropdown);
langButton.addEventListener('mouseleave', hideLangDropdown);
langDropdown.addEventListener('mouseenter', showLangDropdown);
langDropdown.addEventListener('mouseleave', hideLangDropdown);
}
/**
* Открывает сайдбар-меню
* @param {string} recid
* @param {HTMLElement} menu
* @param {HTMLElement} overlay
*/
function t3112_showMenu(recid, menu, overlay) {
if (!menu) return;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupShowed');
document.body.classList.add('t3112__body_menushowed');
menu.classList.add('t3112__menu_show');
if (overlay) overlay.classList.add('t3112__menu_show');
t3112_checkSize(recid);
t3112_highlight(recid);
}
/**
* Закрывает сайдбар-меню
* @param {HTMLElement} menu
* @param {HTMLElement} overlay
*/
function t3112_closeMenu(menu, overlay) {
if (!menu) return;
if (typeof t_triggerEvent === 'function') t_triggerEvent(document.body, 'popupHidden');
document.body.classList.remove('t3112__body_menushowed');
menu.classList.remove('t3112__menu_show');
if (overlay) overlay.classList.remove('t3112__menu_show');
}
/**
* Оставлена для совместимости с tpl (вызывается из tpl_menu_style)
* Overflow сайдбара управляется через CSS (overflow-y: auto), как в t1362
* @param {string} recid
*/
function t3112_checkSize(recid) {}
/**
* Показывает/скрывает кнопку бургера в зависимости от позиции скролла
* Уникально для t3112 — плавающая кнопка-бургер
* @param {string} recid
*/
function t3112_appearMenu(recid) {
var rec = document.getElementById('rec' + recid);
var burger = rec ? rec.querySelector('.t3112__menu__content') : null;
if (!burger) return;
var burgerAppearOffset = burger.getAttribute('data-appearoffset');
var burgerHideOffset = burger.getAttribute('data-hideoffset');
if (burgerAppearOffset) {
burgerAppearOffset = t3112_appearMenuParseNumber(burgerAppearOffset);
if (window.pageYOffset >= burgerAppearOffset) {
burger.classList.remove('t3112__beforeready');
} else {
burger.classList.add('t3112__beforeready');
}
}
if (burgerHideOffset) {
burgerHideOffset = t3112_appearMenuParseNumber(burgerHideOffset);
var scrollHeight = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
document.body.offsetHeight,
document.documentElement.offsetHeight,
document.body.clientHeight,
document.documentElement.clientHeight
);
if (window.pageYOffset + window.innerHeight >= scrollHeight - burgerHideOffset) {
burger.classList.add('t3112__beforeready');
} else if (burgerAppearOffset) {
if (window.pageYOffset >= burgerAppearOffset) {
burger.classList.remove('t3112__beforeready');
}
} else {
burger.classList.remove('t3112__beforeready');
}
}
}
function t3112_appearMenuParseNumber(string) {
if (string.indexOf('vh') > -1) {
string = Math.floor(window.innerHeight * (parseInt(string) / 100));
}
return parseInt(string, 10);
}
/**
* Инициализирует сайдбар-меню: бургер, закрытие, языки, resize
* Все обработчики навешиваются один раз здесь (не в showMenu)
* @param {string} recid
*/
function t3112_initMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector('.t3112');
var overlay = rec.querySelector('.t3112__overlay');
var burger = rec.querySelector('.t3112__burger_container');
var hook = menu ? menu.getAttribute('data-tooltip-hook') : '';
// Виджеты (корзина, поиск и т.д.)
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recid);
});
// Языковой виджет
var langButtons = rec.querySelectorAll('.js-lang-button');
Array.prototype.forEach.call(langButtons, function (button) {
t3112_handleLangWidget(button);
});
// Открытие по кнопке бургера
if (burger) {
burger.addEventListener('click', function () {
t3112_showMenu(recid, menu, overlay);
});
}
// Открытие по linkhook
if (hook) {
document.addEventListener('click', function (e) {
if (e.target.closest('a[href="' + hook + '"]')) {
e.preventDefault();
t3112_closeMenu(menu, overlay);
t3112_showMenu(recid, menu, overlay);
}
});
}
// Закрытие по клику на overlay, кнопку закрытия и якорные ссылки
document.addEventListener('click', function (e) {
// Не закрывать меню в режиме редактора
if (menu && menu.classList.contains('t3112__static')) return;
// Не закрывать при клике на hook-ссылку (она открывает меню)
if (hook && e.target.closest('a[href="' + hook + '"]')) return;
if (
e.target.closest(
'.t3112__overlay, .t3112__close-button, .t3112 a[href]:not(.tooltipstered):not(.t794__tm-link):not(.t978__tm-link):not(.t966__tm-link):not(.t978__menu-link_hook):not(.t-menuwidgeticons__link_wishlist):not(.t-menuwidgeticons__link_cart)'
)
) {
t3112_closeMenu(menu, overlay);
}
});
// Закрытие по Escape
document.addEventListener('keydown', function (e) {
if (e.keyCode === 27) {
t3112_closeMenu(menu, overlay);
}
});
// Закрытие при клике по якорной ссылке внутри tooltip-меню
if (menu) {
menu.addEventListener('clickedAnchorInTooltipMenu', function () {
t3112_closeMenu(menu, overlay);
});
}
// Пересчёт размера при взаимодействии с сабменю
rec.addEventListener('click', function (e) {
if (e.target.closest('.t966__tm-link, .t978__tm-link, .t-menusub__target-link')) {
t3112_checkSize(recid);
if (e.target.closest('.t978__tm-link')) {
setTimeout(function () {
var hookLink = e.target.closest('.t978__tm-link');
var menuBlock = hookLink.nextElementSibling;
var submenuLinks = menuBlock ? menuBlock.querySelectorAll('.t978__menu-link') : [];
Array.prototype.forEach.call(submenuLinks, function (link) {
link.addEventListener('click', function () {
t3112_checkSize(recid);
});
});
}, 300);
}
}
});
if (menu) {
menu.addEventListener('menuOverflow', function () {
t3112_checkSize(recid);
});
}
// Пересчёт при resize с throttle
window.addEventListener(
'resize',
t_throttle(function () {
t3112_checkSize(recid);
}, 200)
);
}
/**
* Подсвечивает активные пункты меню по текущему URL
* Уникально для t3112
* @param {string} recid
*/
function t3112_highlight(recid) {
var url = window.location.href;
var pathname = window.location.pathname;
var hash = window.location.hash;
if (url.substr(url.length - 1) === '/') url = url.slice(0, -1);
if (pathname.substr(pathname.length - 1) === '/') pathname = pathname.slice(0, -1);
if (pathname.charAt(0) === '/') pathname = pathname.slice(1);
if (pathname === '') pathname = '/';
var shouldBeActiveElements = document.querySelectorAll(
".t3112 a.t-menu__link-item[href='" +
url +
"'], " +
".t3112 a.t-menu__link-item[href='" +
url +
"/'], " +
".t3112 a.t-menu__link-item[href='" +
pathname +
"'], " +
".t3112 a.t-menu__link-item[href='/" +
pathname +
"'], " +
".t3112 a.t-menu__link-item[href='" +
pathname +
"/'], " +
".t3112 a.t-menu__link-item[href='/" +
pathname +
"/']" +
(hash ? ", .t3112 a.t-menu__link-item[href='" + hash + "']" : '') +
(hash && pathname === '/' ? ", .t3112 a.t-menu__link-item[href='/" + hash + "']" : '') +
(hash && pathname !== '/'
? ", .t3112 a.t-menu__link-item[href='/" +
pathname +
hash +
"'], .t3112 a.t-menu__link-item[href='" +
pathname +
hash +
"']"
: '')
);
var menuLinks = document.querySelectorAll('.t3112 a.t-menu__link-item');
Array.prototype.forEach.call(menuLinks, function (link) {
/* data-highlighted-by-user attribute from ME701 block,
to prevent removing here active class from link, set by ME701 */
if (link.getAttribute('data-highlighted-by-user') !== 'y') link.classList.remove('t-active');
});
Array.prototype.forEach.call(shouldBeActiveElements, function (link) {
link.classList.add('t-active');
});
}
function t3113_init(recId) {
var rec = document.getElementById('rec' + recId);
if (!rec) return;
var block = rec.querySelector('.t3113');
var previewmode = block ? block.getAttribute('data-previewmode') : '';
var menuPosition = block ? block.getAttribute('data-menu-position') : '';
var hasAppearOffset = block ? block.hasAttribute('data-menu-appearoffset') : false;
var hasBgOpacity2 = block ? block.hasAttribute('data-menu-bgopacity2') : false;
var bgSelector = block ? block.getAttribute('data-bg-selector') : '.t-menu-base, .t-menu-base__maincontainer';
var container = rec.querySelector('.t3113__layout-root');
if (!container) return;
var mediaQuery = window.matchMedia('(max-width: 960px)');
var currentMode = 'mobile';
var allRecords = document.getElementById('allrecords');
var isEditorMode =
allRecords && allRecords.hasAttribute('data-tilda-mode')
? allRecords.getAttribute('data-tilda-mode') === 'edit'
: false;
// Инициализирует хуки на текущих элементах в DOM
function initHooks(isMobile) {
t3113_bindDesktopLinks(rec);
t3113_handleLangWidget(rec);
t_onFuncLoad('t_menuWidgets__init', function () {
t_menuWidgets__init(recId);
});
if (isMobile) {
t_onFuncLoad('t_menuBurger__init', function () {
t_menuBurger__init(recId);
});
if (typeof t3113_createMobileMenu === 'function') {
t3113_createMobileMenu(recId);
} else {
t_onFuncLoad('t3113_createMobileMenu', function () {
t3113_createMobileMenu(recId);
});
}
}
}
function renderLayout(isMobile, isResize) {
var newMode = isMobile ? 'mobile' : 'desktop';
// Не перерисовываем если режим не изменился
if (currentMode === newMode) return;
t3113_closeMobileMenu(rec, { currentMode: isEditorMode ? 'edit' : '' });
currentMode = newMode;
var tplId = isMobile ? 't3113-mobile-' + recId : 't3113-desktop-' + recId;
var tpl = document.getElementById(tplId);
if (!tpl) return;
// Очищаем контейнер и вставляем нужный template
while (container.firstChild) {
container.removeChild(container.firstChild);
}
var cloned = tpl.content.cloneNode(true);
container.appendChild(cloned);
initHooks(isMobile);
// При переключении в mobile в редакторе нужно пересчитать overflow
if (isMobile && isResize) {
if (typeof t3113_menuBase__checkOverflow === 'function') {
setTimeout(function () {
t3113_menuBase__checkOverflow(recId, '.t-menu-base');
}, 0);
}
}
// Подменю — только при ресайзе.
// При первой загрузке его вызывает tpl_menusub_multilevel_style.tpl сам.
if (isResize) {
if (typeof t_menusub__init === 'function') {
t_menusub__init(recId);
} else if (typeof t_menusub_init === 'function') {
t_menusub_init(recId);
}
}
rec.dispatchEvent(
new CustomEvent('t3113:layoutChanged', {
detail: { isMobile: isMobile },
})
);
}
// Единственный источник истины зависит от контекста:
// в редакторе — класс t-records_container-mobile, в продакшне — mediaQuery
var _isMobileInit = isEditorMode ? allRecords.classList.contains('t-records_container-mobile') : mediaQuery.matches;
if (_isMobileInit) {
// Mobile: SSR версия уже корректна, просто инициализируем hooks
initHooks(true);
} else {
// Desktop: заменяем SSR mobile на desktop версию
currentMode = null; // Сбрасываем чтобы renderLayout сработал
renderLayout(false, false);
}
container.classList.add('t3113__layout-root_initialized');
if (rec._t3113MediaQuery && rec._t3113MediaQueryHandler) {
rec._t3113MediaQuery.removeEventListener('change', rec._t3113MediaQueryHandler);
rec._t3113MediaQuery = null;
rec._t3113MediaQueryHandler = null;
}
if (rec._t3113LayoutObserver) {
rec._t3113LayoutObserver.disconnect();
rec._t3113LayoutObserver = null;
}
if (!isEditorMode) {
rec._t3113MediaQuery = mediaQuery;
rec._t3113MediaQueryHandler = function (e) {
renderLayout(e.matches, true);
};
mediaQuery.addEventListener('change', rec._t3113MediaQueryHandler);
}
if (isEditorMode && allRecords) {
rec._t3113LayoutObserver = new MutationObserver(function (mutations) {
for (var i = 0; i < mutations.length; i++) {
if (mutations[i].attributeName === 'class') {
var isMobileEditor = allRecords.classList.contains('t-records_container-mobile');
renderLayout(isMobileEditor, true);
break;
}
}
});
rec._t3113LayoutObserver.observe(allRecords, { attributes: true, attributeFilter: ['class'] });
}
t_onFuncLoad('t_menuBase__interactFromKeyboard', function () {
t_menuBase__interactFromKeyboard(recId);
});
t_onFuncLoad('t_menuBase__setBGcolor', function () {
t_menuBase__setBGcolor(recId, '.t-menu-base, .t-menu-base__maincontainer');
window.addEventListener(
'resize',
t_throttle(function () {
t_menuBase__setBGcolor(recId, '.t-menu-base, .t-menu-base__maincontainer');
})
);
});
if (previewmode === 'yes') {
t_onFuncLoad('t_menuBase__highlightActiveLinks', function () {
t_menuBase__highlightActiveLinks('.t-menu-base__list-item a');
});
if (menuPosition === 'fixed') {
t_onFuncLoad('t_menuBase__findAnchorLinks', function () {
t_menuBase__findAnchorLinks(recId, '.t-menu-base__list-item a');
});
}
}
if (previewmode) {
rec.setAttribute('data-animationappear', 'off');
rec.style.opacity = 1;
}
if (previewmode === 'yes' && hasAppearOffset && menuPosition === 'fixed') {
t_onFuncLoad('t_menuBase__showFixedMenu', function () {
function applyShowFixedMenu() {
var header = rec.querySelector('.t3113__header');
if (header) {
header.classList.remove('t-menu-base__beforeready');
}
t_menuBase__showFixedMenu(recId, '.t-menu-base');
}
applyShowFixedMenu();
window.addEventListener(
'scroll',
t_throttle(function () {
t_menuBase__showFixedMenu(recId, '.t-menu-base');
})
);
rec.addEventListener('t3113:layoutChanged', function (e) {
if (!e.detail.isMobile) {
applyShowFixedMenu();
}
});
});
}
if (previewmode === 'yes' && hasBgOpacity2 && menuPosition === 'fixed') {
t_onFuncLoad('t_menuBase__changeBgOpacity', function () {
t_menuBase__changeBgOpacity(recId, bgSelector);
window.addEventListener(
'scroll',
t_throttle(function () {
t_menuBase__changeBgOpacity(recId, bgSelector);
})
);
});
}
}
// Хук-классы подменю/шоп-виджетов: клик по таким ссылкам обрабатывается
// сторонним скриптом (menusub и т.п.), поэтому мобильное меню закрывать не нужно.
// Единственный источник списка — переиспользуется в t3113_isMenuNavigationHook
// и при построении CSS-селектора в documentClickHandler, чтобы не дублировать
// список классов в двух местах.
function t3113_getMenuHookClasses() {
return ['t794__tm-link', 't966__tm-link', 't978__tm-link', 't978__menu-link_hook'];
}
function t3113_isMenuNavigationHook(el) {
return t3113_getMenuHookClasses().some(function (className) {
return el.classList.contains(className);
});
}
function t3113_bindDesktopLinks(rec) {
var linkItems = rec.querySelectorAll('.t-menu__link-item');
var subMenuLinks = rec.querySelectorAll('.t-menusub__link-item');
Array.prototype.forEach.call(linkItems, function (link) {
link.addEventListener('click', function (e) {
// Если клик на стрелке - не закрывать меню
var arrow = e.target.closest('.t-menusub__arrow');
if (arrow) return;
var isEmptyTargetLink =
link.classList.contains('t-menusub__target-link') &&
(!link.getAttribute('href') || link.getAttribute('href') === '#');
if (isEmptyTargetLink || link.classList.contains('tooltipstered') || t3113_isMenuNavigationHook(link)) {
return;
}
t3113_hideMenuOnMobile(link, rec);
});
});
Array.prototype.forEach.call(subMenuLinks, function (subMenuLink) {
subMenuLink.addEventListener('click', function (e) {
// Если клик на стрелке - не закрывать меню
var arrow = e.target.closest('.t-menusub__arrow');
if (arrow) return;
// Если ссылка является хуком - не закрывать меню
if (
subMenuLink.hasAttribute('data-menu-submenu-hook') ||
subMenuLink.classList.contains('t794__tm-link') ||
subMenuLink.hasAttribute('data-tooltip-menu-id')
) {
return;
}
t3113_hideMenuOnMobile(subMenuLink, rec);
});
});
}
function t3113_createMobileMenu(recid) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
t_onFuncLoad('t3113_menuBase__createMobileMenu', function () {
t3113_menuBase__createMobileMenu(recid, '.t-menu-base');
t3113_menuBase__checkOverflow(recid, '.t-menu-base');
});
t3113_setFullwidthPadding(rec);
// Закрытие меню по клику на лого и кнопки
// (якорные ссылки в пунктах меню покрываются t3113_bindDesktopLinks)
var wrappersLinks = rec.querySelectorAll('.t-menu-base__logo a, .t-menu-base__buttons a');
Array.prototype.forEach.call(wrappersLinks, function (link) {
link.addEventListener('click', function () {
t3113_hideMenuOnMobile(link, rec);
});
});
}
function t3113_setFullwidthPadding(rec) {
var menu = rec.querySelector('.t-menu-base');
if (!menu) return;
var menuContainer = rec.querySelector('.t-menu-base__maincontainer');
if (!menuContainer) return;
if (!menu.classList.contains('t-menu-base__burgermenu__fullwidth')) return;
var container = rec.querySelector('.t-menu-base__mobile-menu');
if (!container) return;
function recalc() {
var PADDING_TOP = 30;
menuContainer.style.paddingTop =
container.offsetHeight + PADDING_TOP + parseInt(getComputedStyle(container).top, 10) + 'px';
}
recalc();
// Вызывается повторно при каждом переключении layout — снимаем предыдущий
// resize-обработчик, чтобы не копить их на window.
if (rec._t3113FullwidthPaddingResizeHandler) {
window.removeEventListener('resize', rec._t3113FullwidthPaddingResizeHandler);
}
rec._t3113FullwidthPaddingResizeHandler = t_throttle(recalc, 200);
window.addEventListener('resize', rec._t3113FullwidthPaddingResizeHandler);
}
function t3113_hideMenuOnMobile(link, rec) {
if (!rec || !link || window.innerWidth > 960) return false;
var menu = rec.querySelector('.t-menu-base');
var burger = rec.querySelector('.tmenu-mobile');
if (!menu || !menu.classList.contains('t-menu-base__burgermenu_opened')) return false;
if (!link.matches('[href*="#"]')) return false;
if (
menu.classList.contains('t-menu-base_positionabsolute') ||
(burger && !burger.classList.contains('tmenu-mobile_positionfixed'))
) {
menu.style.display = 'none';
menu.style.opacity = '0';
}
t3113_closeMobileMenu(rec);
}
/**
* Обрабатывает закрытие меню в мобильной версии
* Cбрасывает все классы открытого состояния
* @param {Element} rec
* @param {Object} [options]
*/
function t3113_closeMobileMenu(rec, options) {
var menu = rec.querySelector('.t-menu-base');
var mobileMenu = rec.querySelector('.tmenu-mobile');
var mobileBurger = mobileMenu ? mobileMenu.querySelector('.t-menuburger') : null;
if (menu && menu.classList.contains('t-menu-base__burgermenu_opened')) {
t_menuBase__FadeOut(menu, 300);
menu.classList.remove('t-menu-base__burgermenu_opened');
}
if (mobileMenu) mobileMenu.classList.remove('tmenu-mobile_opened');
if (mobileBurger) {
mobileBurger.classList.remove('t-menuburger-opened', 't-menu-burger_open');
mobileBurger.setAttribute('aria-expanded', 'false');
}
document.body.classList.remove('t3113__body_menushowed');
if (options && options.currentMode === 'edit') {
document.body.classList.remove('t-menu-base_opened');
}
}
function t3113_handleLangWidget(rec) {
var langDropdown = rec.querySelector('.t-menu-base__langs_dropdown');
if (!langDropdown) return;
var langButton = rec.querySelector('.js-lang-button');
if (!langButton) return;
var timer;
function positionLangDropdown() {
var dropdownRect = langDropdown.getBoundingClientRect();
var viewportHeight = window.innerHeight;
var spaceBelow = viewportHeight - dropdownRect.bottom;
var spaceAbove = dropdownRect.top;
if (spaceBelow < 0 && spaceAbove > Math.abs(spaceBelow)) {
langDropdown.classList.add('t-menu-base__langs_dropdown_top');
} else {
langDropdown.classList.remove('t-menu-base__langs_dropdown_top');
}
}
function showLangDropdown() {
clearTimeout(timer);
// Если дропдаун уже показан — только отменяем таймер скрытия, не пересчитываем позицию
if (langDropdown.classList.contains('t-menu-base__langs_dropdown_show')) return;
// Сбрасываем классы позиционирования от предыдущего открытия
langDropdown.classList.remove(
't-menu-base__langs_dropdown_top',
't-menu-base__langs_dropdown_overflowed',
't-menu-base__langs_dropdown_overflowed_left'
);
// Скрываем визуально, но сохраняем layout — чтобы getBoundingClientRect вернул корректные размеры
langDropdown.style.visibility = 'hidden';
langDropdown.classList.add('t-menu-base__langs_dropdown_show');
positionLangDropdown();
recalcHorizontalCoord();
langDropdown.style.visibility = '';
}
function hideLangDropdown() {
timer = setTimeout(function () {
langDropdown.classList.remove('t-menu-base__langs_dropdown_show');
}, 300);
}
function recalcHorizontalCoord() {
if (!langDropdown) return;
var MOBILE_WIDTH = 960;
var isMobile = window.innerWidth <= MOBILE_WIDTH;
if (isMobile) return;
var langDropdownRect = langDropdown.getBoundingClientRect();
var windowWidth = window.innerWidth;
if (langDropdownRect.right > windowWidth) {
langDropdown.classList.add('t-menu-base__langs_dropdown_overflowed');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed_left');
} else if (langDropdownRect.left < 0) {
langDropdown.classList.add('t-menu-base__langs_dropdown_overflowed_left');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed');
} else {
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed');
langDropdown.classList.remove('t-menu-base__langs_dropdown_overflowed_left');
}
}
recalcHorizontalCoord();
// Вызывается повторно при каждом переключении layout — снимаем предыдущий
// resize-обработчик, чтобы не копить их на window.
if (rec._t3113LangWidgetResizeHandler) {
window.removeEventListener('resize', rec._t3113LangWidgetResizeHandler);
}
rec._t3113LangWidgetResizeHandler = t_throttle(recalcHorizontalCoord, 200);
window.addEventListener('resize', rec._t3113LangWidgetResizeHandler);
langButton.addEventListener('mouseenter', showLangDropdown);
langButton.addEventListener('mouseleave', hideLangDropdown);
langDropdown.addEventListener('mouseenter', showLangDropdown);
langDropdown.addEventListener('mouseleave', hideLangDropdown);
}
function t3113_menuBase__createMobileMenu(recid, selector) {
var rec = document.getElementById('rec' + recid);
if (!rec) return;
var menu = rec.querySelector(selector);
var mobileMenu = rec.querySelector('.tmenu-mobile');
if (!mobileMenu || !menu) return;
var mobileMenuOpenClass = 'tmenu-mobile_opened';
var mobileMediaQuery = window.matchMedia('(max-width: 960px)');
var menuMobileBurgerhook = menu ? menu.getAttribute('data-mobile-burgerhook') : '';
// В редакторе мобильный режим определяется классом, а не matchMedia
function isMobileView() {
var allRec = document.getElementById('allrecords');
if (allRec && allRec.classList.contains('t-records_container-mobile')) return true;
return mobileMediaQuery.matches;
}
// Режим burgerhook: бургер оборачивается в ссылку, дальнейшая логика не нужна
if (menu && menu.classList.contains(selector.slice(1) + '__mobile_burgerhook') && menuMobileBurgerhook) {
var mobileBurger =
mobileMenu.querySelector('.tmenu-mobile__burger') || mobileMenu.querySelector('.t-menuburger');
if (mobileBurger) {
var mobileBurgerParent = mobileBurger.parentElement;
var link = document.createElement('a');
link.href = menuMobileBurgerhook;
if (mobileBurgerParent) {
link.appendChild(mobileBurger);
mobileBurgerParent.appendChild(link);
}
}
return;
}
var currentMode = document.querySelector('.t-records');
currentMode = currentMode ? currentMode.getAttribute('data-tilda-mode') : '';
var mobileBurger = mobileMenu.querySelector('.t-menuburger');
// createMobileMenu вызывается повторно при каждом переключении layout
// (desktop <-> mobile через resize/редактор). Снимаем обработчики
// предыдущего вызова, чтобы не копить их на document/window/rec.
var previousHandlers = rec._t3113MobileMenuHandlers;
if (previousHandlers) {
document.removeEventListener('click', previousHandlers.documentClick);
document.removeEventListener('keydown', previousHandlers.documentKeydown);
window.removeEventListener('resize', previousHandlers.windowResize);
rec.removeEventListener('click', previousHandlers.recClick);
}
// Открытие/закрытие по клику на бургер
mobileBurger.addEventListener('click', function (event) {
if (mobileMenu.classList.contains(mobileMenuOpenClass)) {
t3113_closeMobileMenu(rec, { currentMode: currentMode });
} else {
t_menuBase__fadeIn(menu, 300, function () {
if (menu.style.transform) menu.style.transform = '';
if (menu.style.opacity) menu.style.opacity = '';
});
mobileMenu.classList.add(mobileMenuOpenClass);
mobileBurger.classList.add('t-menuburger-opened', 't-menu-burger_open');
var isDropdown = menu.classList.contains('t-menu-base__burgermenu__dropdown');
var isFixedMobileMenu = mobileMenu.classList.contains('tmenu-mobile_positionfixed');
var isFullwidth = menu.classList.contains('t-menu-base__burgermenu__fullwidth');
var isFullwidthOrDefault = isFullwidth || menu.classList.contains('t-menu-base__burgermenu__default');
var shouldShowOverlay = !isDropdown && !(isFullwidthOrDefault && !isFixedMobileMenu);
if (shouldShowOverlay) {
document.body.classList.add('t3113__body_menushowed');
}
menu.classList.add('t-menu-base__burgermenu_opened');
mobileBurger.setAttribute('aria-expanded', 'true');
if (menu.classList.contains('tmenu-mobile__menucontent_fixed')) {
var burgerHeight = getComputedStyle(mobileMenu).height;
var burgerBorderSize = getComputedStyle(mobileMenu).borderBottom || 0;
menu.style.top = isFullwidth ? 0 : burgerHeight + burgerBorderSize;
}
if (currentMode === 'edit') {
document.body.classList.add('t-menu-base_opened');
}
}
t3113_menuBase__checkOverflow(recid, selector);
});
var anchorLinkNotSelector = ['.tooltipstered']
.concat(
t3113_getMenuHookClasses().map(function (className) {
return '.' + className;
})
)
.concat(['.t-menuwidgeticons__link_wishlist', '.t-menuwidgeticons__link_cart'])
.map(function (cls) {
return ':not(' + cls + ')';
})
.join('');
function documentClickHandler(e) {
if (!isMobileView()) return;
if (
!e.target.closest(
'.t-menu-base__overlay, .t-menu-base__burgermenu__close-button, a[href*="#"]' + anchorLinkNotSelector
)
)
return;
if (!menu) return;
var isSidebar = menu.classList.contains('t-menu-base__burgermenu__sidebar');
if (!isSidebar && !menu.classList.contains('tmenu-mobile__menucontent_fixed')) return;
t3113_closeMobileMenu(rec);
}
document.addEventListener('click', documentClickHandler);
// Закрытие по клику на пункт меню внутри блока
function recClickHandler(e) {
if (!isMobileView()) return;
if (!menu || !menu.classList.contains('tmenu-mobile__menucontent_fixed')) return;
var menuLink = e.target.closest(
'.t-menu__link-item, .t978__submenu-link, .t978__innermenu-link, .t966__menu-link, .t-menusub__link-item, .t-btn, .t794__link'
);
if (!menuLink) return;
var isSubmenuHook = t3113_isMenuNavigationHook(menuLink);
var isTargetLinkWithoutHref =
menuLink.classList.contains('t-menusub__target-link') &&
(!menuLink.getAttribute('href') || menuLink.getAttribute('href') === '#');
if (isSubmenuHook || isTargetLinkWithoutHref) {
menu.addEventListener('menuOverflow', function () {
t3113_menuBase__checkOverflow(recid, selector);
});
return;
}
t3113_closeMobileMenu(rec);
}
rec.addEventListener('click', recClickHandler);
// Сброс стилей при переходе на десктоп + пересчёт top бургера
t_menuBase_updateMobileMenuTop(rec);
var windowResizeHandler = t_throttle(function () {
// Используем isMobileView(), а не сырой window.innerWidth, чтобы
// поведение было согласовано с documentClickHandler/documentKeydownHandler
// и корректно учитывало мобильный превью в редакторе.
if (!isMobileView()) {
if (menu) menu.style.opacity = '';
if (menu) menu.style.display = '';
if (menu) menu.style.height = '';
if (menu) menu.style.overflowY = '';
if (menu) {
var customTopPosition = menu.getAttribute('data-top') || '';
menu.style.top = customTopPosition;
}
mobileMenu.classList.remove(mobileMenuOpenClass);
}
t3113_menuBase__checkOverflow(recid, selector);
t_menuBase_updateMobileMenuTop(rec);
}, 200);
window.addEventListener('resize', windowResizeHandler);
// Закрытие по Esc
function documentKeydownHandler(e) {
if (e.keyCode !== 27) return;
if (!isMobileView()) return;
if (!mobileMenu || !mobileMenu.classList.contains(mobileMenuOpenClass)) return;
t3113_closeMobileMenu(rec);
}
document.addEventListener('keydown', documentKeydownHandler);
rec._t3113MobileMenuHandlers = {
documentClick: documentClickHandler,
documentKeydown: documentKeydownHandler,
windowResize: windowResizeHandler,
recClick: recClickHandler,
};
function t_menuBase_updateMobileMenuTop(rec) {
var mobileFixedMenu = rec.querySelector('.tmenu-mobile.tmenu-mobile_positionfixed');
var mobileMenu = rec.querySelector('.tmenu-mobile__menucontent_fixed');
if (!mobileFixedMenu || !mobileMenu) return;
if (window.innerWidth <= 960) {
var computedStyle = window.getComputedStyle(mobileFixedMenu);
var baseMobileMenuHeight = 64;
var height = parseFloat(computedStyle.height) || baseMobileMenuHeight;
var borderBottom = parseFloat(computedStyle.borderBottomWidth) || 0;
var menuBase = rec.querySelector('.t-menu-base');
var isSidebar = menuBase.classList.contains('t-menu-base__burgermenu__sidebar');
var isFullscreen = menuBase.classList.contains('t-menu-base__burgermenu__fullscreen');
var top = isSidebar || isFullscreen ? 0 : height + borderBottom;
mobileMenu.style.setProperty('top', top + 'px', 'important');
} else {
mobileMenu.style.setProperty('top', '0px');
}
}
}
function t3113_menuBase__checkOverflow(recid, selector) {
var rec = document.getElementById('rec' + recid);
var menu = rec ? rec.querySelector(selector) : null;
if (!menu) return;
var burger = rec.querySelector('.tmenu-mobile');
if (!burger) return;
var burgerHeight = burger.offsetHeight;
var windowHeight = document.documentElement.clientHeight;
var menuPosition = menu.style.position || window.getComputedStyle(menu).position;
var menuHeight = menu.offsetHeight;
var isFullscreen = menu.classList.contains('t-menu-base__burgermenu__fullscreen');
var isFullwidth = menu.classList.contains('t-menu-base__burgermenu__fullwidth');
if (!isFullwidth && !isFullscreen && menuPosition === 'fixed' && menuHeight > windowHeight - burgerHeight) {
var availableHeight = windowHeight - burgerHeight;
menu.style.overflow = 'auto';
if (!menu.classList.contains('t-menu-base_sidebar')) {
menu.style.maxHeight = availableHeight + 'px';
}
}
}