/* ============================================================================= * Viewport pixel * ========================================================================== */ jQuery(window).on('load resize', function () { if (jQuery('#viewport-pixel').length < 1 || jQuery('#viewport-pixel') == undefined) { return; } var val = jQuery('#viewport-pixel').css('opacity'); // remove old class jQuery('body').removeClass('viewport_desktop viewport_tablet viewport_mobile'); // tablet var device = 'desktop'; if (val > 0.75) { jQuery('body').addClass('viewport_desktop'); } else if (val <= 0.75 && val > 0.5) { jQuery('body').addClass('viewport_tablet'); device = 'tablet'; } else if (val <= 0.5) { jQuery('body').addClass('viewport_mobile'); device = 'mobile'; } // fire event jQuery(window).trigger('Eclipse.viewport',{'device':device}); }); /* ============================================================================= * Mobile view * ========================================================================== */ jQuery(document).ready(function() { if (jQuery('body').hasClass('mobile')) { // set body class jQuery('body').addClass('viewport_mobile'); // fire event jQuery(document).trigger('Eclipse.viewport_mobile',{}); } }); /* ============================================================================= * IOS workaround for wrong position bug under IOS11,12 * ========================================================================== */ jQuery(document).ready(function() { if( jQuery('body').hasClass('ios') && window.location.hash.toString().length < 1) { jQuery("html, body").animate({scrollTop: 0}); } }); /* ============================================================================= * Outdated browser information * ========================================================================== */ jQuery(document).ready(function() { if (localStorage.getItem('Eclipse.outdated-browser') == 'confirmed') { jQuery('#outdated-browser').addClass('confirmed'); } jQuery('#outdated-browser span').click(function () { jQuery('#outdated-browser').addClass('confirmed'); localStorage.setItem('Eclipse.outdated-browser', 'confirmed'); }); }); /* ============================================================================= * PrivacyManager listener * ========================================================================== */ jQuery(document).on('Privacy.changed', function (event, params) { jQuery(document).trigger('Eclipse.user_privacy', params); }); jQuery(document).on('Privacy.cleared', function (event) { Eclipse_clearPrivacy(true); }); /* ============================================================================= * Eclipse_setPrivacy(intLevel) * @param array||string Levels of privacy * ========================================================================== */ function Eclipse_setPrivacy(varLevels) { if (typeof (varLevels) == 'Array') { varLevels = varLevels.join(','); } // set local storage localStorage.setItem('user_privacy_settings',varLevels); // fire event jQuery(document).trigger('Eclipse.user_privacy',{'level':varLevels}); } /* ============================================================================= * Eclipse_clearPrivacy(blnReload) * @param boolean Reload page true/false * ========================================================================== */ function Eclipse_clearPrivacy(blnReload) { if(blnReload == undefined || blnReload == null) { blnReload = true; } // clear local storage localStorage.removeItem('user_privacy_settings'); // fire event jQuery(document).trigger('Eclipse.clear_privacy_settings',{}); // reload page if(blnReload) { location.reload(); } } /* ============================================================================= * mainmenu menuheader (deactivate link) * ========================================================================== */ jQuery(document).ready(function(){ jQuery('.mainmenu .menuheader').removeAttr("href"); }); /* ============================================================================= * mainmenu avoid_click * ========================================================================== */ jQuery(document).ready(function () { jQuery('.avoid-click > a, .avoid_click > a').click(function (e) { e.preventDefault(); }); jQuery('.avoid-click-all a, .avoid_click_all a').click(function (e) { e.preventDefault(); }); }); /* ============================================================================= * mainmenu click opener * ========================================================================== */ jQuery(document).ready(function() { if( jQuery('body').hasClass('mobile') || jQuery('body').hasClass('viewport_tablet') || jQuery('body').hasClass('viewport_mobile') ) { return; } var last = null; jQuery('.mainmenu a.click_open').click(function (e) { e.preventDefault(); e.stopPropagation(); // close last open //if (last != this ) //{ // if( jQuery(last).parents() ) // { // jQuery(last).removeClass('active'); // jQuery(last).next('.megamenu-wrapper, ul').removeClass('active'); // jQuery('.mod_pct_megamenu, .mod_pct_megamenu .item').removeClass('active'); // } //} jQuery('.mainmenu a.pct_megamenu').removeClass('active'); jQuery('.mod_pct_megamenu, .mod_pct_megamenu .item').removeClass('active'); // toggle if( last == this ) { jQuery(this).toggleClass('active'); jQuery(this).parent('li.click_open').toggleClass('active'); jQuery(this).next('.megamenu-wrapper, ul').toggleClass('active'); return; } // close all click_open elements jQuery('.mainmenu .click_open, .mainmenu .click_open ul').removeClass('active'); // open parent click_open elements var parents = jQuery(this).parents('li.click_open'); parents.addClass('active'); parents.find('> a, > ul').addClass('active'); //jQuery(this).toggleClass('active'); last = this; }); }); /* ============================================================================= * ce_table responsive * ========================================================================== */ function respTables() { jQuery('.ce_table').each(function() { var tableWidth = jQuery(this).find('table').width(); var ce_tableWidth = jQuery(this).width(); if (tableWidth > ce_tableWidth) { jQuery(this).addClass('overflow'); } else { jQuery(this).removeClass('overflow'); } }); }; jQuery(document).ready(function(){ respTables(); }); jQuery(window).on("resize", function(){ respTables(); }); /* ============================================================================= * css3 animation (css/animate.css) * ========================================================================== */ jQuery(document).ready(function () { var root = jQuery("body"); var animationClasses = ["fadeIn", "zoomIn", "fadeInDown","fadeInDownBig","fadeInLeft","fadeInLeftBig","fadeInRight","fadeInRightBig","fadeInUp","fadeInUpBig","rotateIn","zoomIn","slideInDown","slideInLeft","slideInRight","slideInUp","bounceIn","bounceInDown","bounceInLeft","bounceInRight","bounceInUp"]; jQuery.each(animationClasses, function(key, value) { root.find("." + value).each(function() { jQuery(this).removeClass(value).attr("data-animate", value); }); }); function initObserver() { // @var IntersectionObserver var objObserver = new IntersectionObserver( function(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { var element = jQuery(entry.target); var animation = element.data("animate"); element.removeClass('animate').addClass('animated ' + animation).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () { element.removeClass(animation+' animated'); }); // stop observing objObserver.unobserve( entry.target ); } }); }); jQuery('.animate').not('.nowaypoint').each(function(i,elem) { var element = jQuery(elem); // remove animations for ios or android if(jQuery('body').hasClass('ios') || jQuery('body').hasClass('android')) { element.removeClass('animate'); return true; } else { objObserver.observe( element[0],{root: null,rootMargin: '0px',threshold: "25%"} ); } }); } // check if a revolutionslider exists in page if (jQuery(document).revolution != undefined) { jQuery(document).on('RevolutionSlider.loaded', function (e, params) { initObserver(); }); } else { initObserver(); } }); /* ============================================================================= * scrollToTop * ========================================================================== */ jQuery(document).ready(function(){ jQuery('a.totop').click(function(e){ e.preventDefault(); jQuery("html, body").animate({scrollTop: jQuery('#contentwrapper').offset().top - 100}, 500); }); }); /* ============================================================================= * #slider min-height * ========================================================================== */ jQuery(document).ready(setMinHeightToSliderSection); jQuery(window).resize(setMinHeightToSliderSection); function setMinHeightToSliderSection() { if( jQuery('#fix-wrapper').css('position') == 'absolute' ) { jQuery('#slider.empty').css('min-height', jQuery('#fix-wrapper').height()); } else { jQuery('#slider.empty').css('min-height', ''); } } /* ============================================================================= * Fixed-header body class * ========================================================================== */ function headerFixed() { var topHeight = jQuery("#top-wrapper").outerHeight(); if(topHeight == jQuery(window).innerHeight()) { topHeight = jQuery(window).innerHeight() / 3; } if (jQuery(this).scrollTop() > topHeight) { jQuery("body").addClass("fixed-header"); } else { jQuery("body").removeClass("fixed-header"); } }; jQuery(document).ready(function(){ headerFixed(); }); jQuery(window).scroll(function() { headerFixed(); }); /* ============================================================================= * generate smartmenu on onepage_page * ========================================================================== */ jQuery(document).ready(function () { if (jQuery('body').hasClass('onepage_page')) { // delete menu of smartmenu jQuery('.smartmenu-content ul.level_1').remove(); // clone level_1 from mainmenu to empty smartmenu jQuery('.smartmenu-content .smartmenu-table').append(jQuery(".header.original nav.mainmenu.desktop ul.level_1").clone().removeClass("mainmenu")); } }); /* ============================================================================= * smartmenu * ========================================================================== */ jQuery(document).ready(function(){ jQuery('.smartmenu-trigger').click(function(e){ e.preventDefault(); jQuery('.smartmenu-content').addClass('open'); jQuery('.smartmenu').addClass('open'); jQuery('body').addClass('no_scroll'); }); jQuery('.smartmenu-content .smartmenu-close').click(function(e){ e.preventDefault(); jQuery('.smartmenu-content').removeClass('open'); jQuery('.smartmenu').removeClass('open'); jQuery('body').removeClass('no_scroll'); }); jQuery('.smartmenu-content a:not(.submenu)').click(function(e) { if( jQuery(e.target).hasClass('pct_megamenu') ) { return false; } // follow link if(jQuery(e.target).attr('target') != '_blank' && jQuery(e.target).attr('href') != "/") { jQuery('.smartmenu-content').removeClass('open'); jQuery('body').removeClass('no_scroll'); } }); // open trail content on page load jQuery('.smartmenu-content').find('.trail').addClass('open'); jQuery('.smartmenu-content').find('.trail > ul').show(); }); jQuery(document).ready(function(){ jQuery('.smartmenu-content .subitems_trigger').on('click', function (e) { e.stopPropagation(); var element = jQuery(this).parent('li'); if (element.hasClass('open')) { element.removeClass('open'); element.find('li').removeClass('open'); element.find('ul').slideUp(); } else { element.addClass('open'); element.children('ul').slideDown(); element.siblings('li').children('ul').slideUp(); element.siblings('li').removeClass('open'); element.siblings('li').find('li').removeClass('open'); element.siblings('li').find('ul').slideUp(); } }); // internal redirect pages as container pages jQuery('.smartmenu-content a.forward:not(.click-default), .smartmenu-content a.pct_megamenu:not(.click-default)').click(function (e) { e.preventDefault(); e.stopPropagation(); jQuery(this).siblings('.subitems_trigger').trigger('click'); }); }); /* ============================================================================= * mmenu * ========================================================================== */ jQuery(document).ready(function(){ jQuery('.mmenu_trigger, .mmenu_overlay').click(function() { jQuery('body').toggleClass('mmenu_open'); jQuery('body').toggleClass('no_scroll'); jQuery('.burger').toggleClass('open'); jQuery('.mmenu_overlay').fadeToggle('slow'); }); }); jQuery(document).keyup(function(e) { if (e.keyCode == 27 && jQuery('body').hasClass('mmenu_open')) { jQuery('.burger').removeClass('open'); jQuery('body').removeClass('mmenu_open'); jQuery('body').removeClass('no_scroll'); jQuery('.mmenu_overlay').fadeToggle('slow'); } }); /* ============================================================================= * megamenu * ========================================================================== */ jQuery(document).ready(function(){ jQuery('.mainmenu li.megamenu .level_2').wrap('
'); jQuery('li.megamenu.remove-link a.a-level_2').removeAttr("href"); }); function megamenuWidth() { var elWidth = jQuery(".header .inside").width(); jQuery(".header .mainmenu ul .megamenu-wrapper").css('width', elWidth); }; jQuery(window).on("resize", function(){ megamenuWidth(); }); jQuery(document).ready(function(){ megamenuWidth(); }); /* ============================================================================= * doubleTapToGo scripts/doubletaptogo/ * ========================================================================== */ jQuery(document).ready(function(){ if(jQuery('body').hasClass('android') || jQuery('body').hasClass('win') || jQuery('body').hasClass('ios') || jQuery('body').hasClass('viewport_tablet')){ jQuery('nav.mainmenu li.submenu:not(.level_2 .megamenu)').doubleTapToGo(); jQuery('.smartmenu li.submenu').doubleTapToGo(); jQuery('.top_metanavi li.submenu').doubleTapToGo(); jQuery('.header_metanavi li.submenu').doubleTapToGo(); jQuery('.mod_langswitcher li').doubleTapToGo(); jQuery.each(jQuery('.mod_langswitcher li a'),function(i,elem) { jQuery(elem).click(function(e) { e.preventDefault(); window.location.href = jQuery(this).attr('href'); }); }); } }); /* ============================================================================= * Add no-scroll class to body when lightbox opens * ========================================================================== */ jQuery(document).bind('cbox_open',function() { jQuery('body').addClass('no_scroll'); }); jQuery(document).bind('cbox_closed',function() { jQuery('body').removeClass('no_scroll'); }); /* ============================================================================= * remove class mainmenu in offcanvas menu * ========================================================================== */ jQuery(document).ready(function(){ jQuery('.mm-menu').removeClass('mainmenu'); }); /* ============================================================================= * offcanvas-top * ========================================================================== */ jQuery(document).ready(function(){ jQuery('.offcanvas-trigger').click(function(){ jQuery('#offcanvas-top').toggleClass('offcanvas-top-open'); jQuery('.offcanvas-trigger').toggleClass('offcanvas-top-open'); }); }); /* ============================================================================= * one-page-nav * ========================================================================== */ /** * Add an item counter class to the body on one_page sites */ jQuery(document).ready(function() { if(jQuery('body').hasClass('onepage_page')) { // count articles in #slider jQuery('body').addClass( 'onepage_items_' + jQuery('#slider .inside > .mod_article').length ); } }); /** * Initialize smooth scrolling to one page anchor links */ jQuery(document).ready(function () { if ( !jQuery('body').hasClass('onepage_page') ) { return; } if(jQuery('body').hasClass('is_regular_page')) { jQuery('.smartmenu-content a').addClass('backlink'); jQuery('.onepage_page a').addClass('backlink'); } // remove onepage cookies for body class "to_top" if (jQuery('body').hasClass('to_top')) { localStorage.removeItem('onepage_active'); localStorage.removeItem('onepage_position'); localStorage.removeItem('onepage_animate'); jQuery("html, body").animate({ scrollTop: 0 },0); } var links = jQuery(".mainmenu a:not(.backlink), #stickyheader .onepagenav a:not(.backlink), .smartmenu-content a:not(.backlink)"); var horizontalScroll = jQuery('body').hasClass('horizontal_scrolling'); // not on mobile devices because content is 100% if(horizontalScroll && jQuery('body').hasClass('mobile')) { horizontalScroll = false; } var duration = 300; var timeout = 200; // click event listener links.click(function(event,params) { event.preventDefault(); var hash = this.href.split("#"); if(!hash[1]) { return true; } var anchor = hash[1].toString(); var target = jQuery("#"+anchor); if(target.length < 1) { return false; } // regular click if( params == undefined ) { links.removeClass('active'); } jQuery(this).addClass('active'); // store the current active anchor as cookie for further use localStorage.setItem('onepage_active', anchor); var offsetX = 0; var offsetY = jQuery("#stickyheader").height(); var posX = target.offset().left - offsetX; var posY = target.offset().top - offsetY; var href = jQuery(this).attr('href'); if (params != undefined) { posY = params.posY; posX = params.posX; } jQuery("html, body").animate({ scrollTop: posY, scrollLeft: posX }, { duration : duration, start : function() { localStorage.setItem('onepage_animate',1); }, complete : function() { // on complete: remove the flag setTimeout(function() { localStorage.removeItem('onepage_animate'); }, timeout); // store last position localStorage.setItem('onepage_position', JSON.stringify({ 'x': posX, 'y': posY, 'anchor': anchor, 'href': href }) ); } }); }); // set the last anchor to active on page load and scroll to it if ( localStorage.getItem('onepage_position') != undefined && window.location.hash.toString().length < 1) { var obj = JSON.parse(localStorage.getItem('onepage_position')); if( obj.y <= 0 ) { localStorage.removeItem('onepage_active'); localStorage.removeItem('onepage_position'); localStorage.removeItem('onepage_animate'); return; } jQuery('a[href="' + obj.href + '"]').trigger('click', {posY:obj.y}); } // anchor in url if ( window.location.hash.toString().length > 0 ) { localStorage.setItem('onepage_animate',1); //jQuery("html, body").animate({ scrollTop: 0 },0); setTimeout(function () { var target = jQuery(window.location.hash.toString()); var offsetX = 0; var offsetY = jQuery("#stickyheader").height(); var posX = target.offset().left - offsetX; var posY = target.offset().top - offsetY; jQuery.each(links, function (index, elem) { var hash = elem.href.split("#"); if (!hash[1]) { return; } var anchor = '#' + hash[1].toString(); if (anchor == window.location.hash.toString()) { jQuery(elem).trigger('click', { 'posY': posY }); } }); }, timeout); } }); /** * Set navi active on scroll */ jQuery(document).ready(function () { var links = jQuery(".onepage_page .mainmenu a:not(.backlink), .onepage_page .onepagenav a:not(.backlink), .page_navigation a"); var stickyheader = jQuery(".stickyheader"); var horizontalScroll = jQuery('body').hasClass('horizontal_scrolling'); // not on mobile devices because content is 100% if(horizontalScroll && jQuery('body').hasClass('mobile')) { horizontalScroll = false; } jQuery(window).scroll(function() { // escape when animation is running if(localStorage.getItem('onepage_animate') > 0) { return; } // remove active class from all links links.removeClass('active'); var scrollX = jQuery(window).scrollLeft(); var scrollY = jQuery(window).scrollTop(); var offsetX = 10; var offsetY = stickyheader.height(); jQuery.each(links, function(index, elem) { var hash = elem.href.split("#"); if(!hash[1]) { return; } var anchor = hash[1].toString(); var target = jQuery("#"+anchor); if(target.length < 1) { return; } // vertical scrolling var posY = target.offset().top - offsetY; var sizeY = posY + target.height(); if (posY <= scrollY && sizeY >= scrollY && !horizontalScroll) { jQuery(elem).addClass("active"); } // horizontal scolling var posX = target.offset().left - offsetX; var sizeX = posX + target.width(); if (posX <= scrollX && sizeX >= scrollX && horizontalScroll) { jQuery(elem).addClass("active"); } }); }); }); /* ============================================================================= * imagebox workaround if content height > fix height * ========================================================================== */ function imageboxHeight() { jQuery(".ce_text_imagebox").each(function() { var fixHeight = jQuery(this).height(); var contentHeight = jQuery(this).find(".inside").outerHeight(); if (contentHeight > fixHeight) { jQuery(this).addClass("oversize"); } else { jQuery(this).removeClass("oversize"); } }); }; jQuery(document).ready(function(){ imageboxHeight(); }); jQuery(window).on("resize", function(){ imageboxHeight(); }); /* ============================================================================= * ce_text_image_bar workaround if content height > fix height * ========================================================================== */ function imagebarHeight() { jQuery(".ce_text_image_bar").each(function() { var fixHeight = jQuery(this).height(); var contentHeight = jQuery(this).find(".text-table").outerHeight(); if (contentHeight > fixHeight) { jQuery(this).addClass("oversize"); } else { jQuery(this).removeClass("oversize"); } }); }; jQuery(document).ready(function(){ imagebarHeight(); }); jQuery(window).on("resize", function(){ imagebarHeight(); }); /* ============================================================================= * search top trigger * ========================================================================== */ jQuery(document).ready(function(){ jQuery(".ce_search_label").click(function(){ jQuery(".body_bottom .mod_search").addClass("show-search"); }); jQuery(".body_bottom .close-window").click(function(){ jQuery(".body_bottom .mod_search").removeClass("show-search"); }); }); /* ============================================================================= * scroll to anchors * ========================================================================== */ jQuery(document).ready(function() { jQuery('#main a[href*=\\#], #left a[href*=\\#], #right a[href*=\\#], #slider a[href*=\\#], #footer a[href*=\\#], #bottom a[href*=\\#], .mod_quickmenu a[href*=\\#]').click(function(e) { // return with default behavior if( jQuery(this).hasClass('external-anchor') || jQuery(this).hasClass('not-anchor') ) { return true; } var target = jQuery('#'+jQuery(this).attr("href").split('#')[1]); if(target == undefined || target == null) { return true; } else if(target.length < 1) { return true; } e.preventDefault(); var stickheaderHeight = 0; if(jQuery('#stickyheader')) { stickheaderHeight = jQuery('#stickyheader').height(); } jQuery("html, body").animate({scrollTop: target.offset().top - stickheaderHeight}, 500); return false; }); }); /* ============================================================================= * force page to start on top "to_top" * ========================================================================== */ jQuery(document).ready(function () { if (jQuery('body').hasClass('to_top') ) { document.body.scrollTop = 0; document.documentElement.scrollTop = 0; jQuery('html,body').animate({ scrollTop: 0 }); // force browsers like chrome to reset last remembered scroll position window.onload = function () { setTimeout(function(){ scrollTo(0,-1); },0); } } }); /* ============================================================================= * ce_parallax scripts/parallax/ * ========================================================================== */ jQuery(window).on('Eclipse.viewport',function(e,params) { if( params.device == 'desktop' && typeof jQuery(window).stellar == 'function' ) { jQuery(window).stellar({ horizontalScrolling: false, responsive: true }); } }); /* ============================================================================= * Parallax elements * ========================================================================== */ jQuery(document).ready(function () { var elements = jQuery('.has-parallax'); if (elements.length < 1) { return; } // create a parallax box inside each target element //jQuery.each(elements, function (i,elem) //{ // jQuery(elem).wrapInner(''); //}); const SPEED = 3; const EASING = 50; /** * Applay the parallax effect on an element * @param object * @param integer */ var parallax = function(objElement, intSpeed) { if( intSpeed == undefined || isNaN(intSpeed) ) { intSpeed = SPEED; } var pos = objElement.getBoundingClientRect(); var posY = pos.y - (pos.height); // fallback when getBoudingClientRect is not available //var posY = jQuery(objElement).offset().top - jQuery(window).scrollTop() - jQuery(objElement).height(); var translateY = (posY * (intSpeed / EASING)); jQuery(objElement).css({'transform':'translateY('+translateY+'px)'}); } //-- var SPEEDS = []; // store easings jQuery(window).scroll(function () { jQuery.each(elements, function (i,elem) { parallax(elem,SPEEDS[i]); }); }); jQuery(document).ready(function () { jQuery.each(elements, function (i,elem) { var _class = jQuery(elem).attr('class'); if( _class.indexOf('parallax-speed-') !== -1 ); { var a = _class.split('parallax-speed'); SPEEDS[i] = a[1]; } parallax(elem,SPEEDS[i]); }); }); }); /* ============================================================================= * MegaMenu interactions * ========================================================================== */ // adjust megamenu container position on click jQuery(document).on('MegaMenu.change',function(e,params) { var element = jQuery(params.selector); // regular header var top = jQuery('#top-wrapper').height(); element.removeClass('sticky'); // stickyheader if( jQuery('body').hasClass('fixed-header') ) { top = jQuery('#stickyheader').height(); element.addClass('sticky'); } element.css('top', top); }); // close active click_open menus on click jQuery(document).on('MegaMenu.change',function(e,params) { jQuery('.mainmenu a.click_open.active').removeClass('active'); jQuery('.mainmenu a.click_open').siblings('.active').removeClass('active') }); // hide megamenu on scroll jQuery(document).on('MegaMenu.scroll',function(e,params) { var element = jQuery(params.selector); var items = params.items var toggler = params.toggler; // hide when sticky becomes visible and menu has not been called in sticky yet if( jQuery('body').hasClass('fixed-header') && element.hasClass('active') && !element.hasClass('sticky') ) { items.removeClass('active'); element.removeClass('active'); jQuery(toggler).removeClass('active'); jQuery(toggler).parents().find('a.pct_megamenu.active').not(toggler).removeClass('active'); } // back on top if( !jQuery('body').hasClass('fixed-header') && element.hasClass('active') && element.hasClass('sticky') ) { items.removeClass('active'); element.removeClass('active'); element.removeClass('sticky'); jQuery(toggler).removeClass('active'); jQuery(toggler).parents().find('a.pct_megamenu.active').not(toggler).removeClass('active'); } }); // initialize sliders in MegaMenu jQuery(document).on('MegaMenu.change',function(e,params) { var element = jQuery(params.selector); // @var Swiper jQuery.each( element.find('.swiper-container'), function(i,elem) { if( jQuery(elem)[0].swiper != undefined ) { jQuery(elem)[0].swiper.update(); } }); });