| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156 |
- /*! lightslider - v1.1.6 - 2016-10-25
- * https://github.com/sachinchoolur/lightslider
- * Copyright (c) 2016 Sachin N; Licensed MIT */
- (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));
|