https://www.locandamescoglia.com/wp-content/themes/locandamescoglia/assets/js/functions.js?ver=1.0.0
1/*! jRespond.js v 0.10 | Author: Jeremy Fields [[email protected]], 2013 | License: MIT */ 2!function(a,b,c){"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=c:(a[b]=c,"function"==typeof define&&define.amd&&define(b,[],function(){return c}))}(this,"jRespond",function(a,b,c){"use strict";return function(a){var b=[],d=[],e=a,f="",g="",i=0,j=100,k=500,l=k,m=function(){var a=0;return a="number"!=typeof window.innerWidth?0!==document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth:window.innerWidth},n=function(a){if(a.length===c)o(a);else for(var b=0;b<a.length;b++)o(a[b])},o=function(a){var e=a.breakpoint,h=a.enter||c;b.push(a),d.push(!1),r(e)&&(h!==c&&h.call(null,{entering:f,exiting:g}),d[b.length-1]=!0)},p=function(){for(var a=[],e=[],h=0;h<b.length;h++){var i=b[h].breakpoint,j=b[h].enter||c,k=b[h].exit||c;"*"===i?(j!==c&&a.push(j),k!==c&&e.push(k)):r(i)?(j===c||d[h]||a.push(j),d[h]=!0):(k!==c&&d[h]&&e.push(k),d[h]=!1)}for(var l={entering:f,exiting:g},m=0;m<e.length;m++)e[m].call(null,l);for(var n=0;n<a.length;n++)a[n].call(null,l)},q=function(a){for(var b=!1,c=0;c<e.length;c++)if(a>=e[c].enter&&a<=e[c].exit){b=!0;break}b&&f!==e[c].label?(g=f,f=e[c].label,p()):b||""===f||(f="",p())},r=function(a){if("object"==typeof a){if(a.join().indexOf(f)>=0)return!0}else{if("*"===a)return!0;if("string"==typeof a&&f===a)return!0}},s=function(){var a=m();a!==i?(l=j,q(a)):l=k,i=a,setTimeout(s,l)};return s(),{addFunc:function(a){n(a)},getBreakpoint:function(){return f}}}}(this,this.document)); 3 4var $ = jQuery.noConflict(); 5 6// Scrolled 7$.fn.scrollEnd = function(callback, timeout) { 8 $(this).scroll(function(){ 9 let container = $(this); 10 if (container.data('scrollTimeout')) { 11 clearTimeout(container.data('scrollTimeout')); 12 } 13 container.data('scrollTimeout', setTimeout(callback,timeout)); 14 }); 15}; 16 17(function() { 18 let lastTime = 0; 19 let vendors = ['ms', 'moz', 'webkit', 'o']; 20 for(let x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { 21 window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; 22 window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] 23 || window[vendors[x]+'CancelRequestAnimationFrame']; 24 } 25 26 if (!window.requestAnimationFrame) 27 window.requestAnimationFrame = function(callback, element) { 28 let currTime = new Date().getTime(); 29 let timeToCall = Math.max(0, 16 - (currTime - lastTime)); 30 let id = window.setTimeout(function() { callback(currTime + timeToCall); }, 31 timeToCall); 32 lastTime = currTime + timeToCall; 33 return id; 34 }; 35 36 if (!window.cancelAnimationFrame) 37 window.cancelAnimationFrame = function(id) { 38 clearTimeout(id); 39 }; 40}()); 41 42 43 44function debounce(func, wait, immediate) { 45 let timeout, args, context, timestamp, result; 46 return function() { 47 context = this; 48 args = arguments; 49 timestamp = new Date(); 50 let later = function() { 51 let last = (new Date()) - timestamp; 52 if (last < wait) { 53 timeout = setTimeout(later, wait - last); 54 } else { 55 timeout = null; 56 if (!immediate) result = func.apply(context, args); 57 } 58 }; 59 let callNow = immediate && !timeout; 60 if (!timeout) { 61 timeout = setTimeout(later, wait); 62 } 63 if (callNow) result = func.apply(context, args); 64 return result; 65 }; 66} 67 68 69function onScrollSliderParallax() { 70 SEMICOLON.slider.sliderParallax(); 71 SEMICOLON.slider.sliderElementsFade(); 72} 73 74 75var SEMICOLON = SEMICOLON || {}; 76window.scwEvents = window.scwEvents || {}; 77 78(function($){ 79 80 // USE STRICT 81 "use strict"; 82 83 SEMICOLON.initialize = { 84 85 init: function(){ 86 87 SEMICOLON.initialize.defaults(); 88 SEMICOLON.initialize.pageTransition(); 89 SEMICOLON.initialize.goToTop(); 90 SEMICOLON.initialize.lazyLoad(); 91 SEMICOLON.initialize.lightbox(); 92 SEMICOLON.initialize.resizeVideos(); 93 SEMICOLON.initialize.dataResponsiveClasses(); 94 SEMICOLON.initialize.dataResponsiveHeights(); 95 SEMICOLON.initialize.stickFooterOnSmall(); 96 97 }, 98 99 execFunc: function( functionName, context ) { 100 let args = Array.prototype.slice.call( arguments, 2 ), 101 namespaces = functionName.split("."), 102 func = namespaces.pop(); 103 104 for( let i = 0; i < namespaces.length; i++ ) { 105 context = context[namespaces[i]]; 106 } 107 108 if( typeof context[func] !== 'undefined' ) { 109 return context[func].apply( context, args ); 110 } else { 111 console.log( functionName + ' Function does not exist' ); 112 } 113 }, 114 115 execPlugin: function( element, settings, available ) { 116 let pluginActive = false, 117 pluginLinkingInterval; 118 119 if( available ) { 120 121 if( settings.trigger && !scwEvents[settings.trigger] ) { 122 $window.trigger( settings.trigger ); 123 scwEvents[settings.trigger] = true; 124 } 125 126 if( settings.execfn ) { 127 SEMICOLON.initialize.execFunc( settings.execfn, window, element ); 128 } 129 130 if( settings.class ) { 131 $body.addClass( settings.class ); 132 } 133 134 } else { 135 if( settings.trigger && !scwEvents[settings.trigger] ) { 136 pluginLinkingInterval = setInterval( function plugFn(){ 137 let pluginFnExec = settings.pluginfn();
138 if( pluginFnExec ) { 139 $window.trigger( settings.trigger ); 140 scwEvents[settings.trigger] = true; 141 clearInterval( pluginLinkingInterval ); 142 } 143 return plugFn; 144 }(), 1000); 145 } else { 146 pluginActive = true; 147 } 148 149 if( settings.execfn ) { 150 if( settings.trigger && !pluginActive ) { 151 $window.on( settings.trigger, function(){ 152 SEMICOLON.initialize.execFunc( settings.execfn, window, element ); 153 }); 154 } else { 155 SEMICOLON.initialize.execFunc( settings.execfn, window, element ); 156 } 157 } 158 159 if( settings.class ) { 160 $body.addClass( settings.class ); 161 } 162 } 163 }, 164 165 jsLinking: function( element, settings ) { 166 if( element.length < 1 ){ 167 return false; 168 } 169 170 if( settings.hiddendisable && ( element.filter(':hidden').length == element.length ) ) { 171 return false; 172 } 173 174 let pluginFnExec = settings.pluginfn(), 175 jsPath = 'js/', file, 176 disableAJAX = false; 177 178 if( typeof scwJsPath !== 'undefined' ) { 179 jsPath = scwJsPath + '/'; 180 } 181 182 if( typeof scwDisableJsAJAX !== 'undefined' && scwDisableJsAJAX === true ) { 183 disableAJAX = true; 184 } 185 186 if( /^(f|ht)tps?:\/\//i.test( window.decodeURIComponent( settings.file ) ) ) { 187 file = settings.file; 188 } else { 189 file = jsPath + settings.file; 190 } 191 192 if( pluginFnExec ) { 193 SEMICOLON.initialize.execPlugin( element, settings, true ); 194 } else { 195 if( !disableAJAX ) { 196 $.ajax({
197 url: file, 198 dataType: "script", 199 cache: true, 200 crossDomain: true, 201 timeout: 5000, 202 }).done(function() { 203 SEMICOLON.initialize.execPlugin( element, settings, false ); 204 }).fail(function() { 205 console.log( settings.error ); 206 }); 207 } else { 208 console.log( settings.error ); 209 } 210 } 211 }, 212 213 functions: function( settings ){ 214 let element, parent, item; 215 216 if( typeof settings.element === 'object' && settings.element !== null ) { 217 if( settings.element.parent !== 'undefined' ) { 218 parent = settings.element.parent; 219 } 220 if( settings.element.el !== 'undefined' ) { 221 settings.element = settings.element.el; 222 } 223 } 224 225 if( settings.element ) { 226 item = settings.element; 227 } else { 228 item = settings.default; 229 } 230 231 if( typeof parent === 'object' ) { 232 element = parent.find( item ); 233 } else { 234 element = $( item ); 235 } 236 237 this.jsLinking( element, settings ); 238 }, 239 240 defaults: function(){ 241 let easingJs = { 242 default: 'body', 243 file: 'plugins.easing.js', 244 error: 'plugins.easing.js: Plugin could not be loaded', 245 pluginfn: () => typeof jQuery.easing["easeOutQuad"] !== "undefined", 246 trigger: 'pluginEasingReady', 247 class: 'has-plugin-easing' 248 }; 249 250 let bootstrapJs = { 251 default: 'body', 252 file: 'plugins.bootstrap.js', 253 error: 'plugins.bootstrap.js: Plugin could not be loaded', 254 pluginfn: () => typeof bootstrap !== "undefined", 255 trigger: 'pluginBootstrapReady', 256 class: 'has-plugin-bootstrap' 257 }; 258 259 let jRes = jRespond([ 260 { 261 label: 'smallest', 262 enter: 0, 263 exit: 575 264 },{ 265 label: 'handheld', 266 enter: 576, 267 exit: 767 268 },{ 269 label: 'tablet', 270 enter: 768, 271 exit: 991 272 },{ 273 label: 'laptop', 274 enter: 992, 275 exit: 1199 276 },{ 277 label: 'desktop', 278 enter: 1200, 279 exit: 10000 280 } 281 ]); 282 283 jRes.addFunc([ 284 { 285 breakpoint: 'desktop', 286 enter: function() { $body.addClass('device-xl'); }, 287 exit: function() { $body.removeClass('device-xl'); } 288 },{ 289 breakpoint: 'laptop', 290 enter: function() { $body.addClass('device-lg'); }, 291 exit: function() { $body.removeClass('device-lg'); } 292 },{ 293 breakpoint: 'tablet', 294 enter: function() { $body.addClass('device-md'); }, 295 exit: function() { $body.removeClass('device-md'); } 296 },{ 297 breakpoint: 'handheld', 298 enter: function() { $body.addClass('device-sm'); }, 299 exit: function() { $body.removeClass('device-sm'); } 300 },{ 301 breakpoint: 'smallest', 302 enter: function() { $body.addClass('device-xs'); }, 303 exit: function() { $body.removeClass('device-xs'); } 304 } 305 ]); 306 307 SEMICOLON.initialize.functions( easingJs ); 308 SEMICOLON.initialize.functions( bootstrapJs ); 309 }, 310 311 goToTop: function(){ 312 let elementScrollSpeed = $goToTopEl.attr('data-speed'), 313 elementScrollEasing = $goToTopEl.attr('data-easing'); 314 315 if( !elementScrollSpeed ) { elementScrollSpeed = 700; } 316 if( !elementScrollEasing ) { elementScrollEasing = 'easeOutQuad'; } 317 318 $goToTopEl.off( 'click' ).on( 'click', function() { 319 $('body,html').stop(true).animate({ 320 'scrollTop': 0 321 }, Number( elementScrollSpeed ), elementScrollEasing ); 322 return false; 323 }); 324 }, 325 326 goToTopScroll: function(){ 327 let elementMobile = $goToTopEl.attr('data-mobile'), 328 elementOffset = $goToTopEl.attr('data-offset'); 329 330 if( !elementOffset ) { elementOffset = 450; } 331 332 if( elementMobile != 'true' && ( $body.hasClass('device-sm') || $body.hasClass('device-xs') ) ) { return true; } 333 334 if( $window.scrollTop() > Number(elementOffset) ) { 335 $goToTopEl.fadeIn(); 336 $body.addClass('gototop-active'); 337 } else { 338 $goToTopEl.fadeOut(); 339 $body.removeClass('gototop-active'); 340 } 341 }, 342 343 lightbox: function( element ){ 344 let settings = { 345 element: element, 346 default: '[data-lightbox]', 347 file: 'plugins.lightbox.js', 348 error: 'plugins.lightbox.js: Plugin could not be loaded', 349 execfn: 'SEMICOLON_lightboxInit', 350 pluginfn: () => $().magnificPopup, 351 trigger: 'pluginLightboxReady', 352 class: 'has-plugin-lightbox' 353 }; 354 355 SEMICOLON.initialize.functions( settings ); 356 }, 357 358 modal: function( element ){ 359 let settings = { 360 element: element, 361 default: '.modal-on-load', 362 file: 'plugins.lightbox.js', 363 error: 'plugins.lightbox.js: Plugin could not be loaded', 364 execfn: 'SEMICOLON_modalInit', 365 pluginfn: () => $().magnificPopup, 366 trigger: 'pluginLightboxReady', 367 class: 'has-plugin-lightbox' 368 }; 369 370 SEMICOLON.initialize.functions( settings ); 371 }, 372 373 resizeVideos: function(){ 374 let settings = { 375 default: 'iframe[src*="youtube"],iframe[src*="vimeo"],iframe[src*="dailymotion"],iframe[src*="maps.google.com"],iframe[src*="google.com/maps"]', 376 file: 'plugins.fitvids.js', 377 error: 'plugins.fitvids.js: Plugin could not be loaded', 378 execfn: 'SEMICOLON_resizeVideosInit', 379 pluginfn: () => $().fitVids, 380 trigger: 'pluginfitVidsReady', 381 class: 'has-plugin-fitvids' 382 }; 383 384 SEMICOLON.initialize.functions( settings ); 385 }, 386 387 pageTransition: function(){ 388 let settings = { 389 default: '.page-transition', 390 file: 'plugins.pagetransition.js', 391 error: 'plugins.pagetransition.js: Plugin could not be loaded', 392 execfn: 'SEMICOLON_pageTransitionInit', 393 pluginfn: () => $().animsition, 394 trigger: 'pluginPageTransitionReady', 395 class: 'has-plugin-animsition' 396 }; 397 398 SEMICOLON.initialize.functions( settings ); 399 }, 400 401 lazyLoad: function( element ) { 402 let settings = { 403 element: element, 404 default: '.lazy', 405 file: 'plugins.lazyload.js', 406 error: 'plugins.lazyload.js: Plugin could not be loaded', 407 execfn: 'SEMICOLON_lazyLoadInit', 408 pluginfn: () => typeof LazyLoad !== "undefined", 409 trigger: 'pluginlazyLoadReady', 410 class: 'has-plugin-lazyload' 411 }; 412 413 SEMICOLON.initialize.functions( settings ); 414 }, 415 416 topScrollOffset: function() { 417 let topOffsetScroll = 0; 418 419 if( ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) && !SEMICOLON.isMobile.any() ) { 420 //if( $(window).width()>991 ) { 421 if( $header.hasClass('sticky-header') ) { 422 if( $pagemenu.hasClass('dots-menu') ) { topOffsetScroll = 100; } else { topOffsetScroll = 144; } 423 } else { 424 if( $pagemenu.hasClass('dots-menu') ) { topOffsetScroll = 140; } else { topOffsetScroll = 184; } 425 } 426 427 if( !$pagemenu.length ) { 428 if( $header.hasClass('sticky-header') ) { topOffsetScroll = 100; } else { topOffsetScroll = 128; } 429 } 430 } else { 431 topOffsetScroll = 40; 432 } 433 434 //console.log(topOffsetScroll); 435 436 return topOffsetScroll; 437 }, 438 439 dataResponsiveClasses: function(){ 440 let settings = { 441 default: '[data-class-xl],[data-class-lg],[data-class-md],[data-class-sm],[data-class-xs]',
442 file: 'plugins.dataclasses.js', 443 error: 'plugins.dataclasses.js: Plugin could not be loaded', 444 execfn: 'SEMICOLON_dataClassesInit', 445 pluginfn: () => typeof scwDataClassesPlugin !== "undefined", 446 trigger: 'pluginDataClassesReady', 447 class: 'has-plugin-dataclasses' 448 }; 449 450 SEMICOLON.initialize.functions( settings ); 451 }, 452 453 dataResponsiveHeights: function(){ 454 let settings = { 455 default: '[data-height-xl],[data-height-lg],[data-height-md],[data-height-sm],[data-height-xs]', 456 file: 'plugins.dataheights.js', 457 error: 'plugins.dataheights.js: Plugin could not be loaded', 458 execfn: 'SEMICOLON_dataHeightsInit', 459 pluginfn: () => typeof scwDataHeightsPlugin !== "undefined", 460 trigger: 'pluginDataHeightsReady', 461 class: 'has-plugin-dataheights' 462 }; 463 464 SEMICOLON.initialize.functions( settings ); 465 }, 466 467 stickFooterOnSmall: function(){ 468 $footer.css({ 'margin-top': '' }); 469 let windowH = $window.height(), 470 wrapperH = $wrapper.height(); 471 472 if( !$body.hasClass('sticky-footer') && $footer.length > 0 && $wrapper.has('#footer') ) { 473 if( windowH > wrapperH ) { 474 $footer.css({ 'margin-top': ( windowH - wrapperH ) }); 475 } 476 } 477 } 478 479 }; 480 481 SEMICOLON.header = { 482 483 init: function(){ 484 485 SEMICOLON.header.initialize(); 486 SEMICOLON.header.menufunctions(); 487 SEMICOLON.header.fullWidthMenu(); 488 SEMICOLON.header.stickyMenu(); 489 SEMICOLON.header.stickyPageMenu(); 490 SEMICOLON.header.sideHeader(); 491 SEMICOLON.header.sidePanel(); 492 SEMICOLON.header.onePageScroll(); 493 SEMICOLON.header.logo(); 494 SEMICOLON.header.topsearch(); 495 SEMICOLON.header.topcart(); 496 SEMICOLON.header.miscFunctions(); 497 498 }, 499 500 initialize: function() { 501 502 initHeaderHeight = $headerWrap.outerHeight(); 503 504 if( $headerWrap.length > 0 ) { 505 if( $('.header-wrap-clone').length < 1 ) { 506 $headerWrap.after('<div class="header-wrap-clone"></div>'); 507 } 508 $headerWrapClone = $('.header-wrap-clone'); 509 } 510 511 if( $pagemenu.length > 0 ) { 512 $pagemenu.find('#page-menu-wrap').after('<div class="page-menu-wrap-clone"></div>'); 513 $pageMenuClone = $('.page-menu-wrap-clone'); 514 } 515 516 let menuItemSubs = $( '.menu-item:has(.sub-menu-container)' ); 517 518 menuItemSubs.addClass('sub-menu'); // , .primary-menu.with-arrows > .menu-container > .menu-item:has(.sub-menu-container) > .menu-link > div:not(:has(.icon-angle-down)) 519 $( '.top-links-item:has(.top-links-sub-menu,.top-links-section) > a:not(:has(.icon-angle-down)), .menu-item:not(.mega-menu-title):has(.sub-menu-container) > .menu-link > div:not(:has(.icon-angle-down)), .page-menu-item:has(.page-menu-sub-menu) > a > div:not(:has(.icon-angle-down))' ).append( '<i class="icon-angle-down"></i>' ); 520 $( '.menu-item:not(.mega-menu-title):has(.sub-menu-container):not(:has(.sub-menu-trigger))' ).append( '<button class="sub-menu-trigger icon-chevron-right"></button>' ); 521 522 SEMICOLON.header.menuInvert(); 523 524 }, 525 526 menuInvert: function( subMenuEl ) { 527 let submenus = subMenuEl || $( '.mega-menu-content, .sub-menu-container, .top-links-section' ); 528 529 submenus.children().css({ 'display': 'block' }); 530 submenus.css({ 'display': 'block' }); 531 submenus.each( function( index, element ){ 532 let viewportOffset = element.getBoundingClientRect(); 533 534 if( $body.hasClass('rtl') ) { 535 if( viewportOffset.left < 0 ) { 536 element.classList.add('menu-pos-invert'); 537 } 538 } 539 540 if((viewportOffset.left + viewportOffset.width) - windowWidth > 0) { 541 element.classList.add('menu-pos-invert'); 542 } 543 }); 544 submenus.children().css({ 'display': '' }); 545 submenus.css({ 'display': '' }); 546 }, 547 548 includeOffset: function(){ 549 if( $headerInc.length < 1 ) { 550 return true; 551 } 552 553 let headerInc = $header.outerHeight(); 554 if( $header.hasClass('floating-header') || $headerInc.hasClass('include-topbar') ) { 555 headerInc = headerInc + $header.offset().top; 556 } 557 $headerInc.css({ 'margin-top': -headerInc }); 558 SEMICOLON.slider.sliderParallax(); 559 }, 560 561 menufunctions: function(){ 562
563 let menuItemSubs = $( '.menu-item:has(.sub-menu-container)' ), 564 menuItemSubsLinks = menuItemSubs.children( '.menu-link' ), 565 submenusT = '.mega-menu-content, .sub-menu-container', 566 submenus = $( submenusT ), 567 menuItemT = '.menu-item', 568 subMenuT = '.sub-menu', 569 menuSpeed = primaryMenu.attr( 'data-trigger-speed' ) || 200, 570 subMenuTriggerT = '.sub-menu-trigger', 571 menuItemTrigger; 572 573 menuSpeed = Number( menuSpeed ); 574 575 menuItemTrigger = menuItemSubs.children( subMenuTriggerT ); 576 577 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) { 578 setTimeout( function(){ 579 if( $headerWrapClone.length > 0 ) { 580 $headerWrapClone.css({ 'height': initHeaderHeight }); 581 } 582 SEMICOLON.header.includeOffset(); 583 }, 1000); 584 primaryMenu.find( submenus ).css({ 'display': '' }); 585 } else { 586 $headerInc.css({ 'margin-top': '' }); 587 } 588 589 if( ( $body.hasClass('overlay-menu') && primaryMenu.hasClass('on-click') ) && ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) ) { 590 menuItemSubsLinks.off( 'click' ).on( 'click', function(e){ 591 let triggerEl = $(this); 592 triggerEl.parents( subMenuT ).siblings().find( submenus ).stop( true, true ).slideUp( menuSpeed ); 593 triggerEl.parent( menuItemT ).children( submenusT ).stop( true, true ).slideToggle( menuSpeed ); 594 e.preventDefault(); 595 }); 596 } else if( ( $body.hasClass('side-header') && primaryMenu.hasClass('on-click') ) || ( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) ) { 597 menuItemTrigger.removeClass('icon-rotate-90'); 598 $( menuItemT ).find( submenus ).filter(':not(:animated)').stop( true, true ).slideUp( menuSpeed , function(){ 599 $body.toggleClass("primary-menu-open", false); 600 }); 601 602 menuItemTrigger = menuItemTrigger.add( menuItemSubsLinks.filter('[href^="#"]') ); 603 604 menuItemTrigger.off( 'click' ).on( 'click', function(e){ 605 let triggerEl = $(this); 606 triggerEl.parents( subMenuT ).siblings().find( subMenuTriggerT ).removeClass('icon-rotate-90'); 607 triggerEl.parents( subMenuT ).siblings().find( submenus ).filter(':not(:animated)').stop( true, true ).slideUp( menuSpeed ); 608 triggerEl.parent( menuItemT ).children( submenusT ).filter(':not(:animated)').stop( true, true ).slideToggle( menuSpeed ); 609 610 let subMenuTriggerEl = triggerEl.parent( menuItemT ).children( subMenuTriggerT ); 611 612 if( !subMenuTriggerEl.hasClass( 'icon-rotate-90' ) ) { 613 subMenuTriggerEl.addClass('icon-rotate-90'); 614 } else { 615 subMenuTriggerEl.removeClass('icon-rotate-90'); 616 } 617 618 e.preventDefault(); 619 }); 620 } else if( ( $body.hasClass('overlay-menu') || $body.hasClass('side-header') ) && ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) ) { 621 primaryMenu.find( submenus ).stop( true, true ).slideUp( menuSpeed ); 622 $( menuItemT ).hover( function(e){ 623 $(this).children( submenusT ).stop( true, true ).slideDown( menuSpeed ); 624 }, function(){ 625 $(this).children( submenusT ).stop( true, true ).slideUp( menuSpeed ); 626 }); 627 } else { 628 if( primaryMenu.hasClass('on-click') ) { 629 menuItemSubsLinks.off( 'click' ).on( 'click', function(e){ 630 let triggerEl = $(this); 631 triggerEl.parents( subMenuT ).siblings().find( submenus ).removeClass('d-block'); 632 triggerEl.parent( menuItemT ).children( submenusT ).toggleClass('d-block'); 633 triggerEl.parent( menuItemT ).siblings().removeClass('current'); 634 triggerEl.parent( menuItemT ).toggleClass('current'); 635 e.preventDefault(); 636 }); 637 } 638 } 639 640 if( $('.top-links').hasClass('on-click') || ( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) ) { 641 $('.top-links-item:has(.top-links-sub-menu,.top-links-section) > a').on( 'click', function(e){ 642 $(this).parents('li').siblings().find('.top-links-sub-menu,.top-links-section').removeClass('d-block'); 643 $(this).parent('li').children('.top-links-sub-menu,.top-links-section').toggleClass('d-block'); 644 e.preventDefault(); 645 }); 646 } 647 648 SEMICOLON.header.menuInvert( $('.top-links-section') ); 649 650 $('#primary-menu-trigger').off( 'click' ).on( 'click', function() { 651 if( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) { 652 if( primaryMenu.find('.mobile-primary-menu').length > 0 ) { 653 $( '.primary-menu:not(.mobile-menu-off-canvas) .mobile-primary-menu' ).stop( true, true ).slideToggle( menuSpeed ); 654 $( '.primary-menu.mobile-menu-off-canvas .mobile-primary-menu' ).toggleClass('d-block'); 655 } else { 656 $( '.primary-menu:not(.mobile-menu-off-canvas) .menu-container' ).stop( true, true ).slideToggle( menuSpeed ); 657 $( '.primary-menu.mobile-menu-off-canvas .menu-container' ).toggleClass('d-block'); 658 } 659 } 660 $body.toggleClass("primary-menu-open"); 661 return false; 662 }); 663 664 $( '.menu-container:not(.mobile-primary-menu)' ).css({ 'display': '' }); 665 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) { 666 primaryMenu.find('.mobile-primary-menu').removeClass('d-block'); 667 } 668 669 }, 670 671 fullWidthMenu: function(){ 672 673 if( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) { 674 $('.mega-menu-content, .top-search-form').css({ 'width': '' }); 675 return true; 676 } 677 678 let headerWidth = $('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').parents('.header-row').width(); 679 680 if( $header.find('.container-fullwidth').length > 0 ) { 681 $('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').css({ 'width': headerWidth }); 682 } 683 684 if( $body.hasClass('stretched') ) { 685 if( $header.hasClass('floating-header') ) { 686 $('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content, .top-search-form').css({ 'width': headerWidth + 80 }); 687 } else { 688 $('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content, .top-search-form').css({ 'width': headerWidth }); 689 } 690 } else { 691 if( $header.hasClass('full-header') ) { 692 $('.mega-menu:not(.mega-menu-full):not(.mega-menu-small) .mega-menu-content').css({ 'width': headerWidth - 80 }); 693 } 694 } 695 696 if( $header.find('.header-row').length > 1 ) { 697 let megaMenuContent = $('.menu-container > .mega-menu:not(.mega-menu-small) .mega-menu-content').eq(0), 698 offset = $headerWrap.outerHeight() - megaMenuContent.parents('.header-row').outerHeight(), 699 css = '.menu-container > .mega-menu:not(.mega-menu-small) .mega-menu-content { top: calc( 100% - '+ offset +'px ); }', 700 head = document.head || document.getElementsByTagName('head')[0], 701 style = document.createElement('style'); 702 703 head.appendChild(style); 704 705 style.type = 'text/css'; 706 style.appendChild(document.createTextNode(css)); 707 } 708 }, 709 710 stickyMenu: function( headerOffset ){ 711 712 windowScrT = $window.scrollTop(); 713 714 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) { 715 if( windowScrT > headerOffset ) { 716 717 if( !$body.hasClass('side-header') ) { 718 $header.filter(':not(.no-sticky)').addClass('sticky-header'); 719 // if( !$headerWrap.hasClass('force-not-dark') ) { $headerWrap.removeClass('not-dark'); } 720 SEMICOLON.header.stickyMenuClass(); 721 722 if( stickyShrink == 'true' && !$header.hasClass('no-sticky') ) { 723 if( ( windowScrT - headerOffset ) > Number( stickyShrinkOffset ) ) { 724 $header.addClass('sticky-header-shrink'); 725 if( headerSizeCustom ){ 726 logo.find('img').css({ 'height': Number( stickyLogoH ) }); 727 SEMICOLON.header.menuItemsSpacing( stickyMenuP ); 728 } 729 } else { 730 $header.removeClass('sticky-header-shrink'); 731 if( headerSizeCustom ){ 732 logo.find('img').css({ 'height': Number( defLogoH ) }); 733 SEMICOLON.header.menuItemsSpacing( defMenuP ); 734 } 735 } 736 } 737 } 738 739 } else { 740 SEMICOLON.header.removeStickyness(); 741 if( headerSizeCustom ){ 742 logo.find('img').css({ 'height': Number( defLogoH ) }); 743 SEMICOLON.header.menuItemsSpacing( defMenuP ); 744 } 745 } 746 } 747 748 if( $body.hasClass('device-xs') || $body.hasClass('device-sm') || $body.hasClass('device-md') ) { 749 if( mobileSticky == 'true' ) { 750 if( windowScrT > headerOffset ) { 751 $header.filter(':not(.no-sticky)').addClass('sticky-header'); 752 SEMICOLON.header.stickyMenuClass(); 753 } else { 754 SEMICOLON.header.removeStickyness(); 755 SEMICOLON.header.responsiveMenuClass(); 756 } 757 } else { 758 SEMICOLON.header.removeStickyness(); 759 } 760 if( headerSizeCustom ){ 761 logo.find('img').css({ 'height': Number( mobileLogoH ) }); 762 SEMICOLON.header.menuItemsSpacing( '' ); 763 } 764 } 765 }, 766 767 menuItemsSpacing: function( spacing ) { 768 769 let item = primaryMenuMainItems; 770 771 if( !$body.hasClass('side-header') && !$body.hasClass('overlay-menu') ) { 772 if( primaryMenu.hasClass('menu-spacing-margin') ) { 773 if( spacing == '' ) { 774 item.css({ 'margin-top': '', 'margin-bottom': '' }); 775 } else { 776 item.css({ 'margin-top': Number( spacing ), 'margin-bottom': Number( spacing ) }); 777 } 778 } else { 779 if( spacing == '' ) { 780 item.css({ 'padding-top': '', 'padding-bottom': '' }); 781 } else { 782 item.css({ 'padding-top': Number( spacing ), 'padding-bottom': Number( spacing ) }); 783 } 784 } 785 } 786 787 }, 788 789 stickyPageMenu: function( pageMenuOffset ){ 790 if( $window.scrollTop() > pageMenuOffset ) { 791 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) { 792 $pagemenu.filter(':not(.dots-menu,.no-sticky)').addClass('sticky-page-menu'); 793 let headerHeight = $headerWrap.outerHeight(); 794 if( $header.length > 0 && !$header.hasClass('no-sticky') ) { 795 $pagemenu.filter('.sticky-page-menu:not(.dots-menu,.no-sticky)').find( $pageMenuWrap ).css({ 'top': headerHeight +'px' }); 796 } 797 } else if( $body.hasClass('device-sm') || $body.hasClass('device-xs') || $body.hasClass('device-md') ) { 798 if( $pagemenu.attr('data-mobile-sticky') == 'true' ) { 799 $pagemenu.filter(':not(.dots-menu,.no-sticky)').addClass('sticky-page-menu'); 800 } 801 } 802 } else { 803 $pagemenu.removeClass('sticky-page-menu'); 804 $pagemenu.find( $pageMenuWrap ).css({ 'top': '' }); 805 } 806 }, 807 808 removeStickyness: function(){ 809 if( $header.hasClass('sticky-header') ){ 810 $header.removeClass('sticky-header'); 811 $header.removeClass().addClass(oldHeaderClasses); 812 $headerWrap.removeClass().addClass(oldHeaderWrapClasses); 813 if( !$headerWrap.hasClass('force-not-dark') ) { $headerWrap.removeClass('not-dark'); } 814 SEMICOLON.slider.swiperSliderMenu(); 815 SEMICOLON.slider.revolutionSliderMenu(); 816 } 817 if( ( $body.hasClass('device-sm') || $body.hasClass('device-xs') || $body.hasClass('device-md') ) && ( typeof responsiveMenuClasses === 'undefined' ) ) { 818 $header.removeClass().addClass(oldHeaderClasses); 819 $headerWrap.removeClass().addClass(oldHeaderWrapClasses); 820 if( !$headerWrap.hasClass('force-not-dark') ) { $headerWrap.removeClass('not-dark'); } 821 } 822 }, 823 824 sideHeader: function(){ 825 $("#header-trigger").off( 'click' ).on( 'click', function(){ 826 $('body.open-header').toggleClass("side-header-open"); 827 return false; 828 }); 829 }, 830 831 sidePanel: function(){
832 $(".side-panel-trigger").off( 'click' ).on( 'click', function(){ 833 $body.toggleClass("side-panel-open"); 834 if( $body.hasClass('device-touch') && $body.hasClass('side-push-panel') ) { 835 $body.toggleClass("ohidden"); 836 } 837 return false; 838 }); 839 }, 840 841 onePageScroll: function( element ){ 842 let settings = { 843 element: element, 844 default: '.one-page-menu', 845 file: 'plugins.onepage.js', 846 error: 'plugins.onepage.js: Plugin could not be loaded', 847 execfn: 'SEMICOLON_onePageModule', 848 pluginfn: () => typeof scwOnePageModulePlugin !== "undefined", 849 trigger: 'pluginOnePageModuleReady', 850 class: 'has-plugin-onepagemodule' 851 }; 852 853 SEMICOLON.initialize.functions( settings ); 854 }, 855 856 logo: function(){ 857 let sLogo = defaultLogo.find('img'), 858 rLogo = retinaLogo.find('img'); 859 if( ( $header.hasClass('dark') || $body.hasClass('dark') ) && !$headerWrap.hasClass('not-dark') ) { 860 if( defaultDarkLogo && ( sLogo.attr('src') != defaultDarkLogo ) ){ 861 sLogo.attr('src', defaultDarkLogo); 862 } 863 864 if( retinaDarkLogo && ( rLogo.attr('src') != retinaDarkLogo ) ){ 865 rLogo.attr('src', retinaDarkLogo); 866 } 867 } else { 868 if( defaultLogoImg && ( sLogo.attr('src') != defaultLogoImg ) ){ 869 sLogo.attr('src', defaultLogoImg); 870 } 871 872 if( retinaLogoImg && ( rLogo.attr('src') != retinaLogoImg ) ){ 873 rLogo.attr('src', retinaLogoImg); 874 } 875 } 876 877 if( $header.hasClass('sticky-header') ) { 878 if( defaultStickyLogo && ( sLogo.attr('src') != defaultStickyLogo ) ){ 879 sLogo.attr('src', defaultStickyLogo); 880 } 881 882 if( retinaStickyLogo && ( rLogo.attr('src') != retinaStickyLogo ) ){ 883 rLogo.attr('src', retinaStickyLogo); 884 } 885 } 886 887 if( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) { 888 if( defaultMobileLogo && ( sLogo.attr('src') != defaultMobileLogo ) ){ 889 sLogo.attr('src', defaultMobileLogo); 890 } 891 892 if( retinaMobileLogo && ( rLogo.attr('src') != retinaMobileLogo ) ){ 893 rLogo.attr('src', retinaMobileLogo); 894 } 895 } 896 }, 897 898 stickyMenuClass: function(){ 899 let newClassesArray = ''; 900 901 if( stickyMenuClasses ) { 902 newClassesArray = stickyMenuClasses.split(/ +/); 903 } 904 905 let noOfNewClasses = newClassesArray.length; 906 907 if( noOfNewClasses > 0 ) { 908 let i = 0; 909 for( i=0; i<noOfNewClasses; i++ ) { 910 if( newClassesArray[i] == 'not-dark' ) { 911 $header.removeClass('dark'); 912 $headerWrap.filter(':not(.not-dark)').addClass('not-dark'); 913 } else if( newClassesArray[i] == 'dark' ) { 914 $headerWrap.removeClass('not-dark force-not-dark'); 915 if( !$header.hasClass( newClassesArray[i] ) ) { 916 $header.addClass( newClassesArray[i] ); 917 } 918 } else if( !$header.hasClass( newClassesArray[i] ) ) { 919 $header.addClass( newClassesArray[i] ); 920 } 921 } 922 } 923 }, 924 925 responsiveMenuClass: function(){ 926 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ){ 927 return true; 928 } 929 930 let newClassesArray = ''; 931 932 if( responsiveMenuClasses ) { 933 newClassesArray = responsiveMenuClasses.split(/ +/); 934 } 935 936 let noOfNewClasses = newClassesArray.length; 937 938 if( noOfNewClasses > 0 ) { 939 let i = 0; 940 for( i=0; i<noOfNewClasses; i++ ) { 941 if( newClassesArray[i] == 'not-dark' ) { 942 $header.removeClass('dark'); 943 $headerWrap.addClass('not-dark'); 944 } else if( newClassesArray[i] == 'dark' ) { 945 $headerWrap.removeClass('not-dark force-not-dark'); 946 if( !$header.hasClass( newClassesArray[i] ) ) { 947 $header.addClass( newClassesArray[i] ); 948 } 949 } else if( !$header.hasClass( newClassesArray[i] ) ) { 950 $header.addClass( newClassesArray[i] ); 951 } 952 } 953 } 954 955 SEMICOLON.header.logo(); 956 }, 957 958 topsearch: function(){ 959 $topSearch.parents('.header-row').addClass( 'top-search-parent' ); 960 let topSearchParent = $header.find('.top-search-parent'); 961 962 $("#top-search-trigger").off( 'click' ).on( 'click', function(e){ 963 clearTimeout( topSearchTimeOut ); 964 $body.toggleClass('top-search-open'); 965 $topCart.toggleClass('top-cart-open', false); 966 if( $body.hasClass('device-md') || $body.hasClass('device-sm') || $body.hasClass('device-xs') ) { 967 primaryMenu.filter( ':not(.mobile-menu-off-canvas)' ).find('.menu-container').slideUp(200); 968 primaryMenu.filter( '.mobile-menu-off-canvas' ).find('.menu-container').toggleClass('d-block', false); 969 } 970 if( $body.hasClass('top-search-open') ) { 971 topSearchParent.toggleClass('position-relative', true); 972 } else { 973 topSearchTimeOut = setTimeout( function(){ 974 topSearchParent.toggleClass('position-relative', false); 975 }, 750); 976 } 977 $body.toggleClass("primary-menu-open", false); 978 $pagemenu.toggleClass('page-menu-open', false); 979 if ($body.hasClass('top-search-open')){ 980 $topSearch.find('input').focus(); 981 } 982 e.stopPropagation(); 983 e.preventDefault(); 984 }); 985 }, 986 987 topcart: function(){ 988 if( $topCart.length < 1 ) { 989 return true; 990 } 991 992 $("#top-cart-trigger").off( 'click' ).on( 'click', function(e){
993 $pagemenu.toggleClass('page-menu-open', false); 994 $topCart.toggleClass('top-cart-open'); 995 e.stopPropagation(); 996 e.preventDefault(); 997 }); 998 }, 999 1000 miscFunctions: function(){ 1001 let topSearchParent = $header.find('.top-search-parent'); 1002 $(document).on('click', function(event) { 1003 if (!$(event.target).closest('.top-search-form').length) { 1004 $body.toggleClass('top-search-open', false); 1005 topSearchTimeOut = setTimeout( function(){ 1006 topSearchParent.toggleClass('position-relative', false); 1007 }, 750); 1008 } 1009 if (!$(event.target).closest('#top-cart').length) { 1010 $topCart.toggleClass('top-cart-open', false); 1011 } 1012 if (!$(event.target).closest('#page-menu').length) { $pagemenu.toggleClass('page-menu-open', false); } 1013 if (!$(event.target).closest('#side-panel').length) { $body.toggleClass('side-panel-open', false); } 1014 if (!$(event.target).closest('.primary-menu.on-click').length) { 1015 primaryMenu.filter('.on-click').find('.menu-container').find('.d-block').removeClass('d-block'); 1016 primaryMenu.filter('.on-click').find('.menu-item').removeClass('current'); 1017 } 1018 if( primaryMenu.hasClass('mobile-menu-off-canvas') ) { 1019 if (!$(event.target).closest('.primary-menu.mobile-menu-off-canvas .menu-container').length) { 1020 primaryMenu.filter('.mobile-menu-off-canvas').find('.menu-container').toggleClass('d-block', false); 1021 $body.toggleClass("primary-menu-open", false); 1022 } 1023 } 1024 if (!$(event.target).closest('.top-links.on-click').length) { 1025 $('.top-links.on-click').find('.top-links-sub-menu,.top-links-section').removeClass('d-block'); 1026 } 1027 }); 1028 } 1029 1030 }; 1031 1032 SEMICOLON.slider = { 1033 1034 init: function() { 1035 1036 SEMICOLON.slider.sliderDimensions(); 1037 SEMICOLON.slider.sliderRun(); 1038 SEMICOLON.slider.sliderParallax(); 1039 SEMICOLON.slider.sliderElementsFade(); 1040 1041 }, 1042 1043 sliderDimensions: function(){ 1044 1045 let parallaxElHeight = $sliderParallaxEl.outerHeight(), 1046 parallaxElWidth = $sliderParallaxEl.outerWidth(), 1047 slInner = $sliderParallaxEl.find('.slider-inner'), 1048 slSwiperW = $slider.find('.swiper-wrapper'), 1049 slSwiperS = $slider.find('.swiper-slide').first(), 1050 slFlexHeight = $slider.hasClass('h-auto') || $slider.hasClass('min-vh-0'); 1051 1052 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) { 1053 setTimeout( function(){ 1054 slInner.height( parallaxElHeight ); 1055 if( slFlexHeight ) { 1056 parallaxElHeight = $sliderParallaxEl.find('.slider-inner').children().first().outerHeight(); 1057 $sliderParallaxEl.height( parallaxElHeight ); 1058 slInner.height( parallaxElHeight ); 1059 } 1060 }, 500 ); 1061 1062 if( slFlexHeight ) { 1063 let slSwiperFC = slSwiperS.children().first(); 1064 if( slSwiperFC.hasClass('container') || slSwiperFC.hasClass('container-fluid') ) { 1065 slSwiperFC = slSwiperFC.children().first(); 1066 } 1067 if( slSwiperFC.outerHeight() > slSwiperW.outerHeight() ) { 1068 slSwiperW.css({ 'height': 'auto' }); 1069 } 1070 } 1071 1072 if( $body.hasClass('side-header') ) { 1073 slInner.width( parallaxElWidth ); 1074 } 1075 1076 if( !$body.hasClass('stretched') ) { 1077 parallaxElWidth = $wrapper.outerWidth(); 1078 slInner.width( parallaxElWidth ); 1079 } 1080 } else { 1081 slSwiperW.css({ 'height': '' }); 1082 $sliderParallaxEl.css({ 'height': '' }); 1083 slInner.css({ 'width': '', 'height': '' }); 1084 } 1085 }, 1086 1087 sliderRun: function( element ){ 1088 let settings = { 1089 element: element, 1090 default: '.swiper_wrapper', 1091 file: 'plugins.swiper.js', 1092 error: 'plugins.swiper.js: Plugin could not be loaded', 1093 execfn: 'SEMICOLON_swiperInit', 1094 pluginfn: () => typeof Swiper !== "undefined", 1095 trigger: 'pluginSwiperReady', 1096 class: 'has-plugin-swiper' 1097 }; 1098 1099 SEMICOLON.initialize.functions( settings ); 1100 }, 1101 1102 sliderParallaxOffset: function(){ 1103 let sliderParallaxOffsetTop = 0, 1104 headerHeight = $header.outerHeight(); 1105 if( $body.hasClass('side-header') || $header.next('.include-header').length > 0 ) { headerHeight = 0; } 1106 if( $pageTitle.length > 0 ) { 1107 sliderParallaxOffsetTop = $pageTitle.outerHeight() + headerHeight; 1108 } else { 1109 sliderParallaxOffsetTop = headerHeight; 1110 } 1111 1112 if( $slider.next('#header').length > 0 ) { sliderParallaxOffsetTop = 0; } 1113 1114 return sliderParallaxOffsetTop; 1115 }, 1116 1117 sliderParallaxSet: function( xPos, yPos, el ){ 1118 if( el ) { 1119 el.style.transform = "translate3d(" + xPos + ", " + yPos + "px, 0)"; 1120 } 1121 }, 1122 1123 sliderParallax: function(){ 1124 if( $sliderParallaxEl.length < 1 ) { 1125 return true; 1126 } 1127 1128 let parallaxOffsetTop = SEMICOLON.slider.sliderParallaxOffset(), 1129 parallaxElHeight = $sliderParallaxEl.outerHeight(), 1130 transform, transform2; 1131 1132 xScrollPosition = window.pageXOffset; 1133 yScrollPosition = window.pageYOffset; 1134 1135 if( ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) && !SEMICOLON.isMobile.any() ) { 1136 if( ( parallaxElHeight + parallaxOffsetTop + 50 ) > yScrollPosition ){
1137 $sliderParallaxEl.addClass('slider-parallax-visible').removeClass('slider-parallax-invisible'); 1138 if ( yScrollPosition > parallaxOffsetTop ) { 1139 if( $sliderParallaxEl.find('.slider-inner').length > 0 ) { 1140 1141 transform = ((yScrollPosition-parallaxOffsetTop) * -.4 ); 1142 transform2 = ((yScrollPosition-parallaxOffsetTop) * -.15 ); 1143 1144 SEMICOLON.slider.sliderParallaxSet( 0, transform, sliderParallaxElInner ); 1145 SEMICOLON.slider.sliderParallaxSet( 0, transform2, sliderParallaxElCaption ); 1146 } else { 1147 transform = ((yScrollPosition-parallaxOffsetTop) / 1.5 ); 1148 transform2 = ((yScrollPosition-parallaxOffsetTop) / 7 ); 1149 1150 SEMICOLON.slider.sliderParallaxSet( 0, transform, sliderParallaxEl ); 1151 SEMICOLON.slider.sliderParallaxSet( 0, transform2, sliderParallaxElCaption ); 1152 } 1153 } else { 1154 if( $sliderParallaxEl.find('.slider-inner').length > 0 ) { 1155 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxElInner ); 1156 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxElCaption ); 1157 } else { 1158 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxEl ); 1159 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxElCaption ); 1160 } 1161 } 1162 } else { 1163 $sliderParallaxEl.addClass('slider-parallax-invisible').removeClass('slider-parallax-visible'); 1164 } 1165 1166 requestAnimationFrame(function(){ 1167 SEMICOLON.slider.sliderParallax(); 1168 SEMICOLON.slider.sliderElementsFade(); 1169 }); 1170 } else { 1171 if( $sliderParallaxEl.find('.slider-inner').length > 0 ) { 1172 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxElInner ); 1173 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxElCaption ); 1174 } else { 1175 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxEl ); 1176 SEMICOLON.slider.sliderParallaxSet( 0, 0, sliderParallaxElCaption ); 1177 } 1178 $sliderParallaxEl.addClass('slider-parallax-visible').removeClass('slider-parallax-invisible'); 1179 } 1180 }, 1181 1182 sliderElementsFade: function(){ 1183 if( $sliderParallaxEl.length < 1 ) { 1184 return true; 1185 } 1186 1187 if( ( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) && !SEMICOLON.isMobile.any() ) { 1188 let parallaxOffsetTop = SEMICOLON.slider.sliderParallaxOffset(), 1189 parallaxElHeight = $sliderParallaxEl.outerHeight(), 1190 tHeaderOffset; 1191 1192 if( $header.hasClass('transparent-header') || $body.hasClass('side-header') ) { 1193 tHeaderOffset = 100; 1194 } else { 1195 tHeaderOffset = 0; 1196 } 1197 $sliderParallaxEl.filter('.slider-parallax-visible').find('.slider-arrow-left,.slider-arrow-right,.slider-caption,.slider-element-fade').css({'opacity': 1 - ( ( ( yScrollPosition - tHeaderOffset ) * 1.85 ) / parallaxElHeight ) }); 1198 } else { 1199 $sliderParallaxEl.find('.slider-arrow-left,.slider-arrow-right,.slider-caption,.slider-element-fade').css({'opacity': 1}); 1200 } 1201 }, 1202 1203 swiperSliderMenu: function( onWinLoad ){ 1204 onWinLoad = typeof onWinLoad !== 'undefined' ? onWinLoad : false; 1205 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') || ( $header.hasClass('transparent-header-responsive') && !$body.hasClass('primary-menu-open') ) ) { 1206 let activeSlide = $slider.find('.swiper-slide.swiper-slide-active'); 1207 SEMICOLON.slider.headerSchemeChanger(activeSlide, onWinLoad); 1208 } 1209 }, 1210 1211 revolutionSliderMenu: function( onWinLoad ){ 1212 onWinLoad = typeof onWinLoad !== 'undefined' ? onWinLoad : false; 1213 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') || ( $header.hasClass('transparent-header-responsive') && !$body.hasClass('primary-menu-open') ) ) { 1214 let activeSlide = $slider.find('.active-revslide'); 1215 SEMICOLON.slider.headerSchemeChanger(activeSlide, onWinLoad); 1216 } 1217 }, 1218 1219 headerSchemeChanger: function( activeSlide, onWinLoad ){ 1220 if( activeSlide.length > 0 ) { 1221 let darkExists = false, 1222 oldClassesArray, noOfOldClasses; 1223 if( activeSlide.hasClass('dark') ){ 1224 if( oldHeaderClasses ) { 1225 oldClassesArray = oldHeaderClasses.split(/ +/); 1226 } else {
1227 oldClassesArray = ''; 1228 } 1229 1230 noOfOldClasses = oldClassesArray.length; 1231 1232 if( noOfOldClasses > 0 ) { 1233 let i = 0; 1234 for( i=0; i<noOfOldClasses; i++ ) { 1235 if( oldClassesArray[i] == 'dark' && onWinLoad == true ) { 1236 darkExists = true; 1237 break; 1238 } 1239 } 1240 } 1241 $('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)').addClass('dark'); 1242 if( !darkExists ) { 1243 $('#header.transparent-header.sticky-header,#header.transparent-header.semi-transparent.sticky-header,#header.transparent-header.floating-header.sticky-header').removeClass('dark'); 1244 } 1245 $headerWrap.removeClass('not-dark'); 1246 } else { 1247 if( $body.hasClass('dark') ) { 1248 activeSlide.addClass('not-dark'); 1249 $('#header.transparent-header:not(.semi-transparent,.floating-header)').removeClass('dark'); 1250 $('#header.transparent-header:not(.sticky-header,.semi-transparent,.floating-header)').find('#header-wrap').addClass('not-dark'); 1251 } else { 1252 $('#header.transparent-header:not(.semi-transparent,.floating-header)').removeClass('dark'); 1253 $headerWrap.removeClass('not-dark'); 1254 } 1255 } 1256 if( $header.hasClass('sticky-header') ) { 1257 SEMICOLON.header.stickyMenuClass(); 1258 } 1259 SEMICOLON.header.logo(); 1260 } 1261 } 1262 1263 }; 1264 1265 SEMICOLON.portfolio = { 1266 1267 init: function(){ 1268 1269 SEMICOLON.portfolio.revealDesc(); 1270 SEMICOLON.portfolio.ajaxload(); 1271 1272 }, 1273 1274 revealDesc: function(){ 1275 let $portfolioReveal = $('.portfolio-reveal'); 1276 1277 if( $portfolioReveal < 1 ) { 1278 return true; 1279 } 1280 1281 $portfolioReveal.each( function(){ 1282 let element = $(this), 1283 elementItems = element.find('.portfolio-item'); 1284 elementItems.each( function(){ 1285 let element = $(this).find('.portfolio-desc'), 1286 elementHeight = element.outerHeight(); 1287 element.css({ 'margin-top': '-'+elementHeight+'px' }); 1288 }); 1289 }); 1290 }, 1291 1292 ajaxload: function(){ 1293 let settings = { 1294 default: '.portfolio-ajax', 1295 file: 'plugins.ajaxportfolio.js', 1296 error: 'plugins.ajaxportfolio.js: Plugin could not be loaded', 1297 execfn: 'SEMICOLON_portfolioAjaxloadInit', 1298 pluginfn: () => typeof scwAjaxPortfolioPlugin !== "undefined", 1299 trigger: 'pluginAjaxPortfolioReady', 1300 class: 'has-plugin-ajaxportfolio' 1301 }; 1302 1303 SEMICOLON.initialize.functions( settings ); 1304 } 1305 1306 }; 1307 1308 SEMICOLON.widget = { 1309 1310 init: function(){ 1311 1312 SEMICOLON.widget.animations(); 1313 SEMICOLON.widget.hoverAnimation(); 1314 SEMICOLON.widget.youtubeBgVideo(); 1315 SEMICOLON.widget.tabs(); 1316 SEMICOLON.widget.toggles(); 1317 SEMICOLON.widget.accordions(); 1318 SEMICOLON.widget.counter(); 1319 SEMICOLON.widget.countdown(); 1320 SEMICOLON.widget.gmap(); 1321 SEMICOLON.widget.roundedSkill(); 1322 SEMICOLON.widget.progress(); 1323 SEMICOLON.widget.twitterFeed(); 1324 SEMICOLON.widget.flickrFeed(); 1325 SEMICOLON.widget.instagramPhotos(); 1326 SEMICOLON.widget.dribbbleShots(); 1327 SEMICOLON.widget.navTree(); 1328 SEMICOLON.widget.textRotator(); 1329 SEMICOLON.widget.carousel(); 1330 SEMICOLON.widget.linkScroll(); 1331 SEMICOLON.widget.ajaxForm(); 1332 SEMICOLON.widget.subscription(); 1333 SEMICOLON.widget.shapeDivider(); 1334 SEMICOLON.widget.stickySidebar(); 1335 SEMICOLON.widget.cookieNotify(); 1336 SEMICOLON.widget.cartQuantity(); 1337 SEMICOLON.widget.readmore(); 1338 SEMICOLON.widget.pricingSwitcher(); 1339 SEMICOLON.widget.extras(); 1340 1341 }, 1342 1343 parallax: function( element ){ 1344 let settings = { 1345 element: element, 1346 default: '.parallax,.page-title-parallax,.portfolio-parallax .portfolio-image', 1347 file: 'plugins.parallax.js', 1348 error: 'plugins.parallax.js: Plugin could not be loaded', 1349 execfn: 'SEMICOLON_parallaxInit', 1350 pluginfn: () => typeof skrollr !== "undefined", 1351 trigger: 'pluginParallaxReady', 1352 class: 'has-plugin-parallax' 1353 }; 1354 1355 SEMICOLON.initialize.functions( settings ); 1356 }, 1357 1358 animations: function( element ){ 1359 let settings = { 1360 element: element, 1361 default: '[data-animate]', 1362 file: 'plugins.animations.js', 1363 error: 'plugins.animations.js: Plugin could not be loaded', 1364 execfn: 'SEMICOLON_animationsInit', 1365 pluginfn: () => typeof scwAnimationsPlugin !== "undefined", 1366 trigger: 'pluginAnimationsReady', 1367 class: 'has-plugin-animations' 1368 }; 1369 1370 SEMICOLON.initialize.functions( settings ); 1371 }, 1372 1373 hoverAnimation: function( element ){ 1374 let settings = { 1375 element: element, 1376 default: '[data-hover-animate]', 1377 file: 'plugins.hoveranimation.js', 1378 error: 'plugins.hoveranimation.js: Plugin could not be loaded', 1379 execfn: 'SEMICOLON_hoverAnimationInit', 1380 pluginfn: () => typeof scwHoverAnimationPlugin !== "undefined", 1381 trigger: 'pluginHoverAnimationReady', 1382 class: 'has-plugin-hoveranimation' 1383 }; 1384 1385 SEMICOLON.initialize.functions( settings ); 1386 }, 1387 1388 gridInit: function( element ){ 1389 let settings = { 1390 element: element, 1391 default: '.grid-container', 1392 file: 'plugins.isotope.js', 1393 error: 'plugins.isotope.js: Plugin could not be loaded', 1394 execfn: 'SEMICOLON_gridContainerInit', 1395 pluginfn: () => $().isotope, 1396 trigger: 'pluginIsotopeReady', 1397 class: 'has-plugin-isotope' 1398 }; 1399 1400 SEMICOLON.initialize.functions( settings ); 1401 }, 1402 1403 filterInit: function( element ){ 1404 let settings = { 1405 element: element, 1406 default: '.grid-filter,.custom-filter', 1407 file: 'plugins.gridfilter.js', 1408 error: 'plugins.gridfilter.js: Plugin could not be loaded', 1409 execfn: 'SEMICOLON_gridFilterInit', 1410 pluginfn: () => $().isotope && typeof scwGridFilterPlugin !== "undefined", 1411 trigger: 'pluginGridFilterReady', 1412 class: 'has-plugin-isotope-filter' 1413 }; 1414 1415 SEMICOLON.initialize.functions( settings ); 1416 }, 1417 1418 loadFlexSlider: function( element ){ 1419 let settings = { 1420 element: element, 1421 default: '.fslider', 1422 file: 'plugins.flexslider.js', 1423 error: 'plugins.flexslider.js: Plugin could not be loaded', 1424 execfn: 'SEMICOLON_flexSliderInit', 1425 pluginfn: () => $().flexslider,
1426 trigger: 'pluginFlexSliderReady', 1427 class: 'has-plugin-flexslider' 1428 }; 1429 1430 SEMICOLON.initialize.functions( settings ); 1431 }, 1432 1433 html5Video: function( element ){ 1434 let settings = { 1435 element: element, 1436 default: '.video-wrap:has(video)', 1437 file: 'plugins.html5video.js', 1438 error: 'plugins.html5video.js: Plugin could not be loaded', 1439 execfn: 'SEMICOLON_html5VideoInit', 1440 pluginfn: () => typeof scwHtml5VideoPlugin !== "undefined", 1441 trigger: 'pluginHtml5VideoReady', 1442 class: 'has-plugin-html5video' 1443 }; 1444 1445 SEMICOLON.initialize.functions( settings ); 1446 }, 1447 1448 youtubeBgVideo: function( element ){ 1449 let settings = { 1450 element: element, 1451 default: '.yt-bg-player', 1452 file: 'plugins.youtube.js', 1453 error: 'plugins.youtube.js: Plugin could not be loaded', 1454 execfn: 'SEMICOLON_youtubeBgVideoInit', 1455 pluginfn: () => $().YTPlayer, 1456 trigger: 'pluginYoutubeBgVideoReady', 1457 class: 'has-plugin-youtubebg' 1458 }; 1459 1460 SEMICOLON.initialize.functions( settings ); 1461 }, 1462 1463 tabs: function( element ){ 1464 let settings = { 1465 element: element, 1466 default: '.tabs,[data-plugin="tabs"]', 1467 file: 'plugins.tabs.js', 1468 error: 'plugins.tabs.js: Plugin could not be loaded', 1469 execfn: 'SEMICOLON_tabsInit', 1470 pluginfn: () => $().tabs, 1471 trigger: 'pluginTabsReady', 1472 class: 'has-plugin-tabs' 1473 }; 1474 1475 SEMICOLON.initialize.functions( settings ); 1476 }, 1477 1478 toggles: function( element ){ 1479 let settings = { 1480 element: element, 1481 default: '.toggle', 1482 file: 'plugins.toggles.js', 1483 error: 'plugins.toggles.js: Plugin could not be loaded', 1484 execfn: 'SEMICOLON_togglesInit', 1485 pluginfn: () => typeof scwTogglesPlugin !== "undefined", 1486 trigger: 'pluginTogglesReady', 1487 class: 'has-plugin-toggles' 1488 }; 1489 1490 SEMICOLON.initialize.functions( settings ); 1491 }, 1492 1493 accordions: function( element ){ 1494 let settings = { 1495 element: element, 1496 default: '.accordion', 1497 file: 'plugins.accordions.js', 1498 error: 'plugins.accordions.js: Plugin could not be loaded', 1499 execfn: 'SEMICOLON_accordionsInit', 1500 pluginfn: () => typeof scwAccordionsPlugin !== "undefined", 1501 trigger: 'pluginAccordionsReady', 1502 class: 'has-plugin-accordions' 1503 }; 1504 1505 SEMICOLON.initialize.functions( settings ); 1506 }, 1507 1508 counter: function( element ){ 1509 let settings = { 1510 element: element, 1511 default: '.counter', 1512 file: 'plugins.counter.js', 1513 error: 'plugins.counter.js: Plugin could not be loaded', 1514 execfn: 'SEMICOLON_counterInit', 1515 pluginfn: () => $().countTo, 1516 trigger: 'pluginCounterReady', 1517 class: 'has-plugin-counter' 1518 }; 1519 1520 SEMICOLON.initialize.functions( settings ); 1521 }, 1522 1523 countdown: function( element ){ 1524 let momentSettings = { 1525 element: element, 1526 default: '.countdown', 1527 file: 'components/moment.js', 1528 error: 'components/moment.js: Plugin could not be loaded', 1529 execfn: false, 1530 pluginfn: () => typeof moment !== "undefined", 1531 trigger: 'pluginMomentReady', 1532 class: 'has-plugin-moment' 1533 }; 1534 1535 let settings = { 1536 element: element, 1537 default: '.countdown', 1538 file: 'plugins.countdown.js', 1539 error: 'plugins.countdown.js: Plugin could not be loaded', 1540 execfn: 'SEMICOLON_countdownInit', 1541 pluginfn: () => $().countdown, 1542 trigger: 'pluginCountdownReady', 1543 class: 'has-plugin-countdown' 1544 }; 1545 1546 SEMICOLON.initialize.functions( momentSettings ); 1547 SEMICOLON.initialize.functions( settings ); 1548 }, 1549 1550 gmap: function( element ){ 1551 let googleSettings = { 1552 element: element, 1553 default: '.gmap', 1554 file: 'https://maps.google.com/maps/api/js?key=' + googleMapsAPI, 1555 error: 'Google Maps API could not be loaded', 1556 execfn: false, 1557 pluginfn: () => typeof google !== "undefined", 1558 hiddendisable: true, 1559 class: 'has-plugin-gmapapi' 1560 }; 1561 1562 let settings = { 1563 element: element, 1564 default: '.gmap', 1565 file: 'plugins.gmap.js', 1566 error: 'plugins.gmap.js: Plugin could not be loaded', 1567 execfn: 'SEMICOLON_gmapInit', 1568 pluginfn: () => typeof google !== "undefined" && $().gMap, 1569 hiddendisable: true, 1570 trigger: 'pluginGmapReady', 1571 class: 'has-plugin-gmap' 1572 }; 1573 1574 SEMICOLON.initialize.functions( googleSettings ); 1575 SEMICOLON.initialize.functions( settings ); 1576 }, 1577 1578 roundedSkill: function( element ){ 1579 let settings = { 1580 element: element, 1581 default: '.rounded-skill', 1582 file: 'plugins.piechart.js', 1583 error: 'plugins.piechart.js: Plugin could not be loaded', 1584 execfn: 'SEMICOLON_roundedSkillInit', 1585 pluginfn: () => $().easyPieChart, 1586 trigger: 'pluginRoundedSkillReady', 1587 class: 'has-plugin-piechart' 1588 }; 1589 1590 SEMICOLON.initialize.functions( settings ); 1591 }, 1592 1593 progress: function( element ){ 1594 let settings = { 1595 element: element, 1596 default: '.progress', 1597 file: 'plugins.progress.js', 1598 error: 'plugins.progress.js: Plugin could not be loaded', 1599 execfn: 'SEMICOLON_progressInit', 1600 pluginfn: () => typeof scwProgressPlugin !== "undefined", 1601 trigger: 'pluginProgressReady', 1602 class: 'has-plugin-progress' 1603 }; 1604 1605 SEMICOLON.initialize.functions( settings ); 1606 }, 1607 1608 twitterFeed: function( element ){ 1609 let settings = { 1610 element: element, 1611 default: '.twitter-feed', 1612 file: 'plugins.twitter.js', 1613 error: 'plugins.twitter.js: Plugin could not be loaded', 1614 execfn: 'SEMICOLON_twitterFeedInit', 1615 pluginfn: () => typeof sm_format_twitter !== "undefined" && typeof sm_format_twitter3 !== "undefined", 1616 trigger: 'pluginTwitterFeedReady', 1617 class: 'has-plugin-twitter' 1618 }; 1619 1620 SEMICOLON.initialize.functions( settings ); 1621 }, 1622 1623 flickrFeed: function( element ){ 1624 let settings = { 1625 element: element, 1626 default: '.flickr-feed', 1627 file: 'plugins.flickrfeed.js', 1628 error: 'plugins.flickrfeed.js: Plugin could not be loaded', 1629 execfn: 'SEMICOLON_flickrFeedInit', 1630 pluginfn: () => $().jflickrfeed, 1631 trigger: 'pluginFlickrFeedReady', 1632 class: 'has-plugin-flickr' 1633 }; 1634 1635 SEMICOLON.initialize.functions( settings ); 1636 }, 1637 1638 instagramPhotos: function( element ){ 1639 let settings = { 1640 element: element, 1641 default: '.instagram-photos', 1642 file: 'plugins.instagram.js', 1643 error: 'plugins.instagram.js: Plugin could not be loaded', 1644 execfn: 'SEMICOLON_instagramPhotosInit', 1645 pluginfn: () => typeof scwInstagramPlugin !== "undefined", 1646 trigger: 'pluginInstagramReady', 1647 class: 'has-plugin-instagram' 1648 }; 1649 1650 SEMICOLON.initialize.functions( settings ); 1651 }, 1652 1653 dribbbleShots: function( element ){ 1654 let settings = { 1655 element: element, 1656 default: '.dribbble-shots', 1657 file: 'plugins.dribbble.js', 1658 error: 'plugins.dribbble.js: Plugin could not be loaded', 1659 execfn: 'SEMICOLON_dribbbleShotsInit', 1660 pluginfn: () => $.jribbble, 1661 trigger: 'pluginDribbbleReady', 1662 class: 'has-plugin-dribbble' 1663 }; 1664 1665 let imagesLoadedSettings = { 1666 element: element, 1667 default: '.dribbble-shots', 1668 file: 'plugins.imagesloaded.js', 1669 error: 'plugins.imagesloaded.js: Plugin could not be loaded', 1670 pluginfn: () => $().imagesLoaded, 1671 trigger: 'pluginImagesLoadedReady', 1672 class: 'has-plugin-imagesloaded' 1673 }; 1674 1675 SEMICOLON.initialize.functions( settings ); 1676 SEMICOLON.initialize.functions( imagesLoadedSettings ); 1677 }, 1678 1679 navTree: function( element ){ 1680 let settings = { 1681 element: element, 1682 default: '.nav-tree', 1683 file: 'plugins.navtree.js', 1684 error: 'plugins.navtree.js: Plugin could not be loaded', 1685 execfn: 'SEMICOLON_navtreeInit', 1686 pluginfn: () => typeof scwNavTreePlugin !== "undefined", 1687 trigger: 'pluginNavTreeReady', 1688 class: 'has-plugin-navtree' 1689 }; 1690 1691 SEMICOLON.initialize.functions( settings ); 1692 }, 1693 1694 carousel: function( element ){ 1695 let settings = { 1696 element: element, 1697 default: '.carousel-widget', 1698 file: 'plugins.carousel.js', 1699 error: 'plugins.carousel.js: Plugin could not be loaded', 1700 execfn: 'SEMICOLON_carouselInit', 1701 pluginfn: () => $().owlCarousel, 1702 trigger: 'pluginCarouselReady', 1703 class: 'has-plugin-carousel' 1704 }; 1705 1706 SEMICOLON.initialize.functions( settings ); 1707 }, 1708 1709 masonryThumbs: function( element ){ 1710 let settings = { 1711 element: element, 1712 default: '.masonry-thumbs', 1713 file: 'plugins.masonrythumbs.js', 1714 error: 'plugins.masonrythumbs.js: Plugin could not be loaded', 1715 execfn: 'SEMICOLON_masonryThumbsInit', 1716 pluginfn: () => $().isotope && typeof scwMasonryThumbsPlugin !== "undefined", 1717 trigger: 'pluginMasonryThumbsReady', 1718 class: 'has-plugin-masonrythumbs' 1719 }; 1720 1721 SEMICOLON.initialize.functions( settings ); 1722 }, 1723 1724 notifications: function( element ){ 1725 let settings = { 1726 element: element, 1727 default: false, 1728 file: 'plugins.notify.js', 1729 error: 'plugins.notify.js: Plugin could not be loaded', 1730 execfn: 'SEMICOLON_notificationInit', 1731 pluginfn: () => typeof scwNotificationPlugin !== "undefined", 1732 trigger: 'pluginNotifyReady', 1733 class: 'has-plugin-toast' 1734 }; 1735 1736 SEMICOLON.initialize.functions( settings ); 1737 }, 1738 1739 textRotator: function( element ){ 1740 let settings = { 1741 element: element, 1742 default: '.text-rotater', 1743 file: 'plugins.textrotator.js', 1744 error: 'plugins.textrotator.js: Plugin could not be loaded', 1745 execfn: 'SEMICOLON_textRotatorInit', 1746 pluginfn: () => $().Morphext, 1747 trigger: 'pluginTextRotatorReady', 1748 class: 'has-plugin-textrotator' 1749 }; 1750 1751 SEMICOLON.initialize.functions( settings ); 1752 }, 1753 1754 linkScroll: function( element ){ 1755 let settings = { 1756 element: element, 1757 default: 'a[data-scrollto]', 1758 file: 'plugins.linkscroll.js', 1759 error: 'plugins.linkscroll.js: Plugin could not be loaded', 1760 execfn: 'SEMICOLON_linkScrollInit', 1761 pluginfn: () => typeof scwLinkScrollPlugin !== "undefined", 1762 trigger: 'pluginLinkScrollReady', 1763 class: 'has-plugin-linkscroll' 1764 }; 1765 1766 SEMICOLON.initialize.functions( settings ); 1767 }, 1768 1769 ajaxForm: function( element ){ 1770 let formSettings = { 1771 element: element, 1772 default: '.form-widget', 1773 file: 'plugins.form.js', 1774 error: 'plugins.form.js: Plugin could not be loaded', 1775 execfn: false, 1776 pluginfn: () => $().validate && $().ajaxSubmit, 1777 class: 'has-plugin-form' 1778 }; 1779 1780 let settings = { 1781 element: element, 1782 default: '.form-widget', 1783 file: 'plugins.ajaxform.js', 1784 error: 'plugins.ajaxform.js: Plugin could not be loaded', 1785 execfn: 'SEMICOLON_ajaxFormInit', 1786 pluginfn: () => typeof scwAjaxFormPlugin !== "undefined", 1787 trigger: 'pluginAjaxFormReady', 1788 class: 'has-plugin-ajaxform' 1789 }; 1790 1791 SEMICOLON.initialize.functions( formSettings ); 1792 SEMICOLON.initialize.functions( settings ); 1793 }, 1794 1795 subscription: function( element ){ 1796 let formSettings = { 1797 element: element, 1798 default: '.subscribe-widget', 1799 file: 'plugins.form.js', 1800 error: 'plugins.form.js: Plugin could not be loaded', 1801 execfn: false, 1802 pluginfn: () => $().validate && $().ajaxSubmit, 1803 class: 'has-plugin-form' 1804 }; 1805 1806 let settings = { 1807 element: element, 1808 default: '.subscribe-widget', 1809 file: 'plugins.subscribe.js', 1810 error: 'plugins.subscribe.js: Plugin could not be loaded', 1811 execfn: 'SEMICOLON_subscribeFormInit', 1812 pluginfn: () => typeof scwSubscribeFormPlugin !== "undefined", 1813 trigger: 'pluginSubscribeFormReady', 1814 class: 'has-plugin-subscribeform' 1815 }; 1816 1817 SEMICOLON.initialize.functions( formSettings ); 1818 SEMICOLON.initialize.functions( settings ); 1819 }, 1820 1821 shapeDivider: function( element ){ 1822 let settings = { 1823 element: element, 1824 default: '.shape-divider', 1825 file: 'plugins.shapedivider.js', 1826 error: 'plugins.shapedivider.js: Plugin could not be loaded', 1827 execfn: 'SEMICOLON_shapeDividerInit', 1828 pluginfn: () => typeof scwShapeDividerPlugin !== "undefined", 1829 trigger: 'pluginShapeDividerReady', 1830 class: 'has-plugin-shapedivider' 1831 }; 1832 1833 SEMICOLON.initialize.functions( settings ); 1834 }, 1835 1836 ticker: function( element ){ 1837 let settings = { 1838 element: element, 1839 default: '.scw-ticker', 1840 file: 'plugins.ticker.js', 1841 error: 'plugins.ticker.js: Plugin could not be loaded', 1842 execfn: 'SEMICOLON_tickerInit', 1843 pluginfn: () => typeof scwTickerPlugin !== "undefined", 1844 trigger: 'pluginTickerReady', 1845 class: 'has-plugin-ticker' 1846 }; 1847 1848 SEMICOLON.initialize.functions( settings ); 1849 }, 1850 1851 stickySidebar: function( element ){ 1852 let settings = { 1853 element: element, 1854 default: '.sticky-sidebar-wrap', 1855 file: 'plugins.stickysidebar.js', 1856 error: 'plugins.stickysidebar.js: Plugin could not be loaded', 1857 execfn: 'SEMICOLON_stickySidebarInit', 1858 pluginfn: () => $().scwStickySidebar, 1859 trigger: 'pluginStickySidebarReady', 1860 class: 'has-plugin-stickysidebar' 1861 }; 1862 1863 SEMICOLON.initialize.functions( settings ); 1864 }, 1865 1866 cookieNotify: function( element ){ 1867 let settings = { 1868 element: element, 1869 default: '.gdpr-settings,[data-cookies]', 1870 file: 'plugins.cookie.js', 1871 error: 'plugins.cookie.js: Plugin could not be loaded', 1872 execfn: 'SEMICOLON_cookieInit', 1873 pluginfn: () => typeof Cookies !== "undefined", 1874 trigger: 'pluginCookieReady', 1875 class: 'has-plugin-cookie' 1876 }; 1877 1878 SEMICOLON.initialize.functions( settings ); 1879 }, 1880 1881 cartQuantity: function(){ 1882 let settings = { 1883 default: '.qty', 1884 file: 'plugins.quantity.js', 1885 error: 'plugins.quantity.js: Plugin could not be loaded', 1886 execfn: 'SEMICOLON_quantityInit', 1887 pluginfn: () => typeof scwQuantityPlugin !== "undefined", 1888 trigger: 'pluginQuantityReady', 1889 class: 'has-plugin-quantity' 1890 }; 1891 1892 SEMICOLON.initialize.functions( settings ); 1893 }, 1894 1895 readmore: function(){ 1896 let settings = { 1897 default: '[data-readmore]', 1898 file: 'plugins.readmore.js', 1899 error: 'plugins.readmore.js: Plugin could not be loaded', 1900 execfn: 'SEMICOLON_readmoreInit', 1901 pluginfn: () => typeof scwReadMorePlugin !== "undefined", 1902 trigger: 'pluginReadMoreReady', 1903 class: 'has-plugin-readmore' 1904 }; 1905 1906 SEMICOLON.initialize.functions( settings ); 1907 }, 1908 1909 pricingSwitcher: function(){ 1910 let settings = { 1911 default: '.pts-switcher', 1912 file: 'plugins.pricingswitcher.js', 1913 error: 'plugins.pricingswitcher.js: Plugin could not be loaded', 1914 execfn: 'SEMICOLON_pricingSwitcherInit', 1915 pluginfn: () => typeof scwPricingSwitcherPlugin !== "undefined", 1916 trigger: 'pluginPricingSwitcherReady', 1917 class: 'has-plugin-pricing-switcher' 1918 }; 1919 1920 SEMICOLON.initialize.functions( settings ); 1921 }, 1922 1923 extras: function(){ 1924 let btsCheckIntevral = setInterval( function(){ 1925 if( 'pluginBootstrapReady' in scwEvents ) { 1926 if( $().tooltip ) { 1927 $('[data-bs-toggle="tooltip"]').tooltip({container: 'body'}); 1928 } else { 1929 console.log('extras: Bootstrap Tooltip not defined.'); 1930 } 1931 1932 if( $().popover ) { 1933 $('[data-bs-toggle="popover"]').popover({container: 'body'}); 1934 } else { 1935 console.log('extras: Bootstrap Popover not defined.'); 1936 } 1937 1938 clearInterval( btsCheckIntevral ); 1939 } 1940 }, 1000 ); 1941 1942 $('.style-msg').on( 'click', '.close', function(e){
1943 $( this ).parents( '.style-msg' ).slideUp(); 1944 e.preventDefault(); 1945 }); 1946 1947 $('#page-menu-trigger').off( 'click' ).on( 'click', function() { 1948 $body.toggleClass('top-search-open', false); 1949 $pagemenu.toggleClass("page-menu-open"); 1950 return false; 1951 }); 1952 1953 $pagemenu.find('nav').off( 'click' ).on( 'click', function(e){ 1954 $body.toggleClass('top-search-open', false); 1955 $topCart.toggleClass('top-cart-open', false); 1956 }); 1957 1958 if( SEMICOLON.isMobile.any() ){ 1959 $body.addClass('device-touch'); 1960 } 1961 1962 if( $body.hasClass( 'adaptive-color-scheme' ) ) { 1963 1964 let adaptiveEl = $('[data-adaptive-light-class], [data-adaptive-dark-class]'), 1965 adaptLightClass = adaptiveEl.attr( 'data-adaptive-light-class' ), 1966 adaptDarkClass = adaptiveEl.attr( 'data-adaptive-dark-class' ); 1967 1968 let adaptClasses = function( dark ) { 1969 if( dark ) { 1970 $body.toggleClass( 'dark', true ); 1971 adaptiveEl.removeClass( adaptLightClass ).addClass( adaptDarkClass ); 1972 } else { 1973 $body.toggleClass( 'dark', false ); 1974 adaptiveEl.removeClass( adaptDarkClass ).addClass( adaptLightClass ); 1975 } 1976 SEMICOLON.header.logo(); 1977 }; 1978 1979 if( window.matchMedia ) { 1980 adaptClasses( window.matchMedia('(prefers-color-scheme: dark)').matches ); 1981 1982 window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function(e) { 1983 adaptClasses( e.matches ); 1984 }); 1985 } 1986 } 1987 1988 $body.off( 'click' ).on( 'click', 'a[href*="#"]', function() { 1989 $window.on('beforeunload', function() { 1990 $window.scrollTop(0); 1991 }); 1992 }); 1993 1994 let linkElement = location.hash; 1995 if( $(linkElement).length > 0 && $('.one-page-menu').find('[data-href="'+linkElement+'"]').length > 0 ) { 1996 $window.scrollTop(0); 1997 } 1998 } 1999 2000 }; 2001 2002 SEMICOLON.isMobile = { 2003 Android: function() { 2004 return navigator.userAgent.match(/Android/i); 2005 }, 2006 BlackBerry: function() { 2007 return navigator.userAgent.match(/BlackBerry/i); 2008 }, 2009 iOS: function() { 2010 return navigator.userAgent.match(/iPhone|iPad|iPod/i); 2011 }, 2012 Opera: function() { 2013 return navigator.userAgent.match(/Opera Mini/i); 2014 }, 2015 Windows: function() { 2016 return navigator.userAgent.match(/IEMobile/i); 2017 }, 2018 any: function() { 2019 return (SEMICOLON.isMobile.Android() || SEMICOLON.isMobile.BlackBerry() || SEMICOLON.isMobile.iOS() || SEMICOLON.isMobile.Opera() || SEMICOLON.isMobile.Windows()); 2020 } 2021 }; 2022 2023 // Add your Custom JS Codes here 2024 SEMICOLON.customization = { 2025 2026 onReady: function(){ 2027 2028 // Add JS Codes here to Run on Document Ready 2029 2030 }, 2031 2032 onLoad: function(){ 2033 2034 // Add JS Codes here to Run on Window Load 2035 2036 }, 2037 2038 onResize: function(){ 2039 2040 // Add JS Codes here to Run on Window Resize 2041 2042 } 2043 2044 } 2045 2046 SEMICOLON.documentOnResize = { 2047 2048 init: function(){ 2049 2050 SEMICOLON.header.menufunctions(); 2051 SEMICOLON.header.fullWidthMenu(); 2052 SEMICOLON.header.stickyMenu(); 2053 SEMICOLON.header.logo(); 2054 SEMICOLON.initialize.dataResponsiveHeights(); 2055 SEMICOLON.initialize.stickFooterOnSmall(); 2056 SEMICOLON.slider.sliderDimensions(); 2057 SEMICOLON.slider.sliderParallax(); 2058 SEMICOLON.widget.html5Video(); 2059 SEMICOLON.widget.masonryThumbs(); 2060 SEMICOLON.initialize.dataResponsiveClasses(); 2061 SEMICOLON.customization.onResize(); 2062 2063 windowWidth = $window.width(); 2064 2065 $(window).trigger( 'scwWindowResize' ); 2066 2067 } 2068 2069 }; 2070 2071 SEMICOLON.documentOnReady = { 2072 2073 init: function(){ 2074 SEMICOLON.initialize.init(); 2075 SEMICOLON.header.init(); 2076 if( $slider.length > 0 || $sliderElement.length > 0 ) { SEMICOLON.slider.init(); } 2077 if( $portfolio.length > 0 ) { SEMICOLON.portfolio.init(); } 2078 SEMICOLON.widget.init(); 2079 SEMICOLON.documentOnReady.windowscroll(); 2080 SEMICOLON.customization.onReady(); 2081 }, 2082 2083 windowscroll: function(){ 2084 2085 if( $header.length > 0 ) { 2086 headerOffset = $header.offset().top; 2087 $headerWrap.addClass('position-absolute'); 2088 headerWrapOffset = $headerWrap.offset().top; 2089 $headerWrap.removeClass('position-absolute'); 2090 } 2091 2092 let headerDefinedOffset = $header.attr('data-sticky-offset'); 2093 if( typeof headerDefinedOffset !== 'undefined' ) { 2094 if( headerDefinedOffset == 'full' ) { 2095 headerWrapOffset = $window.height(); 2096 let headerOffsetNegative = $header.attr('data-sticky-offset-negative'); 2097 if( typeof headerOffsetNegative !== 'undefined' ) { 2098 headerWrapOffset = headerWrapOffset - headerOffsetNegative - 1; 2099 } 2100 } else { 2101 headerWrapOffset = Number(headerDefinedOffset); 2102 } 2103 } else { 2104 if( headerWrapOffset === 'undefined' ) { 2105 headerWrapOffset = headerOffset; 2106 } 2107 } 2108 2109 let pageMenuWrap = $pagemenu.find('#page-menu-wrap'), 2110 offset = $headerWrap.outerHeight(), 2111 head = document.head || document.getElementsByTagName('head')[0], 2112 style = document.createElement('style'), 2113 css; 2114 2115 if( $pagemenu.length > 0 ) { 2116 $pageMenuClone.css({ 'height': $pagemenu.find('#page-menu-wrap').outerHeight() }); 2117 setTimeout( function(){ 2118 if( $header.length > 0 && !$header.hasClass('no-sticky') ) { 2119 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') || mobileSticky == 'true' ) { 2120 pageMenuOffset = $pagemenu.offset().top - $headerWrap.outerHeight(); 2121 head.appendChild(style); 2122 css = '#page-menu.sticky-page-menu:not(.dots-menu) #page-menu-wrap { top: '+ offset +'px; }'; 2123 2124 style.type = 'text/css'; 2125 style.appendChild(document.createTextNode(css)); 2126 } else { 2127 pageMenuOffset = $pagemenu.offset().top; 2128 } 2129 } else { 2130 pageMenuOffset = $pagemenu.offset().top; 2131 } 2132 }, 1000); 2133 } 2134 2135 SEMICOLON.header.stickyMenu( headerWrapOffset ); 2136 SEMICOLON.header.stickyPageMenu( pageMenuOffset ); 2137 2138 window.addEventListener( 'scroll', function(){ 2139 2140 SEMICOLON.initialize.goToTopScroll(); 2141 $('body.open-header.close-header-on-scroll').removeClass("side-header-open"); 2142 SEMICOLON.header.stickyMenu( headerWrapOffset ); 2143 SEMICOLON.header.stickyPageMenu( pageMenuOffset ); 2144 SEMICOLON.header.logo(); 2145 2146 }, { passive: true });
2147 2148 window.addEventListener( 'DOMContentLoaded', onScrollSliderParallax, false ); 2149 2150 $window.scrollEnd( function(){ 2151 let headerHeight = $headerWrap.outerHeight(); 2152 if( $pagemenu.length > 0 && $header.length > 0 && !$header.hasClass('no-sticky') ) { 2153 if( $body.hasClass('device-xl') || $body.hasClass('device-lg') ) { 2154 $pagemenu.filter('.sticky-page-menu:not(.dots-menu,.no-sticky)').find( $pageMenuWrap ).css({ 'top': headerHeight +'px' }); 2155 } 2156 } 2157 }, 500 ); 2158 2159 } 2160 2161 }; 2162 2163 SEMICOLON.documentOnLoad = { 2164 2165 init: function(){ 2166 SEMICOLON.slider.swiperSliderMenu(true); 2167 SEMICOLON.slider.revolutionSliderMenu(true); 2168 SEMICOLON.initialize.stickFooterOnSmall(); 2169 SEMICOLON.widget.gridInit(); 2170 let isoCheckInt = setInterval( function(){ 2171 if( 'pluginIsotopeReady' in scwEvents ) { 2172 SEMICOLON.widget.filterInit(); 2173 SEMICOLON.widget.masonryThumbs(); 2174 clearInterval( isoCheckInt ); 2175 } 2176 }, 1000 ); 2177 SEMICOLON.widget.parallax(); 2178 SEMICOLON.widget.loadFlexSlider(); 2179 SEMICOLON.widget.html5Video(); 2180 SEMICOLON.widget.ticker(); 2181 SEMICOLON.header.responsiveMenuClass(); 2182 SEMICOLON.initialize.modal(); 2183 SEMICOLON.customization.onLoad(); 2184 2185 } 2186 2187 }; 2188 2189 let $window = $(window), 2190 windowScrT, 2191 $body = $('body'), 2192 $wrapper = $('#wrapper'), 2193 $header = $('#header'), 2194 $headerWrap = $('#header-wrap'), 2195 $headerInc = $('.include-header'), 2196 defLogoH = $header.attr('data-logo-height') || 100, 2197 stickyLogoH = $header.attr('data-sticky-logo-height') || 60, 2198 mobileSticky = $header.attr('data-mobile-sticky') || 'true', 2199 mobileLogoH = $header.attr('data-mobile-logo-height') || Number( defLogoH ), 2200 mobileStickyLogoH = $header.attr('data-mobile-sticky-logo-height') || Number( stickyLogoH ), 2201 defMenuP = $header.attr('data-menu-padding') || 39, 2202 stickyMenuP = $header.attr('data-sticky-menu-padding') || 19, 2203 headerSizeCustom = !$header.hasClass('header-size-lg') && !$header.hasClass('header-size-md') && !$header.hasClass('header-size-sm') && !$header.hasClass('header-size-custom'), 2204 stickyShrink = $header.attr('data-sticky-shrink') || 'true', 2205 stickyShrinkOffset = $header.attr('data-sticky-shrink-offset') || 300, 2206 primaryMenu = $('.primary-menu'), 2207 primaryMenuMainItems = primaryMenu.find('.menu-container:not(mobile-primary-menu):not(.custom-spacing)').children('.menu-item').children('.menu-link'), 2208 $headerWrapClone = '', 2209 initialHeaderWrapHeight = $headerWrap.outerHeight(), 2210 $headerRow = $headerWrap.find('.header-row:eq(0)'), 2211 $content = $('#content'), 2212 $footer = $('#footer'), 2213 windowWidth = $window.width(), 2214 oldHeaderClasses = $header.attr('class'), 2215 oldHeaderWrapClasses = $headerWrap.attr('class'), 2216 stickyMenuClasses = $header.attr('data-sticky-class'), 2217 responsiveMenuClasses = $header.attr('data-responsive-class'), 2218 logo = $('#logo'), 2219 defaultLogo = logo.find('.standard-logo'), 2220 defaultLogoWidth = defaultLogo.find('img').outerWidth(), 2221 retinaLogo = logo.find('.retina-logo'), 2222 defaultLogoImg = defaultLogo.find('img').attr('src'), 2223 retinaLogoImg = retinaLogo.find('img').attr('src'), 2224 defaultDarkLogo = defaultLogo.attr('data-dark-logo'), 2225 retinaDarkLogo = retinaLogo.attr('data-dark-logo'), 2226 defaultStickyLogo = defaultLogo.attr('data-sticky-logo'), 2227 retinaStickyLogo = retinaLogo.attr('data-sticky-logo'), 2228 defaultMobileLogo = defaultLogo.attr('data-mobile-logo'), 2229 retinaMobileLogo = retinaLogo.attr('data-mobile-logo'), 2230 topSearchTimeOut, 2231 $pagemenu = $('#page-menu'), 2232 $pageMenuClone = '', 2233 $pageMenuWrap = $pagemenu.find('#page-menu-wrap'), 2234 $onePageMenuEl = $('.one-page-menu'), 2235 $portfolio = $('.portfolio'), 2236 $shop = $('.shop'), 2237 $slider = $('#slider'), 2238 $sliderParallaxEl = $('.slider-parallax'), 2239 $sliderElement = $('.slider-element'), 2240 swiperSlider = '', 2241 $pageTitle = $('#page-title'), 2242 $topSearch = $('.top-search-form'), 2243 $topCart = $('#top-cart'), 2244 $topSocialEl = $('#top-social').find('li'), 2245 $goToTopEl = $('#gotoTop'), 2246 googleMapsAPI = 'YOUR-API-KEY', 2247 xScrollPosition, 2248 yScrollPosition, 2249 sliderParallaxEl = document.querySelector('.slider-parallax'), 2250 sliderParallaxElCaption = document.querySelector('.slider-parallax .slider-caption'), 2251 sliderParallaxElInner = document.querySelector('.slider-inner'), 2252 initHeaderHeight, 2253 headerOffset = 0, 2254 headerWrapOffset = 0, 2255 pageMenuOffset = 0, 2256 resizeTimer; 2257 2258 $(document).ready( SEMICOLON.documentOnReady.init ); 2259 2260 $window.on( 'load', SEMICOLON.documentOnLoad.init ); 2261 2262 $window.on( 'resize', function() { 2263 let thisWindow = $(this); 2264 clearTimeout(resizeTimer); 2265 resizeTimer = setTimeout(function() { 2266 if ( thisWindow.width() !== windowWidth ) {
2267 SEMICOLON.documentOnResize.init(); 2268 } 2269 }, 250); 2270 }); 2271 2272 $(document).ready(function() { 2273 2274 /*$.post("/visitors-check.php", {screen_w: $(window).width(), screen_h: $(window).height()}, 2275 function(data){ 2276 } 2277 );*/ 2278 2279 $('.one-page-menu').attr('data-offset',$('#header').height()); 2280 2281 /*$('.wp-block-image a').fancybox({ 2282 beforeShow: function(){ 2283 $('.mfp-close').remove(); 2284 //console.log('nascondi'); 2285 }, 2286 afterClose: function(){ 2287 $('.mfp-close').css('display','block'); 2288 //console.log('mostra'); 2289 } 2290 });*/ 2291 2292 }); 2293 2294 $(window).scroll(function() { 2295 2296 2297 }) 2298 2299 $(window).resize(function() { 2300 2301 $('.one-page-menu').attr('data-offset',$('#header').height()); 2302 2303 }) 2304 2305 $('.gallery-items').each(function() { // the containers for all your galleries 2306 $(this).magnificPopup({ 2307 delegate: 'a', // the selector for gallery item 2308 type: 'iframe', 2309 mainClass: 'mfp-room', 2310 gallery: { 2311 enabled: true, 2312 navigateByImgClick: true, 2313 preload: [0,1] // Will preload 0 - before current, and 1 after the current image 2314 }, 2315 callbacks: { 2316 open: function() { // When you open the 2317 $('body').css('overflow', 'hidden'); // window, the element 2318 }, // "body" is used "overflow: hidden". 2319 close: function() { // When the window 2320 $('body').css('overflow', ''); // is closed, the 2321 }, // "overflow" gets the initial value. 2322 } 2323 }); 2324 }); 2325 2326 $('.gallery-images').each(function() { // the containers for all your galleries 2327 $(this).magnificPopup({ 2328 delegate: 'a', // the selector for gallery item 2329 type: 'image', 2330 gallery: { 2331 enabled: true, 2332 navigateByImgClick: true, 2333 preload: [0,1] // Will preload 0 - before current, and 1 after the current image 2334 }, 2335 callbacks: { 2336 open: function() { // When you open the 2337 $('body').css('overflow', 'hidden'); // window, the element 2338 }, // "body" is used "overflow: hidden". 2339 close: function() { // When the window 2340 $('body').css('overflow', ''); // is closed, the 2341 }, // "overflow" gets the initial value. 2342 } 2343 }); 2344 }); 2345 2346 var WuBook = new _WuBook(1677431283); 2347 var wbparams = { 2348 lang: langCurrent, 2349 failback_lang: langCurrent, 2350 adchi: 1, 2351 wbgoogle: 0, 2352 blocks: 'be', 2353 bgblocks: '#2b474c', 2354 barbackground: 'transparent', 2355 bordercolor: '#ffffff', 2356 default_nights: 1, 2357 textcolorbuttonbe: '#ffffff', 2358 buttoncolorbe: '#365e65', 2359 textcolorcalendarbe: '#313131', 2360 buttoncoloras: '#f7422b', 2361 iconcoloras: '#000000', 2362 labelcoloras: '#000000', 2363 avgcolor: '#000000', 2364 avgtextcolor: '#000000', 2365 textcolorbb: '#000000', 2366 listtypebb: '#000000', 2367 cmsgs: '', 2368 textcolorpk: '#313131', 2369 textcolornightspk: '#000000', 2370 plusperc: 5, 2371 hdcode: '', 2372 dibuttoncolor: '#008000', 2373 ditextcolor: '#000000', 2374 diinputcolor: '#ffffff', 2375 fixedPosition: 0, 2376 rpkgs: '' 2377 }; 2378 WuBook.design_bwidget("_baror_", wbparams,function(){ 2379 //console.log('FINITO'); 2380 //$('#__wbframe___baror___wrap').height($('#__wbframe___baror_').outerHeight()); 2381 //console.log('ENDED'); 2382 }); 2383 2384})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.