/* Faction by Pixelarity pixelarity.com | hello@pixelarity.com License: pixelarity.com/license */ var settings = { banner: { // Indicators (= the clickable dots at the bottom). indicators: true, // Transition speed (in ms) // For timing purposes only. It *must* match the transition speed of "#banner > article". speed: 1500, // Transition delay (in ms) delay: 4000 } }; (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)' }); /** * Custom banner slider for Slate. * @return {jQuery} jQuery object. */ $.fn._slider = function(options) { var $window = $(window), $this = $(this); if (this.length == 0) return $this; if (this.length > 1) { for (var i=0; i < this.length; i++) $(this[i])._slider(options); return $this; } // Vars. var current = 0, pos = 0, lastPos = 0, slides = [], indicators = [], $indicators, $slides = $this.children('article'), intervalId, isLocked = false, i = 0; // Turn off indicators if we only have one slide. if ($slides.length == 1) options.indicators = false; // Functions. $this._switchTo = function(x, stop) { if (isLocked || pos == x) return; isLocked = true; if (stop) window.clearInterval(intervalId); // Update positions. lastPos = pos; pos = x; // Hide last slide. slides[lastPos].removeClass('top'); if (options.indicators) indicators[lastPos].removeClass('visible'); // Show new slide. slides[pos].addClass('visible').addClass('top'); if (options.indicators) indicators[pos].addClass('visible'); // Finish hiding last slide after a short delay. window.setTimeout(function() { slides[lastPos].addClass('instant').removeClass('visible'); window.setTimeout(function() { slides[lastPos].removeClass('instant'); isLocked = false; }, 100); }, options.speed); }; // Indicators. if (options.indicators) $indicators = $('').appendTo($this); // Slides. $slides .each(function() { var $slide = $(this), $img = $slide.find('img'); // Slide. $slide .css('background-image', 'url("' + $img.attr('src') + '")') .css('background-position', ($slide.data('position') ? $slide.data('position') : 'center')); // Add to slides. slides.push($slide); // Indicators. if (options.indicators) { var $indicator_li = $('
  • ' + i + '
  • ').appendTo($indicators); // Indicator. $indicator_li .data('index', i) .on('click', function() { $this._switchTo($(this).data('index'), true); }); // Add to indicators. indicators.push($indicator_li); } i++; }); // Initial slide. slides[pos].addClass('visible').addClass('top'); if (options.indicators) indicators[pos].addClass('visible'); // Bail if we only have a single slide. if (slides.length == 1) return; // Main loop. intervalId = window.setInterval(function() { current++; if (current >= slides.length) current = 0; $this._switchTo(current); }, options.delay); }; $(function() { var $window = $(window), $banner = $('#banner'), $header = $('#header'), $body = $('body'); // Disable animations/transitions until the page has loaded. $body.addClass('is-loading'); $window.on('load', function() { window.setTimeout(function() { $body.removeClass('is-loading'); }, 100); }); // Fix: Placeholder polyfill. $('form') .placeholder(); // Prioritize "important" elements on medium. skel.on('+medium -medium', function() { $.prioritize( '.important\\28 medium\\29', skel.breakpoint('medium').active ); }); // Dropdowns. $('#nav > ul') .dropotron({ alignment: 'right', hideDelay: 350 }); // Slider. $banner ._slider(settings.banner); // Menu. $('Menu') .appendTo($header); $('') .appendTo($body) .panel({ delay: 500, hideOnClick: true, hideOnSwipe: true, resetScroll: true, resetForms: true, side: 'right' }); if (skel.vars.os == 'wp' && skel.vars.osVersion < 10) $('#navPanel').css('transition', 'none'); }); })(jQuery);