diff --git a/assets/js/winter.js b/assets/js/winter.js new file mode 100644 index 0000000..549cfcb --- /dev/null +++ b/assets/js/winter.js @@ -0,0 +1,300 @@ +/* + Multiverse by HTML5 UP + html5up.net | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +*/ + +(function($) { + + var $window = $(window), + $body = $('body'), + $wrapper = $('#wrapper'); + + // Breakpoints. + breakpoints({ + xlarge: [ '1281px', '1680px' ], + large: [ '981px', '1280px' ], + medium: [ '737px', '980px' ], + small: [ '481px', '736px' ], + xsmall: [ null, '480px' ] + }); + + // Hack: Enable IE workarounds. + if (browser.name == 'ie') + $body.addClass('ie'); + + // Touch? + if (browser.mobile) + $body.addClass('touch'); + + // Transitions supported? + if (browser.canUse('transition')) { + + // Play initial animations on page load. + $window.on('load', function() { + window.setTimeout(function() { + $body.removeClass('is-preload'); + }, 100); + }); + + // Prevent transitions/animations on resize. + var resizeTimeout; + + $window.on('resize', function() { + + window.clearTimeout(resizeTimeout); + + $body.addClass('is-resizing'); + + resizeTimeout = window.setTimeout(function() { + $body.removeClass('is-resizing'); + }, 100); + + }); + + } + + // Scroll back to top. + $window.scrollTop(0); + + // Panels. + var $panels = $('.panel'); + + $panels.each(function() { + + var $this = $(this), + $toggles = $('[href="#' + $this.attr('id') + '"]'), + $closer = $('
').appendTo($this); + + // Closer. + $closer + .on('click', function(event) { + $this.trigger('---hide'); + }); + + // Events. + $this + .on('click', function(event) { + event.stopPropagation(); + }) + .on('---toggle', function() { + + if ($this.hasClass('active')) + $this.triggerHandler('---hide'); + else + $this.triggerHandler('---show'); + + }) + .on('---show', function() { + + // Hide other content. + if ($body.hasClass('content-active')) + $panels.trigger('---hide'); + + // Activate content, toggles. + $this.addClass('active'); + $toggles.addClass('active'); + + // Activate body. + $body.addClass('content-active'); + + }) + .on('---hide', function() { + + // Deactivate content, toggles. + $this.removeClass('active'); + $toggles.removeClass('active'); + + // Deactivate body. + $body.removeClass('content-active'); + + }); + + // Toggles. + $toggles + .removeAttr('href') + .css('cursor', 'pointer') + .on('click', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + $this.trigger('---toggle'); + + }); + + }); + + // Global events. + $body + .on('click', function(event) { + + if ($body.hasClass('content-active')) { + + event.preventDefault(); + event.stopPropagation(); + + $panels.trigger('---hide'); + + } + + }); + + $window + .on('keyup', function(event) { + + if (event.keyCode == 27 + && $body.hasClass('content-active')) { + + event.preventDefault(); + event.stopPropagation(); + + $panels.trigger('---hide'); + + } + + }); + + // Header. + var $header = $('#header'); + + // Links. + $header.find('a').each(function() { + + var $this = $(this), + href = $this.attr('href'); + + // Internal link? Skip. + if (!href + || href.charAt(0) == '#') + return; + + // Redirect on click. + $this + .removeAttr('href') + .css('cursor', 'pointer') + .on('click', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + window.location.href = href; + + }); + + }); + + // Footer. + var $footer = $('#footer'); + + // Copyright. + // This basically just moves the copyright line to the end of the *last* sibling of its current parent + // when the "medium" breakpoint activates, and moves it back when it deactivates. + $footer.find('.copyright').each(function() { + + var $this = $(this), + $parent = $this.parent(), + $lastParent = $parent.parent().children().last(); + + breakpoints.on('<=medium', function() { + $this.appendTo($lastParent); + }); + + breakpoints.on('>medium', function() { + $this.appendTo($parent); + }); + + }); + + // Main. + var $main = $('#main'); + + // Thumbs. + $main.children('.thumb').each(function() { + + var $this = $(this), + $image = $this.find('.image'), $image_img = $image.children('img'), + x; + + // No image? Bail. + if ($image.length == 0) + return; + + // Image. + // This sets the background of the "image" to the image pointed to by its child + //