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

"use strict";

UI.component('cover', {

    defaults: {
        automute : true
    },

    boot: function() {

        // auto init
        UI.ready(function(context) {

            UI.$('[data-uk-cover]', context).each(function(){

                var ele = UI.$(this);

                if(!ele.data('cover')) {
                    var plugin = UI.cover(ele, UI.Utils.options(ele.attr('data-uk-cover')));
                }
            });
        });
    },

    init: function() {

        this.parent = this.element.parent();

        UI.$win.on('load resize orientationchange', UI.Utils.debounce(function(){
            this.check();
        }.bind(this), 100));

        this.on('display.uk.check', function(e) {
            if (this.element.is(':visible')) this.check();
        }.bind(this));

        this.check();

        if (this.element.is('iframe') && this.options.automute) {

            var src = this.element.attr('src');

            this.element.attr('src', '').on('load', function(){
                this.contentWindow.postMessage('{ "event": "command", "func": "mute", "method":"setVolume", "value":0}', '*');
            }).attr('src', [src, (src.indexOf('?') > -1 ? '&':'?'), 'enablejsapi=1&api=1'].join(''));
        }
    },

    check: function() {

        this.element.css({ width  : '', height : '' });

        this.dimension = {w: this.element.width(), h: this.element.height()};

        if (this.element.attr('width') && !isNaN(this.element.attr('width'))) {
            this.dimension.w = this.element.attr('width');
        }

        if (this.element.attr('height') && !isNaN(this.element.attr('height'))) {
            this.dimension.h = this.element.attr('height');
        }

        this.ratio = this.dimension.w / this.dimension.h;

        var w = this.parent.width(), h = this.parent.height(), width, height;

        // if element height < parent height (gap underneath)
        if ((w / this.ratio) < h) {

            width  = Math.ceil(h * this.ratio);
            height = h;

        // element width < parent width (gap to right)
        } else {

            width  = w;
            height = Math.ceil(w / this.ratio);
        }

        this.element.css({ width  : width, height : height });
    }
});

})(UIkit);