1/*! lg-fullscreen - v1.0.0 - 2016-09-20
2* http://sachinchoolur.github.io/lightGallery
3* Copyright (c) 2016 Sachin N; Licensed GPLv3 */
4
5(function (root, factory) {
6  if (typeof define === 'function' && define.amd) {
7    // AMD. Register as an anonymous module unless amdModuleId is set
8    define([], function () {
9      return (factory());
10    });
11  } else if (typeof exports === 'object') {
12    // Node. Does not work with strict CommonJS, but
13    // only CommonJS-like environments that support module.exports,
14    // like Node.
15    module.exports = factory();
16  } else {
17    factory();
18  }
19}(this, function () {
20
21(function($, window, document, undefined) {
22
23    'use strict';
24
25    var defaults = {
26        fullScreen: true
27    };
28
29    var Fullscreen = function(element) {
30
31        // get lightGallery core plugin data
32        this.core = $(element).data('lightGallery');
33
34        this.$el = $(element);
35
36        // extend module defalut settings with lightGallery core settings
37        this.core.s = $.extend({}, defaults, this.core.s);
38
39        this.init();
40
41        return this;
42    };
43
44    Fullscreen.prototype.init = function() {
45        var fullScreen = '';
46        if (this.core.s.fullScreen) {
47
48            // check for fullscreen browser support
49            if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&
50                !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {
51                return;
52            } else {
53                fullScreen = '<span class="lg-fullscreen lg-icon"></span>';
54                this.core.$outer.find('.lg-toolbar').append(fullScreen);
55                this.fullScreen();
56            }
57        }
58    };
59
60    Fullscreen.prototype.requestFullscreen = function() {
61        var el = document.documentElement;
62        if (el.requestFullscreen) {
63            el.requestFullscreen();
64        } else if (el.msRequestFullscreen) {
65            el.msRequestFullscreen();
66        } else if (el.mozRequestFullScreen) {
67            el.mozRequestFullScreen();
68        } else if (el.webkitRequestFullscreen) {
69            el.webkitRequestFullscreen();
70        }
71    };
72
73    Fullscreen.prototype.exitFullscreen = function() {
74        if (document.exitFullscreen) {
75            document.exitFullscreen();
76        } else if (document.msExitFullscreen) {
77            document.msExitFullscreen();
78        } else if (document.mozCancelFullScreen) {
79            document.mozCancelFullScreen();
80        } else if (document.webkitExitFullscreen) {
81            document.webkitExitFullscreen();
82        }
83    };
84
85    // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
86    Fullscreen.prototype.fullScreen = function() {
87        var _this = this;
88
89        $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() {
90            _this.core.$outer.toggleClass('lg-fullscreen-on');
91        });
92
93        this.core.$outer.find('.lg-fullscreen').on('click.lg', function() {
94            if (!document.fullscreenElement &&
95                !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {
96                _this.requestFullscreen();
97            } else {
98                _this.exitFullscreen();
99            }
100        });
101
102    };
103
104    Fullscreen.prototype.destroy = function() {
105
106        // exit from fullscreen if activated
107        this.exitFullscreen();
108
109        $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');
110    };
111
112    $.fn.lightGallery.modules.fullscreen = Fullscreen;
113
114})(jQuery, window, document);
115
116}));
117