/*! lg-fullscreen - v1.0.1 - 2016-09-30

(function (root, factory) {

if (typeof define === 'function' && define.amd) {
  // AMD. Register as an anonymous module unless amdModuleId is set
  define(['jquery'], function (a0) {
    return (factory(a0));
  });
} else if (typeof exports === 'object') {
  // Node. Does not work with strict CommonJS, but
  // only CommonJS-like environments that support module.exports,
  // like Node.
  module.exports = factory(require('jquery'));
} else {
  factory(jQuery);
}

}(this, function ($) {

(function() {

'use strict';

var defaults = {
    fullScreen: true
};

var Fullscreen = function(element) {

    // get lightGallery core plugin data
    this.core = $(element).data('lightGallery');

    this.$el = $(element);

    // extend module defalut settings with lightGallery core settings
    this.core.s = $.extend({}, defaults, this.core.s);

    this.init();

    return this;
};

Fullscreen.prototype.init = function() {
    var fullScreen = '';
    if (this.core.s.fullScreen) {

        // check for fullscreen browser support
        if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&
            !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {
            return;
        } else {
            fullScreen = '<span class="lg-fullscreen lg-icon"></span>';
            this.core.$outer.find('.lg-toolbar').append(fullScreen);
            this.fullScreen();
        }
    }
};

Fullscreen.prototype.requestFullscreen = function() {
    var el = document.documentElement;
    if (el.requestFullscreen) {
        el.requestFullscreen();
    } else if (el.msRequestFullscreen) {
        el.msRequestFullscreen();
    } else if (el.mozRequestFullScreen) {
        el.mozRequestFullScreen();
    } else if (el.webkitRequestFullscreen) {
        el.webkitRequestFullscreen();
    }
};

// jadams, 2019-01-21: Call of ExitFullscreen fails on Crome > 71
// SEE: https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen
// SEE: https://developer.mozilla.org/en-US/docs/Web/API/Document/exitFullscreen/  
// SEE: https://stackoverflow.com/questions/44797772/old-js-fullscreen-code-no-longer-working-requestfullscreen-is-not-a-function
// SEE: https://github.com/jpilfold/ngx-image-viewer/issues/23
// TODO: Fix
Fullscreen.prototype.exitFullscreen = function() {
    if (document.exitFullscreen) {
        document.exitFullscreen();
    } else if (document.msExitFullscreen) {
        document.msExitFullscreen();
    } else if (document.mozCancelFullScreen) {
        document.mozCancelFullScreen();
    } else if (document.webkitExitFullscreen) {
        document.webkitExitFullscreen();
    }
};

// https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
Fullscreen.prototype.fullScreen = function() {
    var _this = this;

    $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() {
        _this.core.$outer.toggleClass('lg-fullscreen-on');
    });

    this.core.$outer.find('.lg-fullscreen').on('click.lg', function() {
        if (!document.fullscreenElement &&
            !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {
            _this.requestFullscreen();
        } else {
            _this.exitFullscreen();
        }
    });

};

Fullscreen.prototype.destroy = function() {

    // exit from fullscreen if activated
    this.exitFullscreen();

    $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');
};

$.fn.lightGallery.modules.fullscreen = Fullscreen;

})();

}));