Вход Регистрация
Файл: CloudBox-main/CloudBox/admin_assets/js/lightGallery.js
Строк: 870
<?php
/** ==========================================================

* jquery lightGallery.js v1.1.2
* http://sachinchoolur.github.io/lightGallery/
* Released under the Apache License - http://opensource.org/licenses/Apache-2.0  ---- FREE ----

=========================================================/**/
;
(function ($) {
    
"use strict";
    $.
fn.lightGallery = function (options) {
        var 
defaults = {
            
mode'slide',
            
useCSStrue,
            
easing'ease'//'cubic-bezier(0.25, 0, 0.25, 1)',//
            
speed1000,
            
closabletrue,
            
loopfalse,
            
autofalse,
            
pause4000,
            
preload:1,//number of preload slides. will exicute only after the current slide is fully loaded. ex:// you clicked on 4th image and if preload = 1 then 3rd slide and 5th slide will be loaded in the background after the 4th slide is fully loaded.. if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...
            
escKeytrue,
            
relfalse,
            
lang: {
                
allPhotos'All photos'
            
},
            
exThumbImagefalse,
            
indexfalse,
            
thumbnailtrue,
            
captionfalse,
            
captionLinkfalse,
            
descfalse,
            
counterfalse,
            
controlstrue,
            
hideControlOnEndfalse,
            
mobileSrcfalse,
            
mobileSrcMaxWidth640,
            
//touch
            
swipeThreshold50,
            
vimeoColor'CCCCCC',
            
videoAutoplaytrue,
            
videoMaxWidth855,
            
dynamicfalse,
            
//callbacks
            
dynamicEl: [],
            
onOpen: function () {},
            
onSlideBefore: function () {},
            
onSlideAfter: function () {},
            
onSlideNext: function () {},
            
onSlidePrev: function () {},
            
onBeforeClose: function () {},
            
onCloseAfter: function () {}
        },
            
el = $(this),
            
$children,
            
index,
            
lightGalleryOn false,
            
html '<div id="lightGallery-outer"><div id="lightGallery-Gallery"><div id="lightGallery-slider"></div><a id="lightGallery-close" class="close"></a></div></div>',
            
isTouch document.createTouch !== undefined || ('ontouchstart' in window) || ('onmsgesturechange' in window) || navigator.msMaxTouchPoints,
            
$gallery$galleryCont$slider$slide$prev$nextprevIndex$thumb_cont$thumbwindowWidthintervalusingThumb false,
            
aTiming false,
            
aSpeed false;
        var 
settings = $.extend(true, {}, defaultsoptions);
        var 
lightGallery = {
            
init: function () {
                
el.each(function () {
                    var 
$this = $(this);
                    if (
settings.dynamic == true) {
                        
$children settings.dynamicEl;
                        
index 0;
                        
prevIndex index;
                        
setUp.init(index);
                    } else {
                        
$children = $(this).children();
                        
$children.click(function (e) {
                            if (
settings.rel == true && $this.data('rel')) {
                                var 
rel $this.data('rel');
                                
$children = $('[data-rel="' rel '"]').children();
                            } else {
                                
$children $this.children();
                            }
                            
e.preventDefault();
                            
e.stopPropagation();
                            
index $children.index(this);
                            
prevIndex index;
                            
setUp.init(index);
                        });
                    }
                });
            },
        };
        var 
setUp = {
            
init: function () {
                
this.start();
                
this.build();
            },
            
start: function () {
                
this.structure();
                
this.getWidth();
                
this.closeSlide();
            },
            
build: function () {
                
this.autoStart();
                
this.addCaption();
                
this.addDesc(); //description
                
this.counter();
                
this.slideTo();
                
this.buildThumbnail();
                
this.keyPress();
                if(
settings.index) {
                    
this.slide(settings.index);
                }
                else {
                    
this.slide(index);
                }
                
this.touch();
                
this.enableTouch();

                
setTimeout(function () {
                    
$gallery.addClass('opacity');
                }, 
50);
            },
            
structure: function () {
                $(
'body').append(html).addClass('lightGallery');
                
$galleryCont = $('#lightGallery-outer');
                
$gallery = $('#lightGallery-Gallery');
                
$slider $gallery.find('#lightGallery-slider');
                var 
slideList '';
                if (
settings.dynamic == true) {
                    for (var 
0settings.dynamicEl.lengthi++) {
                        
slideList += '<div class="lightGallery-slide"></div>';
                    }
                } else {
                    
$children.each(function () {
                        
slideList += '<div class="lightGallery-slide"></div>';
                    });
                }
                
$slider.append(slideList);
                
$slide $gallery.find('.lightGallery-slide');
            },
            
closeSlide: function () {
                var 
$this this;
                if(
settings.closable) {
                    $(
'.lightGallery-slide')
                        .
on('click', function(event) {
                            if($(
event.target).is('.lightGallery-slide')) {
                                
$this.destroy();
                            }
                        })
                    ;
                }
                $(
'#lightGallery-close').bind('click touchend', function () {
                    
$this.destroy();
                });
            },
            
getWidth: function () {
                var 
resizeWindow = function () {
                    
windowWidth = $(window).width();
                };
                $(
window).bind('resize.lightGallery'resizeWindow());
            },
            
doCss: function () {
                var 
support = function () {
                    var 
transition = ['transition''MozTransition''WebkitTransition''OTransition''msTransition''KhtmlTransition'];
                    var 
root document.documentElement;
                    for (var 
0transition.lengthi++) {
                        if (
transition[iin root.style) {
                            
//cssPrefix = transition[i].replace('Transition', '').toLowerCase();
                            //cssPrefix == 'transition' ? cssPrefix = 'transition' : cssPrefix = ('-'+cssPrefix+'-transition');
                            
return true;
                        }
                    }
                };
                if (
settings.useCSS && support()) {
                    return 
true;
                }
                return 
false;
            },
            
enableTouch: function () {
                var 
$this this;
                if (
isTouch){
                    var 
startCoords = {},
                        
endCoords = {};
                    $(
'body').on('touchstart.lightGallery', function(e) {
                        
endCoords e.originalEvent.targetTouches[0];
                        
startCoords.pageX e.originalEvent.targetTouches[0].pageX;
                        
startCoords.pageY e.originalEvent.targetTouches[0].pageY;
                    });
                    $(
'body').on('touchmove.lightGallery', function(e) {
                        var 
orig e.originalEvent;
                        
endCoords orig.targetTouches[0];
                        
e.preventDefault();
                    });
                    $(
'body').on('touchend.lightGallery', function(e) {
                        var 
distance endCoords.pageX startCoords.pageX,
                        
swipeThreshold settings.swipeThreshold;
                        if( 
distance >= swipeThreshold ){
                            
$this.prevSlide();
                            
clearInterval(interval);
                        }
                        else if( 
distance <= - swipeThreshold ){
                            
$this.nextSlide();
                            
clearInterval(interval);
                        }
                    });
                }
            },
            
touch: function () {
                var 
xStartxEnd;
                var 
$this this;
                $(
'.lightGallery').bind('mousedown', function (e) {
                    
e.stopPropagation();
                    
e.preventDefault();
                    
xStart e.pageX;
                });
                $(
'.lightGallery').bind('mouseup', function (e) {
                    
e.stopPropagation();
                    
e.preventDefault();
                    
xEnd e.pageX;
                    if (
xEnd xStart 20) {
                        
$this.prevSlide();
                    } else if (
xStart xEnd 20) {
                        
$this.nextSlide();
                    }
                });
            },
            
isVideo: function (src) {
                var 
youtube src.match(///(?:www.)?youtu(?:.be|be.com)/(?:watch?v=|embed/)?([a-z0-9_-]+)/i);
                
var vimeo src.match(///(?:www.)?vimeo.com/([0-9a-z-_]+)/i);
                
if (youtube || vimeo) {
                    return 
true;
                }
            },
            
loadVideo: function (src_id) {
                var 
youtube src.match(///(?:www.)?youtu(?:.be|be.com)/(?:watch?v=|embed/)?([a-z0-9_-]+)/i);
                
var vimeo src.match(///(?:www.)?vimeo.com/([0-9a-z-_]+)/i);
                
var video '';
                var 
='';
                if (
youtube) {
                    if (
settings.videoAutoplay === true && lightGalleryOn === false) {
                        
'?autoplay=1&rel=0&wmode=opaque';
                    } else {
                        
'?wmode=opaque';
                    }
                    
video '<iframe id="video' _id '" width="560" height="315" src="//www.youtube.com/embed/' youtube[1] + '" frameborder="0" allowfullscreen></iframe>';
                } else if (
vimeo) {
                    if (
settings.videoAutoplay === true && lightGalleryOn === false) {
                        
'autoplay=1&amp;';
                    } else {
                        
'';
                    }
                    
video '<iframe id="video' _id '" width="560" height="315"  src="http://player.vimeo.com/video/' vimeo[1] + '?' 'byline=0&amp;portrait=0&amp;color=' settings.vimeoColor '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
                }
                return 
'<div class="video_cont" style="max-width:' settings.videoMaxWidth 'px !important;"><div class="video">' video '</div></div>';
            },
            
loadContent: function (index,rec) {
                var 
$this this;
                var 
ij$children.length index;
                var 
src;
                if(
settings.preload>$children.length){
                    
settings.preload $children.length;
                }
                if (
settings.mobileSrc === true && windowWidth <= settings.mobileSrcMaxWidth) {
                    if (
settings.dynamic == true) {
                        
src settings.dynamicEl[index]['mobileSrc'];
                    } else {
                        
src $children.eq(index).attr('data-responsive-src');
                    }
                } else {
                    if (
settings.dynamic == true) {
                        
src settings.dynamicEl[index]['src'];
                    } else {
                        
src $children.eq(index).attr('data-src');
                    }
                }
                if (!
$this.isVideo(src)) {
                    if(!
$slide.eq(index).hasClass('loaded')){
                        
$slide.eq(index).prepend('<img src="' src '" />');
                        
$slide.eq(index).addClass('loaded');
                    }
                    if(
rec===false){
                        var 
complete false;
                        if (
$slide.eq(index).find('img')[0].complete){
                            
complete true;    
                        }
                        if(!
complete){
                            
$slide.eq(index).find('img').on('load error',function(){
                                var 
newIndex index;
                                for(var 
=0;k<=settings.preload;k++){
                                    if(
k>=$children.length-index){
                                        break;
                                    }
                                    
$this.loadContent(newIndex+k,true);  
                                }
                                for(var 
=0;h<=settings.preload;h++){
                                    if(
newIndex-h<0){
                                        break;
                                    }
                                    
$this.loadContent(newIndex-h,true);  
                                }
                            });
                        }else{
                            var 
newIndex index;
                            for(var 
=0;k<=settings.preload;k++){
                                if(
k>=$children.length-index){
                                    break;
                                }
                                
$this.loadContent(newIndex+k,true);  
                            }
                            for(var 
=0;h<=settings.preload;h++){
                                if(
newIndex-h<0){
                                    break;
                                }
                                
$this.loadContent(newIndex-h,true);  
                            }    
                        }
                    }
                } else {
                    if(!
$slide.eq(index).hasClass('loaded')){
                        if(
rec===false && lightGalleryOn === true && settings.preload===0){
                            
setTimeout(function () {
                                
$slide.eq(index).prepend($this.loadVideo(srcindex));
                            }, 
settings.speed);
                        }else{
                            
$slide.eq(index).prepend($this.loadVideo(srcindex));
                        }
                        
$slide.eq(index).addClass('loaded');

                        if (
settings.auto && settings.videoAutoplay === true) {
                            
clearInterval(interval);
                        }
                    }

                    if(
rec===false){
                        var 
complete false;
                        if (
$slide.eq(index).find('iframe')[0].complete){
                            
complete true;    
                        }
                        if(!
complete){
                            
$slide.eq(index).find('iframe').on('load error',function(){
                                var 
newIndex index;
                                for(var 
=0;k<=settings.preload;k++){
                                    if(
k>=$children.length-index){
                                        break;
                                    }
                                    
$this.loadContent(newIndex+k,true);  
                                }
                                for(var 
=0;h<=settings.preload;h++){
                                    
$this.loadContent(newIndex-h,true);  
                                }
                            });
                        }else{
                            var 
newIndex index;
                            for(var 
=0;k<=settings.preload;k++){
                                
$this.loadContent(newIndex+k,true);  
                            }
                            for(var 
=0;h<=settings.preload;h++){
                                
$this.loadContent(newIndex-h,true);  
                            }    
                        }
                    }


                }
            },
            
addCaption: function () {
                if (
settings.caption === true) {
                    var 
ititle false;
                    for (
0$children.lengthi++) {
                        if (
settings.dynamic == true) {
                            
title settings.dynamicEl[i]['caption'];
                        } else {
                            
title $children.eq(i).attr('data-title');
                        }
                        if (
typeof title == 'undefined' || title == null) {
                            
title 'image ' '';
                        }
                        if (
settings.captionLink === true) {
                            var 
link null;
                            if (
settings.dynamic == true) {
                                
link settings.dynamicEl[i]['link'];
                            } else {
                                
link $children.eq(i).attr('data-link');
                            }
                            if (
typeof link !== 'undefined' && link !== '') {
                                
link link
                            
} else {
                                
link '#'
                            
}
                            
$slide.eq(i).append('<div class="info group"><a href="' link '" class="title">' title '</a></div>');
                        } else {
                            
$slide.eq(i).append('<div class="info group"><span class="title">' title '</span></div>');
                        }
                    }
                }
            },
            
addDesc: function () {
                if (
settings.desc === true) {
                    var 
idescription false;
                    for (
0$children.lengthi++) {
                        if (
settings.dynamic == true) {
                            
description settings.dynamicEl[i]['desc'];
                        } else {
                            
description $children.eq(i).attr('data-desc');;
                        }
                        if (
typeof description == 'undefined' || description == null) {
                            
description 'image ' '';
                        }
                        if (
settings.caption === false) {
                            
$slide.eq(i).append('<div class="info group"><span class="desc">' description '</span></div>');
                        } else {
                            
$slide.eq(i).find('.info').append('<span class="desc">' description '</span>');
                        }
                    }
                }
            },
            
counter: function() {
                if (
settings.counter === true) {
                    var 
slideCount = $("#lightGallery-slider > div").length;
                    
$gallery.append("<div id='lightGallery_counter'><span id='lightGallery_counter_current'></span> / <span id='lightGallery_counter_all'>"+slideCount+"</span></div>");
                }
            },
            
buildThumbnail: function () {
                if (
settings.thumbnail === true && $children.length 1) {
                    var 
$this this;
                    
$gallery.append('<div class="thumb_cont"><div class="thumb_info"><span class="close ib"><i class="bUi-iCn-rMv-16" aria-hidden="true"></i></span></div><div class="thumb_inner"></div></div>');
                    
$thumb_cont $gallery.find('.thumb_cont');
                    
$prev.after('<a class="cLthumb"></a>');
                    
$gallery.find('.cLthumb').bind('click touchend', function () {
                        
$thumb_cont.addClass('open');
                        if (
$this.doCss() && settings.mode === 'slide') {
                            
$slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide');
                            
$slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide');
                        }
                    });
                    
$gallery.find('.close').bind('click touchend', function () {
                        
$thumb_cont.removeClass('open');
                    });
                    var 
thumbInfo $gallery.find('.thumb_info');
                    var 
$thumb_inner $gallery.find('.thumb_inner');
                    var 
thumbList '';
                    var 
thumbImg;
                    if (
settings.dynamic == true) {
                        for (var 
0settings.dynamicEl.lengthi++) {
                            
thumbImg settings.dynamicEl[i]['thumb'];
                            
thumbList += '<div class="thumb"><img src="' thumbImg '" /></div>';
                        }
                    } else {
                        
$children.each(function () {
                            if (
settings.exThumbImage === false || typeof $(this).attr(settings.exThumbImage) == 'undefined' || $(this).attr(settings.exThumbImage) == null) {
                                
thumbImg = $(this).find('img').attr('src');
                            } else {
                                
thumbImg = $(this).attr(settings.exThumbImage);
                            }
                            
thumbList += '<div class="thumb"><img src="' thumbImg '" /></div>';
                        });
                    }
                    
$thumb_inner.append(thumbList);
                    
$thumb $thumb_inner.find('.thumb');
                    
$thumb.bind('click touchend', function () {
                        
usingThumb true;
                        var 
index = $(this).index();
                        
$thumb.removeClass('active');
                        $(
this).addClass('active');
                        
$this.slide(index);
                        
clearInterval(interval);
                    });
                    
thumbInfo.prepend('<span class="ib count">' settings.lang.allPhotos ' (' $thumb.length ')</span>');
                }
            },
            
slideTo: function () {
                var 
$this this;
                if (
settings.controls === true && $children.length 1) {
                    
$gallery.append('<div id="lightGallery-action"><a id="lightGallery-prev"></a><a id="lightGallery-next"></a></div>');
                    
$prev $gallery.find('#lightGallery-prev');
                    
$next $gallery.find('#lightGallery-next');
                    
$prev.bind('click', function () {
                        
$this.prevSlide();
                        
clearInterval(interval);
                    });
                    
$next.bind('click', function () {
                        
$this.nextSlide();
                        
clearInterval(interval);
                    });
                }
            },
            
autoStart: function () {
                var 
$this this;
                if (
settings.auto === true) {
                    
interval setInterval(function () {
                        if (
index $children.length) {
                            
index index;
                        } else {
                            
index = -1;
                        }
                        
index++;
                        
$this.slide(index);
                    }, 
settings.pause);
                }
            },
            
keyPress: function () {
                var 
$this this;
                $(
window).bind('keyup.lightGallery', function (e) {
                    
e.preventDefault();
                    
e.stopPropagation();
                    if (
e.keyCode === 37) {
                        
$this.prevSlide();
                        
clearInterval(interval);
                    }
                    if (
e.keyCode === 38 && settings.thumbnail === true) {
                        if (!
$thumb_cont.hasClass('open')) {
                            if (
$this.doCss() && settings.mode === 'slide') {
                                
$slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide');
                                
$slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide');
                            }
                            
$thumb_cont.addClass('open');
                        }
                    } else if (
e.keyCode === 39) {
                        
$this.nextSlide();
                        
clearInterval(interval);
                    }
                    if (
e.keyCode === 40 && settings.thumbnail === true) {
                        if (
$thumb_cont.hasClass('open')) {
                            
$thumb_cont.removeClass('open');
                        }
                    } else if (
settings.escKey === true && e.keyCode === 27) {
                        if (
settings.thumbnail === true && $thumb_cont.hasClass('open')) {
                            
$thumb_cont.removeClass('open');
                        } else {
                            
$this.destroy();
                        }
                    }
                });
            },
            
nextSlide: function () {
                var 
$this this;
                
index $slide.index($slide.eq(prevIndex));
                if (
index $children.length) {
                    
index++;
                    
$this.slide(index);
                } else {
                    if (
settings.loop) {
                        
index 0;
                        
$this.slide(index);
                    } else if (
settings.mode === 'fade' && settings.thumbnail === true && $children.length 1) {
                        
$thumb_cont.addClass('open');
                    }
                }
                
settings.onSlideNext.call(this);
            },
            
prevSlide: function () {
                var 
$this this;
                
index $slide.index($slide.eq(prevIndex));
                if (
index 0) {
                    
index--;
                    
$this.slide(index);
                } else {
                    if (
settings.loop) {
                        
index $children.length 1;
                        
$this.slide(index);
                    } else if (
settings.mode === 'fade' && settings.thumbnail === true && $children.length 1) {
                        
$thumb_cont.addClass('open');
                    }
                }
                
settings.onSlidePrev.call(this);
            },
            
slide: function (index) {
                
this.loadContent(index,false);
                if (
lightGalleryOn) {
                    if (!
$slider.hasClass('on')) {
                        
$slider.addClass('on');
                    }
                    if (
this.doCss() && settings.speed !== '') {
                        if (!
$slider.hasClass('speed')) {
                            
$slider.addClass('speed');
                        }
                        if (
aSpeed === false) {
                            
$slider.css('transition-duration'settings.speed 'ms');
                            
aSpeed true;
                        }
                    }
                    if (
this.doCss() && settings.easing !== '') {
                        if (!
$slider.hasClass('timing')) {
                            
$slider.addClass('timing');
                        }
                        if (
aTiming === false) {
                            
$slider.css('transition-timing-function'settings.easing);
                            
aTiming true;
                        }
                    }
                    
settings.onSlideBefore.call(this);
                }
                if (
settings.mode === 'slide') {
                    var 
isiPad navigator.userAgent.match(/iPad/i) != null;
                    if (
this.doCss() && !$slider.hasClass('slide') && !isiPad) {
                        
$slider.addClass('slide');
                    }else if(
this.doCss() && !$slider.hasClass('useLeft') &&isiPad){
                        
$slider.addClass('useLeft');
                    }
                    
/*                  if(this.doCss()){
                        $slider.css({ 'transform' : 'translate3d('+(-index*100)+'%, 0px, 0px)' });
                    }*/
                    
if (!this.doCss() && !lightGalleryOn) {
                        
$slider.css({
                            
left: (-index 100) + '%'
                        
});
                        
//$slide.eq(index).css('transition','none');
                    
} else if (!this.doCss() && lightGalleryOn) {
                        
$slider.animate({
                            
left: (-index 100) + '%'
                        
}, settings.speedsettings.easing);
                    }
                } else if (
settings.mode === 'fade') {
                    if (
this.doCss() && !$slider.hasClass('fadeM')) {
                        
$slider.addClass('fadeM');
                    } else if (!
this.doCss() && !$slider.hasClass('animate')) {
                        
$slider.addClass('animate');
                    }
                    if (!
this.doCss() && !lightGalleryOn) {
                        
$slide.fadeOut(100);
                        
$slide.eq(index).fadeIn(100);
                    } else if (!
this.doCss() && lightGalleryOn) {
                        
$slide.eq(prevIndex).fadeOut(settings.speedsettings.easing);
                        
$slide.eq(index).fadeIn(settings.speedsettings.easing);
                    }
                }
                if (
index >= $children.length && settings.auto && settings.loop === false) {
                    
clearInterval(interval);
                }
                
$slide.eq(prevIndex).removeClass('current');
                
$slide.eq(index).addClass('current');
                if (
this.doCss() && settings.mode === 'slide') {
                    if (
usingThumb === false) {
                        $(
'.prevSlide').removeClass('prevSlide');
                        $(
'.nextSlide').removeClass('nextSlide');
                        
$slide.eq(index 1).addClass('prevSlide');
                        
$slide.eq(index 1).addClass('nextSlide');
                    } else {
                        
$slide.eq(index).prevAll().removeClass('nextSlide').addClass('prevSlide');
                        
$slide.eq(index).nextAll().removeClass('prevSlide').addClass('nextSlide');
                    }
                }
                if (
settings.thumbnail === true && $children.length 1) {
                    
$thumb.removeClass('active');
                    
$thumb.eq(index).addClass('active');
                }
                if (
settings.controls && settings.hideControlOnEnd && settings.loop === false && $children.length 1) {
                    var 
$children.length;
                        
parseInt(l)-1;
                    if (
index === 0) {
                        
$prev.addClass('disabled');
                        
$next.removeClass('disabled');
                    } else if (
index === l) {
                        
$prev.removeClass('disabled');
                        
$next.addClass('disabled');
                    } else {
                        
$prev.add($next).removeClass('disabled');
                    }
                }
                
prevIndex index;
                
lightGalleryOn === false settings.onOpen.call(this) : settings.onSlideAfter.call(this);
                
lightGalleryOn true;
                
usingThumb false;
                if (
settings.counter) {
                    $(
"#lightGallery_counter_current").text(index+1);
                }
            },
            
destroy: function () {
                
settings.onBeforeClose.call(this);
                
lightGalleryOn false;
                
aTiming false;
                
aSpeed false;
                
usingThumb false;
                
clearInterval(interval);
                $(
'.lightGallery').off('mousedown mouseup');
                $(
'body').off('touchstart.lightGallery touchmove.lightGallery touchend.lightGallery');
                $(
window).off('resize.lightGallery keyup.lightGallery');
                
$gallery.addClass('fadeM');
                
setTimeout(function () {
                    
$galleryCont.remove();
                    $(
'body').removeClass('lightGallery');
                }, 
500);
                
settings.onCloseAfter.call(this);
            }
        };
        
lightGallery.init();
        return 
this;
    };
}(
jQuery));
?>
Онлайн: 0
Реклама