1617 lines
59 KiB
JavaScript
1617 lines
59 KiB
JavaScript
|
jQuery(document).ready(function () {
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
(function ($, undefined) {
|
|||
|
'use strict';
|
|||
|
var defaults = {
|
|||
|
item: 3,
|
|||
|
autoWidth: false,
|
|||
|
slideMove: 1,
|
|||
|
slideMargin: 10,
|
|||
|
addClass: '',
|
|||
|
mode: 'slide',
|
|||
|
useCSS: true,
|
|||
|
cssEasing: 'ease', //'cubic-bezier(0.25, 0, 0.25, 1)',
|
|||
|
easing: 'linear', //'for jquery animation',//
|
|||
|
speed: 400, //ms'
|
|||
|
auto: false,
|
|||
|
pauseOnHover: false,
|
|||
|
loop: false,
|
|||
|
slideEndAnimation: true,
|
|||
|
pause: 2000,
|
|||
|
keyPress: false,
|
|||
|
controls: true,
|
|||
|
prevHtml: '',
|
|||
|
nextHtml: '',
|
|||
|
rtl: false,
|
|||
|
adaptiveHeight: false,
|
|||
|
vertical: false,
|
|||
|
verticalHeight: 500,
|
|||
|
vThumbWidth: 100,
|
|||
|
thumbItem: 10,
|
|||
|
pager: true,
|
|||
|
gallery: false,
|
|||
|
galleryMargin: 5,
|
|||
|
thumbMargin: 5,
|
|||
|
currentPagerPosition: 'middle',
|
|||
|
enableTouch: true,
|
|||
|
enableDrag: true,
|
|||
|
freeMove: true,
|
|||
|
swipeThreshold: 40,
|
|||
|
responsive: [],
|
|||
|
/* jshint ignore:start */
|
|||
|
onBeforeStart: function ($el) {},
|
|||
|
onSliderLoad: function ($el) {},
|
|||
|
onBeforeSlide: function ($el, scene) {},
|
|||
|
onAfterSlide: function ($el, scene) {},
|
|||
|
onBeforeNextSlide: function ($el, scene) {},
|
|||
|
onBeforePrevSlide: function ($el, scene) {}
|
|||
|
/* jshint ignore:end */
|
|||
|
};
|
|||
|
$.fn.lightSlider = function (options) {
|
|||
|
if (this.length === 0) {
|
|||
|
return this;
|
|||
|
}
|
|||
|
|
|||
|
if (this.length > 1) {
|
|||
|
this.each(function () {
|
|||
|
$(this).lightSlider(options);
|
|||
|
});
|
|||
|
return this;
|
|||
|
}
|
|||
|
|
|||
|
var plugin = {},
|
|||
|
settings = $.extend(true, {}, defaults, options),
|
|||
|
settingsTemp = {},
|
|||
|
$el = this;
|
|||
|
plugin.$el = this;
|
|||
|
|
|||
|
if (settings.mode === 'fade') {
|
|||
|
settings.vertical = false;
|
|||
|
}
|
|||
|
var $children = $el.children(),
|
|||
|
windowW = $(window).width(),
|
|||
|
breakpoint = null,
|
|||
|
resposiveObj = null,
|
|||
|
length = 0,
|
|||
|
w = 0,
|
|||
|
on = false,
|
|||
|
elSize = 0,
|
|||
|
$slide = '',
|
|||
|
scene = 0,
|
|||
|
property = (settings.vertical === true) ? 'height' : 'width',
|
|||
|
gutter = (settings.vertical === true) ? 'margin-bottom' : 'margin-right',
|
|||
|
slideValue = 0,
|
|||
|
pagerWidth = 0,
|
|||
|
slideWidth = 0,
|
|||
|
thumbWidth = 0,
|
|||
|
interval = null,
|
|||
|
isTouch = ('ontouchstart' in document.documentElement);
|
|||
|
var refresh = {};
|
|||
|
|
|||
|
refresh.chbreakpoint = function () {
|
|||
|
windowW = $(window).width();
|
|||
|
if (settings.responsive.length) {
|
|||
|
var item;
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
item = settings.item;
|
|||
|
}
|
|||
|
if (windowW < settings.responsive[0].breakpoint) {
|
|||
|
for (var i = 0; i < settings.responsive.length; i++) {
|
|||
|
if (windowW < settings.responsive[i].breakpoint) {
|
|||
|
breakpoint = settings.responsive[i].breakpoint;
|
|||
|
resposiveObj = settings.responsive[i];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (typeof resposiveObj !== 'undefined' && resposiveObj !== null) {
|
|||
|
for (var j in resposiveObj.settings) {
|
|||
|
if (resposiveObj.settings.hasOwnProperty(j)) {
|
|||
|
if (typeof settingsTemp[j] === 'undefined' || settingsTemp[j] === null) {
|
|||
|
settingsTemp[j] = settings[j];
|
|||
|
}
|
|||
|
settings[j] = resposiveObj.settings[j];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (!$.isEmptyObject(settingsTemp) && windowW > settings.responsive[0].breakpoint) {
|
|||
|
for (var k in settingsTemp) {
|
|||
|
if (settingsTemp.hasOwnProperty(k)) {
|
|||
|
settings[k] = settingsTemp[k];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
if (slideValue > 0 && slideWidth > 0) {
|
|||
|
if (item !== settings.item) {
|
|||
|
scene = Math.round(slideValue / ((slideWidth + settings.slideMargin) * settings.slideMove));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
refresh.calSW = function () {
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
slideWidth = (elSize - ((settings.item * (settings.slideMargin)) - settings.slideMargin)) / settings.item;
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
refresh.calWidth = function (cln) {
|
|||
|
var ln = cln === true ? $slide.find('.lslide').length : $children.length;
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
w = ln * (slideWidth + settings.slideMargin);
|
|||
|
} else {
|
|||
|
w = 0;
|
|||
|
for (var i = 0; i < ln; i++) {
|
|||
|
w += (parseInt($children.eq(i).width()) + settings.slideMargin);
|
|||
|
}
|
|||
|
}
|
|||
|
return w;
|
|||
|
};
|
|||
|
plugin = {
|
|||
|
doCss: function () {
|
|||
|
var support = function () {
|
|||
|
var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];
|
|||
|
var root = document.documentElement;
|
|||
|
for (var i = 0; i < transition.length; i++) {
|
|||
|
if (transition[i] in root.style) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
if (settings.useCSS && support()) {
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
},
|
|||
|
keyPress: function () {
|
|||
|
if (settings.keyPress) {
|
|||
|
$(document).on('keyup.lightslider', function (e) {
|
|||
|
if (!$(':focus').is('input, textarea')) {
|
|||
|
if (e.preventDefault) {
|
|||
|
e.preventDefault();
|
|||
|
} else {
|
|||
|
e.returnValue = false;
|
|||
|
}
|
|||
|
if (e.keyCode === 37) {
|
|||
|
$el.goToPrevSlide();
|
|||
|
} else if (e.keyCode === 39) {
|
|||
|
$el.goToNextSlide();
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
controls: function () {
|
|||
|
if (settings.controls) {
|
|||
|
$el.after('<div class="lSAction"><a class="lSPrev">' + settings.prevHtml + '</a><a class="lSNext">' + settings.nextHtml + '</a></div>');
|
|||
|
if (!settings.autoWidth) {
|
|||
|
if (length <= settings.item) {
|
|||
|
$slide.find('.lSAction').hide();
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (refresh.calWidth(false) < elSize) {
|
|||
|
$slide.find('.lSAction').hide();
|
|||
|
}
|
|||
|
}
|
|||
|
$slide.find('.lSAction a').on('click', function (e) {
|
|||
|
if (e.preventDefault) {
|
|||
|
e.preventDefault();
|
|||
|
} else {
|
|||
|
e.returnValue = false;
|
|||
|
}
|
|||
|
if ($(this).attr('class') === 'lSPrev') {
|
|||
|
$el.goToPrevSlide();
|
|||
|
} else {
|
|||
|
$el.goToNextSlide();
|
|||
|
}
|
|||
|
return false;
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
initialStyle: function () {
|
|||
|
var $this = this;
|
|||
|
if (settings.mode === 'fade') {
|
|||
|
settings.autoWidth = false;
|
|||
|
settings.slideEndAnimation = false;
|
|||
|
}
|
|||
|
if (settings.auto) {
|
|||
|
settings.slideEndAnimation = false;
|
|||
|
}
|
|||
|
if (settings.autoWidth) {
|
|||
|
settings.slideMove = 1;
|
|||
|
settings.item = 1;
|
|||
|
}
|
|||
|
if (settings.loop) {
|
|||
|
settings.slideMove = 1;
|
|||
|
settings.freeMove = false;
|
|||
|
}
|
|||
|
settings.onBeforeStart.call(this, $el);
|
|||
|
refresh.chbreakpoint();
|
|||
|
$el.addClass('lightSlider').wrap('<div class="lSSlideOuter ' + settings.addClass + '"><div class="lSSlideWrapper"></div></div>');
|
|||
|
$slide = $el.parent('.lSSlideWrapper');
|
|||
|
if (settings.rtl === true) {
|
|||
|
$slide.parent().addClass('lSrtl');
|
|||
|
}
|
|||
|
if (settings.vertical) {
|
|||
|
$slide.parent().addClass('vertical');
|
|||
|
elSize = settings.verticalHeight;
|
|||
|
$slide.css('height', elSize + 'px');
|
|||
|
} else {
|
|||
|
elSize = $el.outerWidth();
|
|||
|
}
|
|||
|
$children.addClass('lslide');
|
|||
|
if (settings.loop === true && settings.mode === 'slide') {
|
|||
|
refresh.calSW();
|
|||
|
refresh.clone = function () {
|
|||
|
if (refresh.calWidth(true) > elSize) {
|
|||
|
/**/
|
|||
|
var tWr = 0,
|
|||
|
tI = 0;
|
|||
|
for (var k = 0; k < $children.length; k++) {
|
|||
|
tWr += (parseInt($el.find('.lslide').eq(k).width()) + settings.slideMargin);
|
|||
|
tI++;
|
|||
|
if (tWr >= (elSize + settings.slideMargin)) {
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
var tItem = settings.autoWidth === true ? tI : settings.item;
|
|||
|
|
|||
|
/**/
|
|||
|
if (tItem < $el.find('.clone.left').length) {
|
|||
|
for (var i = 0; i < $el.find('.clone.left').length - tItem; i++) {
|
|||
|
$children.eq(i).remove();
|
|||
|
}
|
|||
|
}
|
|||
|
if (tItem < $el.find('.clone.right').length) {
|
|||
|
for (var j = $children.length - 1; j > ($children.length - 1 - $el.find('.clone.right').length); j--) {
|
|||
|
scene--;
|
|||
|
$children.eq(j).remove();
|
|||
|
}
|
|||
|
}
|
|||
|
/**/
|
|||
|
for (var n = $el.find('.clone.right').length; n < tItem; n++) {
|
|||
|
$el.find('.lslide').eq(n).clone().removeClass('lslide').addClass('clone right').appendTo($el);
|
|||
|
scene++;
|
|||
|
}
|
|||
|
for (var m = $el.find('.lslide').length - $el.find('.clone.left').length; m > ($el.find('.lslide').length - tItem); m--) {
|
|||
|
$el.find('.lslide').eq(m - 1).clone().removeClass('lslide').addClass('clone left').prependTo($el);
|
|||
|
}
|
|||
|
$children = $el.children();
|
|||
|
} else {
|
|||
|
if ($children.hasClass('clone')) {
|
|||
|
$el.find('.clone').remove();
|
|||
|
$this.move($el, 0);
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
refresh.clone();
|
|||
|
}
|
|||
|
refresh.sSW = function () {
|
|||
|
length = $children.length;
|
|||
|
if (settings.rtl === true && settings.vertical === false) {
|
|||
|
gutter = 'margin-left';
|
|||
|
}
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
$children.css(property, slideWidth + 'px');
|
|||
|
}
|
|||
|
$children.css(gutter, settings.slideMargin + 'px');
|
|||
|
w = refresh.calWidth(false);
|
|||
|
$el.css(property, w + 'px');
|
|||
|
if (settings.loop === true && settings.mode === 'slide') {
|
|||
|
if (on === false) {
|
|||
|
scene = $el.find('.clone.left').length;
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
refresh.calL = function () {
|
|||
|
$children = $el.children();
|
|||
|
length = $children.length;
|
|||
|
};
|
|||
|
if (this.doCss()) {
|
|||
|
$slide.addClass('usingCss');
|
|||
|
}
|
|||
|
refresh.calL();
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
refresh.calSW();
|
|||
|
refresh.sSW();
|
|||
|
if (settings.loop === true) {
|
|||
|
slideValue = $this.slideValue();
|
|||
|
this.move($el, slideValue);
|
|||
|
}
|
|||
|
if (settings.vertical === false) {
|
|||
|
this.setHeight($el, false);
|
|||
|
}
|
|||
|
|
|||
|
} else {
|
|||
|
this.setHeight($el, true);
|
|||
|
$el.addClass('lSFade');
|
|||
|
if (!this.doCss()) {
|
|||
|
$children.fadeOut(0);
|
|||
|
$children.eq(scene).fadeIn(0);
|
|||
|
}
|
|||
|
}
|
|||
|
if (settings.loop === true && settings.mode === 'slide') {
|
|||
|
$children.eq(scene).addClass('active');
|
|||
|
} else {
|
|||
|
$children.first().addClass('active');
|
|||
|
}
|
|||
|
},
|
|||
|
pager: function () {
|
|||
|
var $this = this;
|
|||
|
refresh.createPager = function () {
|
|||
|
thumbWidth = (elSize - ((settings.thumbItem * (settings.thumbMargin)) - settings.thumbMargin)) / settings.thumbItem;
|
|||
|
var $children = $slide.find('.lslide');
|
|||
|
var length = $slide.find('.lslide').length;
|
|||
|
var i = 0,
|
|||
|
pagers = '',
|
|||
|
v = 0;
|
|||
|
for (i = 0; i < length; i++) {
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
// calculate scene * slide value
|
|||
|
if (!settings.autoWidth) {
|
|||
|
v = i * ((slideWidth + settings.slideMargin) * settings.slideMove);
|
|||
|
} else {
|
|||
|
v += ((parseInt($children.eq(i).width()) + settings.slideMargin) * settings.slideMove);
|
|||
|
}
|
|||
|
}
|
|||
|
var thumb = $children.eq(i * settings.slideMove).attr('data-thumb');
|
|||
|
if (settings.gallery === true) {
|
|||
|
pagers += '<li style="width:100%;' + property + ':' + thumbWidth + 'px;' + gutter + ':' + settings.thumbMargin + 'px"><a href="#"><img src="' + thumb + '" /></a></li>';
|
|||
|
} else {
|
|||
|
pagers += '<li><a href="#">' + (i + 1) + '</a></li>';
|
|||
|
}
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
if ((v) >= w - elSize - settings.slideMargin) {
|
|||
|
i = i + 1;
|
|||
|
var minPgr = 2;
|
|||
|
if (settings.autoWidth) {
|
|||
|
pagers += '<li><a href="#">' + (i + 1) + '</a></li>';
|
|||
|
minPgr = 1;
|
|||
|
}
|
|||
|
if (i < minPgr) {
|
|||
|
pagers = null;
|
|||
|
$slide.parent().addClass('noPager');
|
|||
|
} else {
|
|||
|
$slide.parent().removeClass('noPager');
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
var $cSouter = $slide.parent();
|
|||
|
$cSouter.find('.lSPager').html(pagers);
|
|||
|
if (settings.gallery === true) {
|
|||
|
if (settings.vertical === true) {
|
|||
|
// set Gallery thumbnail width
|
|||
|
$cSouter.find('.lSPager').css('width', settings.vThumbWidth + 'px');
|
|||
|
}
|
|||
|
pagerWidth = (i * (settings.thumbMargin + thumbWidth)) + 0.5;
|
|||
|
$cSouter.find('.lSPager').css({
|
|||
|
property: pagerWidth + 'px',
|
|||
|
'transition-duration': settings.speed + 'ms'
|
|||
|
});
|
|||
|
if (settings.vertical === true) {
|
|||
|
$slide.parent().css('padding-right', (settings.vThumbWidth + settings.galleryMargin) + 'px');
|
|||
|
}
|
|||
|
$cSouter.find('.lSPager').css(property, pagerWidth + 'px');
|
|||
|
}
|
|||
|
var $pager = $cSouter.find('.lSPager').find('li');
|
|||
|
$pager.first().addClass('active');
|
|||
|
$pager.on('click', function () {
|
|||
|
if (settings.loop === true && settings.mode === 'slide') {
|
|||
|
scene = scene + ($pager.index(this) - $cSouter.find('.lSPager').find('li.active').index());
|
|||
|
} else {
|
|||
|
scene = $pager.index(this);
|
|||
|
}
|
|||
|
$el.mode(false);
|
|||
|
if (settings.gallery === true) {
|
|||
|
$this.slideThumb();
|
|||
|
}
|
|||
|
return false;
|
|||
|
});
|
|||
|
};
|
|||
|
if (settings.pager) {
|
|||
|
var cl = 'lSpg';
|
|||
|
if (settings.gallery) {
|
|||
|
cl = 'lSGallery';
|
|||
|
}
|
|||
|
$slide.after('<ul class="lSPager ' + cl + '"></ul>');
|
|||
|
var gMargin = (settings.vertical) ? 'margin-left' : 'margin-top';
|
|||
|
$slide.parent().find('.lSPager').css(gMargin, settings.galleryMargin + 'px');
|
|||
|
refresh.createPager();
|
|||
|
}
|
|||
|
|
|||
|
setTimeout(function () {
|
|||
|
refresh.init();
|
|||
|
}, 0);
|
|||
|
},
|
|||
|
setHeight: function (ob, fade) {
|
|||
|
var obj = null,
|
|||
|
$this = this;
|
|||
|
if (settings.loop) {
|
|||
|
obj = ob.children('.lslide ').first();
|
|||
|
} else {
|
|||
|
obj = ob.children().first();
|
|||
|
}
|
|||
|
var setCss = function () {
|
|||
|
var tH = obj.outerHeight(),
|
|||
|
tP = 0,
|
|||
|
tHT = tH;
|
|||
|
if (fade) {
|
|||
|
tH = 0;
|
|||
|
tP = ((tHT) * 100) / elSize;
|
|||
|
}
|
|||
|
ob.css({
|
|||
|
'height': tH + 'px',
|
|||
|
'padding-bottom': tP + '%'
|
|||
|
});
|
|||
|
};
|
|||
|
setCss();
|
|||
|
if (obj.find('img').length) {
|
|||
|
if ( obj.find('img')[0].complete) {
|
|||
|
setCss();
|
|||
|
if (!interval) {
|
|||
|
$this.auto();
|
|||
|
}
|
|||
|
}else{
|
|||
|
obj.find('img').on('load', function () {
|
|||
|
setTimeout(function () {
|
|||
|
setCss();
|
|||
|
if (!interval) {
|
|||
|
$this.auto();
|
|||
|
}
|
|||
|
}, 100);
|
|||
|
});
|
|||
|
}
|
|||
|
}else{
|
|||
|
if (!interval) {
|
|||
|
$this.auto();
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
active: function (ob, t) {
|
|||
|
if (this.doCss() && settings.mode === 'fade') {
|
|||
|
$slide.addClass('on');
|
|||
|
}
|
|||
|
var sc = 0;
|
|||
|
if (scene * settings.slideMove < length) {
|
|||
|
ob.removeClass('active');
|
|||
|
if (!this.doCss() && settings.mode === 'fade' && t === false) {
|
|||
|
ob.fadeOut(settings.speed);
|
|||
|
}
|
|||
|
if (t === true) {
|
|||
|
sc = scene;
|
|||
|
} else {
|
|||
|
sc = scene * settings.slideMove;
|
|||
|
}
|
|||
|
//t === true ? sc = scene : sc = scene * settings.slideMove;
|
|||
|
var l, nl;
|
|||
|
if (t === true) {
|
|||
|
l = ob.length;
|
|||
|
nl = l - 1;
|
|||
|
if (sc + 1 >= l) {
|
|||
|
sc = nl;
|
|||
|
}
|
|||
|
}
|
|||
|
if (settings.loop === true && settings.mode === 'slide') {
|
|||
|
//t === true ? sc = scene - $el.find('.clone.left').length : sc = scene * settings.slideMove;
|
|||
|
if (t === true) {
|
|||
|
sc = scene - $el.find('.clone.left').length;
|
|||
|
} else {
|
|||
|
sc = scene * settings.slideMove;
|
|||
|
}
|
|||
|
if (t === true) {
|
|||
|
l = ob.length;
|
|||
|
nl = l - 1;
|
|||
|
if (sc + 1 === l) {
|
|||
|
sc = nl;
|
|||
|
} else if (sc + 1 > l) {
|
|||
|
sc = 0;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (!this.doCss() && settings.mode === 'fade' && t === false) {
|
|||
|
ob.eq(sc).fadeIn(settings.speed);
|
|||
|
}
|
|||
|
ob.eq(sc).addClass('active');
|
|||
|
} else {
|
|||
|
ob.removeClass('active');
|
|||
|
ob.eq(ob.length - 1).addClass('active');
|
|||
|
if (!this.doCss() && settings.mode === 'fade' && t === false) {
|
|||
|
ob.fadeOut(settings.speed);
|
|||
|
ob.eq(sc).fadeIn(settings.speed);
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
move: function (ob, v) {
|
|||
|
if (settings.rtl === true) {
|
|||
|
v = -v;
|
|||
|
}
|
|||
|
if (this.doCss()) {
|
|||
|
if (settings.vertical === true) {
|
|||
|
ob.css({
|
|||
|
'transform': 'translate3d(0px, ' + (-v) + 'px, 0px)',
|
|||
|
'-webkit-transform': 'translate3d(0px, ' + (-v) + 'px, 0px)'
|
|||
|
});
|
|||
|
} else {
|
|||
|
ob.css({
|
|||
|
'transform': 'translate3d(' + (-v) + 'px, 0px, 0px)',
|
|||
|
'-webkit-transform': 'translate3d(' + (-v) + 'px, 0px, 0px)',
|
|||
|
});
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (settings.vertical === true) {
|
|||
|
ob.css('position', 'relative').animate({
|
|||
|
top: -v + 'px'
|
|||
|
}, settings.speed, settings.easing);
|
|||
|
} else {
|
|||
|
ob.css('position', 'relative').animate({
|
|||
|
left: -v + 'px'
|
|||
|
}, settings.speed, settings.easing);
|
|||
|
}
|
|||
|
}
|
|||
|
var $thumb = $slide.parent().find('.lSPager').find('li');
|
|||
|
this.active($thumb, true);
|
|||
|
},
|
|||
|
fade: function () {
|
|||
|
this.active($children, false);
|
|||
|
var $thumb = $slide.parent().find('.lSPager').find('li');
|
|||
|
this.active($thumb, true);
|
|||
|
},
|
|||
|
slide: function () {
|
|||
|
var $this = this;
|
|||
|
refresh.calSlide = function () {
|
|||
|
if (w > elSize) {
|
|||
|
slideValue = $this.slideValue();
|
|||
|
$this.active($children, false);
|
|||
|
if ((slideValue) > w - elSize - settings.slideMargin) {
|
|||
|
slideValue = w - elSize - settings.slideMargin;
|
|||
|
} else if (slideValue < 0) {
|
|||
|
slideValue = 0;
|
|||
|
}
|
|||
|
$this.move($el, slideValue);
|
|||
|
if (settings.loop === true && settings.mode === 'slide') {
|
|||
|
if (scene >= (length - ($el.find('.clone.left').length / settings.slideMove))) {
|
|||
|
$this.resetSlide($el.find('.clone.left').length);
|
|||
|
}
|
|||
|
if (scene === 0) {
|
|||
|
$this.resetSlide($slide.find('.lslide').length);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
refresh.calSlide();
|
|||
|
},
|
|||
|
resetSlide: function (s) {
|
|||
|
var $this = this;
|
|||
|
$slide.find('.lSAction a').addClass('disabled');
|
|||
|
setTimeout(function () {
|
|||
|
scene = s;
|
|||
|
$slide.css('transition-duration', '0ms');
|
|||
|
slideValue = $this.slideValue();
|
|||
|
$this.active($children, false);
|
|||
|
plugin.move($el, slideValue);
|
|||
|
setTimeout(function () {
|
|||
|
$slide.css('transition-duration', settings.speed + 'ms');
|
|||
|
$slide.find('.lSAction a').removeClass('disabled');
|
|||
|
}, 50);
|
|||
|
}, settings.speed + 100);
|
|||
|
},
|
|||
|
slideValue: function () {
|
|||
|
var _sV = 0;
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
_sV = scene * ((slideWidth + settings.slideMargin) * settings.slideMove);
|
|||
|
} else {
|
|||
|
_sV = 0;
|
|||
|
for (var i = 0; i < scene; i++) {
|
|||
|
_sV += (parseInt($children.eq(i).width()) + settings.slideMargin);
|
|||
|
}
|
|||
|
}
|
|||
|
return _sV;
|
|||
|
},
|
|||
|
slideThumb: function () {
|
|||
|
var position;
|
|||
|
switch (settings.currentPagerPosition) {
|
|||
|
case 'left':
|
|||
|
position = 0;
|
|||
|
break;
|
|||
|
case 'middle':
|
|||
|
position = (elSize / 2) - (thumbWidth / 2);
|
|||
|
break;
|
|||
|
case 'right':
|
|||
|
position = elSize - thumbWidth;
|
|||
|
}
|
|||
|
var sc = scene - $el.find('.clone.left').length;
|
|||
|
var $pager = $slide.parent().find('.lSPager');
|
|||
|
if (settings.mode === 'slide' && settings.loop === true) {
|
|||
|
if (sc >= $pager.children().length) {
|
|||
|
sc = 0;
|
|||
|
} else if (sc < 0) {
|
|||
|
sc = $pager.children().length;
|
|||
|
}
|
|||
|
}
|
|||
|
var thumbSlide = sc * ((thumbWidth + settings.thumbMargin)) - (position);
|
|||
|
if ((thumbSlide + elSize) > pagerWidth) {
|
|||
|
thumbSlide = pagerWidth - elSize - settings.thumbMargin;
|
|||
|
}
|
|||
|
if (thumbSlide < 0) {
|
|||
|
thumbSlide = 0;
|
|||
|
}
|
|||
|
this.move($pager, thumbSlide);
|
|||
|
},
|
|||
|
auto: function () {
|
|||
|
if (settings.auto) {
|
|||
|
clearInterval(interval);
|
|||
|
interval = setInterval(function () {
|
|||
|
$el.goToNextSlide();
|
|||
|
}, settings.pause);
|
|||
|
}
|
|||
|
},
|
|||
|
pauseOnHover: function(){
|
|||
|
var $this = this;
|
|||
|
if (settings.auto && settings.pauseOnHover) {
|
|||
|
$slide.on('mouseenter', function(){
|
|||
|
$(this).addClass('ls-hover');
|
|||
|
$el.pause();
|
|||
|
settings.auto = true;
|
|||
|
});
|
|||
|
$slide.on('mouseleave',function(){
|
|||
|
$(this).removeClass('ls-hover');
|
|||
|
if (!$slide.find('.lightSlider').hasClass('lsGrabbing')) {
|
|||
|
$this.auto();
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
touchMove: function (endCoords, startCoords) {
|
|||
|
$slide.css('transition-duration', '0ms');
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
var distance = endCoords - startCoords;
|
|||
|
var swipeVal = slideValue - distance;
|
|||
|
if ((swipeVal) >= w - elSize - settings.slideMargin) {
|
|||
|
if (settings.freeMove === false) {
|
|||
|
swipeVal = w - elSize - settings.slideMargin;
|
|||
|
} else {
|
|||
|
var swipeValT = w - elSize - settings.slideMargin;
|
|||
|
swipeVal = swipeValT + ((swipeVal - swipeValT) / 5);
|
|||
|
|
|||
|
}
|
|||
|
} else if (swipeVal < 0) {
|
|||
|
if (settings.freeMove === false) {
|
|||
|
swipeVal = 0;
|
|||
|
} else {
|
|||
|
swipeVal = swipeVal / 5;
|
|||
|
}
|
|||
|
}
|
|||
|
this.move($el, swipeVal);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
touchEnd: function (distance) {
|
|||
|
$slide.css('transition-duration', settings.speed + 'ms');
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
var mxVal = false;
|
|||
|
var _next = true;
|
|||
|
slideValue = slideValue - distance;
|
|||
|
if ((slideValue) > w - elSize - settings.slideMargin) {
|
|||
|
slideValue = w - elSize - settings.slideMargin;
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
mxVal = true;
|
|||
|
}
|
|||
|
} else if (slideValue < 0) {
|
|||
|
slideValue = 0;
|
|||
|
}
|
|||
|
var gC = function (next) {
|
|||
|
var ad = 0;
|
|||
|
if (!mxVal) {
|
|||
|
if (next) {
|
|||
|
ad = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
if (!settings.autoWidth) {
|
|||
|
var num = slideValue / ((slideWidth + settings.slideMargin) * settings.slideMove);
|
|||
|
scene = parseInt(num) + ad;
|
|||
|
if (slideValue >= (w - elSize - settings.slideMargin)) {
|
|||
|
if (num % 1 !== 0) {
|
|||
|
scene++;
|
|||
|
}
|
|||
|
}
|
|||
|
} else {
|
|||
|
var tW = 0;
|
|||
|
for (var i = 0; i < $children.length; i++) {
|
|||
|
tW += (parseInt($children.eq(i).width()) + settings.slideMargin);
|
|||
|
scene = i + ad;
|
|||
|
if (tW >= slideValue) {
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
if (distance >= settings.swipeThreshold) {
|
|||
|
gC(false);
|
|||
|
_next = false;
|
|||
|
} else if (distance <= -settings.swipeThreshold) {
|
|||
|
gC(true);
|
|||
|
_next = false;
|
|||
|
}
|
|||
|
$el.mode(_next);
|
|||
|
this.slideThumb();
|
|||
|
} else {
|
|||
|
if (distance >= settings.swipeThreshold) {
|
|||
|
$el.goToPrevSlide();
|
|||
|
} else if (distance <= -settings.swipeThreshold) {
|
|||
|
$el.goToNextSlide();
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enableDrag: function () {
|
|||
|
var $this = this;
|
|||
|
if (!isTouch) {
|
|||
|
var startCoords = 0,
|
|||
|
endCoords = 0,
|
|||
|
isDraging = false;
|
|||
|
$slide.find('.lightSlider').addClass('lsGrab');
|
|||
|
$slide.on('mousedown', function (e) {
|
|||
|
if (w < elSize) {
|
|||
|
if (w !== 0) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
if ($(e.target).attr('class') !== ('lSPrev') && $(e.target).attr('class') !== ('lSNext')) {
|
|||
|
startCoords = (settings.vertical === true) ? e.pageY : e.pageX;
|
|||
|
isDraging = true;
|
|||
|
if (e.preventDefault) {
|
|||
|
e.preventDefault();
|
|||
|
} else {
|
|||
|
e.returnValue = false;
|
|||
|
}
|
|||
|
// ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
|
|||
|
$slide.scrollLeft += 1;
|
|||
|
$slide.scrollLeft -= 1;
|
|||
|
// *
|
|||
|
$slide.find('.lightSlider').removeClass('lsGrab').addClass('lsGrabbing');
|
|||
|
clearInterval(interval);
|
|||
|
}
|
|||
|
});
|
|||
|
$(window).on('mousemove', function (e) {
|
|||
|
if (isDraging) {
|
|||
|
endCoords = (settings.vertical === true) ? e.pageY : e.pageX;
|
|||
|
$this.touchMove(endCoords, startCoords);
|
|||
|
}
|
|||
|
});
|
|||
|
$(window).on('mouseup', function (e) {
|
|||
|
if (isDraging) {
|
|||
|
$slide.find('.lightSlider').removeClass('lsGrabbing').addClass('lsGrab');
|
|||
|
isDraging = false;
|
|||
|
endCoords = (settings.vertical === true) ? e.pageY : e.pageX;
|
|||
|
var distance = endCoords - startCoords;
|
|||
|
if (Math.abs(distance) >= settings.swipeThreshold) {
|
|||
|
$(window).on('click.ls', function (e) {
|
|||
|
if (e.preventDefault) {
|
|||
|
e.preventDefault();
|
|||
|
} else {
|
|||
|
e.returnValue = false;
|
|||
|
}
|
|||
|
e.stopImmediatePropagation();
|
|||
|
e.stopPropagation();
|
|||
|
$(window).off('click.ls');
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
$this.touchEnd(distance);
|
|||
|
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
enableTouch: function () {
|
|||
|
var $this = this;
|
|||
|
if (isTouch) {
|
|||
|
var startCoords = {},
|
|||
|
endCoords = {};
|
|||
|
$slide.on('touchstart', function (e) {
|
|||
|
endCoords = e.originalEvent.targetTouches[0];
|
|||
|
startCoords.pageX = e.originalEvent.targetTouches[0].pageX;
|
|||
|
startCoords.pageY = e.originalEvent.targetTouches[0].pageY;
|
|||
|
clearInterval(interval);
|
|||
|
});
|
|||
|
$slide.on('touchmove', function (e) {
|
|||
|
if (w < elSize) {
|
|||
|
if (w !== 0) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
var orig = e.originalEvent;
|
|||
|
endCoords = orig.targetTouches[0];
|
|||
|
var xMovement = Math.abs(endCoords.pageX - startCoords.pageX);
|
|||
|
var yMovement = Math.abs(endCoords.pageY - startCoords.pageY);
|
|||
|
if (settings.vertical === true) {
|
|||
|
if ((yMovement * 3) > xMovement) {
|
|||
|
e.preventDefault();
|
|||
|
}
|
|||
|
$this.touchMove(endCoords.pageY, startCoords.pageY);
|
|||
|
} else {
|
|||
|
if ((xMovement * 3) > yMovement) {
|
|||
|
e.preventDefault();
|
|||
|
}
|
|||
|
$this.touchMove(endCoords.pageX, startCoords.pageX);
|
|||
|
}
|
|||
|
|
|||
|
});
|
|||
|
$slide.on('touchend', function () {
|
|||
|
if (w < elSize) {
|
|||
|
if (w !== 0) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
var distance;
|
|||
|
if (settings.vertical === true) {
|
|||
|
distance = endCoords.pageY - startCoords.pageY;
|
|||
|
} else {
|
|||
|
distance = endCoords.pageX - startCoords.pageX;
|
|||
|
}
|
|||
|
$this.touchEnd(distance);
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
build: function () {
|
|||
|
var $this = this;
|
|||
|
$this.initialStyle();
|
|||
|
if (this.doCss()) {
|
|||
|
|
|||
|
if (settings.enableTouch === true) {
|
|||
|
$this.enableTouch();
|
|||
|
}
|
|||
|
if (settings.enableDrag === true) {
|
|||
|
$this.enableDrag();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$(window).on('focus', function(){
|
|||
|
$this.auto();
|
|||
|
});
|
|||
|
|
|||
|
$(window).on('blur', function(){
|
|||
|
clearInterval(interval);
|
|||
|
});
|
|||
|
|
|||
|
$this.pager();
|
|||
|
$this.pauseOnHover();
|
|||
|
$this.controls();
|
|||
|
$this.keyPress();
|
|||
|
}
|
|||
|
};
|
|||
|
plugin.build();
|
|||
|
refresh.init = function () {
|
|||
|
refresh.chbreakpoint();
|
|||
|
if (settings.vertical === true) {
|
|||
|
if (settings.item > 1) {
|
|||
|
elSize = settings.verticalHeight;
|
|||
|
} else {
|
|||
|
elSize = $children.outerHeight();
|
|||
|
}
|
|||
|
$slide.css('height', elSize + 'px');
|
|||
|
} else {
|
|||
|
elSize = $slide.outerWidth();
|
|||
|
}
|
|||
|
if (settings.loop === true && settings.mode === 'slide') {
|
|||
|
refresh.clone();
|
|||
|
}
|
|||
|
refresh.calL();
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
$el.removeClass('lSSlide');
|
|||
|
}
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
refresh.calSW();
|
|||
|
refresh.sSW();
|
|||
|
}
|
|||
|
setTimeout(function () {
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
$el.addClass('lSSlide');
|
|||
|
}
|
|||
|
}, 1000);
|
|||
|
if (settings.pager) {
|
|||
|
refresh.createPager();
|
|||
|
}
|
|||
|
if (settings.adaptiveHeight === true && settings.vertical === false) {
|
|||
|
$el.css('height', $children.eq(scene).outerHeight(true));
|
|||
|
}
|
|||
|
if (settings.adaptiveHeight === false) {
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
if (settings.vertical === false) {
|
|||
|
plugin.setHeight($el, false);
|
|||
|
}else{
|
|||
|
plugin.auto();
|
|||
|
}
|
|||
|
} else {
|
|||
|
plugin.setHeight($el, true);
|
|||
|
}
|
|||
|
}
|
|||
|
if (settings.gallery === true) {
|
|||
|
plugin.slideThumb();
|
|||
|
}
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
plugin.slide();
|
|||
|
}
|
|||
|
if (settings.autoWidth === false) {
|
|||
|
if ($children.length <= settings.item) {
|
|||
|
$slide.find('.lSAction').hide();
|
|||
|
} else {
|
|||
|
$slide.find('.lSAction').show();
|
|||
|
}
|
|||
|
} else {
|
|||
|
if ((refresh.calWidth(false) < elSize) && (w !== 0)) {
|
|||
|
$slide.find('.lSAction').hide();
|
|||
|
} else {
|
|||
|
$slide.find('.lSAction').show();
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
$el.goToPrevSlide = function () {
|
|||
|
if (scene > 0) {
|
|||
|
settings.onBeforePrevSlide.call(this, $el, scene);
|
|||
|
scene--;
|
|||
|
$el.mode(false);
|
|||
|
if (settings.gallery === true) {
|
|||
|
plugin.slideThumb();
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (settings.loop === true) {
|
|||
|
settings.onBeforePrevSlide.call(this, $el, scene);
|
|||
|
if (settings.mode === 'fade') {
|
|||
|
var l = (length - 1);
|
|||
|
scene = parseInt(l / settings.slideMove);
|
|||
|
}
|
|||
|
$el.mode(false);
|
|||
|
if (settings.gallery === true) {
|
|||
|
plugin.slideThumb();
|
|||
|
}
|
|||
|
} else if (settings.slideEndAnimation === true) {
|
|||
|
$el.addClass('leftEnd');
|
|||
|
setTimeout(function () {
|
|||
|
$el.removeClass('leftEnd');
|
|||
|
}, 400);
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
$el.goToNextSlide = function () {
|
|||
|
var nextI = true;
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
var _slideValue = plugin.slideValue();
|
|||
|
nextI = _slideValue < w - elSize - settings.slideMargin;
|
|||
|
}
|
|||
|
if (((scene * settings.slideMove) < length - settings.slideMove) && nextI) {
|
|||
|
settings.onBeforeNextSlide.call(this, $el, scene);
|
|||
|
scene++;
|
|||
|
$el.mode(false);
|
|||
|
if (settings.gallery === true) {
|
|||
|
plugin.slideThumb();
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (settings.loop === true) {
|
|||
|
settings.onBeforeNextSlide.call(this, $el, scene);
|
|||
|
scene = 0;
|
|||
|
$el.mode(false);
|
|||
|
if (settings.gallery === true) {
|
|||
|
plugin.slideThumb();
|
|||
|
}
|
|||
|
} else if (settings.slideEndAnimation === true) {
|
|||
|
$el.addClass('rightEnd');
|
|||
|
setTimeout(function () {
|
|||
|
$el.removeClass('rightEnd');
|
|||
|
}, 400);
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
$el.mode = function (_touch) {
|
|||
|
if (settings.adaptiveHeight === true && settings.vertical === false) {
|
|||
|
$el.css('height', $children.eq(scene).outerHeight(true));
|
|||
|
}
|
|||
|
if (on === false) {
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
if (plugin.doCss()) {
|
|||
|
$el.addClass('lSSlide');
|
|||
|
if (settings.speed !== '') {
|
|||
|
$slide.css('transition-duration', settings.speed + 'ms');
|
|||
|
}
|
|||
|
if (settings.cssEasing !== '') {
|
|||
|
$slide.css('transition-timing-function', settings.cssEasing);
|
|||
|
}
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (plugin.doCss()) {
|
|||
|
if (settings.speed !== '') {
|
|||
|
$el.css('transition-duration', settings.speed + 'ms');
|
|||
|
}
|
|||
|
if (settings.cssEasing !== '') {
|
|||
|
$el.css('transition-timing-function', settings.cssEasing);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (!_touch) {
|
|||
|
settings.onBeforeSlide.call(this, $el, scene);
|
|||
|
}
|
|||
|
if (settings.mode === 'slide') {
|
|||
|
plugin.slide();
|
|||
|
} else {
|
|||
|
plugin.fade();
|
|||
|
}
|
|||
|
if (!$slide.hasClass('ls-hover')) {
|
|||
|
plugin.auto();
|
|||
|
}
|
|||
|
setTimeout(function () {
|
|||
|
if (!_touch) {
|
|||
|
settings.onAfterSlide.call(this, $el, scene);
|
|||
|
}
|
|||
|
}, settings.speed);
|
|||
|
on = true;
|
|||
|
};
|
|||
|
$el.play = function () {
|
|||
|
$el.goToNextSlide();
|
|||
|
settings.auto = true;
|
|||
|
plugin.auto();
|
|||
|
};
|
|||
|
$el.pause = function () {
|
|||
|
settings.auto = false;
|
|||
|
clearInterval(interval);
|
|||
|
};
|
|||
|
$el.refresh = function () {
|
|||
|
refresh.init();
|
|||
|
};
|
|||
|
$el.getCurrentSlideCount = function () {
|
|||
|
var sc = scene;
|
|||
|
if (settings.loop) {
|
|||
|
var ln = $slide.find('.lslide').length,
|
|||
|
cl = $el.find('.clone.left').length;
|
|||
|
if (scene <= cl - 1) {
|
|||
|
sc = ln + (scene - cl);
|
|||
|
} else if (scene >= (ln + cl)) {
|
|||
|
sc = scene - ln - cl;
|
|||
|
} else {
|
|||
|
sc = scene - cl;
|
|||
|
}
|
|||
|
}
|
|||
|
return sc + 1;
|
|||
|
};
|
|||
|
$el.getTotalSlideCount = function () {
|
|||
|
return $slide.find('.lslide').length;
|
|||
|
};
|
|||
|
$el.goToSlide = function (s) {
|
|||
|
if (settings.loop) {
|
|||
|
scene = (s + $el.find('.clone.left').length - 1);
|
|||
|
} else {
|
|||
|
scene = s;
|
|||
|
}
|
|||
|
$el.mode(false);
|
|||
|
if (settings.gallery === true) {
|
|||
|
plugin.slideThumb();
|
|||
|
}
|
|||
|
};
|
|||
|
$el.destroy = function () {
|
|||
|
if ($el.lightSlider) {
|
|||
|
$el.goToPrevSlide = function(){};
|
|||
|
$el.goToNextSlide = function(){};
|
|||
|
$el.mode = function(){};
|
|||
|
$el.play = function(){};
|
|||
|
$el.pause = function(){};
|
|||
|
$el.refresh = function(){};
|
|||
|
$el.getCurrentSlideCount = function(){};
|
|||
|
$el.getTotalSlideCount = function(){};
|
|||
|
$el.goToSlide = function(){};
|
|||
|
$el.lightSlider = null;
|
|||
|
refresh = {
|
|||
|
init : function(){}
|
|||
|
};
|
|||
|
$el.parent().parent().find('.lSAction, .lSPager').remove();
|
|||
|
$el.removeClass('lightSlider lSFade lSSlide lsGrab lsGrabbing leftEnd right').removeAttr('style').unwrap().unwrap();
|
|||
|
$el.children().removeAttr('style');
|
|||
|
$children.removeClass('lslide active');
|
|||
|
$el.find('.clone').remove();
|
|||
|
$children = null;
|
|||
|
interval = null;
|
|||
|
on = false;
|
|||
|
scene = 0;
|
|||
|
}
|
|||
|
|
|||
|
};
|
|||
|
setTimeout(function () {
|
|||
|
settings.onSliderLoad.call(this, $el);
|
|||
|
}, 10);
|
|||
|
$(window).on('resize orientationchange', function (e) {
|
|||
|
setTimeout(function () {
|
|||
|
if (e.preventDefault) {
|
|||
|
e.preventDefault();
|
|||
|
} else {
|
|||
|
e.returnValue = false;
|
|||
|
}
|
|||
|
refresh.init();
|
|||
|
}, 200);
|
|||
|
});
|
|||
|
return this;
|
|||
|
};
|
|||
|
}(jQuery));
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
jQuery(document).ready(function () {
|
|||
|
|
|||
|
|
|||
|
localStorage.setItem("single-offset", 1);
|
|||
|
localStorage.setItem("justNotLoaded", 1);
|
|||
|
|
|||
|
var savedUrl = localStorage.getItem("current-url");
|
|||
|
console.log('savedUrl ', savedUrl);
|
|||
|
|
|||
|
let ajax_request_sent = false;
|
|||
|
var single_offset = 1;
|
|||
|
|
|||
|
|
|||
|
function getMostVisible($elements) {
|
|||
|
var element,
|
|||
|
viewportHeight = jQuery(window).height(),
|
|||
|
max = 0;
|
|||
|
|
|||
|
$elements.each(function() {
|
|||
|
var visiblePx = getVisibleHeightPx(jQuery(this), viewportHeight);
|
|||
|
|
|||
|
if (visiblePx > max) {
|
|||
|
max = visiblePx;
|
|||
|
element = this;
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
return $elements.filter(element);
|
|||
|
}
|
|||
|
|
|||
|
function getVisibleHeightPx($element, viewportHeight) {
|
|||
|
var rect = $element.get(0).getBoundingClientRect(),
|
|||
|
height = rect.bottom - rect.top,
|
|||
|
visible = {
|
|||
|
top: rect.top >= 0 && rect.top < viewportHeight,
|
|||
|
bottom: rect.bottom > 0 && rect.bottom < viewportHeight
|
|||
|
},
|
|||
|
visiblePx = 0;
|
|||
|
|
|||
|
if (visible.top && visible.bottom) {
|
|||
|
|
|||
|
visiblePx = height;
|
|||
|
} else if (visible.top) {
|
|||
|
visiblePx = viewportHeight - rect.top;
|
|||
|
} else if (visible.bottom) {
|
|||
|
visiblePx = rect.bottom;
|
|||
|
} else if (height > viewportHeight && rect.top < 0) {
|
|||
|
var absTop = Math.abs(rect.top);
|
|||
|
|
|||
|
if (absTop < height) {
|
|||
|
visiblePx = height - absTop;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return visiblePx;
|
|||
|
}
|
|||
|
|
|||
|
jQuery.fn.mostVisible = function() {
|
|||
|
return getMostVisible(this);
|
|||
|
};
|
|||
|
|
|||
|
jQuery(window).on('scroll', function () {
|
|||
|
|
|||
|
if (!jQuery('.data-wrapper').length) return;
|
|||
|
|
|||
|
jQuery.fn.mostVisible = function() {
|
|||
|
return getMostVisible(this);
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
var currentTitle = jQuery('.data-wrapper').mostVisible().data('title');
|
|||
|
var currentUrl = jQuery('.data-wrapper').mostVisible().data('url');
|
|||
|
// var currentDescription = jQuery(this).data('description');
|
|||
|
var currentDescription = jQuery('.data-wrapper').mostVisible().data('description');
|
|||
|
|
|||
|
if (document.title != currentTitle)
|
|||
|
{
|
|||
|
window.history.pushState('', '', currentUrl);
|
|||
|
document.title = currentTitle;
|
|||
|
// document.querySelector('meta[name="description"]').setAttribute("content", currentDescription);
|
|||
|
// document.querySelector('meta[property="og:description"]').setAttribute("content", currentDescription);
|
|||
|
// document.querySelector('link[rel="canonical"]').setAttribute("href", currentUrl);
|
|||
|
// document.querySelector('meta[property="og:url"]').setAttribute("content", currentUrl);
|
|||
|
// document.querySelector('meta[property="og:title"]').setAttribute("content", currentTitle);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (!ajax_request_sent && jQuery(window).scrollTop() >= jQuery('.projects-list-wrap').offset().top + jQuery('.projects-list-wrap').outerHeight() - window.innerHeight + jQuery('header').outerHeight() - 1000) {
|
|||
|
ajax_request_sent = true;
|
|||
|
|
|||
|
|
|||
|
// var single_offset = localStorage.getItem("single-offset");
|
|||
|
// var tag = localStorage.getItem("search-tag");
|
|||
|
console.log('offset', single_offset);
|
|||
|
var tag = jQuery('#catcat').data('tag');
|
|||
|
var sameid = jQuery('#catcat').data('sameid');
|
|||
|
// var tag = localStorage.getItem("search-tag");
|
|||
|
|
|||
|
console.log( 'загружаем блок новостей, тег ', tag );
|
|||
|
|
|||
|
jQuery.ajax({
|
|||
|
type: "POST",
|
|||
|
url: myajax.url,
|
|||
|
dataType: "html",
|
|||
|
data: {
|
|||
|
action: "get_ajax_blog_single_post",
|
|||
|
offset: single_offset,
|
|||
|
tag: tag,
|
|||
|
sameid: sameid,
|
|||
|
},
|
|||
|
success: function success(response) {
|
|||
|
|
|||
|
var data = JSON.parse(response);
|
|||
|
//console.log(data);
|
|||
|
if (data.results == true)
|
|||
|
{
|
|||
|
//jQuery(".article-container").after(data.content);
|
|||
|
//jQuery(".article-container").after('<div class="layout first-layout"></div>');
|
|||
|
window.history.pushState('', '', data.url);
|
|||
|
document.title = data.title;
|
|||
|
console.log('ID ', data.ID , 'title ', data.title, 'description ', data.description);
|
|||
|
|
|||
|
// document.querySelector('meta[name="description"]').setAttribute("content", data.description);
|
|||
|
// document.querySelector('meta[property="og:description"]').setAttribute("content", data.description);
|
|||
|
// document.querySelector('link[rel="canonical"]').setAttribute("href", data.url);
|
|||
|
// document.querySelector('meta[property="og:url"]').setAttribute("content", data.url);
|
|||
|
// document.querySelector('meta[property="og:title"]').setAttribute("content", data.title);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
localStorage.setItem("current-url", data.url);
|
|||
|
//localStorage.setItem("justNotLoaded", 1);
|
|||
|
jQuery('.projects-list-wrap').append(data.content);
|
|||
|
ajax_request_sent = false;
|
|||
|
single_offset++;
|
|||
|
}
|
|||
|
|
|||
|
else if ( data.results == false )
|
|||
|
{
|
|||
|
console.log('not success');
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
function loadNextPost()
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
var siteUrl = window.location.protocol + "//" + window.location.hostname;
|
|||
|
console.log(window.location.hostname);
|
|||
|
|
|||
|
(function ($, undefined) {
|
|||
|
function get_posts() {
|
|||
|
|
|||
|
if('pampadu1.ru' == window.location.hostname)
|
|||
|
{
|
|||
|
|
|||
|
console.log('бой');
|
|||
|
var offset = localStorage.getItem("current-offset");
|
|||
|
|
|||
|
console.log(offset)
|
|||
|
var banner = !localStorage.getItem("banner-displayed");
|
|||
|
var tag = localStorage.getItem("search-tag");
|
|||
|
$.ajax({
|
|||
|
type: "POST",
|
|||
|
url: myajax.url,
|
|||
|
dataType: "html",
|
|||
|
data: {
|
|||
|
action: "get_ajax_blog_posts",
|
|||
|
offset: offset,
|
|||
|
tag: tag,
|
|||
|
numberposts: 11
|
|||
|
},
|
|||
|
success: function success(response) {
|
|||
|
console.log(2222, response)
|
|||
|
$("#articles-container").append(response);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if(( 'blg.pampadu.ru' == window.location.hostname) || ('pampadu.ru' == window.location.hostname) || ('pampadu.disertinsky.com' == window.location.hostname))
|
|||
|
{
|
|||
|
|
|||
|
console.log('отладка');
|
|||
|
|
|||
|
var offset = localStorage.getItem("current-offset");
|
|||
|
var banner = !localStorage.getItem("banner-displayed");
|
|||
|
var tag = localStorage.getItem("search-tag");
|
|||
|
var title = jQuery('#articles-container').data('title');
|
|||
|
var total_pages = jQuery('#articles-container').data('total');
|
|||
|
//определяем страницу автора
|
|||
|
var url = window.location.href;
|
|||
|
urlArr = url.split('/');
|
|||
|
var author = urlArr[5];
|
|||
|
// добавил наличие тега
|
|||
|
if (tag == "undefined") {
|
|||
|
tag = '';
|
|||
|
}
|
|||
|
switch (author) {
|
|||
|
case "e-bakumenkov":
|
|||
|
author = 4;
|
|||
|
break;
|
|||
|
case "aurika":
|
|||
|
author = 6;
|
|||
|
break;
|
|||
|
case "elena":
|
|||
|
author = 2;
|
|||
|
break;
|
|||
|
case "andrey":
|
|||
|
author = 3;
|
|||
|
break;
|
|||
|
case "admin":
|
|||
|
author = 1;
|
|||
|
break;
|
|||
|
case "ikruchik":
|
|||
|
author = 8;
|
|||
|
break;
|
|||
|
case "achechin":
|
|||
|
author = 15;
|
|||
|
break;
|
|||
|
case "anton":
|
|||
|
author = 5;
|
|||
|
break;
|
|||
|
case "chekarov":
|
|||
|
author = 16;
|
|||
|
break;
|
|||
|
case "silin":
|
|||
|
author = 14;
|
|||
|
break;
|
|||
|
case "undefined":
|
|||
|
author = '';
|
|||
|
break;
|
|||
|
default:
|
|||
|
author = '';
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
jQuery.ajax({
|
|||
|
type: "POST",
|
|||
|
url: myajax.url,
|
|||
|
data: {'action': 'get_ajax_blog_posts_new', 'offset':offset, 'tag': tag, numberposts: 11,'author': author },
|
|||
|
success: function (response) {
|
|||
|
var data = JSON.parse(response);
|
|||
|
// console.log(data);
|
|||
|
if (data.results == true)
|
|||
|
{
|
|||
|
console.log('success');
|
|||
|
jQuery("#articles-container").append(data.response);
|
|||
|
var pagen = (offset / 11) + 1;
|
|||
|
|
|||
|
if ((pagen) && (pagen > 0))
|
|||
|
{
|
|||
|
var pageUrl = '?' + 'PAGEN=' + pagen;
|
|||
|
var pageUrlPrev = '?' + 'PAGEN=' + (pagen - 1);
|
|||
|
|
|||
|
|
|||
|
window.history.pushState('', '', pageUrl);
|
|||
|
console.log('title ', title);
|
|||
|
document.title = title + " Страница " + pagen;
|
|||
|
var meta=document.getElementsByTagName("meta");
|
|||
|
for (var i=0; i<meta.length; i++) {
|
|||
|
if (meta[i].name.toLowerCase()=="description") {
|
|||
|
meta[i].content = "Блог Пампаду — рассказываем о нас и о том, как зарабатывать на страховании" + " Страница " + pagen;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
console.log('pushState ', pageUrl);
|
|||
|
ym(55127530, 'hit', pageUrl, {title: document.title, referer: pageUrlPrev});
|
|||
|
ga('send', 'pageview', pageUrl);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
window.history.pushState('', '', siteUrl);
|
|||
|
console.log('pushState ', siteUrl);
|
|||
|
}
|
|||
|
console.log('success pagen ', pagen);
|
|||
|
}
|
|||
|
else if (( data.results == false ) || (total_pages == pagen))
|
|||
|
{
|
|||
|
console.log('not success');
|
|||
|
jQuery("#show-more").hide();
|
|||
|
jQuery("#rel_next").remove();
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
jQuery(document).ready(function () {
|
|||
|
console.log("Start Site jQuery, current Link:", siteUrl, document.title);
|
|||
|
|
|||
|
var offset = jQuery('#articles-container').data('paged');
|
|||
|
var total_pages = jQuery('#articles-container').data('total');
|
|||
|
|
|||
|
if (offset >= total_pages)
|
|||
|
{
|
|||
|
jQuery("#show-more").hide();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (offset > 1)
|
|||
|
{
|
|||
|
offset = (offset * 11 ) - 11;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
offset = 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
localStorage.setItem("current-offset", offset);
|
|||
|
localStorage.setItem("banner-displayed", false);
|
|||
|
var selectedTag = $('.blog-tag.active').attr("id");
|
|||
|
localStorage.setItem("search-tag", selectedTag === "all" ? "" : selectedTag);
|
|||
|
var offset = 0; // get_posts();
|
|||
|
|
|||
|
$(".show-more").on("click", function (ev) {
|
|||
|
ev.preventDefault();
|
|||
|
localStorage.setItem("current-offset", localStorage.getItem("current-offset") * 1 + 11);
|
|||
|
get_posts();
|
|||
|
});
|
|||
|
$(".blog-tag").on("click", function () {
|
|||
|
$(".blog-tag").removeClass("active");
|
|||
|
localStorage.setItem("search-tag", $(this).attr("id"));
|
|||
|
$(this).addClass("active");
|
|||
|
$("#articles-container").empty();
|
|||
|
get_posts();
|
|||
|
});
|
|||
|
$(".sm-headbar-control").on("click", function () {
|
|||
|
$(this).toggleClass('opened');
|
|||
|
$(".main-menu__container").toggle();
|
|||
|
$(".header-login__menu").toggleClass('d-f');
|
|||
|
});
|
|||
|
jQuery(".mobile-submenu__toggle").on("click", function (ev) {
|
|||
|
ev.preventDefault();
|
|||
|
// $(this).toggleClass('opened');
|
|||
|
jQuery(this).next().toggle();
|
|||
|
});
|
|||
|
$("#menu-mobilnoe-menyu .menu-item-has-children").on("click", function () {
|
|||
|
$(this).toggleClass('opened');
|
|||
|
$(this).find('.sub-menu').first().toggle();
|
|||
|
});
|
|||
|
$("#footer-mobile-menu>.menu-item-has-children").on("click", function () {
|
|||
|
$(this).toggleClass('opened');
|
|||
|
$(this).find('.sub-menu').toggle();
|
|||
|
});
|
|||
|
$('#menu-item-4040 > a').on("click", function () {
|
|||
|
carrotquest.open();
|
|||
|
});
|
|||
|
$(".sub-menu").on("click", function (e) {
|
|||
|
e.stopPropagation();
|
|||
|
}); //localStorage.setItem("banner-displayed", true);
|
|||
|
}); //utm_links
|
|||
|
|
|||
|
})(jQuery);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
jQuery( document ).ready(function() {
|
|||
|
jQuery('.show-all_tag').click(function(){
|
|||
|
if (jQuery('.tag-item:nth-child(7) ~ a').is(':visible')) {
|
|||
|
jQuery('.tag-item:nth-child(7) ~ a').hide(400);
|
|||
|
jQuery(this).toggleClass("active");
|
|||
|
jQuery(this).find('span').text('Ещё');
|
|||
|
}
|
|||
|
else {
|
|||
|
jQuery(this).removeClass("active");
|
|||
|
jQuery('.tag-item:nth-child(7) ~ a').toggle(400);
|
|||
|
jQuery(this).find('span').text('Скрыть теги');
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
// jQuery( document ).ready(function() {
|
|||
|
// var slider = jQuery('#index-trust-slider').lightSlider({
|
|||
|
// item: 1,
|
|||
|
// autoWidth: false,
|
|||
|
// slideMove: 1, // slidemove will be 1 if loop is true
|
|||
|
// slideMargin: 0,
|
|||
|
// loop:true,
|
|||
|
// pager: false,
|
|||
|
// auto: true,
|
|||
|
// pauseOnHover: true,
|
|||
|
// speed: 2000,
|
|||
|
// pause: 5000,
|
|||
|
// });
|
|||
|
// jQuery('#nextSlide').click(function(){
|
|||
|
// slider.goToNextSlide();
|
|||
|
// });
|
|||
|
// jQuery('#prevSlide').click(function(){
|
|||
|
// slider.goToPrevSlide();
|
|||
|
// });
|
|||
|
// });
|
|||
|
|
|||
|
// jQuery(document).ready(function(){
|
|||
|
// jQuery('.index-trust-slider').slick({
|
|||
|
// // slidesToShow: 1,
|
|||
|
// // slidesToScroll: 1,
|
|||
|
// // autoplay: true,
|
|||
|
// // autoplaySpeed: 2000,
|
|||
|
// });
|
|||
|
// });
|
|||
|
|
|||
|
// jQuery(document).ready(function () {
|
|||
|
// jQuery(".article-share__icon").on("click", function () {
|
|||
|
// jQuery(this).next(".article-share__list").show();
|
|||
|
// });
|
|||
|
// jQuery(document).mouseup(function (e) {
|
|||
|
// if (jQuery(e.target).
|
|||
|
// closest(".article-share__list").
|
|||
|
// length=== 0) {
|
|||
|
// jQuery(".article-share__list").hide();
|
|||
|
// }
|
|||
|
// });
|
|||
|
// jQuery(".show-commmentsform ").on("click", function () {
|
|||
|
// jQuery(this).hide();
|
|||
|
// jQuery(this).next(".article-comments").show();
|
|||
|
// });
|
|||
|
// jQuery(".article-header .article-comments__count").on("click", function () {
|
|||
|
// console.log(jQuery(this).data("id"));
|
|||
|
// let currid = jQuery(this).data("id");
|
|||
|
// jQuery(`#article-${currid}-comments__container`).toggle();
|
|||
|
// jQuery('html, body').animate({
|
|||
|
// scrollTop: jQuery(`#article-${currid}-comments__container`).offset().top
|
|||
|
// }, 500);
|
|||
|
// });
|
|||
|
// jQuery(".article-body .article-comments__count").on("click", function () {
|
|||
|
// console.log('click');
|
|||
|
// // console.log(jQuery(this).data("id"));
|
|||
|
// let currid = jQuery(this).data("id");
|
|||
|
// // console.log(currid);
|
|||
|
// console.log('works&!');
|
|||
|
// // console.log(jQuery(`#article-${currid}-comments__container`));
|
|||
|
// jQuery(`#article-${currid}-comments__container`).toggle();
|
|||
|
// });
|
|||
|
// });
|
|||
|
// jQuery(".article-header .article-comments__count").on("click", function () {
|
|||
|
// console.log('dfgdffg');
|
|||
|
// });
|