/*

Forty by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)

*/

(function($) {

skel.breakpoints({
        xlarge: '(max-width: 1680px)',
        large: '(max-width: 1280px)',
        medium: '(max-width: 980px)',
        small: '(max-width: 736px)',
        xsmall: '(max-width: 480px)',
        xxsmall: '(max-width: 360px)'
});
/**
 * Applies parallax scrolling to an element's background image.
 * @return {jQuery} jQuery object.
 */
$.fn._parallax = (skel.vars.browser == 'ie' || skel.vars.browser == 'edge' || skel.vars.mobile) ? function() { return $(this) } : function(intensity) {
        var     $window = $(window),
                $this = $(this);
        if (this.length == 0 || intensity === 0)
                return $this;
        if (this.length > 1) {
                for (var i=0; i < this.length; i++)
                        $(this[i])._parallax(intensity);
                return $this;
        }
        if (!intensity)
                intensity = 0.25;
        $this.each(function() {
                var $t = $(this),
                        on, off;
                on = function() {
                        $t.css('background-position', 'center 100%, center 100%, center 0px');
                        $window
                                .on('scroll._parallax', function() {
                                        var pos = parseInt($window.scrollTop()) - parseInt($t.position().top);
                                        $t.css('background-position', 'center ' + (pos * (-1 * intensity)) + 'px');
                                });
                };
                off = function() {
                        $t
                                .css('background-position', '');
                        $window
                                .off('scroll._parallax');
                };
                skel.on('change', function() {
                        if (skel.breakpoint('medium').active)
                                (off)();
                        else
                                (on)();
                });
        });
        $window
                .off('load._parallax resize._parallax')
                .on('load._parallax resize._parallax', function() {
                        $window.trigger('scroll');
                });
        return $(this);
};
$(function() {
        var     $window = $(window),
                $body = $('body'),
                $wrapper = $('#wrapper'),
                $header = $('#header'),
                $banner = $('#banner');
        // Disable animations/transitions until the page has loaded.
                $body.addClass('is-loading');
                $window.on('load pageshow', function() {
                        window.setTimeout(function() {
                                $body.removeClass('is-loading');
                        }, 100);
                });
        // Clear transitioning state on unload/hide.
                $window.on('unload pagehide', function() {
                        window.setTimeout(function() {
                                $('.is-transitioning').removeClass('is-transitioning');
                        }, 250);
                });
        // Fix: Enable IE-only tweaks.
                if (skel.vars.browser == 'ie' || skel.vars.browser == 'edge')
                        $body.addClass('is-ie');
        // Fix: Placeholder polyfill.
                $('form').placeholder();
        // Prioritize "important" elements on medium.
                skel.on('+medium -medium', function() {
                        $.prioritize(
                                '.important\\28 medium\\29',
                                skel.breakpoint('medium').active
                        );
                });
        // Scrolly.
                $('.scrolly').scrolly({
                        offset: function() {
                                return $header.height() - 2;
                        }
                });
        // Tiles.
                var $tiles = $('.tiles > article');
                $tiles.each(function() {
                        var $this = $(this),
                                $image = $this.find('.image'), $img = $image.find('img'),
                                $link = $this.find('.link'),
                                x;
                        // Image.
                                // Set image.
                                        $this.css('background-image', 'url(' + $img.attr('src') + ')');
                                // Set position.
                                        if (x = $img.data('position'))
                                                $image.css('background-position', x);
                                // Hide original.
                                        $image.hide();
                        // Link.
                                if ($link.length > 0) {
                                        $x = $link.clone()
                                                .text('')
                                                .addClass('primary')
                                                .appendTo($this);
                                        $link = $link.add($x);
                                        $link.on('click', function(event) {
                                                var href = $link.attr('href');
                                                // Prevent default.
                                                        event.stopPropagation();
                                                        event.preventDefault();
                                                // Start transitioning.
                                                        $this.addClass('is-transitioning');
                                                        $wrapper.addClass('is-transitioning');
                                                // Redirect.
                                                        window.setTimeout(function() {
                                                                if ($link.attr('target') == '_blank')
                                                                        window.open(href);
                                                                else
                                                                        location.href = href;
                                                        }, 500);
                                        });
                                }
                });
        // Header.
                if (skel.vars.IEVersion < 9)
                        $header.removeClass('alt');
                if ($banner.length > 0
                &&      $header.hasClass('alt')) {
                        $window.on('resize', function() {
                                $window.trigger('scroll');
                        });
                        $window.on('load', function() {
                                $banner.scrollex({
                                        bottom:         $header.height() + 10,
                                        terminate:      function() { $header.removeClass('alt'); },
                                        enter:          function() { $header.addClass('alt'); },
                                        leave:          function() { $header.removeClass('alt'); $header.addClass('reveal'); }
                                });
                                window.setTimeout(function() {
                                        $window.triggerHandler('scroll');
                                }, 100);
                        });
                }
        // Banner.
                $banner.each(function() {
                        var $this = $(this),
                                $image = $this.find('.image'), $img = $image.find('img');
                        // Parallax.
                                $this._parallax(0.275);
                        // Image.
                                if ($image.length > 0) {
                                        // Set image.
                                                $this.css('background-image', 'url(' + $img.attr('src') + ')');
                                        // Hide original.
                                                $image.hide();
                                }
                });
        // Menu.
                var $menu = $('#menu'),
                        $menuInner;
                $menu.wrapInner('<div class="inner"></div>');
                $menuInner = $menu.children('.inner');
                $menu._locked = false;
                $menu._lock = function() {
                        if ($menu._locked)
                                return false;
                        $menu._locked = true;
                        window.setTimeout(function() {
                                $menu._locked = false;
                        }, 350);
                        return true;
                };
                $menu._show = function() {
                        if ($menu._lock())
                                $body.addClass('is-menu-visible');
                };
                $menu._hide = function() {
                        if ($menu._lock())
                                $body.removeClass('is-menu-visible');
                };
                $menu._toggle = function() {
                        if ($menu._lock())
                                $body.toggleClass('is-menu-visible');
                };
                $menuInner
                        .on('click', function(event) {
                                event.stopPropagation();
                        })
                        .on('click', 'a', function(event) {
                                var href = $(this).attr('href');
                                event.preventDefault();
                                event.stopPropagation();
                                // Hide.
                                        $menu._hide();
                                // Redirect.
                                        window.setTimeout(function() {
                                                window.location.href = href;
                                        }, 250);
                        });
                $menu
                        .appendTo($body)
                        .on('click', function(event) {
                                event.stopPropagation();
                                event.preventDefault();
                                $body.removeClass('is-menu-visible');
                        })
                        .append('<a class="close" href="#menu">Close</a>');
                $body
                        .on('click', 'a[href="#menu"]', function(event) {
                                event.stopPropagation();
                                event.preventDefault();
                                // Toggle.
                                        $menu._toggle();
                        })
                        .on('click', function(event) {
                                // Hide.
                                        $menu._hide();
                        })
                        .on('keydown', function(event) {
                                // Hide on escape.
                                        if (event.keyCode == 27)
                                                $menu._hide();
                        });
});

})(jQuery);