/*! UIkit 2.27.2 | www.getuikit.com | © 2014 YOOtheme | MIT License */ (function(UI) {

"use strict";

UI.component('smoothScroll', {

    boot: function() {

        // init code
        UI.$html.on('click.smooth-scroll.uikit', '[data-uk-smooth-scroll]', function(e) {
            var ele = UI.$(this);

            if (!ele.data('smoothScroll')) {
                var obj = UI.smoothScroll(ele, UI.Utils.options(ele.attr('data-uk-smooth-scroll')));
                ele.trigger('click');
            }

            return false;
        });
    },

    init: function() {

        var $this = this;

        this.on('click', function(e) {
            e.preventDefault();
            scrollToElement(UI.$(this.hash).length ? UI.$(this.hash) : UI.$('body'), $this.options);
        });
    }
});

function scrollToElement(ele, options) {

    options = UI.$.extend({
        duration: 1000,
        transition: 'easeOutExpo',
        offset: 0,
        complete: function(){}
    }, options);

    // get / set parameters
    var target    = ele.offset().top - options.offset,
        docheight = UI.$doc.height(),
        winheight = window.innerHeight;

    if ((target + winheight) > docheight) {
        target = docheight - winheight;
    }

    // animate to target, fire callback when done
    UI.$('html,body').stop().animate({scrollTop: target}, options.duration, options.transition).promise().done(options.complete);
}

UI.Utils.scrollToElement = scrollToElement;

if (!UI.$.easing.easeOutExpo) {
    UI.$.easing.easeOutExpo = function(x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; };
}

})(UIkit);