1(function() { 2 "use strict"; 3 window.SCAPE = window.SCAPE || {}; 4 var $ = jQuery.noConflict(); 5 6 SCAPE.pageHeader = { 7 8 init: function() { 9 SCAPE.pageHeader.layout(); 10 SCAPE.pageHeader.fullScroll(); 11 SCAPE.pageHeader.scrollEffect(); 12 13 $(window).on('resize', function(){ 14 SCAPE.waitForFinalEvent( function() { 15 SCAPE.pageHeader.layout(); 16 }, 500, 'page_header'); 17 }); 18 }, 19 20 layout: function() { 21 }, 22 23 scrollEffect: function() { 24 25 if ( $('#page-header').hasClass('has-scroll-effect') && !SCAPE.isMobile() ) { 26 27 var $page_header = $('#page-header'), 28 $page_header_i = $page_header.find('.page-header-inner'), 29 $bg_cont = $page_header.find('.page-header-image'), 30 $bg_wrapper = $page_header.find('.page-header-image-wrapper'), 31 $bg = $page_header.find('.wtbx-bg-image'), 32 $bg_shadow = $page_header.find('.page-header-shadow'), 33 $bg_overlay = $page_header.find('.page-header-overlay'), 34 $page = $('#page-wrap'), 35 header_height = $page_header.outerHeight(), 36 bg_cont_height = $bg_cont.height(), 37 bg_height = $bg.height(), 38 bg_width = $bg.width(), 39 height_diff = (bg_height - bg_cont_height) / 2, 40 multiplier = .4, 41 to_center_top = bg_height / 2, 42 to_center_left = bg_width / 2, 43 scale = 1, 44 ratio = 1.5, 45 $background; 46 47 if ( $page_header.hasClass('scroll-cont_zoom_in') && $page_header.has('.page-header-bg-wrapper') ) { 48 $background = $page_header.find('.page-header-bg-wrapper'); 49 var background_h = SCAPE.viewport().height + Math.ceil(header_height / 1.5); 50 $background.css('height', background_h + 'px'); 51 } 52 53 var onScroll = function() { 54 55 var scrollTop = window.pageYOffset, 56 scrolled_part = scrollTop / header_height; 57 58 if ( $page_header.hasClass('scroll-hs_3d_slide') ) { 59 60 scale = (1 - scrolled_part) * multiplier + 1; 61 var bg_scale = (1 - scrolled_part) * multiplier * .8 + 1 - multiplier * .8; 62 63 if ( scrollTop > header_height ) { 64 $bg_wrapper.css('transform', ''); 65 $bg_shadow.css('transform', ''); 66 $page_header_i.css('transform', ''); 67 } else { 68 SCAPE.transform($('.page-header-bg-wrapper')[0], 'scale3d('+Math.sqrt(bg_scale)+','+Math.sqrt(bg_scale)+',1)'); 69 SCAPE.transform($page_header_i[0], 'scale3d('+scale/(1+multiplier)+','+scale/(1+multiplier)+',1)'); 70 } 71 72 } else if ( $page_header.hasClass('scroll-cont_zoom_in') ) { 73 74 scale = (scrolled_part * ratio) * multiplier * multiplier + 1 - multiplier * multiplier; 75 scale = Math.sqrt(Math.min(scale,1)); 76 77 var transform = SCAPE.propertyPrefix('transform'); 78 79 if ( scale === 1 ) { 80 $page.css('will-change', ''); 81 $page.css('transform', ''); 82 $page.css(transform, ''); 83 $page.addClass('scrolled-into-view'); 84 } else { 85 $page.css('will-change', transform); 86 $page.css(transform, 'scale3d('+scale+','+scale+',1)'); 87 $page.removeClass('scrolled-into-view'); 88 } 89 } 90 }; 91 92 var raf = SCAPE.raf(); 93 94 $(window).scroll(function() { 95 raf(onScroll); 96 }); 97 98 } 99 }, 100 101 fullScroll: function() { 102 103 var $page_header = $('#page-header'); 104 if ( $page_header.length ) { 105 var header_offset = $page_header.offset().top, 106 header_height = $page_header.height(); 107 108 var slideOnScroll = function(e) { 109 e = window.event || e; 110 var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.deltaY || -e.detail))); 111 var scrollTop = SCAPE.scrollTop.get; 112 var $body = $('body'); 113 var $page = $('#page-wrap'), 114 offset = $page.offset().top - SCAPE.headerOffset($page); 115 116 if ( delta < 0 && scrollTop < header_offset + offset - 100 ) { 117 // SCAPE.stopEvent(e); 118 if ( !$body.hasClass('scrolling') ) { 119 $body.addClass('scrolling'); 120 $('html, body').animate({scrollTop: offset}, 800, function() { 121 $body.removeClass('scrolling'); 122 }); 123 } 124 } else if ( delta > 0 && scrollTop < header_offset + offset ) { 125 // SCAPE.stopEvent(e); 126 if ( !$body.hasClass('scrolling') ) { 127 $body.addClass('scrolling'); 128 $('html, body').animate({scrollTop: 0}, 600, function() { 129 $body.removeClass('scrolling'); 130 }); 131 } 132 } 133 return false;
134 }; 135 136 if ( $page_header.data('fullscroll') === 1 ) { 137 SCAPE.mouseWheelHandler.add(window, slideOnScroll); 138 } 139 } 140 141 } 142 143 }; 144 145 jQuery(document).ready(function($) { 146 SCAPE.pageHeader.init(); 147 }); 148 149})(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.