diff --git a/public/lightgallery/js/lg-autoplay.js b/public/lightgallery/js/lg-autoplay.js
new file mode 100644
index 0000000..d1e4683
--- /dev/null
+++ b/public/lightgallery/js/lg-autoplay.js
@@ -0,0 +1,206 @@
+/*! lg-autoplay - v1.0.4 - 2017-03-28
+* http://sachinchoolur.github.io/lightGallery
+* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
+
+(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 = {
+ autoplay: false,
+ pause: 5000,
+ progressBar: true,
+ fourceAutoplay: false,
+ autoplayControls: true,
+ appendAutoplayControlsTo: '.lg-toolbar'
+ };
+
+ /**
+ * Creates the autoplay plugin.
+ * @param {object} element - lightGallery element
+ */
+ var Autoplay = function(element) {
+
+ this.core = $(element).data('lightGallery');
+
+ this.$el = $(element);
+
+ // Execute only if items are above 1
+ if (this.core.$items.length < 2) {
+ return false;
+ }
+
+ this.core.s = $.extend({}, defaults, this.core.s);
+ this.interval = false;
+
+ // Identify if slide happened from autoplay
+ this.fromAuto = true;
+
+ // Identify if autoplay canceled from touch/drag
+ this.canceledOnTouch = false;
+
+ // save fourceautoplay value
+ this.fourceAutoplayTemp = this.core.s.fourceAutoplay;
+
+ // do not allow progress bar if browser does not support css3 transitions
+ if (!this.core.doCss()) {
+ this.core.s.progressBar = false;
+ }
+
+ this.init();
+
+ return this;
+ };
+
+ Autoplay.prototype.init = function() {
+ var _this = this;
+
+ // append autoplay controls
+ if (_this.core.s.autoplayControls) {
+ _this.controls();
+ }
+
+ // Create progress bar
+ if (_this.core.s.progressBar) {
+ _this.core.$outer.find('.lg').append('
');
+ }
+
+ // set progress
+ _this.progress();
+
+ // Start autoplay
+ if (_this.core.s.autoplay) {
+ _this.$el.one('onSlideItemLoad.lg.tm', function() {
+ _this.startlAuto();
+ });
+ }
+
+ // cancel interval on touchstart and dragstart
+ _this.$el.on('onDragstart.lg.tm touchstart.lg.tm', function() {
+ if (_this.interval) {
+ _this.cancelAuto();
+ _this.canceledOnTouch = true;
+ }
+ });
+
+ // restore autoplay if autoplay canceled from touchstart / dragstart
+ _this.$el.on('onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm', function() {
+ if (!_this.interval && _this.canceledOnTouch) {
+ _this.startlAuto();
+ _this.canceledOnTouch = false;
+ }
+ });
+
+ };
+
+ Autoplay.prototype.progress = function() {
+
+ var _this = this;
+ var _$progressBar;
+ var _$progress;
+
+ _this.$el.on('onBeforeSlide.lg.tm', function() {
+
+ // start progress bar animation
+ if (_this.core.s.progressBar && _this.fromAuto) {
+ _$progressBar = _this.core.$outer.find('.lg-progress-bar');
+ _$progress = _this.core.$outer.find('.lg-progress');
+ if (_this.interval) {
+ _$progress.removeAttr('style');
+ _$progressBar.removeClass('lg-start');
+ setTimeout(function() {
+ _$progress.css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');
+ _$progressBar.addClass('lg-start');
+ }, 20);
+ }
+ }
+
+ // Remove setinterval if slide is triggered manually and fourceautoplay is false
+ if (!_this.fromAuto && !_this.core.s.fourceAutoplay) {
+ _this.cancelAuto();
+ }
+
+ _this.fromAuto = false;
+
+ });
+ };
+
+ // Manage autoplay via play/stop buttons
+ Autoplay.prototype.controls = function() {
+ var _this = this;
+ var _html = '';
+
+ // Append autoplay controls
+ $(this.core.s.appendAutoplayControlsTo).append(_html);
+
+ _this.core.$outer.find('.lg-autoplay-button').on('click.lg', function() {
+ if ($(_this.core.$outer).hasClass('lg-show-autoplay')) {
+ _this.cancelAuto();
+ _this.core.s.fourceAutoplay = false;
+ } else {
+ if (!_this.interval) {
+ _this.startlAuto();
+ _this.core.s.fourceAutoplay = _this.fourceAutoplayTemp;
+ }
+ }
+ });
+ };
+
+ // Autostart gallery
+ Autoplay.prototype.startlAuto = function() {
+ var _this = this;
+
+ _this.core.$outer.find('.lg-progress').css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');
+ _this.core.$outer.addClass('lg-show-autoplay');
+ _this.core.$outer.find('.lg-progress-bar').addClass('lg-start');
+
+ _this.interval = setInterval(function() {
+ if (_this.core.index + 1 < _this.core.$items.length) {
+ _this.core.index++;
+ } else {
+ _this.core.index = 0;
+ }
+
+ _this.fromAuto = true;
+ _this.core.slide(_this.core.index, false, false, 'next');
+ }, _this.core.s.speed + _this.core.s.pause);
+ };
+
+ // cancel Autostart
+ Autoplay.prototype.cancelAuto = function() {
+ clearInterval(this.interval);
+ this.interval = false;
+ this.core.$outer.find('.lg-progress').removeAttr('style');
+ this.core.$outer.removeClass('lg-show-autoplay');
+ this.core.$outer.find('.lg-progress-bar').removeClass('lg-start');
+ };
+
+ Autoplay.prototype.destroy = function() {
+
+ this.cancelAuto();
+ this.core.$outer.find('.lg-progress-bar').remove();
+ };
+
+ $.fn.lightGallery.modules.autoplay = Autoplay;
+
+})();
+
+
+}));
diff --git a/public/lightgallery/js/lg-autoplay.min.js b/public/lightgallery/js/lg-autoplay.min.js
new file mode 100644
index 0000000..d8637d1
--- /dev/null
+++ b/public/lightgallery/js/lg-autoplay.min.js
@@ -0,0 +1,4 @@
+/*! lg-autoplay - v1.0.4 - 2017-03-28
+* http://sachinchoolur.github.io/lightGallery
+* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={autoplay:!1,pause:5e3,progressBar:!0,fourceAutoplay:!1,autoplayControls:!0,appendAutoplayControlsTo:".lg-toolbar"},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),!(this.core.$items.length<2)&&(this.core.s=a.extend({},b,this.core.s),this.interval=!1,this.fromAuto=!0,this.canceledOnTouch=!1,this.fourceAutoplayTemp=this.core.s.fourceAutoplay,this.core.doCss()||(this.core.s.progressBar=!1),this.init(),this)};c.prototype.init=function(){var a=this;a.core.s.autoplayControls&&a.controls(),a.core.s.progressBar&&a.core.$outer.find(".lg").append(''),a.progress(),a.core.s.autoplay&&a.$el.one("onSlideItemLoad.lg.tm",function(){a.startlAuto()}),a.$el.on("onDragstart.lg.tm touchstart.lg.tm",function(){a.interval&&(a.cancelAuto(),a.canceledOnTouch=!0)}),a.$el.on("onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm",function(){!a.interval&&a.canceledOnTouch&&(a.startlAuto(),a.canceledOnTouch=!1)})},c.prototype.progress=function(){var a,b,c=this;c.$el.on("onBeforeSlide.lg.tm",function(){c.core.s.progressBar&&c.fromAuto&&(a=c.core.$outer.find(".lg-progress-bar"),b=c.core.$outer.find(".lg-progress"),c.interval&&(b.removeAttr("style"),a.removeClass("lg-start"),setTimeout(function(){b.css("transition","width "+(c.core.s.speed+c.core.s.pause)+"ms ease 0s"),a.addClass("lg-start")},20))),c.fromAuto||c.core.s.fourceAutoplay||c.cancelAuto(),c.fromAuto=!1})},c.prototype.controls=function(){var b=this,c='';a(this.core.s.appendAutoplayControlsTo).append(c),b.core.$outer.find(".lg-autoplay-button").on("click.lg",function(){a(b.core.$outer).hasClass("lg-show-autoplay")?(b.cancelAuto(),b.core.s.fourceAutoplay=!1):b.interval||(b.startlAuto(),b.core.s.fourceAutoplay=b.fourceAutoplayTemp)})},c.prototype.startlAuto=function(){var a=this;a.core.$outer.find(".lg-progress").css("transition","width "+(a.core.s.speed+a.core.s.pause)+"ms ease 0s"),a.core.$outer.addClass("lg-show-autoplay"),a.core.$outer.find(".lg-progress-bar").addClass("lg-start"),a.interval=setInterval(function(){a.core.index+1',this.core.$outer.find(".lg-toolbar").append(a),this.fullScreen()}},c.prototype.requestFullscreen=function(){var a=document.documentElement;a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()},c.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},c.prototype.fullScreen=function(){var b=this;a(document).on("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg",function(){b.core.$outer.toggleClass("lg-fullscreen-on")}),this.core.$outer.find(".lg-fullscreen").on("click.lg",function(){document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?b.exitFullscreen():b.requestFullscreen()})},c.prototype.destroy=function(){this.exitFullscreen(),a(document).off("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg")},a.fn.lightGallery.modules.fullscreen=c}()});
\ No newline at end of file
diff --git a/public/lightgallery/js/lg-hash.js b/public/lightgallery/js/lg-hash.js
new file mode 100644
index 0000000..13e9397
--- /dev/null
+++ b/public/lightgallery/js/lg-hash.js
@@ -0,0 +1,101 @@
+/*! lg-hash - v1.0.4 - 2017-12-20
+* http://sachinchoolur.github.io/lightGallery
+* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
+
+(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 = {
+ hash: true
+ };
+
+ var Hash = function(element) {
+
+ this.core = $(element).data('lightGallery');
+
+ this.core.s = $.extend({}, defaults, this.core.s);
+
+ if (this.core.s.hash) {
+ this.oldHash = window.location.hash;
+ this.init();
+ }
+
+ return this;
+ };
+
+ Hash.prototype.init = function() {
+ var _this = this;
+ var _hash;
+
+ // Change hash value on after each slide transition
+ _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex, index) {
+ if (history.replaceState) {
+ history.replaceState(null, null, window.location.pathname + window.location.search + '#lg=' + _this.core.s.galleryId + '&slide=' + index);
+ } else {
+ window.location.hash = 'lg=' + _this.core.s.galleryId + '&slide=' + index;
+ }
+ });
+
+ // Listen hash change and change the slide according to slide value
+ $(window).on('hashchange.lg.hash', function() {
+ _hash = window.location.hash;
+ var _idx = parseInt(_hash.split('&slide=')[1], 10);
+
+ // it galleryId doesn't exist in the url close the gallery
+ if ((_hash.indexOf('lg=' + _this.core.s.galleryId) > -1)) {
+ _this.core.slide(_idx, false, false);
+ } else if (_this.core.lGalleryOn) {
+ _this.core.destroy();
+ }
+
+ });
+ };
+
+ Hash.prototype.destroy = function() {
+
+ if (!this.core.s.hash) {
+ return;
+ }
+
+ // Reset to old hash value
+ if (this.oldHash && this.oldHash.indexOf('lg=' + this.core.s.galleryId) < 0) {
+ if (history.replaceState) {
+ history.replaceState(null, null, this.oldHash);
+ } else {
+ window.location.hash = this.oldHash;
+ }
+ } else {
+ if (history.replaceState) {
+ history.replaceState(null, document.title, window.location.pathname + window.location.search);
+ } else {
+ window.location.hash = '';
+ }
+ }
+
+ this.core.$el.off('.lg.hash');
+
+ };
+
+ $.fn.lightGallery.modules.hash = Hash;
+
+})();
+
+
+}));
diff --git a/public/lightgallery/js/lg-hash.min.js b/public/lightgallery/js/lg-hash.min.js
new file mode 100644
index 0000000..a4bdcbd
--- /dev/null
+++ b/public/lightgallery/js/lg-hash.min.js
@@ -0,0 +1,4 @@
+/*! lg-hash - v1.0.4 - 2017-12-20
+* http://sachinchoolur.github.io/lightGallery
+* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={hash:!0},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.core.s.hash&&(this.oldHash=window.location.hash,this.init()),this};c.prototype.init=function(){var b,c=this;c.core.$el.on("onAfterSlide.lg.tm",function(a,b,d){history.replaceState?history.replaceState(null,null,window.location.pathname+window.location.search+"#lg="+c.core.s.galleryId+"&slide="+d):window.location.hash="lg="+c.core.s.galleryId+"&slide="+d}),a(window).on("hashchange.lg.hash",function(){b=window.location.hash;var a=parseInt(b.split("&slide=")[1],10);b.indexOf("lg="+c.core.s.galleryId)>-1?c.core.slide(a,!1,!1):c.core.lGalleryOn&&c.core.destroy()})},c.prototype.destroy=function(){this.core.s.hash&&(this.oldHash&&this.oldHash.indexOf("lg="+this.core.s.galleryId)<0?history.replaceState?history.replaceState(null,null,this.oldHash):window.location.hash=this.oldHash:history.replaceState?history.replaceState(null,document.title,window.location.pathname+window.location.search):window.location.hash="",this.core.$el.off(".lg.hash"))},a.fn.lightGallery.modules.hash=c}()});
\ No newline at end of file
diff --git a/public/lightgallery/js/lg-pager.js b/public/lightgallery/js/lg-pager.js
new file mode 100644
index 0000000..8097e82
--- /dev/null
+++ b/public/lightgallery/js/lg-pager.js
@@ -0,0 +1,105 @@
+/*! lg-pager - v1.0.2 - 2017-01-22
+* http://sachinchoolur.github.io/lightGallery
+* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
+
+(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 = {
+ pager: false
+ };
+
+ var Pager = function(element) {
+
+ this.core = $(element).data('lightGallery');
+
+ this.$el = $(element);
+ this.core.s = $.extend({}, defaults, this.core.s);
+ if (this.core.s.pager && this.core.$items.length > 1) {
+ this.init();
+ }
+
+ return this;
+ };
+
+ Pager.prototype.init = function() {
+ var _this = this;
+ var pagerList = '';
+ var $pagerCont;
+ var $pagerOuter;
+ var timeout;
+
+ _this.core.$outer.find('.lg').append('');
+
+ if (_this.core.s.dynamic) {
+ for (var i = 0; i < _this.core.s.dynamicEl.length; i++) {
+ pagerList += '';
+ }
+ } else {
+ _this.core.$items.each(function() {
+
+ if (!_this.core.s.exThumbImage) {
+ pagerList += '';
+ } else {
+ pagerList += '';
+ }
+
+ });
+ }
+
+ $pagerOuter = _this.core.$outer.find('.lg-pager-outer');
+
+ $pagerOuter.html(pagerList);
+
+ $pagerCont = _this.core.$outer.find('.lg-pager-cont');
+ $pagerCont.on('click.lg touchend.lg', function() {
+ var _$this = $(this);
+ _this.core.index = _$this.index();
+ _this.core.slide(_this.core.index, false, true, false);
+ });
+
+ $pagerOuter.on('mouseover.lg', function() {
+ clearTimeout(timeout);
+ $pagerOuter.addClass('lg-pager-hover');
+ });
+
+ $pagerOuter.on('mouseout.lg', function() {
+ timeout = setTimeout(function() {
+ $pagerOuter.removeClass('lg-pager-hover');
+ });
+ });
+
+ _this.core.$el.on('onBeforeSlide.lg.tm', function(e, prevIndex, index) {
+ $pagerCont.removeClass('lg-pager-active');
+ $pagerCont.eq(index).addClass('lg-pager-active');
+ });
+
+ };
+
+ Pager.prototype.destroy = function() {
+
+ };
+
+ $.fn.lightGallery.modules.pager = Pager;
+
+})();
+
+
+}));
diff --git a/public/lightgallery/js/lg-pager.min.js b/public/lightgallery/js/lg-pager.min.js
new file mode 100644
index 0000000..883e355
--- /dev/null
+++ b/public/lightgallery/js/lg-pager.min.js
@@ -0,0 +1,4 @@
+/*! lg-pager - v1.0.2 - 2017-01-22
+* http://sachinchoolur.github.io/lightGallery
+* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={pager:!1},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),this.core.s=a.extend({},b,this.core.s),this.core.s.pager&&this.core.$items.length>1&&this.init(),this};c.prototype.init=function(){var b,c,d,e=this,f="";if(e.core.$outer.find(".lg").append(''),e.core.s.dynamic)for(var g=0;g