jQuery(function($) {ServicesModuleInitialize();});function ServicesModuleInitialize() {$(document).on('s123.page.ready', function( event ) {var $section = $('section.s123-module-services');$section.each(function( index ) {var $sectionThis = $(this);var categories = new ModuleLayoutCategories({$items :  $sectionThis.find('.services-category'),$categoriesContainer : $sectionThis.find('.categories-panel'),$filterButton : $sectionThis.find('.items-responsive-filter'),$categories : $sectionThis.find('.items-categories-container li')});if ( $sectionThis.hasClass('layout-10') ) {$sectionThis.find('.service-item-description').each(function() {const $paragraph = $(this);const element = $paragraph.get(0);if (element.scrollHeight > element.clientHeight) {$paragraph.addClass('show-more');$paragraph.attr('data-rel', 'tooltip');$paragraph.off('click.openMore').on('click.openMore', function() {var $this = $(this);if ( $this.hasClass('show-more-disabled') ) return;bootbox.alert({title: $this.data('title'),message: $this.html(),backdrop: true});});}});}
if ( $sectionThis.hasClass('layout-13') ) {$sectionThis.find('.services-category').each(function() {$sectionThis.find('.service-item').removeClass('active');$sectionThis.find('.service-image').removeClass('active');$sectionThis.find('.service-info').addClass('service-more-info-hidden');var $firstItem = $(this).find('.service-item').first();$firstItem.addClass('active');var imgKey = $firstItem.data('img-key');if (imgKey !== undefined) {$sectionThis.find('.service-image[data-img-key="' + imgKey + '"]').addClass('active');var $firstInfo = $sectionThis.find('.service-info[data-img-key="' + imgKey + '"]');if ($firstInfo.length > 0) {$firstInfo.removeClass('service-more-info-hidden');}}});$sectionThis.find('.service-items .service-item').on('click mouseenter',function() {let $this = $(this);if ( $this.hasClass('active') ) return;let imgKey = $this.data('img-key');$sectionThis.find('.service-item').removeClass('active');$sectionThis.find('.service-image.active').stop().fadeOut(500).removeClass('active');$sectionThis.find('.service-info').addClass('service-more-info-hidden');$sectionThis.find('.service-item[data-img-key="' + imgKey + '"]').addClass('active');var $newImage = $sectionThis.find('.service-image[data-img-key="' + imgKey + '"]');$newImage.addClass('active').stop().fadeIn(500);var $targetInfo = $sectionThis.find('.service-info[data-img-key="' + imgKey + '"]');if ($targetInfo.length > 0) {$targetInfo.removeClass('service-more-info-hidden');}});$sectionThis.off('module_layout_categories.shown').on('module_layout_categories.shown', function( event, catID ) {var $category = $(this).find('.services-category[data-categories-filter="'+catID+'"]');$sectionThis.find('.service-item').removeClass('active');$sectionThis.find('.service-image.active').fadeOut(500).removeClass('active');$sectionThis.find('.service-image').removeClass('active');$sectionThis.find('.service-info').addClass('service-more-info-hidden');var imgKey = $category.find('.service-item:first-child').data('img-key');if (imgKey !== undefined) {$sectionThis.find(`.service-item[data-img-key="${imgKey}"]`).addClass('active');$sectionThis.find(`.service-image[data-img-key="${imgKey}"]`).addClass('active').fadeIn(500);var $targetInfo = $sectionThis.find(`.service-info[data-img-key="${imgKey}"]`);if ($targetInfo.length > 0) {$targetInfo.removeClass('service-more-info-hidden');}}});}
$modulesMobileCarouselViewOBJ = new ModulesMobileCarouselView({$section : $sectionThis});if ( $sectionThis.find('.mapPopupActivator').length > 0 ) {$sectionThis.find('.mapPopupActivator').each(function() {var $mapLink = $(this);var location = $mapLink.data('location');$mapLink.off('click.mapPopup').on('click.mapPopup', function(e) {e.preventDefault();buildPopup('popupServiceMap','','', $GLOBALS["maps-display-domain"] + '/include/globalMapDisplay.php?cad=1&q=' + encodeURIComponent(location) + '&fl=1&l=' + encodeURIComponent(languageCode) + '&ilfc=' + encodeURIComponent(longFreeCustomer), true, false, true, '', '');});});}
initPseudoLinks($sectionThis);initAttributePopovers($sectionThis);});});function initPseudoLinks($container) {var $pseudoLinks = $container.find('[data-link-element="true"][data-href]');if ( $pseudoLinks.length === 0 ) return;$pseudoLinks.off('mousedown.pseudoLink').on('mousedown.pseudoLink', function(e) {if (e.which === 2) {e.preventDefault();e.stopPropagation();var href = $(this).data('href');if (href) {window.open(href, '_blank');}}});$pseudoLinks.off('click.pseudoLink').on('click.pseudoLink', function(e) {e.preventDefault();e.stopPropagation();var $el = $(this);var href = $el.data('href');var target = $el.data('target');if ( !href ) return;var open_in_new_tab_boo = e.ctrlKey || e.metaKey || target === '_blank';if ( open_in_new_tab_boo ) {window.open(href, '_blank');} else {window.location.href = href;}});$pseudoLinks.off('auxclick.pseudoLink').on('auxclick.pseudoLink', function(e) {if (e.which === 2) {e.preventDefault();e.stopPropagation();}});}
function initAttributePopovers($container) {var $attrElements = $container.find('.service-extra-attr');if ( $attrElements.length === 0 ) return;$attrElements.each(function() {var $attrEl = $(this);var titleText = $attrEl.attr('title');if ( !titleText || titleText.trim() === '' ) return;$attrEl.popover({container: 'body',content: titleText,html: false,trigger: 'hover',placement: 'top',template: '<div class="popover service-attr-popover" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>'});});}}
jQuery(function($) {TeamModuleInitialize();$(document).on('s123.page.ready.carousels', function( event ) {TeamMemberCarouselsInit();});});function TeamModuleInitialize() {$(document).on('s123.page.ready', function( event ) {var $section = $('section.s123-module-team:not(.layout-9)');$section.each(function( index ) {var $sectionThis = $(this);$sectionThis.find('.team-phone-btn').click(function() {var $this = $(this);var $teamPhone = $this.closest('.team-phone');buildPopup('teamPopupFloatDivPhone','',$teamPhone.find('.team-phone-popover').html(),'',true,true,true,'','');});var categories = new ModuleLayoutCategories({$items :  $sectionThis.find('.team-category'),$categoriesContainer : $sectionThis.find('.categories-panel'),$filterButton : $sectionThis.find('.items-responsive-filter'),$categories : $sectionThis.find('.items-categories-container li')});if ( $sectionThis.hasClass('layout-13') ) {$sectionThis.find('.team-item-description').each(function() {const $paragraph = $(this);const element = $paragraph.get(0);if (element.scrollHeight > element.clientHeight) {$paragraph.addClass('show-more');$paragraph.attr('data-rel', 'tooltip');$paragraph.off('click.openMore').on('click.openMore', function() {var $this = $(this);if ( $this.hasClass('show-more-disabled') ) return;bootbox.alert({className: 'item-show-more-popup',title: $this.data('title'),message: `<p class="item-show-more-text">${$this.html()}</p>`,backdrop: true});});}});}});TeamMemberCarouselsInit();});}
function TeamMemberCarouselsInit() {var $memberCarousels = $('.s123-module-team .team-member-images-carousel, .s123-module-team .team-module-images-carousel');$memberCarousels.each(function() {var $carousel = $(this);var carouselId = $carousel.attr('data-carousel-id');if ($carousel.attr('data-carousel-initialized') === 'true' && $carousel.hasClass('owl-loaded')) return;var isLayout9 = $carousel.closest('.s123-module-team').hasClass('layout-9');if (isLayout9) {var isInActiveItem = $carousel.closest('.owl-item.active').length > 0;if (!isInActiveItem && !$carousel.is(':visible')) return;if ($carousel.hasClass('owl-loaded') && !$carousel.find('.owl-stage').length) {$carousel.trigger('destroy.owl.carousel');$carousel.removeClass('owl-loaded owl-initialized');$carousel.removeAttr('data-carousel-initialized');}} else {if (carouselId && $('[data-carousel-id="' + carouselId + '"][data-carousel-initialized="true"]').length > 0) return;if ($carousel.closest('.owl-item.cloned').length > 0 && !$carousel.is(':visible')) return;}
var rtl = $('html[dir=rtl]').length === 1;var isLayout11 = $carousel.closest('.s123-module-team').hasClass('layout-11');$carousel.owlCarousel({items: 1,loop: true,nav: isLayout11 ? false : true,dots: false,slideTransition: 'ease',center: false,autoplay: isLayout11 ? true : false,rtl: rtl,navText: isLayout11 ? [] : [S123.s123IconToSvg.getHtml('angle-' + (rtl ? 'right' : 'left'), '', ''),S123.s123IconToSvg.getHtml('angle-' + (rtl ? 'left' : 'right'), '', '')],lazyLoad: true,smartSpeed: 300,mouseDrag: false,touchDrag: isLayout11 ? false : true});$carousel.attr('data-carousel-initialized', 'true');if (!$carousel.is(':visible')) {$carousel.addClass('owl-hidden');}
$carousel.trigger('refresh.owl.carousel');$carousel.on('initialized.owl.carousel changed.owl.carousel', function(e) {$carousel.find('.owl-stage').css('height', 'auto');});$carousel.on('click', '.owl-nav button, .owl-nav [class*=owl-]', function(e) {e.stopPropagation();e.preventDefault();});});}
jQuery(function($) {TeamModuleInitialize_Layout9();});function TeamModuleInitialize_Layout9() {$(document).on('s123.page.ready', function( event ) {var $section = $('section.s123-module-team.layout-9');$section.each(function( index ) {var $sectionThis = $(this);$section.off('module_layout_categories.shown').on('module_layout_categories.shown', function( event, catID ) {var $category = $(this).find('.team-category[data-categories-filter="'+catID+'"]');var numberImagesInRow = getSlidesPerView($category);var spaceBetween = 30;var highestMember = 0;if ( numberImagesInRow == 0 ) {$category.find('> .owl-carousel').addClass('manually-loaded');$category.find('.team-member-wrap').css({height: ''});initializeTeamPhone($sectionThis);return;}
if ( $category.find('> .owl-carousel').hasClass('owl-loaded') ) return;$category.find('.team-member-wrap').css({height: ''});$category.find('.team-member-wrap').each(function() {var $memberWrap = $(this);var memberHeight = calculateTeamMemberHeight($memberWrap);if (memberHeight > highestMember) {highestMember = memberHeight;}});if ( findBootstrapEnvironment()  === 'xs' ) {$category.find('.team-member-wrap').css({height: (highestMember + spaceBetween) + 'px'});} else {$category.find('.team-member-wrap').css({height: highestMember + 'px'});}
var $teamMemberWrap = $category.find('.team-member-wrap').first();if ( $teamMemberWrap.find('.team-member').length > 0 ) {$category.find('.s123-module-shadows').css({height: $teamMemberWrap.height() + 'px'});}
$category.find('> .owl-carousel').owlCarousel({items: numberImagesInRow,autoplay: false,autoplayTimeout: 0,center: true,dots: $category.find('> .owl-carousel').data('item-count') > 7 ? false : true,dotsEach: (numberImagesInRow % 2 == 1 ? true : false),margin: spaceBetween,loop: true,lazyLoad: true,stagePadding: 50,rtl: $('html').attr('dir') == 'rtl',smartSpeed: 300,responsive: {0: {items: 1},479: {items: 1},768: {items: 1},979: {items: 3},1199: {items: 3}},nav: true,navText: ['<i class="fa fa-chevron-left"></i>','<i class="fa fa-chevron-right"></i>'],onInitialize: function(event) {initializeTeamPhone($sectionThis);window.myLazyLoad.update();setTimeout(function() {TeamMemberCarouselsInit();$( document ).trigger( 's123.page.ready.carousels' );recalculateTeamMemberHeights($category);}, 100);},onResize: function() {window.myLazyLoad.update();recalculateTeamMemberHeights($category);},onDrag: function() {window.myLazyLoad.update();},onChanged: function(event) {var $activeItems = $(event.target).find('.owl-item.active');$activeItems.find('.team-member-images-carousel, .team-module-images-carousel').removeAttr('data-carousel-initialized');setTimeout(function() {TeamMemberCarouselsInit();}, 100);},onLoadLazy: function() {window.myLazyLoad.update();}});});if ( $sectionThis.find('.team-category[data-categories-filter="s123-g-show-all"]').length > 0 ) {$sectionThis.trigger('module_layout_categories.shown',['s123-g-show-all']);}
$sectionThis.off('module_layout_categories.shown.changed').on('module_layout_categories.shown.changed', function( event, catID ) {setTimeout(function() {var $category = $sectionThis.find('.team-category[data-categories-filter="'+catID+'"]');$category.find('.team-member-images-carousel, .team-module-images-carousel').removeAttr('data-carousel-initialized');TeamMemberCarouselsInit();$( document ).trigger( 's123.page.ready.carousels' );recalculateTeamMemberHeights($category);}, 300);});var categories = new ModuleLayoutCategories({$items :  $sectionThis.find('.team-category'),$categoriesContainer : $sectionThis.find('.categories-panel'),$filterButton : $sectionThis.find('.items-responsive-filter'),$categories : $sectionThis.find('.items-categories-container li')});});function initializeTeamPhone( $teamSection ) {$teamSection.off('click.initializeTeamPhone').on('click.initializeTeamPhone','.team-phone-btn', function() {var $teamPhone = $(this).closest('.team-phone');buildPopup('teamPopupFloatDivPhone','',$teamPhone.find('.team-phone-popover').html(),'',true,true,true,'','');})}});function getSlidesPerView( $category ) {var slidesPerView = 3.3;var originalItems = [];$category.find('.team-member').each(function() {if ( !$(this).closest('.owl-item').hasClass('cloned') ) {originalItems.push($(this));}});switch( findBootstrapEnvironment() ) {case 'xs':case 'sm':slidesPerView = originalItems.length < 2 ? 0 : 1;break;default:slidesPerView = originalItems.length <= 3 ? 0 : 3;break;}
return slidesPerView;}
function calculateTeamMemberHeight($memberWrap) {var $teamMember = $memberWrap.find('.team-member');var $teamImage = $teamMember.find('.team-image');var $teamDetails = $teamMember.find('.team-details');var imageHeight = $teamImage.outerHeight(true);var detailsHeight = $teamDetails.outerHeight(true);var memberPadding = parseInt($teamMember.css('padding-top')) + parseInt($teamMember.css('padding-bottom'));return imageHeight + detailsHeight + memberPadding;}
function recalculateTeamMemberHeights($category) {var highestMember = 0;var spaceBetween = 30;$category.find('.team-member-wrap').each(function() {var memberHeight = calculateTeamMemberHeight($(this));if (memberHeight > highestMember) {highestMember = memberHeight;}});if (highestMember > 0) {if (findBootstrapEnvironment() === 'xs') {$category.find('.team-member-wrap').css({height: (highestMember + spaceBetween) + 'px'});} else {$category.find('.team-member-wrap').css({height: highestMember + 'px'});}
var $teamMemberWrap = $category.find('.team-member-wrap').first();if ($teamMemberWrap.find('.team-member').length > 0) {$category.find('.s123-module-shadows').css({height: $teamMemberWrap.height() + 'px'});}}}
if ( IsWizard() ) {$(document).on('wizard.preview.device.changed', function( event ) {var $section = $('section.s123-module-team.layout-9');$section.each(function( index ) {var $sectionThis = $(this);var $category = $sectionThis.find('.team-category').filter(':visible');var $carousel = $category.find('> .owl-carousel');$carousel.trigger('destroy.owl.carousel');$carousel.removeClass('owl-loaded owl-carousel-init manually-loaded');$sectionThis.trigger('module_layout_categories.shown',[$category.data('categories-filter')]);});});}}
jQuery(function($) {TeamModuleInitialize_Layout14();});function TeamModuleInitialize_Layout14() {$(document).on('s123.page.ready', function( event ) {var $section = $('section.s123-module-team.layout-14');$section.each(function( index ) {var $sectionThis = $(this);$sectionThis.find('.team-category').each(function() {$(this).find('.team-member').first().addClass('active');$(this).find('.team-image').first().addClass('active');var $firstInfo = $(this).find('.team-memeber-info').first();if ($firstInfo.length > 0) {$firstInfo.removeClass('team-more-info-hidden');}});$sectionThis.find('.team-members .team-member').on('click mouseenter',function() {let $this = $(this);if ( $this.hasClass('active') ) return;let imgKey = $this.data('img-key');$sectionThis.find('.team-members .team-member').removeClass('active');$sectionThis.find('.team-members .team-member[data-img-key="' + imgKey + '"]').addClass('active');$sectionThis.find('.team-memeber-info').addClass('team-more-info-hidden');$sectionThis.find('.team-image-wrapper').hide().removeClass('active');if ( $sectionThis.find('.team-image-wrapper[data-img-key="' + imgKey + '"]').length > 0 ) {let $wrapper = $sectionThis.find('.team-image-wrapper[data-img-key="' + imgKey + '"]');$wrapper.stop().fadeIn(500).addClass('active');} else {$sectionThis.find('.team-image[data-img-key="' + imgKey + '"]').stop().fadeIn(500);}
var $targetInfo = $sectionThis.find('.team-memeber-info[data-img-key="' + imgKey + '"]');if ($targetInfo.length > 0) {$targetInfo.removeClass('team-more-info-hidden');}});$sectionThis.off('module_layout_categories.shown').on('module_layout_categories.shown', function( event, catID ) {$category = $(this).find('.team-category[data-categories-filter="'+catID+'"]');$category.find(`.team-members .team-member`).first().trigger('click');});var $activeCategory = $sectionThis.find('.team-category:visible').first();if ($activeCategory.length === 0) {$activeCategory = $sectionThis.find('.team-category[data-categories-filter="s123-g-show-all"]');}
if ($activeCategory.length > 0) {var $firstMember = $activeCategory.find('.team-members .team-member').first();if ($firstMember.length > 0 && !$firstMember.hasClass('active')) {$firstMember.trigger('click');}}});});}
jQuery(function($) {TwitterTweetsModuleInitialize();});function TwitterTweetsModuleInitialize() {$(document).on('s123.page.ready', function( event ) {var $section = $('section.s123-module-twitter-tweets');$section.each(function( index ) {var $sectionThis = $(this);$sectionThis.find('.tweet-settings').each(function(){const $settings = $(this);const settings = tryParseJSON($settings.val());if ( !settings ) return;$settings.replaceWith(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${settings.theme}"><a href="${settings.tweetURL}">${settings.title}</a></blockquote><script class="twitter-tweet-script" async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>`);});});});}
jQuery(function($) {TwitterTweetsLayout2ModuleInitialize();});function TwitterTweetsLayout2ModuleInitialize() {$(document).on('s123.page.ready', function(event) {var $sections = $('section.s123-module-twitter-tweets.layout-2');$sections.each(function(index) {var $sectionThis = $(this);initializeTwitterTweetsLayout2($sectionThis);});});}
var twitterWidgetsLoaded = false;var twitterWidgetsLoading = false;var logCounters = {initializeSection: 0,loadWidgets: 0,setupEventListeners: 0,monitoringSetup: 0,tweetProcessing: 0};function initializeTwitterTweetsLayout2($section) {logCounters.initializeSection++;if (logCounters.initializeSection > 3) {return;}
var tweetSettings = $section.find('.item-set-1 .tweet-settings').length;var existingTweets = $section.find('.item-set-1 .twitter-tweet').length;if (tweetSettings === 0 && existingTweets === 0) {return;}
if (existingTweets > 0) {setTimeout(function() {var $allTwitterIframes = $('iframe[id*="twitter-widget"]');if ($allTwitterIframes.length > 0) {$allTwitterIframes.each(function() {var $iframe = $(this);var currentLoading = $iframe.attr('loading');if (currentLoading !== 'lazy') {$iframe.attr('loading', 'lazy');}});}}, 2000);}
if (tweetSettings > 0) {$section.find('.item-set-1 .tweet-settings').each(function(index) {const $settings = $(this);const $tweetBody = $settings.closest('.tweet-body');if ($tweetBody.find('[data-tweet-processed="true"]').length > 0) {return;}
logCounters.tweetProcessing++;const settings = tryParseJSON($settings.val());if (!settings) {$tweetBody.html('<div class="tweet-error">Invalid tweet configuration</div>');return;}
const $existingTweet = $tweetBody.find('.twitter-tweet[data-iframe-loaded="true"], .twitter-tweet[data-iframe-preserved="true"]');if ($existingTweet.length > 0) {return; // Skip recreating tweet
}
$tweetBody.html('<div class="tweet-loading"></div>');try {const tweetHTML = `<blockquote class="twitter-tweet" data-dnt="true" data-theme="${settings.theme}" data-conversation="none" data-cards="hidden" data-width="300" data-lang="en" data-limit="1" data-tweet-url="${settings.tweetURL}" data-tweet-title="${settings.title}">
<div class="tweet-placeholder" style="min-height: 200px; border: 1px solid #e1e8ed; border-radius: 12px; padding: 20px; background: #f7f9fa; display: flex; align-items: center; justify-content: center; color: #657786; font-size: 14px;">
<div style="text-align: center;">
<div style="margin-bottom: 8px;">🐦</div>
<div>Tweet will load when visible</div>
</div>
</div>
<a href="${settings.tweetURL}" style="display: none;">${settings.title}</a>
</blockquote>`;$settings.replaceWith(tweetHTML);const $newTweet = $tweetBody.find('.twitter-tweet');$newTweet.attr('role', 'article');$newTweet.attr('aria-label', 'Twitter Tweet');const $correspondingItem = $tweetBody.closest('.global-layout-2-item');const uniqueId = $correspondingItem.data('unique-id');if (uniqueId) {const $correspondingItemSet2 = $section.find('.item-set-2 .global-layout-2-item[data-unique-id="' + uniqueId + '-copy"]');if ($correspondingItemSet2.length > 0) {const $tweetBodySet2 = $correspondingItemSet2.find('.tweet-body');$tweetBodySet2.html($tweetBody.html());}}} catch (error) {$tweetBody.html('<div class="tweet-error">Error loading tweet</div>');}});}
loadTwitterWidgetsOnce();if (!$section.data('twitter-monitoring-setup')) {logCounters.monitoringSetup++;$section.data('twitter-monitoring-setup', true);monitorTweetLoading($section);}}
function loadTwitterWidgetsOnce() {logCounters.loadWidgets++;if (logCounters.loadWidgets > 5) {return;}
if (twitterWidgetsLoaded || twitterWidgetsLoading) {return;}
if (typeof twttr !== 'undefined') {twitterWidgetsLoaded = true;setupTwitterEventListeners();return;}
if (!document.querySelector('script[src*="platform.twitter.com/widgets.js"]')) {twitterWidgetsLoading = true;const script = document.createElement('script');script.async = true;script.src = 'https://platform.twitter.com/widgets.js';
script.charset = 'utf-8';script.className = 'twitter-widgets-script';script.onload = function() {twitterWidgetsLoaded = true;twitterWidgetsLoading = false;if (typeof twttr !== 'undefined') {setupTwitterEventListeners();}};script.onerror = function() {twitterWidgetsLoading = false;$('.tweet-loading').each(function() {$(this).replaceWith('<div class="tweet-error">Failed to load Twitter widgets</div>');});};document.head.appendChild(script);} else {twitterWidgetsLoading = true;}}
function setupTwitterEventListeners() {logCounters.setupEventListeners++;if (logCounters.setupEventListeners > 2) {return;}
if (window.twitterEventListenersSetup) {return;}
window.twitterEventListenersSetup = true;if (typeof twttr !== 'undefined') {twttr.events.bind('rendered', function(event) {const $iframe = $(event.target);if ($iframe.length) {const iframeId = $iframe.attr('id');if (iframeId && iframeId.includes('twitter-widget')) {$iframe.attr('loading', 'lazy');try {const iframeDoc = $iframe[0].contentDocument || $iframe[0].contentWindow.document;const images = iframeDoc.querySelectorAll('img');images.forEach(function(img) {img.setAttribute('loading', 'lazy');});} catch (e) {}}
$iframe.css({'width': '100%','max-width': 'none','height': '240px','max-height': '240px'});try {$iframe.contents().find('span').css('font-size', '13px');$iframe.contents().find('body').css('font-size', '13px');} catch (e) {$iframe.closest('.twitter-tweet').css({'font-size': '13px','line-height': '1.3'});}
applyLazyLoadingToTweetImages($iframe);$iframe.closest('.twitter-tweet').attr('data-iframe-loaded', 'true');$iframe.closest('.global-layout-2-item').find('.tweet-loading').remove();}});twttr.events.bind('loaded', function(event) {});}}
function monitorTweetLoading($section) {setTimeout(function() {$section.find('.twitter-tweet').each(function() {const $tweet = $(this);if (!$tweet.attr('data-rendered') && !$tweet.find('iframe').length) {const $errorDiv = $('<div class="tweet-error">Tweet could not be loaded</div>');$tweet.replaceWith($errorDiv);}});}, 15000); // Wait 15 seconds for tweets to load (increased from 10s)
}
function refreshTwitterTweetsLayout2($section) {initializeTwitterTweetsLayout2($section);}
function initializeTwitterTweetsLayout2ManualCarousel($section) {$section.find('.global-layout-2-column').each(function() {var $column = $(this);var $grid = $column.find('.global-layout-2-grid');if ($grid.length > 0 && $column.data('animate') === true) {var animationDuration = $column.data('animation-duration') || 60;var direction = $column.data('direction') || 'up';$grid.css('animation-duration', animationDuration + 's');$column.on('mouseenter', function() {$grid.css('animation-play-state', 'paused');});$column.on('mouseleave', function() {$grid.css('animation-play-state', 'running');});}});}
function tryParseJSON(jsonString) {try {return JSON.parse(jsonString);} catch (e) {return null;}}
window.TwitterTweetsLayout2 = {initialize: TwitterTweetsLayout2ModuleInitialize,refresh: refreshTwitterTweetsLayout2,loadWidgets: loadTwitterWidgetsOnce};function showLoggingSummary() {if (logCounters.initializeSection > 5) {}
if (logCounters.loadWidgets > 3) {}
if (logCounters.setupEventListeners > 1) {}
if (logCounters.tweetProcessing > 20) {}}
setTimeout(function() {showLoggingSummary();setInterval(showLoggingSummary, 30000); // Every 30 seconds
}, 10000); // First summary after 10 seconds
function optimizeTwitterIframeRendering($section) {$section.find('iframe[id^="twitter-widget"]').each(function() {const iframe = this;$(iframe).css({'transform': 'translateZ(0)','backface-visibility': 'hidden','will-change': 'auto'});});}
$(document).ready(function() {if (typeof window.GlobalLayout2 === 'undefined') {const script = document.createElement('script');script.src = '/versions/2/wizard/modules/globalLayouts/globalLayout-vertical-scroll/js/module.globalLayout-2.js';document.head.appendChild(script);}
setTimeout(function() {$('.s123-module-twitter-tweets.layout-2').each(function() {optimizeTwitterIframeRendering($(this));});}, 2000); // Wait for tweets to load
});function addLazyLoadingToExistingTwitterIframes($section) {const $twitterIframes = $section.find('iframe[id*="twitter-widget"]');if ($twitterIframes.length === 0) {return;}
$twitterIframes.each(function(index) {const $iframe = $(this);const iframeId = $iframe.attr('id');const currentLoading = $iframe.attr('loading');if (currentLoading !== 'lazy') {$iframe.attr('loading', 'lazy');try {const iframeDoc = $iframe[0].contentDocument || $iframe[0].contentWindow.document;const images = iframeDoc.querySelectorAll('img');images.forEach(function(img) {if (img.getAttribute('loading') !== 'lazy') {img.setAttribute('loading', 'lazy');}});} catch (e) {}}});}
function setupPeriodicTwitterIframeScan($section) {if ($section.data('twitter-iframe-scanner-setup')) {return;}
$section.data('twitter-iframe-scanner-setup', true);let scanCount = 0;const maxScans = 30; // Safety limit to prevent infinite scanning
const scanInterval = setInterval(function() {scanCount++;const $pendingBlockquotes = $section.find('.twitter-tweet-lazy');if ($pendingBlockquotes.length === 0) {clearInterval(scanInterval);return;}
const $newIframes = $section.find('iframe[id*="twitter-widget"]:not([loading="lazy"])');if ($newIframes.length > 0) {$newIframes.each(function() {const $iframe = $(this);const iframeId = $iframe.attr('id');$iframe.attr('loading', 'lazy');try {const iframeDoc = $iframe[0].contentDocument || $iframe[0].contentWindow.document;const images = iframeDoc.querySelectorAll('img:not([loading="lazy"])');images.forEach(function(img) {img.setAttribute('loading', 'lazy');});} catch (e) {}});}
if (scanCount >= maxScans) {clearInterval(scanInterval);}}, 1000); // Scan every 1 second
}
function setupTwitterIframeLazyLoading($section) {const $lazyTweets = $section.find('.twitter-tweet-lazy[data-lazy-load="true"]');if ($lazyTweets.length === 0) {const $allTweets = $section.find('.twitter-tweet');return;}
const observer = new IntersectionObserver(function(entries) {entries.forEach(function(entry) {if (entry.isIntersecting) {const $tweet = $(entry.target);if ($tweet.data('loading') || $tweet.attr('data-iframe-loaded') === 'true') {return;}
$tweet.data('loading', true);const tweetURL = $tweet.attr('data-tweet-url');const tweetTitle = $tweet.attr('data-tweet-title');if (tweetURL && tweetTitle) {$tweet.html(`<a href="${tweetURL}">${tweetTitle}</a>`);$tweet.removeAttr('data-lazy-load')
.removeAttr('data-tweet-url')
.removeAttr('data-tweet-title')
.removeClass('twitter-tweet-lazy');if (typeof twttr !== 'undefined' && twttr.widgets && twttr.widgets.load) {twttr.widgets.load($tweet[0]);}}
observer.unobserve(entry.target);}});}, {root: null, // Use viewport as root
threshold: 0.1, // Trigger when 10% visible
rootMargin: '100px' // Start loading 100px before entering viewport
});$lazyTweets.each(function(index) {observer.observe(this);});}
function applyLazyLoadingToTweetImages($iframe) {try {const iframe = $iframe[0];if (!iframe || !iframe.contentDocument) {return;}
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;const images = iframeDoc.querySelectorAll('img');if (images.length === 0) {return;}
const observer = new IntersectionObserver(function(entries) {entries.forEach(function(entry) {if (entry.isIntersecting) {const img = entry.target;const lazySrc = img.getAttribute('data-src') || img.getAttribute('data-lazy-src');if (lazySrc && !img.src) {img.src = lazySrc;img.removeAttribute('data-src');img.removeAttribute('data-lazy-src');}
observer.unobserve(img);}});}, {root: null, // Use viewport as root
threshold: 0.1,rootMargin: '50px' // Start loading 50px before image enters viewport
});images.forEach(function(img) {if (img.src && !img.getAttribute('data-src') && !img.getAttribute('data-lazy-src')) {img.setAttribute('data-lazy-src', img.src);img.removeAttribute('src');}
observer.observe(img);});} catch (error) {}}
function addSmoothAnimationResetHandling($iframe) {try {const $grid = $iframe.closest('.global-layout-2-grid');const $column = $iframe.closest('.global-layout-2-column');if ($grid.length === 0 || $column.length === 0) {return;}
const animationDuration = parseFloat($column.data('animation-duration')) || 17;const animationDurationMs = animationDuration * 1000;let lastTransform = '';let resetCount = 0;const checkAnimationReset = () => {const currentTransform = window.getComputedStyle($grid[0]).transform;if (currentTransform.includes('matrix(1, 0, 0, 1, 0, 0)') ||currentTransform.includes('matrix(1, 0, 0, 1, 0, -')) {if (lastTransform && lastTransform !== currentTransform) {resetCount++;$grid.css('opacity', '0.98');setTimeout(() => {$grid.css('opacity', '1');}, 50); // Very brief opacity change to mask the flash
}}
lastTransform = currentTransform;};const resetInterval = setInterval(checkAnimationReset, animationDurationMs / 10);setTimeout(() => {clearInterval(resetInterval);}, 300000); // 5 minutes
} catch (error) {}}
jQuery(function($) {headersModuleInitialize_Layout();});function headersModuleInitialize_Layout() {$(document).on('s123.page.ready', function( event ) {var $sections = $('section.s123-module-headers:is(.layout-6,.layout-7,.layout-8,.layout-9,.layout-18,.layout-20,.layout-22,.layout-23,.layout-24,.layout-25,.layout-26,.layout-27,.layout-29,.layout-30,.layout-35,.layout-39,.layout-40,.layout-99,.layout-101,.mobile-layout-1,.mobile-layout-3,.mobile-layout-7,.mobile-layout-8,.mobile-layout-11');$sections.each(function( index ) {var $s = $(this);var $carousel = $s.find('[data-ride="carousel"]');var sliderSpeed = $s.data('slider-speed');if ( sliderSpeed == '' || parseInt(sliderSpeed) < 1 || parseInt(sliderSpeed) > 21 ) {sliderSpeed = 5000;} else {sliderSpeed = parseInt(sliderSpeed) * 1000;}
$s.find('.header1, .header2').each(function( index ) {var $this = $(this);if ( $this.data('line-height') !== undefined && $this.data('line-height') !== '' ) {var lineHeightVal = String($this.data('line-height'));if ( lineHeightVal === '1.15' || lineHeightVal === '1.25' || lineHeightVal === '1.35' ) {$this.get(0).style.setProperty('--header_line_height', lineHeightVal);$this.css('line-height', lineHeightVal);} else if ( lineHeightVal !== '0' ) {var computedLineHeight = 1.5 + (parseFloat(lineHeightVal) * 0.015);$this.get(0).style.setProperty('--header_line_height', computedLineHeight);$this.css('line-height', computedLineHeight);}}
if ( $this.data('letter-spacing') !== undefined && $this.data('letter-spacing') !== '' && String($this.data('letter-spacing')) !== '0' ) {var letterSpacingVal = parseFloat($this.data('letter-spacing')) * 0.01;$this.css('letter-spacing', letterSpacingVal + 'em');}
if ( $this.data('word-spacing') !== undefined && $this.data('word-spacing') !== '' && String($this.data('word-spacing')) !== '0' ) {var wordSpacingVal = parseFloat($this.data('word-spacing')) * 0.03;$this.css('word-spacing', wordSpacingVal + 'em');}});if( $s.hasClass('layout-20') ) {var $firstImage = $s.find('.headers-image').first();if ( $firstImage.length > 0 ) {if ( $firstImage.data('bg') !== undefined ) {var img = new Image();img.src = $firstImage.data('bg');img.onload = function() {var aspectRatio = this.width / this.height;$s.find('.headers-image').css('aspect-ratio',String(aspectRatio));if( $s.find('.headers-container').hasClass('circle-under-image') && aspectRatio < 1 ) {$s.addClass('corner-circle');}};} else {$firstImage.closest('.headers-img-wrap').addClass('circle-fixed-width');}}}
if( $s.hasClass('layout-22') || $s.hasClass('layout-29') || $s.hasClass('mobile-layout-7') ) {var $headersDescription = $s.find('.headers-description');var $headersimage = $s.find('.headers-image');if ( $headersimage.length == 0 ) {$headersimage = $s.find('.headers-bg-video');}
if ( $headersimage.length > 0 && $headersDescription.length > 0 ) {if ( ($headersDescription.get(0).offsetHeight - 60) > $headersimage.get(0).offsetHeight ) {$s.get(0).style.setProperty('--headers-description-height',$headersDescription.get(0).offsetHeight+'px');}}}
$carousel.carousel({interval: sliderSpeed});if( $s.hasClass('layout-26') && $s.attr('data-version') !== undefined && $s.attr('data-version') == '2' ) {if ( IsWizard() ) {$(document).on('site123.colorPicker.change',function( event ) {updateBackgroundColor();});}
updateBackgroundColor();}
function updateBackgroundColor() {var boxColorClass = $s.data('box-color');var color = $s.hasClass('bg-primary') ?getComputedStyle(document.documentElement).getPropertyValue('--modules_color_box') :getComputedStyle(document.documentElement).getPropertyValue('--modules_color_second_box');switch (boxColorClass) {case 'bg-primary-gray':color = '#ebedf0';break;case 'bg-primary-white':color = '#ffffff';break;case 'bg-primary-black':color = '#000000';break;case 'background-primary-color btn-primary-text-color':color = $s.hasClass('bg-primary') ?getComputedStyle(document.documentElement).getPropertyValue('--modules_color_section_main') :getComputedStyle(document.documentElement).getPropertyValue('--modules_color_second_section_main');break;}
$s.find('.headers-img-wrap').get(0).style.setProperty('--layout26OpacityColor',hexToRGB(color));}
function hexToRGB(hex) {var r = parseInt(hex.slice(1, 3), 16),g = parseInt(hex.slice(3, 5), 16),b = parseInt(hex.slice(5, 7), 16);return r + ", " + g + ", " + b;}
if( $s.data('image-width') == 2 ) {var sectionHeight = $s.height();$s.find('.headers-container').css('min-height',sectionHeight+'px');if( $s.hasClass('layout-22') ) {$s.find('.headers-image').css('min-height',sectionHeight+'px');}
$s.data('image-width',0);}});var $sections = $('section.s123-module-headers');$sections.each(function( index ) {var $s = $(this);$s.find('.custom-header-font').each(function( index ) {var $this = $(this);var customFont = $this.data('custom-font');if ( customFont.length > 0 ) {$this.css('font-family',customFont);}});$s.find('.header1, .header2').each(function( index ) {var $this = $(this);if( $s.hasClass('layout-7') || $s.hasClass('layout-9') || $s.hasClass('layout-22') || $s.hasClass('layout-23') || $s.hasClass('layout-24') || $s.hasClass('layout-26') || $s.hasClass('layout-27') || $s.hasClass('layout-29') || $s.hasClass('layout-33') || $s.hasClass('mobile-layout-1') || $s.hasClass('mobile-layout-7') ) {fitHeaderTextToParentContainer($this);}});$s.find('.h-s-form').each(function( index ) {let $this = $(this);hotelBookingWidgetInit($this);$this.off('submit').on('submit', function(event) {event.preventDefault();window.location.href = '/'+ $this.find('[data-id="page"] option').val() + '?' + $this.serialize();});});function fitHeaderTextToParentContainer( $textEl ) {if ( $textEl.length == 0 ) return;fontSize = parseFloat($textEl.css('font-size'));if ( !$.isNumeric(fontSize) ) return;var $parentContainer = $textEl.closest('.headers-text-resize-container');if ( $parentContainer.length > 0 && $parentContainer.width() < $textEl.width() ) {$textEl.css('visibility','hidden');var parentContainerWidth = $parentContainer.width();if ( $textEl.closest('section').hasClass('layout-9') || $textEl.closest('section').hasClass('layout-27') || $textEl.closest('section').hasClass('mobile-layout-1') ) {parentContainerWidth = parentContainerWidth + 5;}
if ( $textEl.closest('section').hasClass('layout-23') ) {parentContainerWidth = $parentContainer.innerWidth();}
var index = 0;while ( parentContainerWidth < $textEl.width() && index < 99 ) {index++;fontSize--;$textEl.get(0).style.setProperty('--header-font-size',fontSize);}
$textEl.css('visibility','unset');}}});S123_ActionButtons.init();});}
jQuery(function($) {HeadersModuleInitialize_Layout5();});function HeadersModuleInitialize_Layout5() {$(document).on('s123.page.ready', function( event ) {var $section = $('section.s123-module-headers.layout-5');$section.each(function( index ) {var $sectionThis = $(this);var $flickityContainer = $sectionThis.find('.carousel');var originalFirstImageSize = {};if ( $flickityContainer.length === 0 ) return;$flickityContainer.flickity({imagesLoaded: true,lazyLoad: 2,pageDots: false,wrapAround: true,percentPosition: false});});});}
jQuery(function($) {HeadersModuleInitialize_Layout30();});function HeadersModuleInitialize_Layout30() {$(document).on('s123.page.ready', function( event ) {var $section = $('section.s123-module-headers.layout-30, section.s123-module-headers.mobile-layout-11');$section.each(function( index ) {var $sectionThis = $(this);$sectionThis.find('.contactUsForm').each( function( index ) {var $form = $(this);var customFormMultiSteps = new CustomFormMultiSteps();customFormMultiSteps.init({$form: $form,$nextButton: $form.find('.next-form-btn'),$submitButton: $form.find('.submit-form-btn'),$previousButton: $form.find('.previous-form-btn'),totalSteps: $form.find('.custom-form-steps').data('total-steps')});var forms_GoogleRecaptcha = new Forms_GoogleRecaptcha();forms_GoogleRecaptcha.init($form);$form.validate({errorElement: 'div',errorClass: 'help-block',focusInvalid: true,ignore: ':hidden:not(.custom-form-step:visible input[name^="datePicker-"])',highlight: function (e) {$(e).closest('.form-group').removeClass('has-info').addClass('has-error');},success: function (e) {$(e).closest('.form-group').removeClass('has-error');$(e).remove();},errorPlacement: function (error, element) {if( element.is('input[type=checkbox]') || element.is('input[type=radio]') ) {var controls = element.closest('div[class*="col-"]');if( controls.find(':checkbox,:radio').length > 0 ) element.closest('.form-group').append(error);else error.insertAfter(element.nextAll('.lbl:eq(0)').eq(0));}
else if( element.is('.select2') ) {error.insertAfter(element.siblings('[class*="select2-container"]:eq(0)'));}
else if( element.is('.chosen-select') ) {error.insertAfter(element.siblings('[class*="chosen-container"]:eq(0)'));}
else {error.appendTo(element.closest('.form-group'));}},submitHandler: function( form ) {var $form = $(form);var clickAction = $form.data('click-action');$form.append($('<div class="conv-code-container"></div>'));var $convCodeContainer = $form.find('.conv-code-container');var thankYouMessage = translations.ThankYouAfterSubmmit;if ( $form.data('thanks-msg') ) {thankYouMessage = $form.data('thanks-msg');}
$form.find('button:submit').prop('disabled', true);S123.ButtonLoading.start($form.find('button:submit'));var url = "/versions/2/include/contactO.php";if ( $form.hasClass('custom-form') || $form.hasClass('horizontal-custom-form') ) {if ( !CustomForm_IsLastStep( $form ) ) {$form.find('.next-form-btn:visible').trigger('click');S123.ButtonLoading.stop($form.find('button:submit'));$form.find('button:submit').prop('disabled', false);return false;}
if ( !CustomForm_IsFillOutAtLeastOneField($form) ) {bootbox.alert(translations.fillOutAtLeastOneField);S123.ButtonLoading.stop($form.find('button:submit'));$form.find('button:submit').prop('disabled', false);return false;}
url = "/versions/2/include/customFormO.php";}
if ( forms_GoogleRecaptcha.isActive && !forms_GoogleRecaptcha.isGotToken ) {forms_GoogleRecaptcha.getToken();return false;}
$.ajax({type: "POST",url: url,data: $form.serialize(),success: function( data ) {var dataObj = jQuery.parseJSON(data);$form.trigger("reset");if ( clickAction == 'thankYouMessage' || clickAction == '' ) {bootbox.alert({title: translations.sent,message: thankYouMessage+'<iframe src="/versions/2/include/contactSentO.php?w='+$('#w').val()+'&websiteID='+dataObj.websiteID+'&moduleID='+dataObj.moduleID+'" style="width:100%;height:30px;" frameborder="0"></iframe>',className: 'contactUsConfirm',buttons: {ok: {label: translations.Ok}},backdrop: true});} else {if ( dataObj.conv_code.length > 0 ) {var $convCode = $('<div>' + dataObj.conv_code + '</div>');$convCodeContainer.html($convCode.text());}
if( top.$('#websitePreviewIframe').length ) {bootbox.alert({title: translations.previewExternalLinkTitle,message: translations.previewExternalLinkMsg.replace('{{externalLink}}','<b>'+dataObj.action.url+'</b>'),className: 'externalAlert'});} else {window.open(dataObj.action.url,'_self');}}
customFormMultiSteps.reset();forms_GoogleRecaptcha.reset();S123.ButtonLoading.stop($form.find('button:submit'));$form.find('button:submit').prop('disabled', false);WizardNotificationUpdate();}});return false;}});$form.find('.f-b-date-timePicker').each( function() {var $option = $(this);var $datePicker = $option.find('.fake-input.date-time-picker');var $hiddenInput = $option.find('[data-id="'+$datePicker.data('related-id')+'"]');var $datePickerIcon = $option.find('.f-b-date-timePicker-icon');var formBuilderCalendar = new calendar_handler();$datePicker.data('date-format',$form.data('date-format'));formBuilderCalendar.init({$fakeInput: $datePicker,$hiddenInput: $hiddenInput,$fakeInputIcon: $datePickerIcon,type: 'datePicker',title: translations.chooseDate,calendarSettings: {format: $datePicker.data('date-format'),weekStart: 0,todayBtn: "linked",clearBtn: false,language: languageCode,todayHighlight: true},onSubmit: function( selectedDate ) {$datePicker.html(selectedDate);$hiddenInput.val(selectedDate);}});});CustomForm_DisableTwoColumns($form);});});});}
