PageSourceSearch

https://www.verex-tactical.com/wp-content/plugins/salient-nectar-slider/js/nectar-slider.js

js verex-tactical.com collected 2026-09-26 17:56:48 UTC 219,629 bytes, 5,730 lines download raw bytes

1/* global anime */
2
3/*
4 * http://www.idangero.us/sliders/swiper/
5 *
6 * Copyright 2012-2013, Vladimir Kharlampidi
7 * The iDangero.us
8 * http://www.idangero.us/
9 *
10 * Licensed under GPL & MIT
11*/
12
13if(!jQuery().nectarswiper) {
14
15var NectarSwiper = function (selector, params) {
16    if (document.body.__defineGetter__) {
17        
18        var testOuterHTML = document.querySelector('div');
19      
20        if( typeof testOuterHTML.outerHTML === "undefined" ) {
21
22          if (HTMLElement) {
23              var element = HTMLElement.prototype;
24              if (element.__defineGetter__) {
25                  element.__defineGetter__("outerHTML", function () { return new XMLSerializer().serializeToString(this); } );
26              }
27          }
28          
29      }
30      
31    }
32
33    if (!window.getComputedStyle) {
34        window.getComputedStyle = function (el, pseudo) {
35            this.el = el;
36            this.getPropertyValue = function (prop) {
37                var re = /(\-([a-z]){1})/g;
38                if (prop === 'float') prop = 'styleFloat';
39                if (re.test(prop)) {
40                    prop = prop.replace(re, function () {
41                        return arguments[2].toUpperCase();
42                    });
43                }
44                return el.currentStyle[prop] ? el.currentStyle[prop] : null;
45            };
46            return this;
47        };
48    }
49    if (!Array.prototype.indexOf) {
50        Array.prototype.indexOf = function(obj, start) {
51            for (var i = (start || 0), j = this.length; i < j; i++) {
52                if (this[i] === obj) { return i; }
53            }
54            return -1;
55        };
56    }
57    if (!document.querySelectorAll) {
58        if (!window.jQuery) return;
59    }
60    function $$(selector, context) {
61        if (document.querySelectorAll)
62            return (context || document).querySelectorAll(selector);
63        else
64            return jQuery(selector, context);
65    }
66
67    /*=========================
68      Check for correct selector
69      ===========================*/
70    if(typeof selector === 'undefined') return;
71
72    if(!(selector.nodeType)){
73        if ($$(selector).length === 0) return;
74    }
75
76     /*=========================
77      _this
78      ===========================*/
79    var _this = this;
80
81     /*=========================
82      Default Flags and vars
83      ===========================*/
84    _this.touches = {
85        start:0,
86        startX:0,
87        startY:0,
88        current:0,
89        currentX:0,
90        currentY:0,
91        diff:0,
92        abs:0
93    };
94    _this.positions = {
95        start:0,
96        abs:0,
97        diff:0,
98        current:0
99    };
100    _this.times = {
101        start:0,
102        end:0
103    };
104
105    _this.id = (new Date()).getTime();
106    _this.container = (selector.nodeType) ? selector : $$(selector)[0];
107    _this.isTouched = false;
108    _this.isMoved = false;
109    _this.activeIndex = 0;
110    _this.activeLoaderIndex = 0;
111    _this.activeLoopIndex = 0;
112    _this.previousIndex = null;
113    _this.velocity = 0;
114    _this.snapGrid = [];
115    _this.slidesGrid = [];
116    _this.imagesToLoad = [];
117    _this.imagesLoaded = 0;
118    _this.wrapperLeft=0;
119    _this.wrapperRight=0;
120    _this.wrapperTop=0;
121    _this.wrapperBottom=0;
122    var wrapper, slideSize, wrapperSize, direction, isScrolling, containerSize;
123
124    /*=========================
125      Default Parameters
126      ===========================*/
127    var defaults = {
128        mode : 'horizontal', // or 'vertical'
129        touchRatio : 1,
130        speed : 300,
131        freeMode : false,
132        freeModeFluid : false,
133        momentumRatio: 1,
134        momentumBounce: true,
135        momentumBounceRatio: 1,
136        slidesPerView : 1,
137        slidesPerGroup : 1,
138        simulateTouch : true,
139        followFinger : true,
140        shortSwipes : true,
141        moveStartThreshold:false,
142        autoplay: false,
143        onlyExternal : false,
144        createPagination : true,
145        pagination : false,
146        paginationElement: 'span',
147        paginationClickable: false,
148        paginationAsRange: true,
149        resistance : true, // or false or 100%
150        scrollContainer : false,
151        preventLinks : true,
152        noSwiping : false, // or class
153        noSwipingClass : 'swiper-no-swiping', //:)
154        initialSlide: 0,
155        keyboardControl: false,
156        mousewheelControl : false,
157        mousewheelDebounce: 600,
158        useCSS3Transforms : true,
159        //Loop mode
160        loop:false,
161        loopAdditionalSlides:0,
162        //Auto Height
163        calculateHeight: false,
164        //Images Preloader
165        updateOnImagesReady : true,
166        //Form elements
167        releaseFormElements : true,
168        //Watch for active slide, useful when use effects on different slide states
169        watchActiveIndex: false,
170        //Slides Visibility Fit
171        visibilityFullFit : false,
172        //Slides Offset
173        offsetPxBefore : 0,
174        offsetPxAfter : 0,
175        offsetSlidesBefore : 0,
176        offsetSlidesAfter : 0,
177        centeredSlides: false,
178        //Queue callbacks
179        queueStartCallbacks : false,
180        queueEndCallbacks : false,
181        //Auto Resize
182        autoResize : true,
183        resizeReInit : false,
184        //DOMAnimation
185        DOMAnimation : true,
186        //Slides Loader
187        loader: {
188            slides:[], //array with slides
189            slidesHTMLType:'inner', // or 'outer'
190            surroundGroups: 1, //keep preloaded slides groups around view
191            logic: 'reload', //or 'change'
192            loadAllSlides: false
193        },
194        //Namespace
195        slideElement : 'div',
196        slideClass : 'swiper-slide',
197        slideActiveClass : 'swiper-slide-active',
198        slideVisibleClass : 'swiper-slide-visible',
199        wrapperClass : 'swiper-wrapper',
200        paginationElementClass: 'swiper-pagination-switch',
201        /*nectar addition*/
202        paginationActiveClass : 'swiper-active-switch ar-vis',
203        /*nectar addition end*/
204        paginationVisibleClass : 'swiper-visible-switch'
205    };
206    params = params || {};
207    for (var prop in defaults) {
208        if (prop in params && typeof params[prop]==='object') {
209            for (var subProp in defaults[prop]) {
210                if (! (subProp in params[prop])) {
211                    params[prop][subProp] = defaults[prop][subProp];
212                }
213            }
214        }
215        else if (! (prop in params)) {
216            params[prop] = defaults[prop];
217        }
218    }
219    _this.params = params;
220    if (params.scrollContainer) {
221        params.freeMode = true;
222        params.freeModeFluid = true;
223    }
224    if (params.loop) {
225        params.resistance = '100%';
226    }
227    var isH = params.mode==='horizontal';
228
229    /*=========================
230      Define Touch Events
231      ===========================*/
232
233    _this.touchEvents = {
234        touchStart : _this.support.touch || !params.simulateTouch  ? 'touchstart' : (_this.browser.ie10 ? 'MSPointerDown' : 'mousedown'),
235        touchMove : _this.support.touch || !params.simulateTouch ? 'touchmove' : (_this.browser.ie10 ? 'MSPointerMove' : 'mousemove'),
236        touchEnd : _this.support.touch || !params.simulateTouch ? 'touchend' : (_this.browser.ie10 ? 'MSPointerUp' : 'mouseup')
237    };
238
239    /*=========================
240      Wrapper
241      ===========================*/
242    for (var i = _this.container.childNodes.length - 1; i >= 0; i--) {
243        if (_this.container.childNodes[i].className) {
244            var _wrapperClasses = _this.container.childNodes[i].className.split(/\s+/);
245            for (var j = 0; j < _wrapperClasses.length; j++) {
246                if (_wrapperClasses[j] === params.wrapperClass) {
247                    wrapper = _this.container.childNodes[i];
248                }
249            }
250        }
251    }
252
253    _this.wrapper = wrapper;
254    /*=========================
255      Slide API
256      ===========================*/
257    _this._extendSwiperSlide = function  (el) {
258        el.append = function () {
259            if (params.loop) {
260                el.insertAfter(_this.slides.length-_this.loopedSlides);
261                _this.removeLoopedSlides();
262                _this.calcSlides();
263                _this.createLoop();
264            }
265            else {
266                _this.wrapper.appendChild(el);
267            }
268
269            _this.reInit();
270            return el;
271        };
272        el.prepend = function () {
273            if (params.loop) {
274                _this.wrapper.insertBefore(el, _this.slides[_this.loopedSlides]);
275                _this.removeLoopedSlides();
276                _this.calcSlides();
277                _this.createLoop();
278            }
279            else {
280                _this.wrapper.insertBefore(el, _this.wrapper.firstChild);
281            }
282            _this.reInit();
283            return el;
284        };
285        el.insertAfter = function (index) {
286            if(typeof index === 'undefined') return false;
287            var beforeSlide;
288
289            if (params.loop) {
290                beforeSlide = _this.slides[index + 1 + _this.loopedSlides];
291                _this.wrapper.insertBefore(el, beforeSlide);
292                _this.removeLoopedSlides();
293                _this.calcSlides();
294                _this.createLoop();
295            }
296            else {
297                beforeSlide = _this.slides[index + 1];
298                _this.wrapper.insertBefore(el, beforeSlide);
299            }
300            _this.reInit();
301            return el;
302        };
303        el.clone = function () {
304            return _this._extendSwiperSlide(el.cloneNode(true));
305        };
306        el.remove = function () {
307            _this.wrapper.removeChild(el);
308            _this.reInit();
309        };
310        el.html = function (html) {
311            if (typeof html === 'undefined') {
312                return el.innerHTML;
313            }
314            else {
315                el.innerHTML = html;
316                return el;
317            }
318        };
319        el.index = function () {
320            var index;
321            for (var i = _this.slides.length - 1; i >= 0; i--) {
322                if(el === _this.slides[i]) index = i;
323            }
324            return index;
325        };
326        el.isActive = function () {
327            if (el.index() === _this.activeIndex) { return true; }
328            else return false;
329        };
330        if (!el.swiperSlideDataStorage) el.swiperSlideDataStorage={};
331        el.getData = function (name) {
332            return el.swiperSlideDataStorage[name];
333        };
334        el.setData = function (name, value) {
335            el.swiperSlideDataStorage[name] = value;
336            return el;
337        };
338        el.data = function (name, value) {
339            if (!value) {
340                return el.getAttribute('data-'+name);
341            }
342            else {
343                el.setAttribute('data-'+name,value);
344                return el;
345            }
346        };
347        el.getWidth = function (outer) {
348            return _this.h.getWidth(el, outer);
349        };
350        el.getHeight = function (outer) {
351            return _this.h.getHeight(el, outer);
352        };
353        el.getOffset = function() {
354            return _this.h.getOffset(el);
355        };
356        return el;
357    };
358
359    //Calculate information about number of slides
360    _this.calcSlides = function (forceCalcSlides) {
361        var oldNumber = _this.slides ? _this.slides.length : false;
362        _this.slides = [];
363        _this.displaySlides = [];
364        for (var i = 0; i < _this.wrapper.childNodes.length; i++) {
365            if (_this.wrapper.childNodes[i].className) {
366                var _className = _this.wrapper.childNodes[i].className;
367                var _slideClasses = _className.split(' ');
368                for (var j = 0; j < _slideClasses.length; j++) {
369                    if(_slideClasses[j]===params.slideClass) {
370                        _this.slides.push(_this.wrapper.childNodes[i]);
371                    }
372                }
373            }
374        }
375        for (i = _this.slides.length - 1; i >= 0; i--) {
376            _this._extendSwiperSlide(_this.slides[i]);
377        }
378        if (!oldNumber) return;
379        if(oldNumber!==_this.slides.length || forceCalcSlides) {
380            // Number of slides has been changed
381            removeSlideEvents();
382            addSlideEvents();
383            _this.updateActiveSlide();
384            if (params.createPagination && _this.params.pagination) _this.createPagination();
385            _this.callPlugins('numberOfSlidesChanged');
386        }
387    };
388
389    //Create Slide
390    _this.createSlide = function (html, slideClassList, el) {
391        var slideClassList = slideClassList || _this.params.slideClass;
392        var el = el||params.slideElement;
393        var newSlide = document.createElement(el);
394        newSlide.innerHTML = html||'';
395        newSlide.className = slideClassList;
396        return _this._extendSwiperSlide(newSlide);
397    };
398
399    //Append Slide
400    _this.appendSlide = function (html, slideClassList, el) {
401        if (!html) return;
402        if (html.nodeType) {
403            return _this._extendSwiperSlide(html).append();
404        }
405        else {
406            return _this.createSlide(html, slideClassList, el).append();
407        }
408    };
409    _this.prependSlide = function (html, slideClassList, el) {
410        if (!html) return;
411        if (html.nodeType) {
412            return _this._extendSwiperSlide(html).prepend();
413        }
414        else {
415            return _this.createSlide(html, slideClassList, el).prepend();
416        }
417    };
418    _this.insertSlideAfter = function (index, html, slideClassList, el) {
419        if (typeof index === 'undefined') return false;
420        if (html.nodeType) {
421            return _this._extendSwiperSlide(html).insertAfter(index);
422        }
423        else {
424            return _this.createSlide(html, slideClassList, el).insertAfter(index);
425        }
426    };
427    _this.removeSlide = function (index) {
428        if (_this.slides[index]) {
429            if (params.loop) {
430                if (!_this.slides[index+_this.loopedSlides]) return false;
431                _this.slides[index+_this.loopedSlides].remove();
432                _this.removeLoopedSlides();
433                _this.calcSlides();
434                _this.createLoop();
435            }
436            else _this.slides[index].remove();
437            return true;
438        }
439        else return false;
440    };
441    _this.removeLastSlide = function () {
442        if (_this.slides.length>0) {
443            if (params.loop) {
444                _this.slides[_this.slides.length - 1 - _this.loopedSlides].remove();
445                _this.removeLoopedSlides();
446                _this.calcSlides();
447                _this.createLoop();
448            }
449            else _this.slides[ (_this.slides.length-1) ].remove();
450            return true;
451        }
452        else {
453            return false;
454        }
455    };
456    _this.removeAllSlides = function () {
457        for (var i = _this.slides.length - 1; i >= 0; i--) {
458            _this.slides[i].remove();
459        }
460    };
461    _this.getSlide = function (index) {
462        return _this.slides[index];
463    };
464    _this.getLastSlide = function () {
465        return _this.slides[ _this.slides.length-1 ];
466    };
467    _this.getFirstSlide = function () {
468        return _this.slides[0];
469    };
470
471    //Currently Active Slide
472    _this.activeSlide = function () {
473        return _this.slides[_this.activeIndex];
474    };
475
476    /*=========================
477      Plugins API
478      ===========================*/
479    var _plugins = [];
480    for (var plugin in _this.plugins) {
481        if (params[plugin]) {
482            var p = _this.plugins[plugin](_this, params[plugin]);
483            if (p) _plugins.push( p );
484        }
485    }
486    _this.callPlugins = function(method, args) {
487        if (!args) args = {}
488        for (var i=0; i<_plugins.length; i++) {
489            if (method in _plugins[i]) {
490                _plugins[i][method](args);
491            }
492        }
493    };
494
495
496         /*=========================
497
498     Wrapper for Callbacks : Allows additive callbacks via function arrays
499
500     ===========================*/
501
502    _this.fireCallback = function() {
503
504        var callback = arguments[0];
505
506        if( Object.prototype.toString.call( callback ) === '[object Array]' ) {
507
508            for (var i = 0; i < callback.length; i++) {
509
510                if (typeof callback[i] === 'function') {
511
512                    callback[i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
513
514                }
515
516            }
517
518        } else {
519
520            callback(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
521
522        }
523
524    };
525
526    function isArray (obj) {
527
528        "use strict";
529
530        if (Object.prototype.toString.apply( obj ) === '[object Array]') {
531          return true;
532        }
533
534        return false;
535
536    }
537
538
539
540    /**
541
542+     * Allows user to add callbacks, rather than replace them
543
544+     * @param callback
545
546+     * @param func
547
548+     * @return {*}
549
550+     */
551
552    _this.addCallback = function (callback, func) {
553
554        "use strict";
555
556        var _this = this, tempFunc;
557
558        if (_this.params['on' + callback]) {
559
560           if (isArray(this.params['on' + callback])) {
561
562                return this.params['on' + callback].push(func);
563
564            } else if (typeof this.params['on' + callback] === 'function') {
565
566                tempFunc = this.params['on' + callback];
567
568                this.params['on' + callback] = [];
569
570                this.params['on' + callback].push(tempFunc);
571
572               return this.params['on' + callback].push(func);
573
574            }
575
576        } else {
577
578            this.params['on' + callback] = [];
579
580           return this.params['on' + callback].push(func);
581
582        }
583
584    };
585
586    _this.removeCallbacks = function (callback) {
587
588        if (_this.params['on' + callback]) {
589
590            return _this.params['on' + callback] = null;
591
592        }
593
594    };
595
596
597
598    /*=========================
599
600
601    /*=========================
602      WP8 Fix
603      ===========================*/
604    if (_this.browser.ie10 && !params.onlyExternal) {
605        _this.wrapper.classList.add('swiper-wp8-' + (isH ? 'horizontal' : 'vertical'));
606    }
607
608    /*=========================
609      Free Mode Class
610      ===========================*/
611    if (params.freeMode) {
612        _this.container.className+=' swiper-free-mode';
613    }
614
615    /*==================================================
616        Init/Re-init/Resize Fix
617    ====================================================*/
618    _this.initialized = false;
619    _this.init = function(force, forceCalcSlides) {
620        var _width = _this.h.getWidth(_this.container);
621        var _height = _this.h.getHeight(_this.container);
622        if (_width===_this.width && _height===_this.height && !force) return;
623        _this.width = _width;
624        _this.height = _height;
625
626        containerSize = isH ? _width : _height;
627        var wrapper = _this.wrapper;
628
629        if (force) {
630            _this.calcSlides(forceCalcSlides);
631        }
632
633        if (params.slidesPerView==='auto') {
634            //Auto mode
635            var slidesWidth = 0;
636            var slidesHeight = 0;
637
638            //Unset Styles
639            if (params.slidesOffset>0) {
640                wrapper.style.paddingLeft = '';
641                wrapper.style.paddingRight = '';
642                wrapper.style.paddingTop = '';
643                wrapper.style.paddingBottom = '';
644            }
645            wrapper.style.width = '';
646            wrapper.style.height = '';
647            if (params.offsetPxBefore>0) {
648                if (isH) _this.wrapperLeft = params.offsetPxBefore;
649                else _this.wrapperTop = params.offsetPxBefore;
650            }
651            if (params.offsetPxAfter>0) {
652                if (isH) _this.wrapperRight = params.offsetPxAfter;
653                else _this.wrapperBottom = params.offsetPxAfter;
654            }
655
656            if (params.centeredSlides) {
657                if (isH) {
658                    _this.wrapperLeft = (containerSize - this.slides[0].getWidth(true) )/2;
659                    _this.wrapperRight = (containerSize - _this.slides[ _this.slides.length-1 ].getWidth(true))/2;
660                }
661                else {
662                    _this.wrapperTop = (containerSize - _this.slides[0].getHeight(true))/2;
663                    _this.wrapperBottom = (containerSize - _this.slides[ _this.slides.length-1 ].getHeight(true))/2;
664                }
665            }
666
667            if (isH) {
668                if (_this.wrapperLeft>=0) wrapper.style.paddingLeft = _this.wrapperLeft+'px';
669                if (_this.wrapperRight>=0) wrapper.style.paddingRight = _this.wrapperRight+'px';
670            }
671            else {
672                if (_this.wrapperTop>=0) wrapper.style.paddingTop = _this.wrapperTop+'px';
673                if (_this.wrapperBottom>=0) wrapper.style.paddingBottom = _this.wrapperBottom+'px';
674            }
675            var slideLeft = 0;
676            var centeredSlideLeft=0;
677            _this.snapGrid = [];
678            _this.slidesGrid = [];
679
680            var slideMaxHeight = 0;
681            for(var i = 0; i<_this.slides.length; i++) {
682                var slideWidth = _this.slides[i].getWidth(true);
683                var slideHeight = _this.slides[i].getHeight(true);
684                if (params.calculateHeight) {
685                    slideMaxHeight = Math.max(slideMaxHeight, slideHeight);
686                }
687                var _slideSize = isH ? slideWidth : slideHeight;
688                if (params.centeredSlides) {
689                    var nextSlideWidth = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getWidth(true);
690                    var nextSlideHeight = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getHeight(true);
691                    var nextSlideSize = isH ? nextSlideWidth : nextSlideHeight;
692                    if (_slideSize>containerSize) {
693                        for (var j=0; j<=Math.floor(_slideSize/(containerSize+_this.wrapperLeft)); j++) {
694                            if (j === 0) _this.snapGrid.push(slideLeft+_this.wrapperLeft);
695                            else _this.snapGrid.push(slideLeft+_this.wrapperLeft+containerSize*j);
696                        }
697                        _this.slidesGrid.push(slideLeft+_this.wrapperLeft);
698                    }
699                    else {
700                        _this.snapGrid.push(centeredSlideLeft);
701                        _this.slidesGrid.push(centeredSlideLeft);
702                    }
703
704                    centeredSlideLeft += _slideSize/2 + nextSlideSize/2;
705
706                }
707                else {
708                    if (_slideSize>containerSize) {
709                        for (var j=0; j<=Math.floor(_slideSize/containerSize); j++) {
710                            _this.snapGrid.push(slideLeft+containerSize*j);
711                        }
712                    }
713                    else {
714                        _this.snapGrid.push(slideLeft);
715                    }
716                    _this.slidesGrid.push(slideLeft);
717                }
718
719                slideLeft += _slideSize;
720
721                slidesWidth += slideWidth;
722                slidesHeight += slideHeight;
723            }
724            if (params.calculateHeight) _this.height = slideMaxHeight;
725            if(isH) {
726                wrapperSize = slidesWidth + _this.wrapperRight + _this.wrapperLeft;
727                wrapper.style.width = (slidesWidth)+'px';
728                wrapper.style.height = (_this.height)+'px';
729            }
730            else {
731                wrapperSize = slidesHeight + _this.wrapperTop + _this.wrapperBottom;
732                wrapper.style.width = (_this.width)+'px';
733                wrapper.style.height = (slidesHeight)+'px';
734            }
735
736        }
737        else if (params.scrollContainer) {
738            //Scroll Container
739            wrapper.style.width = '';
740            wrapper.style.height = '';
741            var wrapperWidth = _this.slides[0].getWidth(true);
742            var wrapperHeight = _this.slides[0].getHeight(true);
743            wrapperSize = isH ? wrapperWidth : wrapperHeight;
744            wrapper.style.width = wrapperWidth+'px';
745            wrapper.style.height = wrapperHeight+'px';
746            slideSize = isH ? wrapperWidth : wrapperHeight;
747
748        }
749        else {
750            //For usual slides
751            if (params.calculateHeight) {
752                var slideMaxHeight = 0;
753                var wrapperHeight = 0;
754                //ResetWrapperSize
755                if (!isH) _this.container.style.height= '';
756                wrapper.style.height='';
757
758                for (var i=0; i<_this.slides.length; i++) {
759                    //ResetSlideSize
760                    _this.slides[i].style.height='';
761                    slideMaxHeight = Math.max( _this.slides[i].getHeight(true), slideMaxHeight );
762                    if (!isH) wrapperHeight+=_this.slides[i].getHeight(true);
763                }
764                var slideHeight = slideMaxHeight;
765                _this.height = slideHeight;
766
767                if (isH) wrapperHeight = slideHeight;
768                else containerSize = slideHeight, _this.container.style.height= containerSize+'px';
769            }
770            else {
771                var slideHeight = isH ? _this.height : _this.height/params.slidesPerView;
772                var wrapperHeight = isH ? _this.height : _this.slides.length*slideHeight;
773            }
774            var slideWidth = isH ? _this.width/params.slidesPerView : _this.width;
775            var wrapperWidth = isH ? _this.slides.length*slideWidth : _this.width;
776            slideSize = isH ? slideWidth : slideHeight;
777
778            if (params.offsetSlidesBefore>0) {
779                if (isH) _this.wrapperLeft = slideSize*params.offsetSlidesBefore;
780                else _this.wrapperTop = slideSize*params.offsetSlidesBefore;
781            }
782            if (params.offsetSlidesAfter>0) {
783                if (isH) _this.wrapperRight = slideSize*params.offsetSlidesAfter;
784                else _this.wrapperBottom = slideSize*params.offsetSlidesAfter;
785            }
786            if (params.offsetPxBefore>0) {
787                if (isH) _this.wrapperLeft = params.offsetPxBefore;
788                else _this.wrapperTop = params.offsetPxBefore;
789            }
790            if (params.offsetPxAfter>0) {
791                if (isH) _this.wrapperRight = params.offsetPxAfter;
792                else _this.wrapperBottom = params.offsetPxAfter;
793            }
794            if (params.centeredSlides) {
795                if (isH) {
796                    _this.wrapperLeft = (containerSize - slideSize)/2;
797                    _this.wrapperRight = (containerSize - slideSize)/2;
798                }
799                else {
800                    _this.wrapperTop = (containerSize - slideSize)/2;
801                    _this.wrapperBottom = (containerSize - slideSize)/2;
802                }
803            }
804            if (isH) {
805                if (_this.wrapperLeft>0) wrapper.style.paddingLeft = _this.wrapperLeft+'px';
806                if (_this.wrapperRight>0) wrapper.style.paddingRight = _this.wrapperRight+'px';
807            }
808            else {
809                if (_this.wrapperTop>0) wrapper.style.paddingTop = _this.wrapperTop+'px';
810                if (_this.wrapperBottom>0) wrapper.style.paddingBottom = _this.wrapperBottom+'px';
811            }
812
813            wrapperSize = isH ? wrapperWidth + _this.wrapperRight + _this.wrapperLeft : wrapperHeight + _this.wrapperTop + _this.wrapperBottom;
814            if (!params.cssWidthAndHeight) {
815                if (parseFloat(wrapperWidth) > 0) {
816                    wrapper.style.width = wrapperWidth+'px';
817
818                }
819
820                if (parseFloat(wrapperHeight) > 0) {
821                    wrapper.style.height = wrapperHeight+'px';
822
823                }
824
825            }
826            var slideLeft = 0;
827            _this.snapGrid = [];
828            _this.slidesGrid = [];
829            for (var i=0; i<_this.slides.length; i++) {
830                _this.snapGrid.push(slideLeft);
831                _this.slidesGrid.push(slideLeft);
832                slideLeft+=slideSize;
833                if (!params.cssWidthAndHeight) {
834                    if (parseFloat(slideWidth) > 0) {
835                        _this.slides[i].style.width = slideWidth+'px';
836
837                    }
838
839                    if (parseFloat(slideHeight) > 0) {
840                        _this.slides[i].style.height = slideHeight+'px';
841
842                    }
843
844                }
845            }
846
847        }
848
849        if (!_this.initialized) {
850            _this.callPlugins('onFirstInit');
851            if (params.onFirstInit) _this.fireCallback(params.onFirstInit,_this);
852        }
853        else {
854            _this.callPlugins('onInit');
855             if (params.onInit) _this.fireCallback(params.onInit,_this);
856        }
857        _this.initialized = true;
858    };
859    
860    _this.reInit = function (forceCalcSlides) {
861        _this.init(true, forceCalcSlides);
862    };
863    
864    _this.resizeFix = function (reInit) {
865
866        _this.callPlugins('beforeResizeFix');
867        
868        _this.init(params.resizeReInit || reInit);
869        
870        // swipe to active slide in fixed mode
871        if (!params.freeMode) {
872            _this.swipeTo((params.loop ? _this.activeLoopIndex : _this.activeIndex), 0, false);
873        }
874        
875        // move wrapper to the beginning in free mode
876        else if (_this.getWrapperTranslate() < -maxWrapperPosition()) {
877        	_this.setWrapperTransition(0);
878            _this.setWrapperTranslate(-maxWrapperPosition());
879        }
880        
881        _this.callPlugins('afterResizeFix');
882    };
883
884    /*==========================================
885        Max and Min Positions
886    ============================================*/
887    function maxWrapperPosition() {
888        var a = (wrapperSize - containerSize);
889        if (params.freeMode) {
890            a = wrapperSize - containerSize;
891        }
892        // if (params.loop) a -= containerSize;
893        if (params.slidesPerView > _this.slides.length) a = 0;
894        if (a<0) a = 0;
895        return a;
896    }
897    function minWrapperPosition() {
898        var a = 0;
899        // if (params.loop) a = containerSize;
900        return a;
901    }
902
903    /*==========================================
904        Event Listeners
905    ============================================*/
906    function initEvents() {
907        var bind = _this.h.addEventListener;
908        
909        //Touch Events
910        if (!_this.browser.ie10) {
911            if (_this.support.touch) {
912                bind(_this.wrapper, 'touchstart', onTouchStart);
913                bind(_this.wrapper, 'touchmove', onTouchMove);
914                bind(_this.wrapper, 'touchend', onTouchEnd);
915            }
916            if (params.simulateTouch) {
917                bind(_this.wrapper, 'mousedown', onTouchStart);
918                bind(document, 'mousemove', onTouchMove);
919                bind(document, 'mouseup', onTouchEnd);
920            }
921        }
922        else {
923            bind(_this.wrapper, _this.touchEvents.touchStart, onTouchStart);
924            bind(document, _this.touchEvents.touchMove, onTouchMove);
925            bind(document, _this.touchEvents.touchEnd, onTouchEnd);
926        }
927
928        //Resize Event
929        if (params.autoResize) {
930            bind(window, 'resize', _this.resizeFix);
931        }
932        //Slide Events
933        addSlideEvents();
934        //Mousewheel
935        _this._wheelEvent = false;
936        if (params.mousewheelControl) {
937            if ( document.onmousewheel !== undefined ) {
938                _this._wheelEvent = "mousewheel";
939            }
940            try {
941                WheelEvent("wheel");
942                _this._wheelEvent = "wheel";
943            } catch (e) {}
944            if ( !_this._wheelEvent ) {
945                _this._wheelEvent = "DOMMouseScroll";
946            }
947
948            if (_this._wheelEvent) {
949                bind(_this.container, _this._wheelEvent, handleMousewheel);
950            }
951        }
952
953        //Keyboard
954        if (params.keyboardControl) {
955            bind(document, 'keydown', handleKeyboardKeys);
956        }
957        if (params.updateOnImagesReady) {
958            _this.imagesToLoad = $$('img', _this.container);
959
960            for (var i=0; i<_this.imagesToLoad.length; i++) {
961                _loadImage(_this.imagesToLoad[i].getAttribute('src'));
962            }
963        }
964        function _loadImage(src) {
965            var image = new Image();
966            image.onload = function(){
967                _this.imagesLoaded++;
968                if (_this.imagesLoaded==_this.imagesToLoad.length) {
969                    _this.reInit();
970                    if (params.onImagesReady) _this.fireCallback(params.onImagesReady, _this);
971                }
972            };
973            image.src = src;
974        }
975    }
976
977    //Remove Event Listeners
978    _this.destroy = function(removeResizeFix){
979    	var unbind = _this.h.removeEventListener;
980    	
981        //Touch Events
982        if (!_this.browser.ie10) {
983            if (_this.support.touch) {
984                unbind(_this.wrapper, 'touchstart', onTouchStart);
985                unbind(_this.wrapper, 'touchmove', onTouchMove);
986                unbind(_this.wrapper, 'touchend', onTouchEnd);
987            }
988            if (params.simulateTouch) {
989                unbind(_this.wrapper, 'mousedown', onTouchStart);
990                unbind(document, 'mousemove', onTouchMove);
991                unbind(document, 'mouseup', onTouchEnd);
992            }
993        }
994        else {
995            unbind(_this.wrapper, _this.touchEvents.touchStart, onTouchStart);
996            unbind(document, _this.touchEvents.touchMove, onTouchMove);
997            unbind(document, _this.touchEvents.touchEnd, onTouchEnd);
998        }
999
1000        //Resize Event
1001        if (params.autoResize) {
1002            unbind(window, 'resize', _this.resizeFix);
1003        }
1004        
1005        //Init Slide Events
1006        removeSlideEvents();
1007
1008        //Pagination
1009        if (params.paginationClickable) {
1010            removePaginationEvents();
1011        }
1012
1013        //Mousewheel
1014        if (params.mousewheelControl && _this._wheelEvent) {
1015           unbind(_this.container, _this._wheelEvent, handleMousewheel);
1016        }
1017
1018        //Keyboard
1019        if (params.keyboardControl) {
1020            unbind(document, 'keydown', handleKeyboardKeys);
1021        }
1022
1023        //Stop autoplay
1024        if (params.autoplay) {
1025            _this.stopAutoplay();
1026        }
1027        _this.callPlugins('onDestroy');
1028
1029        //Destroy variable
1030        _this = null;
1031    };
1032    
1033    function addSlideEvents() {
1034    	var bind = _this.h.addEventListener,
1035    		i;
1036
1037        //Prevent Links Events
1038        if (params.preventLinks) {
1039            var links = $$('a', _this.container);
1040            for (i=0; i<links.length; i++) {
1041                bind(links[i], 'click', preventClick);
1042            }
1043        }
1044        //Release Form Elements
1045        if (params.releaseFormElements) {
1046            var formElements = $$('input, textarea, select', _this.container);
1047            for (i=0; i<formElements.length; i++) {
1048                bind(formElements[i], _this.touchEvents.touchStart, releaseForms, true);
1049            }
1050        }
1051
1052        //Slide Clicks & Touches
1053        if (params.onSlideClick) {
1054            for (i=0; i<_this.slides.length; i++) {
1055                bind(_this.slides[i], 'click', slideClick);
1056            }
1057        }
1058        if (params.onSlideTouch) {
1059            for (i=0; i<_this.slides.length; i++) {
1060                bind(_this.slides[i], _this.touchEvents.touchStart, slideTouch);
1061            }
1062        }
1063    }
1064    function removeSlideEvents() {
1065    	var unbind = _this.h.removeEventListener,
1066    		i;
1067
1068        //Slide Clicks & Touches
1069        if (params.onSlideClick) {
1070            for (i=0; i<_this.slides.length; i++) {
1071                unbind(_this.slides[i], 'click', slideClick);
1072            }
1073        }
1074        if (params.onSlideTouch) {
1075            for (i=0; i<_this.slides.length; i++) {
1076                unbind(_this.slides[i], _this.touchEvents.touchStart, slideTouch);
1077            }
1078        }
1079        //Release Form Elements
1080        if (params.releaseFormElements) {
1081            var formElements = $$('input, textarea, select', _this.container);
1082            for (i=0; i<formElements.length; i++) {
1083                unbind(formElements[i], _this.touchEvents.touchStart, releaseForms, true);
1084            }
1085        }
1086        //Prevent Links Events
1087        if (params.preventLinks) {
1088            var links = $$('a', _this.container);
1089            for (i=0; i<links.length; i++) {
1090                unbind(links[i], 'click', preventClick);
1091            }
1092        }
1093    }
1094    /*==========================================
1095        Keyboard Control
1096    ============================================*/
1097    function handleKeyboardKeys (e) {
1098        var kc = e.keyCode || e.charCode;
1099        if (kc==37 || kc==39 || kc==38 || kc==40) {
1100            var inView = false;
1101            //Check that swiper should be inside of visible area of window
1102            var swiperOffset = _this.h.getOffset( _this.container );
1103            var scrollLeft = _this.h.windowScroll().left;
1104            var scrollTop = _this.h.windowScroll().top;
1105            var windowWidth = _this.h.windowWidth();
1106            var windowHeight = _this.h.windowHeight();
1107            var swiperCoord = [
1108                [swiperOffset.left, swiperOffset.top],
1109                [swiperOffset.left + _this.width, swiperOffset.top],
1110                [swiperOffset.left, swiperOffset.top + _this.height],
1111                [swiperOffset.left + _this.width, swiperOffset.top + _this.height]
1112            ];
1113            for (var i=0; i<swiperCoord.length; i++) {
1114                var point = swiperCoord[i];
1115                if (
1116                    point[0]>=scrollLeft && point[0]<=scrollLeft+windowWidth &&
1117                    point[1]>=scrollTop && point[1]<=scrollTop+windowHeight
1118                ) {
1119                    inView = true;
1120                }
1121
1122            }
1123            if (!inView) return;
1124        }
1125        if (isH) {
1126            if (kc==37 || kc==39) {
1127                if (e.preventDefault) e.preventDefault();
1128                else e.returnValue = false;
1129            }
1130            if (kc == 39) _this.swipeNext();
1131            if (kc == 37) _this.swipePrev();
1132        }
1133        else {
1134            if (kc==38 || kc==40) {
1135                if (e.preventDefault) e.preventDefault();
1136                else e.returnValue = false;
1137            }
1138            if (kc == 40) _this.swipeNext();
1139            if (kc == 38) _this.swipePrev();
1140        }
1141    }
1142
1143    /*==========================================
1144        Mousewheel Control
1145    ============================================*/
1146    var allowScrollChange = true;
1147    var lastScrollTime = (new Date()).getTime();
1148    function handleMousewheel (e) {
1149        var we = _this._wheelEvent;
1150        var delta = 0;
1151        //Opera & IE
1152        if (e.detail) delta = -e.detail;
1153        //WebKits
1154        else if (we == 'mousewheel') delta = e.wheelDelta;
1155        //Old FireFox
1156        else if (we == 'DOMMouseScroll') delta = -e.detail;
1157        //New FireFox
1158        else if (we == 'wheel') {
1159            delta = Math.abs(e.deltaX)>Math.abs(e.deltaY) ? - e.deltaX : - e.deltaY;
1160        }
1161        if (!params.freeMode) {
1162            if(delta<0) _this.swipeNext();
1163            else _this.swipePrev();
1164        }
1165        else {
1166            //Freemode or scrollContainer:
1167            var position = _this.getWrapperTranslate() + delta;
1168            
1169            if (position > 0) position = 0;
1170            if (position < -maxWrapperPosition()) position = -maxWrapperPosition();
1171            
1172            _this.setWrapperTransition(0);
1173            _this.setWrapperTranslate(position);
1174            _this.updateActiveSlide(position);
1175        }
1176        if (params.autoplay) _this.stopAutoplay();
1177
1178        if(e.preventDefault) e.preventDefault();
1179        else e.returnValue = false;
1180        return false;
1181    }
1182
1183    /*=========================
1184      Grab Cursor
1185      ===========================*/
1186    if (params.grabCursor) {
1187    	var containerStyle = _this.container.style;
1188        containerStyle.cursor = 'move';
1189        containerStyle.cursor = 'grab';
1190        containerStyle.cursor = '-moz-grab';
1191        containerStyle.cursor = '-webkit-grab';
1192    }
1193
1194    /*=========================
1195      Slides Events Handlers
1196      ===========================*/
1197    
1198    _this.allowSlideClick = true;
1199    function slideClick(event) {
1200        if (_this.allowSlideClick) {
1201            
1202            setClickedSlide(event);
1203            this.fireCallback(params.onSlideClick, _this, event);
1204        }
1205    }
1206    
1207    function slideTouch(event) {
1208    	
1209        setClickedSlide(event);
1210       _this.fireCallback(params.onSlideTouch, _this, event);
1211    }
1212    
1213    function setClickedSlide(event) {
1214		
1215		// IE 6-8 support
1216		if (!event.currentTarget) {
1217			var element = event.srcElement;
1218			do {
1219				if (element.className.indexOf(params.slideClass) > -1) {
1220                	break;
1221        		}
1222			}
1223			while (element = element.parentNode);
1224			_this.clickedSlide = element;
1225		}
1226		else {
1227			_this.clickedSlide = event.currentTarget;
1228		}
1229		
1230        _this.clickedSlideIndex     = _this.slides.indexOf(_this.clickedSlide);
1231        _this.clickedSlideLoopIndex = _this.clickedSlideIndex - (_this.loopedSlides || 0);
1232    }
1233    
1234    _this.allowLinks = true;
1235    function preventClick(e) {
1236        if (!_this.allowLinks) {
1237            if(e.preventDefault) e.preventDefault();
1238            else e.returnValue = false;
1239            return false;
1240        }
1241    }
1242    function releaseForms(e) {
1243        if (e.stopPropagation) e.stopPropagation();
1244        else e.returnValue = false;
1245        return false;
1246    }
1247
1248    /*==================================================
1249        Event Handlers
1250    ====================================================*/
1251    var isTouchEvent = false;
1252    var allowThresholdMove;
1253    var allowMomentumBounce = true;
1254    function onTouchStart(event) {
1255
1256    //vc gallery when using lightbox fix
1257    if(jQuery(event.target).parents('.wpb_gallery').length > 0 && jQuery(event.target).parents('.swiper-container').attr('data-desktop-swipe') == 'false' && !Modernizr.touch) {
1258      return false;
1259    }
1260    	
1261    //deactivate touch if only one slide
1262		if(jQuery(event.target).parents('.swiper-container').find('.swiper-slide').length == 1) {
1263      return false;
1264    }
1265		
1266		//deactivate touch for duplicate transitions
1267		if(jQuery(event.target).parents('.swiper-container').find('.swiper-slide.duplicate-transition').length > 0) return false;
1268		
1269        if (params.preventLinks) _this.allowLinks = true;
1270        //Exit if slider is already was touched
1271        if (_this.isTouched || params.onlyExternal) {
1272            return false;
1273        }
1274
1275        if (params.noSwiping && (event.target || event.srcElement) && noSwipingSlide(event.target || event.srcElement)) return false;
1276        allowMomentumBounce = false;
1277
1278        //Check For Nested Swipers
1279        _this.isTouched = true;
1280        isTouchEvent = event.type=='touchstart';
1281
1282        if (!isTouchEvent || event.targetTouches.length == 1 ) {
1283            _this.callPlugins('onTouchStartBegin');
1284
1285            if(!isTouchEvent) {
1286                if(event.preventDefault) event.preventDefault();
1287                else event.returnValue = false;
1288            }
1289            
1290            var pageX = isTouchEvent ? event.targetTouches[0].pageX : (event.pageX || event.clientX);
1291            var pageY = isTouchEvent ? event.targetTouches[0].pageY : (event.pageY || event.clientY);
1292
1293            //Start Touches to check the scrolling
1294            _this.touches.startX = _this.touches.currentX = pageX;
1295            _this.touches.startY = _this.touches.currentY = pageY;
1296
1297            _this.touches.start = _this.touches.current = isH ? pageX : pageY;
1298
1299            //Set Transition Time to 0
1300            _this.setWrapperTransition(0);
1301
1302            //Get Start Translate Position
1303            _this.positions.start = _this.positions.current = _this.getWrapperTranslate();
1304
1305            //Set Transform
1306            _this.setWrapperTranslate(_this.positions.start);
1307
1308            //TouchStartTime
1309            _this.times.start = (new Date()).getTime();
1310
1311            //Unset Scrolling
1312            isScrolling = undefined;
1313
1314            //Set Treshold
1315            if (params.moveStartThreshold>0) allowThresholdMove = false;
1316
1317            //CallBack
1318            if (params.onTouchStart) _this.fireCallback(params.onTouchStart, _this);
1319            _this.callPlugins('onTouchStartEnd');
1320
1321        }
1322    }
1323    var velocityPrevPosition, velocityPrevTime;
1324    function onTouchMove(event) {
1325        // If slider is not touched - exit
1326        if (!_this.isTouched || params.onlyExternal) return;
1327        if (isTouchEvent && event.type=='mousemove') return;
1328
1329        var pageX = isTouchEvent ? event.targetTouches[0].pageX : (event.pageX || event.clientX);
1330        var pageY = isTouchEvent ? event.targetTouches[0].pageY : (event.pageY || event.clientY);
1331
1332        //check for scrolling
1333        if ( typeof isScrolling === 'undefined' && isH) {
1334          isScrolling = !!( isScrolling || Math.abs(pageY - _this.touches.startY) > Math.abs( pageX - _this.touches.startX ) );
1335        }
1336        if ( typeof isScrolling === 'undefined' && !isH) {
1337          isScrolling = !!( isScrolling || Math.abs(pageY - _this.touches.startY) < Math.abs( pageX - _this.touches.startX ) );
1338        }
1339        if (isScrolling ) {
1340            _this.isTouched = false;
1341            return;
1342        }
1343
1344        //Check For Nested Swipers
1345        if (event.assignedToSwiper) {
1346            _this.isTouched = false;
1347            return;
1348        }
1349        event.assignedToSwiper = true;
1350
1351        //Block inner links
1352        if (params.preventLinks) {
1353            _this.allowLinks = false;
1354        }
1355        if (params.onSlideClick) {
1356            _this.allowSlideClick = false;
1357        }
1358
1359        //Stop AutoPlay if exist
1360        if (params.autoplay) {
1361            _this.stopAutoplay();
1362        }
1363        if (!isTouchEvent || event.touches.length == 1) {
1364
1365        	//Moved Flag
1366        	if (!_this.isMoved) {
1367        		_this.callPlugins('onTouchMoveStart');
1368        		
1369				if (params.loop) {
1370					_this.fixLoop();
1371					_this.positions.start = _this.getWrapperTranslate();
1372				}
1373				if (params.onTouchMoveStart) _this.fireCallback(params.onTouchMoveStart, _this);
1374        	}
1375        	_this.isMoved = true;
1376        	
1377        	// cancel event
1378            if(event.preventDefault) event.preventDefault();
1379            else event.returnValue = false;
1380
1381            _this.touches.current = isH ? pageX : pageY ;
1382
1383            _this.positions.current = (_this.touches.current - _this.touches.start) * params.touchRatio + _this.positions.start;
1384
1385            //Resistance Callbacks
1386            if(_this.positions.current > 0 && params.onResistanceBefore) {
1387                _this.fireCallback(params.onResistanceBefore, _this, _this.positions.current);
1388            }
1389            if(_this.positions.current < -maxWrapperPosition() && params.onResistanceAfter) {
1390                _this.fireCallback(params.onResistanceAfter, _this, Math.abs(_this.positions.current + maxWrapperPosition()));
1391            }
1392            //Resistance
1393            if (params.resistance && params.resistance!='100%') {
1394                //Resistance for Negative-Back sliding
1395                if(_this.positions.current > 0) {
1396                    var resistance = 1 - _this.positions.current/containerSize/2;
1397                    if (resistance < 0.5)
1398                        _this.positions.current = (containerSize/2);
1399                    else
1400                        _this.positions.current = _this.positions.current * resistance;
1401                }
1402                //Resistance for After-End Sliding
1403                if ( _this.positions.current < -maxWrapperPosition() ) {
1404
1405                    var diff = (_this.touches.current - _this.touches.start)*params.touchRatio + (maxWrapperPosition()+_this.positions.start);
1406                    var resistance = (containerSize+diff)/(containerSize);
1407                    var newPos = _this.positions.current-diff*(1-resistance)/2;
1408                    var stopPos = -maxWrapperPosition() - containerSize/2;
1409
1410                    if (newPos < stopPos || resistance<=0)
1411                        _this.positions.current = stopPos;
1412                    else
1413                        _this.positions.current = newPos;
1414                }
1415            }
1416            if (params.resistance && params.resistance=='100%') {
1417                //Resistance for Negative-Back sliding
1418                if(_this.positions.current > 0 && !(params.freeMode&&!params.freeModeFluid)) {
1419                    _this.positions.current = 0;
1420                }
1421                //Resistance for After-End Sliding
1422                if ( (_this.positions.current) < -maxWrapperPosition() && !(params.freeMode&&!params.freeModeFluid)) {
1423                    _this.positions.current = -maxWrapperPosition();
1424                }
1425            }
1426            //Move Slides
1427            if (!params.followFinger) return;
1428
1429            if (!params.moveStartThreshold) {
1430                _this.setWrapperTranslate(_this.positions.current);
1431            }
1432            else {
1433                if ( Math.abs(_this.touches.current - _this.touches.start)>params.moveStartThreshold || allowThresholdMove) {
1434                    allowThresholdMove = true;
1435                    _this.setWrapperTranslate(_this.positions.current);
1436                }
1437                else {
1438                    _this.positions.current = _this.positions.start;
1439                }
1440            }
1441
1442            if (params.freeMode || params.watchActiveIndex) {
1443                _this.updateActiveSlide(_this.positions.current);
1444            }
1445
1446            //Grab Cursor
1447             //Grab Cursor
1448            if (params.grabCursor) {
1449                _this.container.style.cursor = 'move';
1450                _this.container.style.cursor = 'grabbing';
1451                _this.container.style.cursor = '-moz-grabbing';
1452                _this.container.style.cursor = '-webkit-grabbing';
1453            }  
1454            //Velocity
1455            if (!velocityPrevPosition) velocityPrevPosition = _this.touches.current;
1456            if (!velocityPrevTime) velocityPrevTime = (new Date).getTime();
1457            _this.velocity = (_this.touches.current - velocityPrevPosition)/((new Date).getTime() - velocityPrevTime)/2;
1458
1459            if (Math.abs(_this.touches.current - velocityPrevPosition)<2) _this.velocity=0;
1460            velocityPrevPosition = _this.touches.current;
1461            velocityPrevTime = (new Date).getTime();
1462            //Callbacks
1463            _this.callPlugins('onTouchMoveEnd');
1464            if (params.onTouchMove) _this.fireCallback(params.onTouchMove, _this);
1465
1466            return false;
1467        }
1468    }
1469    function onTouchEnd(event) {
1470        //Check For scrolling
1471        if (isScrolling) {
1472            _this.swipeReset();
1473        }
1474        // If slider is not touched exit
1475        if ( params.onlyExternal || !_this.isTouched ) { return; }
1476        _this.isTouched = false;
1477
1478        //Return Grab Cursor
1479        if (params.grabCursor) {
1480            _this.container.style.cursor = 'move';
1481            _this.container.style.cursor = 'grab';
1482            _this.container.style.cursor = '-moz-grab';
1483            _this.container.style.cursor = '-webkit-grab';
1484        }
1485
1486        //Check for Current Position
1487        if (!_this.positions.current && _this.positions.current!==0) {
1488            _this.positions.current = _this.positions.start;
1489        }
1490
1491        //For case if slider touched but not moved
1492        if (params.followFinger) {
1493            _this.setWrapperTranslate(_this.positions.current);
1494        }
1495
1496        // TouchEndTime
1497        _this.times.end = (new Date()).getTime();
1498
1499        //Difference
1500        _this.touches.diff = _this.touches.current - _this.touches.start;
1501        _this.touches.abs = Math.abs(_this.touches.diff);
1502
1503        _this.positions.diff = _this.positions.current - _this.positions.start;
1504        _this.positions.abs = Math.abs(_this.positions.diff);
1505
1506        var diff = _this.positions.diff;
1507        var diffAbs =_this.positions.abs;
1508        var timeDiff = _this.times.end - _this.times.start;
1509
1510        if(diffAbs < 5 && (timeDiff) < 300 && _this.allowLinks == false) {
1511            if (!params.freeMode && diffAbs!=0) { 
1512              _this.swipeReset(); 
1513            }
1514            //Release inner links
1515            if (params.preventLinks) {
1516                _this.allowLinks = true;
1517            }
1518            if (params.onSlideClick) {
1519                _this.allowSlideClick = true;
1520            }
1521        }
1522        
1523        setTimeout(function () {
1524            //Release inner links
1525            if (params.preventLinks) {
1526                _this.allowLinks = true;
1527            }
1528            if (params.onSlideClick) {
1529                _this.allowSlideClick = true;
1530            }
1531        }, 100);
1532
1533        var maxPosition = maxWrapperPosition();
1534
1535        //Not moved or Prevent Negative Back Sliding/After-End Sliding
1536        if (!_this.isMoved && params.freeMode) {
1537            _this.isMoved = false;
1538            if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);
1539            _this.callPlugins('onTouchEnd');
1540            return;   
1541        }
1542        if (!_this.isMoved || _this.positions.current > 0 || _this.positions.current < -maxPosition) {
1543            _this.swipeReset();
1544           if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this);
1545            _this.callPlugins('onTouchEnd');
1546            return;
1547        }
1548
1549        _this.isMoved = false;
1550
1551        //Free Mode
1552        if (params.freeMode) {
1553            if ( params.freeModeFluid ) {
1554                var momentumDuration = 1000*params.momentumRatio;
1555                var momentumDistance = _this.velocity*momentumDuration;
1556                var newPosition = _this.positions.current + momentumDistance;
1557                var doBounce = false;
1558                var afterBouncePosition;
1559                var bounceAmount = Math.abs( _this.velocity )*20*params.momentumBounceRatio;
1560                if (newPosition < -maxPosition) {
1561                    if (params.momentumBounce && _this.support.transitions) {
1562                        if (newPosition + maxPosition < -bounceAmount) newPosition = -maxPosition-bounceAmount;
1563                        afterBouncePosition = -maxPosition;
1564                        doBounce=true;
1565                        allowMomentumBounce = true;
1566                    }
1567                    else newPosition = -maxPosition;
1568                }
1569                if (newPosition > 0) {
1570                    if (params.momentumBounce && _this.support.transitions) {
1571                        if (newPosition>bounceAmount) newPosition = bounceAmount;
1572                        afterBouncePosition = 0;
1573                        doBounce = true;
1574                        allowMomentumBounce = true;
1575                    }
1576                    else newPosition = 0;
1577                }
1578                //Fix duration
1579                if (_this.velocity!=0) momentumDuration = Math.abs((newPosition - _this.positions.current)/_this.velocity);
1580
1581                _this.setWrapperTranslate(newPosition);
1582
1583                _this.setWrapperTransition( momentumDuration );
1584
1585                if (params.momentumBounce && doBounce) {
1586                    _this.wrapperTransitionEnd(function () {
1587                        if (!allowMomentumBounce) return;
1588                        
1589                        if (params.onMomentumBounce) params.onMomentumBounce(_this);
1590                        
1591                        _this.setWrapperTranslate(afterBouncePosition);
1592                        _this.setWrapperTransition(300);
1593                    });
1594                }
1595
1596                _this.updateActiveSlide(newPosition);
1597            }
1598            if (!params.freeModeFluid || timeDiff >= 300) _this.updateActiveSlide(_this.positions.current);
1599
1600            if (params.onTouchEnd) params.onTouchEnd(_this);
1601            _this.callPlugins('onTouchEnd');
1602            return;
1603        }
1604
1605        //Direction
1606        direction = diff < 0 ? "toNext" : "toPrev";
1607
1608        //Short Touches
1609        if (direction=="toNext" && ( timeDiff <= 300 ) ) {
1610            if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset();
1611            else _this.swipeNext(true);
1612        }
1613
1614        if (direction=="toPrev" && ( timeDiff <= 300 ) ) {
1615            if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset();
1616            else _this.swipePrev(true);
1617        }
1618
1619        //Long Touches
1620        var targetSlideSize = 0;
1621        if(params.slidesPerView == 'auto') {
1622            //Define current slide's width
1623            var currentPosition = Math.abs(_this.getWrapperTranslate());
1624            var slidesOffset = 0;
1625            var _slideSize;
1626            for (var i=0; i<_this.slides.length; i++) {
1627                _slideSize = isH ? _this.slides[i].getWidth(true) : _this.slides[i].getHeight(true);
1628                slidesOffset+= _slideSize;
1629                if (slidesOffset>currentPosition) {
1630                    targetSlideSize = _slideSize;
1631                    break;
1632                }
1633            }
1634            if (targetSlideSize>containerSize) targetSlideSize = containerSize;
1635        }
1636        else {
1637            targetSlideSize = slideSize * params.slidesPerView;
1638        }
1639        if (direction=="toNext" && ( timeDiff > 300 ) ) {
1640            if (diffAbs >= targetSlideSize*0.5) {
1641                _this.swipeNext(true);
1642            }
1643            else {
1644                _this.swipeReset();
1645            }
1646        }
1647        if (direction=="toPrev" && ( timeDiff > 300 ) ) {
1648            if (diffAbs >= targetSlideSize*0.5) {
1649                _this.swipePrev(true);
1650            }
1651            else {
1652                _this.swipeReset();
1653            }
1654        }
1655        if (params.onTouchEnd) params.onTouchEnd(_this);
1656        _this.callPlugins('onTouchEnd');
1657    }
1658
1659
1660    /*==================================================
1661        noSwiping Bubble Check by Isaac Strack
1662    ====================================================*/
1663    function noSwipingSlide(el){
1664        /*This function is specifically designed to check the parent elements for the noSwiping class, up to the wrapper.
1665        We need to check parents because while onTouchStart bubbles, _this.isTouched is checked in onTouchStart, which stops the bubbling.
1666        So, if a text box, for example, is the initial target, and the parent slide container has the noSwiping class, the _this.isTouched
1667        check will never find it, and what was supposed to be noSwiping is able to be swiped.
1668        This function will iterate up and check for the noSwiping class in parents, up through the wrapperClass.*/
1669
1670        // First we create a truthy variable, which is that swiping is allowd (noSwiping = false)
1671        var noSwiping = false;
1672    
1673        // Now we iterate up (parentElements) until we reach the node with the wrapperClass.
1674        do{
1675
1676            // Each time, we check to see if there's a 'swiper-no-swiping' class (noSwipingClass).
1677            if (el.className.indexOf(params.noSwipingClass)>-1)
1678            {
1679                noSwiping = true; // If there is, we set noSwiping = true;
1680            }
1681
1682            el = el.parentElement;  // now we iterate up (parent node)
1683
1684        } while(!noSwiping && el.parentElement && el.className.indexOf(params.wrapperClass)==-1); // also include el.parentElement truthy, just in case.
1685
1686        // because we didn't check the wrapper itself, we do so now, if noSwiping is false:
1687        if (!noSwiping && el.className.indexOf(params.wrapperClass)>-1 && el.className.indexOf(params.noSwipingClass)>-1)
1688            noSwiping = true; // if the wrapper has the noSwipingClass, we set noSwiping = true;
1689
1690        return noSwiping;
1691    }
1692
1693    /*==================================================
1694        Swipe Functions
1695    ====================================================*/
1696    _this.swipeNext = function(internal){
1697        if (!internal && params.loop) _this.fixLoop();
1698        _this.callPlugins('onSwipeNext');
1699        var currentPosition = _this.getWrapperTranslate();
1700        var newPosition = currentPosition;
1701        if (params.slidesPerView=='auto') {
1702            for (var i=0; i<_this.snapGrid.length; i++) {
1703                if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {
1704                    newPosition = -_this.snapGrid[i+1];
1705                    break;
1706                }
1707            }
1708        }
1709        else {
1710            var groupSize = slideSize * params.slidesPerGroup;
1711            newPosition = -(Math.floor(Math.abs(currentPosition)/Math.floor(groupSize))*groupSize + groupSize);
1712        }
1713        if (newPosition < - maxWrapperPosition()) {
1714            newPosition = - maxWrapperPosition();
1715        }
1716
1717        if (newPosition == currentPosition) { return false; }
1718
1719        swipeToPosition(newPosition, 'next');
1720        return true;
1721    };
1722    _this.swipePrev = function(internal){
1723        if (!internal && params.loop) _this.fixLoop();
1724        if (!internal && params.autoplay) _this.stopAutoplay();
1725        _this.callPlugins('onSwipePrev');
1726
1727        var currentPosition = Math.ceil(_this.getWrapperTranslate());
1728        var newPosition;
1729        if (params.slidesPerView=='auto') {
1730            newPosition = 0;
1731            for (var i=1; i<_this.snapGrid.length; i++) {
1732                if (-currentPosition == _this.snapGrid[i]) {
1733                    newPosition = -_this.snapGrid[i-1];
1734                    break;
1735                }
1736                if (-currentPosition > _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {
1737                    newPosition = -_this.snapGrid[i];
1738                    break;
1739                }
1740            }
1741        }
1742        else {
1743            var groupSize = slideSize * params.slidesPerGroup;
1744            newPosition = -(Math.ceil(-currentPosition/groupSize)-1)*groupSize;
1745        }
1746
1747        if (newPosition > 0) newPosition = 0;
1748
1749        if (newPosition == currentPosition) {
1750          return false;
1751        }
1752        swipeToPosition(newPosition, 'prev');
1753        return true;
1754
1755    };
1756    _this.swipeReset = function(){
1757        _this.callPlugins('onSwipeReset');
1758        var currentPosition = _this.getWrapperTranslate();
1759        var groupSize = slideSize * params.slidesPerGroup;
1760        var newPosition;
1761        var maxPosition = -maxWrapperPosition();
1762        if (params.slidesPerView=='auto') {
1763            newPosition = 0;
1764            for (var i=0; i<_this.snapGrid.length; i++) {
1765                if (-currentPosition===_this.snapGrid[i]) return;
1766                if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) {
1767                    if(_this.positions.diff>0) newPosition = -_this.snapGrid[i+1];
1768                    else newPosition = -_this.snapGrid[i];
1769                    break;
1770                }
1771            }
1772            if (-currentPosition >= _this.snapGrid[_this.snapGrid.length-1]) newPosition = -_this.snapGrid[_this.snapGrid.length-1];
1773            if (currentPosition <= -maxWrapperPosition()) newPosition = -maxWrapperPosition();
1774        }
1775        else {
1776            newPosition = currentPosition<0 ? Math.round(currentPosition/groupSize)*groupSize : 0;
1777        }
1778        if (params.scrollContainer)  {
1779            newPosition = currentPosition<0 ? currentPosition : 0;
1780        }
1781        if (newPosition < -maxWrapperPosition()) {
1782            newPosition = -maxWrapperPosition();
1783        }
1784        if (params.scrollContainer && (containerSize>slideSize)) {
1785            newPosition = 0;
1786        }
1787
1788        if (newPosition == currentPosition) { return false; }
1789
1790        swipeToPosition(newPosition, 'reset');
1791        return true;
1792    };
1793    
1794    _this.swipeTo = function(index, speed, runCallbacks) {
1795        index = parseInt(index, 10);
1796        _this.callPlugins('onSwipeTo', {index:index, speed:speed});
1797        if (params.loop) index = index + _this.loopedSlides;
1798        var currentPosition = _this.getWrapperTranslate();
1799        if (index > (_this.slides.length-1) || index < 0) {
1800          return;
1801        }
1802        var newPosition;
1803        if (params.slidesPerView=='auto') {
1804            newPosition = -_this.slidesGrid[ index ];
1805        }
1806        else {
1807            newPosition =  -index*slideSize;
1808        }
1809        if (newPosition < - maxWrapperPosition()) {
1810            newPosition = - maxWrapperPosition();
1811        }
1812
1813        if (newPosition == currentPosition) {
1814          return false;
1815        }
1816
1817        runCallbacks = runCallbacks===false ? false : true;
1818        swipeToPosition(newPosition, 'to', {index:index, speed:speed, runCallbacks:runCallbacks});
1819        return true;
1820    };
1821    
1822    function swipeToPosition(newPosition, action, toOptions) {
1823    	var speed = (action=='to' && toOptions.speed >= 0) ? toOptions.speed : params.speed;
1824    	
1825        var timeOld = + new Date();
1826        if (_this.support.transitions || !params.DOMAnimation) {
1827            _this.setWrapperTranslate(newPosition);
1828            _this.setWrapperTransition(speed);
1829        }
1830        else {
1831            //Try the DOM animation
1832            var currentPosition = _this.getWrapperTranslate();
1833            var animationStep = Math.ceil( (newPosition - currentPosition)/speed*(1000/60) );
1834            var direction = currentPosition > newPosition ? 'toNext' : 'toPrev';
1835            var condition = direction=='toNext' ? currentPosition > newPosition : currentPosition < newPosition;
1836            if (_this._DOMAnimating) return;
1837
1838            anim();
1839        }
1840        function anim(){
1841            var timeNew = + new Date();
1842            var time = timeNew - timeOld;
1843            currentPosition += animationStep * time / (1000/60);
1844
1845            condition = direction=='toNext' ? currentPosition > newPosition : currentPosition < newPosition;
1846            if (condition) {
1847                _this.setWrapperTranslate(Math.round(currentPosition));
1848                _this._DOMAnimating = true;
1849                window.setTimeout(function(){
1850                    anim();
1851                }, 1000 / 60);
1852            }
1853            else {
1854                if (params.onSlideChangeEnd) { 
1855                  _this.fireCallback(params.onSlideChangeEnd, _this);
1856                }
1857                _this.setWrapperTranslate(newPosition);
1858                _this._DOMAnimating = false;
1859            }
1860        }
1861
1862        //Update Active Slide Index
1863        _this.updateActiveSlide(newPosition);
1864
1865        //Callbacks
1866        if (params.onSlideNext && action=='next') {
1867            _this.fireCallback(params.onSlideNext, _this, newPosition);
1868        }
1869        if (params.onSlidePrev && action=='prev') {
1870            _this.fireCallback(params.onSlidePrev, _this, newPosition);
1871        }
1872        //"Reset" Callback
1873        if (params.onSlideReset && action=='reset') {
1874             _this.fireCallback(params.onSlideReset, _this, newPosition);
1875        }
1876
1877        //"Next", "Prev" and "To" Callbacks
1878        if (action=='next' || action=='prev' || (action=='to' && toOptions.runCallbacks==true))
1879            slideChangeCallbacks(action);
1880    }
1881    /*==================================================
1882        Transition Callbacks
1883    ====================================================*/
1884    //Prevent Multiple Callbacks
1885    _this._queueStartCallbacks = false;
1886    _this._queueEndCallbacks = false;
1887    function slideChangeCallbacks(direction) {
1888        //Transition Start Callback
1889        _this.callPlugins('onSlideChangeStart');
1890        if (params.onSlideChangeStart) {
1891            if (params.queueStartCallbacks && _this.support.transitions) {
1892                if (_this._queueStartCallbacks) {
1893                  return;
1894                }
1895                _this._queueStartCallbacks = true;
1896                _this.fireCallback(params.onSlideChangeStart, _this, direction);
1897                _this.wrapperTransitionEnd(function(){
1898                    _this._queueStartCallbacks = false;
1899                });
1900            }
1901            else _this.fireCallback(params.onSlideChangeStart, _this, direction);
1902        }
1903        //Transition End Callback
1904        if (params.onSlideChangeEnd) {
1905            if (_this.support.transitions) {
1906                if (params.queueEndCallbacks) {
1907                    if (_this._queueEndCallbacks) {
1908                      return;
1909                    }
1910                    _this._queueEndCallbacks = true;
1911                    _this.wrapperTransitionEnd(function(swiper){ 
1912                        setTimeout(function(){ if (params.loop) _this.fixLoop(); },50);
1913                        _this.fireCallback(params.onSlideChangeEnd, swiper, direction);
1914                    });
1915                     
1916                }
1917                else _this.wrapperTransitionEnd(function(swiper){
1918                    //setTimeout(function(){ if (params.loop) _this.fixLoop(); },50);
1919                    _this.fireCallback(params.onSlideChangeEnd, swiper, direction);
1920                });
1921            }
1922            else {
1923                if (!params.DOMAnimation) {
1924                    setTimeout(function(){
1925                       _this.fireCallback(params.onSlideChangeStart, _this, direction);
1926                    },10);
1927                }
1928            }
1929        }
1930    }
1931    
1932    /*==================================================
1933        Update Active Slide Index
1934    ====================================================*/
1935    _this.updateActiveSlide = function(position) {
1936        if (!_this.initialized) return;
1937        if (_this.slides.length==0) return;
1938        _this.previousIndex = _this.activeIndex;
1939        if (typeof position=='undefined') position = _this.getWrapperTranslate();
1940        if (position>0) position=0;
1941        
1942        if (params.slidesPerView == 'auto') {
1943            var slidesOffset = 0;
1944            _this.activeIndex = _this.slidesGrid.indexOf(-position);
1945            if (_this.activeIndex<0) {
1946                for (var i=0; i<_this.slidesGrid.length-1; i++) {
1947                    if (-position>_this.slidesGrid[i] && -position<_this.slidesGrid[i+1]) {
1948                        break;
1949                    }
1950                }
1951                var leftDistance = Math.abs( _this.slidesGrid[i] + position );
1952                var rightDistance = Math.abs( _this.slidesGrid[i+1] + position );
1953                if (leftDistance<=rightDistance) _this.activeIndex = i;
1954                else _this.activeIndex = i+1;
1955            }
1956        }
1957        else {
1958        	_this.activeIndex = Math[params.visibilityFullFit ? 'ceil' : 'round']( -position/slideSize );
1959        }
1960        
1961        if (_this.activeIndex == _this.slides.length ) _this.activeIndex = _this.slides.length - 1;
1962        if (_this.activeIndex < 0) _this.activeIndex = 0;
1963        
1964        // Check for slide
1965        if (!_this.slides[_this.activeIndex]) return;
1966        
1967        // Calc Visible slides
1968        _this.calcVisibleSlides(position);
1969
1970        // Mark visible and active slides with additonal classes
1971        var activeClassRegexp = new RegExp( "\\s*" + params.slideActiveClass );
1972        var inViewClassRegexp = new RegExp( "\\s*" + params.slideVisibleClass );
1973
1974        for (var i = 0; i < _this.slides.length; i++) {
1975            _this.slides[ i ].className = _this.slides[ i ].className.replace( activeClassRegexp, '' ).replace( inViewClassRegexp, '' );
1976            if ( _this.visibleSlides.indexOf( _this.slides[ i ] )>=0 ) {
1977                _this.slides[ i ].className += ' ' + params.slideVisibleClass;
1978            }
1979
1980        }
1981        _this.slides[ _this.activeIndex ].className += ' ' + params.slideActiveClass;
1982
1983        //Update loop index
1984        if (params.loop) {
1985            var ls = _this.loopedSlides;
1986            _this.activeLoopIndex = _this.activeIndex - ls;
1987            if (_this.activeLoopIndex >= _this.slides.length - ls*2 ) {
1988                _this.activeLoopIndex = _this.slides.length - ls*2 - _this.activeLoopIndex;
1989            }
1990            if (_this.activeLoopIndex<0) {
1991                _this.activeLoopIndex = _this.slides.length - ls*2 + _this.activeLoopIndex;
1992            }
1993        }
1994        else {
1995            _this.activeLoopIndex = _this.activeIndex;
1996        }
1997        //Update Pagination
1998        if (params.pagination) {
1999            _this.updatePagination(position);
2000        }
2001    };
2002    /*==================================================
2003        Pagination
2004    ====================================================*/
2005    _this.createPagination = function (firstInit) {
2006        if (params.paginationClickable && _this.paginationButtons) {
2007            removePaginationEvents();
2008        }
2009        var paginationHTML = "";
2010        var numOfSlides = _this.slides.length;
2011        var numOfButtons = numOfSlides;
2012        if (params.loop) { numOfButtons -= _this.loopedSlides*2; }
2013        for (var i = 0; i < numOfButtons; i++) {
2014            paginationHTML += '<'+params.paginationElement+' class="'+params.paginationElementClass+'"></'+params.paginationElement+'>';
2015        }
2016        _this.paginationContainer = params.pagination.nodeType ? params.pagination : $$(params.pagination)[0];
2017        _this.paginationContainer.innerHTML = paginationHTML;
2018        _this.paginationButtons = $$('.'+params.paginationElementClass, _this.paginationContainer);
2019        if (!firstInit) {
2020          _this.updatePagination();
2021        }
2022        _this.callPlugins('onCreatePagination');
2023        if (params.paginationClickable) {
2024            addPaginationEvents();
2025        }
2026    };
2027    function removePaginationEvents() {
2028        var pagers = _this.paginationButtons;
2029        for (var i=0; i<pagers.length; i++) {
2030            _this.h.removeEventListener(pagers[i], 'click', paginationClick);
2031        }
2032    }
2033    function addPaginationEvents() {
2034        var pagers = _this.paginationButtons;
2035        for (var i=0; i<pagers.length; i++) {
2036            _this.h.addEventListener(pagers[i], 'click', paginationClick);
2037        }
2038    }
2039    function paginationClick(e){
2040        var index;
2041        var target = e.target || e.srcElement;
2042        var pagers = _this.paginationButtons;
2043        for (var i=0; i<pagers.length; i++) {
2044            if (target===pagers[i]) index = i;
2045        }
2046        _this.swipeTo(index);
2047    }
2048    _this.updatePagination = function(position) {
2049        if (!params.pagination) return;
2050        if (_this.slides.length<1) return;
2051
2052        var activePagers = $$('.'+params.paginationActiveClass, _this.paginationContainer);
2053        if(!activePagers) return;
2054
2055        //Reset all Buttons' class to not active
2056        var pagers = _this.paginationButtons;
2057        if (pagers.length==0) return;
2058        for (var i=0; i < pagers.length; i++) {
2059            pagers[i].className = params.paginationElementClass;
2060        }
2061
2062        var indexOffset = params.loop ? _this.loopedSlides : 0;
2063        if (params.paginationAsRange) {
2064            if (!_this.visibleSlides) _this.calcVisibleSlides(position);
2065            //Get Visible Indexes
2066            var visibleIndexes = [];
2067            for (var i = 0; i < _this.visibleSlides.length; i++) {
2068                var visIndex = _this.slides.indexOf( _this.visibleSlides[i] ) - indexOffset
2069
2070                if (params.loop && visIndex<0) {
2071                    visIndex = _this.slides.length - _this.loopedSlides*2 + visIndex;
2072                }
2073                if (params.loop && visIndex>=_this.slides.length-_this.loopedSlides*2) {
2074                    visIndex = _this.slides.length - _this.loopedSlides*2 - visIndex;
2075                    visIndex = Math.abs(visIndex);
2076                }
2077                visibleIndexes.push( visIndex );
2078            }
2079            
2080            for (i=0; i<visibleIndexes.length; i++) {
2081                if (pagers[ visibleIndexes[i] ]) pagers[ visibleIndexes[i] ].className += ' ' + params.paginationVisibleClass;
2082            }
2083            
2084            if (params.loop) {
2085                pagers[ _this.activeLoopIndex ].className += ' ' + params.paginationActiveClass;
2086            }
2087            else {
2088                pagers[ _this.activeIndex ].className += ' ' + params.paginationActiveClass;
2089            }
2090            
2091        }
2092        else {
2093            if (params.loop) {
2094                pagers[ _this.activeLoopIndex ].className+=' '+params.paginationActiveClass+' '+params.paginationVisibleClass;
2095            }
2096            else {
2097                pagers[ _this.activeIndex ].className+=' '+params.paginationActiveClass+' '+params.paginationVisibleClass;
2098            }
2099
2100        }
2101
2102    };
2103    _this.calcVisibleSlides = function(position){
2104        var visibleSlides = [];
2105        var _slideLeft = 0, _slideSize = 0, _slideRight = 0;
2106        if (isH && _this.wrapperLeft>0) position = position+_this.wrapperLeft;
2107        if (!isH && _this.wrapperTop>0) position = position+_this.wrapperTop;
2108
2109        for (var i=0; i<_this.slides.length; i++) {
2110            _slideLeft += _slideSize;
2111            if (params.slidesPerView == 'auto')
2112                _slideSize  = isH ? _this.h.getWidth(_this.slides[i],true) : _this.h.getHeight(_this.slides[i],true);
2113            else _slideSize = slideSize;
2114
2115            _slideRight = _slideLeft + _slideSize;
2116            var isVisibile = false;
2117            if (params.visibilityFullFit) {
2118                if (_slideLeft >= -position && _slideRight <= -position+containerSize) isVisibile = true;
2119                if (_slideLeft <= -position && _slideRight >= -position+containerSize) isVisibile = true;
2120            }
2121            else {
2122
2123                if (_slideRight > -position && _slideRight <= ((-position+containerSize))) isVisibile = true;
2124                if (_slideLeft >= -position && _slideLeft < ((-position+containerSize))) isVisibile = true;
2125                if (_slideLeft < -position && _slideRight > ((-position+containerSize))) isVisibile = true;
2126            }
2127
2128            if (isVisibile) visibleSlides.push(_this.slides[i]);
2129
2130        }
2131        if (visibleSlides.length==0) visibleSlides = [ _this.slides[ _this.activeIndex ] ];
2132
2133        _this.visibleSlides = visibleSlides;
2134    };
2135
2136    /*==========================================
2137        Autoplay
2138    ============================================*/
2139    _this.autoPlayIntervalId = undefined;
2140    _this.startAutoplay = function () {
2141        if (typeof _this.autoPlayIntervalId !== 'undefined') return false;
2142        if (params.autoplay && !params.loop) {
2143            _this.autoPlayIntervalId = setInterval(function(){
2144                if (!_this.swipeNext(true)) _this.swipeTo(0);
2145            }, params.autoplay);
2146        }
2147        if (params.autoplay && params.loop) {
2148            _this.autoPlayIntervalId = setInterval(function(){
2149                _this.swipeNext();
2150            }, params.autoplay);
2151        }
2152        _this.callPlugins('onAutoplayStart');
2153    };
2154    _this.stopAutoplay = function () {
2155        if (_this.autoPlayIntervalId) clearInterval(_this.autoPlayIntervalId);
2156        _this.autoPlayIntervalId = undefined;
2157        _this.callPlugins('onAutoplayStop');
2158    };
2159    
2160    /*==================================================
2161        Loop
2162    ====================================================*/
2163    _this.loopCreated = false;
2164    _this.removeLoopedSlides = function(){
2165        if (_this.loopCreated) {
2166            for (var i=0; i<_this.slides.length; i++) {
2167                if (_this.slides[i].getData('looped')===true) _this.wrapper.removeChild(_this.slides[i]);
2168            }
2169        }
2170    };
2171    
2172    _this.createLoop = function() {
2173        if (_this.slides.length==0) return;
2174        
2175        _this.loopedSlides = params.slidesPerView + params.loopAdditionalSlides;
2176        if (_this.loopedSlides > _this.slides.length) {
2177			_this.loopedSlides = _this.slides.length;
2178        }
2179        
2180        var slideFirstHTML = '',
2181        	slideLastHTML = '',
2182        	i;
2183
2184        //Grab First Slides
2185        for (i=0; i<_this.loopedSlides; i++) {
2186            slideFirstHTML += _this.slides[i].outerHTML;
2187        }
2188        //Grab Last Slides
2189        for (i=_this.slides.length-_this.loopedSlides; i<_this.slides.length; i++) {
2190            slideLastHTML += _this.slides[i].outerHTML;
2191        }
2192        wrapper.innerHTML = slideLastHTML + wrapper.innerHTML + slideFirstHTML;
2193
2194        _this.loopCreated = true;
2195        _this.calcSlides();
2196
2197        //Update Looped Slides with special class
2198        for (i=0; i<_this.slides.length; i++) {
2199            if (i<_this.loopedSlides || i>=_this.slides.length-_this.loopedSlides) _this.slides[i].setData('looped', true);
2200        }
2201        _this.callPlugins('onCreateLoop');
2202
2203    };
2204    
2205    _this.fixLoop = function() {
2206    	
2207    	if(_this.params.loop == true) {
2208    		
2209	    	var newIndex;
2210	        //Fix For Negative Oversliding
2211	        if (_this.activeIndex < _this.loopedSlides) {
2212	            newIndex = _this.slides.length - _this.loopedSlides*3 + _this.activeIndex;
2213	            _this.swipeTo(newIndex, 0, false);
2214	        }
2215	        //Fix For Positive Oversliding
2216	        else if (_this.activeIndex > _this.slides.length - params.slidesPerView*2) {
2217	            newIndex = -_this.slides.length + _this.activeIndex + _this.loopedSlides
2218	            _this.swipeTo(newIndex, 0, false);
2219	        }
2220       }
2221       
2222    };
2223    
2224    /*==================================================
2225        Slides Loader
2226    ====================================================*/
2227    _this.loadSlides = function(){
2228        var slidesHTML = '';
2229        _this.activeLoaderIndex = 0;
2230        var slides = params.loader.slides;
2231        var slidesToLoad = params.loader.loadAllSlides ? slides.length : params.slidesPerView*(1+params.loader.surroundGroups);
2232        for (var i=0; i< slidesToLoad; i++) {
2233            if (params.loader.slidesHTMLType=='outer') slidesHTML+=slides[i];
2234            else {
2235                slidesHTML+='<'+params.slideElement+' class="'+params.slideClass+'" data-swiperindex="'+i+'">'+slides[i]+'</'+params.slideElement+'>';
2236            }
2237        }
2238        _this.wrapper.innerHTML = slidesHTML;
2239        _this.calcSlides(true);
2240        //Add permanent transitionEnd callback
2241        if (!params.loader.loadAllSlides) {
2242            _this.wrapperTransitionEnd(_this.reloadSlides, true);
2243        }
2244    };
2245    
2246    _this.reloadSlides = function(){
2247        var slides = params.loader.slides;
2248        var newActiveIndex = parseInt(_this.activeSlide().data('swiperindex'),10);
2249        
2250        if (newActiveIndex<0 || newActiveIndex>slides.length-1) {
2251          return;
2252        }
2253          
2254        _this.activeLoaderIndex = newActiveIndex;
2255        var firstIndex = Math.max(0, newActiveIndex - params.slidesPerView*params.loader.surroundGroups);
2256        var lastIndex = Math.min(newActiveIndex+params.slidesPerView*(1+params.loader.surroundGroups)-1, slides.length-1);
2257        //Update Transforms
2258        if (newActiveIndex>0) {
2259            var newTransform = -slideSize*(newActiveIndex-firstIndex);
2260            _this.setWrapperTranslate(newTransform);
2261            _this.setWrapperTransition(0);
2262        }
2263        //New Slides
2264        if (params.loader.logic==='reload') {
2265            _this.wrapper.innerHTML = '';
2266            var slidesHTML = '';
2267            for (var i = firstIndex; i<=lastIndex; i++) {
2268                slidesHTML += params.loader.slidesHTMLType == 'outer' ? slides[i] : '<'+params.slideElement+' class="'+params.slideClass+'" data-swiperindex="'+i+'">'+slides[i]+'</'+params.slideElement+'>';
2269            }
2270            _this.wrapper.innerHTML = slidesHTML;
2271        }
2272        else {
2273            var minExistIndex=1000;
2274            var maxExistIndex=0;
2275            for (var i=0; i<_this.slides.length; i++) {
2276                var index = _this.slides[i].data('swiperindex');
2277                if (index<firstIndex || index>lastIndex) {
2278                    _this.wrapper.removeChild(_this.slides[i]);
2279                }
2280                else {
2281                    minExistIndex = Math.min(index, minExistIndex);
2282                    maxExistIndex = Math.max(index, maxExistIndex);
2283                }
2284            }
2285            for (var i=firstIndex; i<=lastIndex; i++) {
2286                if (i<minExistIndex) {
2287                    var newSlide = document.createElement(params.slideElement);
2288                    newSlide.className = params.slideClass;
2289                    newSlide.setAttribute('data-swiperindex',i);
2290                    newSlide.innerHTML = slides[i];
2291                    _this.wrapper.insertBefore(newSlide, _this.wrapper.firstChild);
2292                }
2293                if (i>maxExistIndex) {
2294                    var newSlide = document.createElement(params.slideElement);
2295                    newSlide.className = params.slideClass;
2296                    newSlide.setAttribute('data-swiperindex',i);
2297                    newSlide.innerHTML = slides[i];
2298                    _this.wrapper.appendChild(newSlide);
2299                }
2300            }
2301        }
2302        //reInit
2303        _this.reInit(true);
2304    };
2305    
2306    /*==================================================
2307        Make Swiper
2308    ====================================================*/
2309    function makeSwiper(){
2310        _this.calcSlides();
2311        if (params.loader.slides.length>0 && _this.slides.length==0) {
2312            _this.loadSlides();
2313        }
2314        if (params.loop) {
2315            _this.createLoop();
2316        }
2317        _this.init();
2318        initEvents();
2319        if (params.pagination && params.createPagination) {
2320            _this.createPagination(true);
2321        }
2322        if (params.loop || params.initialSlide>0) {
2323            _this.swipeTo( params.initialSlide, 0, false );
2324        }
2325        else {
2326            _this.updateActiveSlide(0);
2327        }
2328        if (params.autoplay) {
2329            _this.startAutoplay();
2330        }
2331
2332    }
2333    
2334    makeSwiper();
2335};
2336
2337NectarSwiper.prototype = {
2338    plugins : {},
2339    
2340    /*==================================================
2341        Wrapper Operations
2342    ====================================================*/
2343    wrapperTransitionEnd : function(callback, permanent) {
2344        var a = this,
2345        	el = a.wrapper,
2346        	events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'],
2347        	i;
2348        
2349        function fireCallBack() {
2350            callback(a);
2351            if (a.params.queueEndCallbacks) a._queueEndCallbacks = false;
2352            if (!permanent) {
2353                for (i=0; i<events.length; i++) {
2354                    a.h.removeEventListener(el, events[i], fireCallBack);
2355                }
2356            }
2357        }
2358        
2359        if (callback) {
2360            for (i=0; i<events.length; i++) {
2361                a.h.addEventListener(el, events[i], fireCallBack);
2362            }
2363        }
2364    },
2365
2366    getWrapperTranslate : function (axis) {
2367        var el = this.wrapper,
2368        	matrix, curTransform, curStyle, transformMatrix;
2369        
2370        // automatic axis detection
2371        if (typeof axis == 'undefined') {
2372			axis = this.params.mode == 'horizontal' ? 'x' : 'y';
2373        }
2374        
2375       curStyle = window.getComputedStyle(el, null);
2376
2377            if (window.WebKitCSSMatrix) {
2378                transformMatrix = new WebKitCSSMatrix(curStyle.webkitTransform);
2379            }
2380
2381            else {
2382                transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform  || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
2383                matrix = transformMatrix.toString().split(',');
2384            }
2385        
2386        if (this.support.transforms && this.params.useCSS3Transforms) {
2387            if (axis=='x') {
2388            	//Latest Chrome and webkits Fix
2389                if (window.WebKitCSSMatrix)
2390                    curTransform = transformMatrix.m41;
2391                //Crazy IE10 Matrix
2392                else if (matrix.length==16)
2393                    curTransform = parseFloat( matrix[12] );
2394                //Normal Browsers
2395                else
2396                    curTransform = parseFloat( matrix[4] );
2397            }
2398            if (axis=='y') {
2399            	//Latest Chrome and webkits Fix
2400                if (window.WebKitCSSMatrix)
2401                    curTransform = transformMatrix.m42;
2402                //Crazy IE10 Matrix
2403                else if (matrix.length==16)
2404                    curTransform = parseFloat( matrix[13] );
2405                //Normal Browsers
2406                else
2407                    curTransform = parseFloat( matrix[5] );
2408            }
2409        }
2410        else {
2411            if (axis=='x') curTransform = parseFloat(el.style.left,10) || 0;
2412            if (axis=='y') curTransform = parseFloat(el.style.top,10) || 0;
2413        }
2414        return curTransform || 0;
2415    },
2416
2417    setWrapperTranslate : function (x, y, z) {
2418        var es = this.wrapper.style,
2419        	coords = {x: 0, y: 0, z: 0},
2420        	translate;
2421
2422        // passed all coordinates
2423        if (arguments.length == 3) {
2424			coords.x = x;
2425			coords.y = y;
2426			coords.z = z;
2427        }
2428        
2429        // passed one coordinate and optional axis
2430        else {
2431        	if (typeof y == 'undefined') {
2432				y = this.params.mode == 'horizontal' ? 'x' : 'y';
2433        	}
2434        	coords[y] = x;
2435        }
2436
2437        if (this.support.transforms && this.params.useCSS3Transforms) {
2438        	translate = this.support.transforms3d ? 'translate3d(' + coords.x + 'px, ' + coords.y + 'px, ' + coords.z + 'px)' : 'translate(' + coords.x + 'px, ' + coords.y + 'px)';
2439            es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = translate;
2440        }
2441        else {
2442            es.left = coords.x + 'px';
2443            es.top  = coords.y + 'px';
2444        }
2445        this.callPlugins('onSetWrapperTransform', coords);
2446        if (this.params.onSetWrapperTransform) this.fireCallback(this.params.onSetWrapperTransform, this, coords);
2447    },
2448
2449    setWrapperTransition : function (duration) {
2450        var es = this.wrapper.style;
2451        es.webkitTransitionDuration = es.MsTransitionDuration = es.msTransitionDuration = es.MozTransitionDuration = es.OTransitionDuration = es.transitionDuration = (duration / 1000) + 's';
2452        this.callPlugins('onSetWrapperTransition', {duration: duration});
2453        if (this.params.onSetWrapperTransition) this.fireCallback(this.params.onSetWrapperTransition, this, duration);
2454    },
2455
2456    /*==================================================
2457        Helpers
2458    ====================================================*/
2459    h : {
2460        getWidth: function (el, outer) {
2461            var width = window.getComputedStyle(el, null).getPropertyValue('width');
2462            var returnWidth = parseFloat(width);
2463            //IE Fixes
2464            if(isNaN(returnWidth) || width.indexOf('%')>0) {
2465                returnWidth = el.offsetWidth - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right'));
2466            }
2467            if (outer) returnWidth += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right'));
2468
2469            return returnWidth;
2470        },
2471        getHeight: function(el, outer) {
2472            if (outer) return el.offsetHeight;
2473
2474            var height = window.getComputedStyle(el, null).getPropertyValue('height');
2475            var returnHeight = parseFloat(height);
2476            //IE Fixes
2477            if(isNaN(returnHeight) || height.indexOf('%')>0) {
2478                returnHeight = el.offsetHeight - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom'));
2479            }
2480            if (outer) returnHeight += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom'));
2481            return returnHeight;
2482        },
2483        getOffset: function(el) {
2484            var box = el.getBoundingClientRect();
2485            var body = document.body;
2486            var clientTop  = el.clientTop  || body.clientTop  || 0;
2487            var clientLeft = el.clientLeft || body.clientLeft || 0;
2488            var scrollTop  = window.pageYOffset || el.scrollTop;
2489            var scrollLeft = window.pageXOffset || el.scrollLeft;
2490            if (document.documentElement && !window.pageYOffset) {
2491                //IE7-8
2492                scrollTop  = document.documentElement.scrollTop;
2493                scrollLeft = document.documentElement.scrollLeft;
2494            }
2495            return {
2496                top: box.top  + scrollTop  - clientTop,
2497                left: box.left + scrollLeft - clientLeft
2498            };
2499        },
2500        windowWidth : function() {
2501            if (window.innerWidth) { return window.innerWidth; }
2502            else if (document.documentElement && document.documentElement.clientWidth) { return document.documentElement.clientWidth; }
2503        },
2504        windowHeight : function() {
2505            if (window.innerHeight) { return window.innerHeight; }
2506            else if (document.documentElement && document.documentElement.clientHeight) { return document.documentElement.clientHeight; }
2507        },
2508        windowScroll : function() {
2509            var left=0, top=0;
2510            if (typeof pageYOffset != 'undefined') {
2511                return {
2512                    left: window.pageXOffset,
2513                    top: window.pageYOffset
2514                };
2515            }
2516            else if (document.documentElement) {
2517                return {
2518                    left: document.documentElement.scrollLeft,
2519                    top: document.documentElement.scrollTop
2520                };
2521            }
2522        },
2523
2524        addEventListener : function (el, event, listener, useCapture) {
2525        	if (typeof useCapture == 'undefined') {
2526				useCapture = false;
2527        	}
2528        	
2529            if (el.addEventListener) {
2530                el.addEventListener(event, listener, useCapture);
2531            }
2532            else if (el.attachEvent) {
2533                el.attachEvent('on' + event, listener);
2534            }
2535        },
2536        
2537        removeEventListener : function (el, event, listener, useCapture) {
2538        	if (typeof useCapture == 'undefined') {
2539				useCapture = false;
2540        	}
2541        	
2542            if (el.removeEventListener) {
2543                el.removeEventListener(event, listener, useCapture);
2544            }
2545            else if (el.detachEvent) {
2546                el.detachEvent('on' + event, listener);
2547            }
2548        }
2549    },
2550    setTransform : function (el, transform) {
2551        var es = el.style;
2552        es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transform;
2553    },
2554    setTranslate : function (el, translate) {
2555        var es = el.style;
2556        var pos = {
2557            x : translate.x || 0,
2558            y : translate.y || 0,
2559            z : translate.z || 0
2560        };
2561        var transformString = this.support.transforms3d ? 'translate3d('+(pos.x)+'px,'+(pos.y)+'px,'+(pos.z)+'px)' : 'translate('+(pos.x)+'px,'+(pos.y)+'px)';
2562        es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transformString;
2563        if (!this.support.transforms) {
2564            es.left = pos.x+'px';
2565            es.top = pos.y+'px';
2566        }
2567    },
2568    setTransition : function (el, duration) {
2569        var es = el.style;
2570        es.webkitTransitionDuration = es.MsTransitionDuration = es.msTransitionDuration = es.MozTransitionDuration = es.OTransitionDuration = es.transitionDuration = duration+'ms';
2571    },
2572    /*==================================================
2573        Feature Detection
2574    ====================================================*/
2575    support: {
2576
2577        touch : (window.Modernizr && Modernizr.touch===true) || (function() {
2578            return !!(("ontouchstart" in window) || window.DocumentTouch && document instanceof DocumentTouch);
2579        })(),
2580
2581        transforms3d : (window.Modernizr && Modernizr.csstransforms3d===true) || (function() {
2582            var div = document.createElement('div').style;
2583            return ("webkitPerspective" in div || "MozPerspective" in div || "OPerspective" in div || "MsPerspective" in div || "perspective" in div);
2584        })(),
2585
2586        transforms : (window.Modernizr && Modernizr.csstransforms===true) || (function(){
2587            var div = document.createElement('div').style;
2588            return ('transform' in div || 'WebkitTransform' in div || 'MozTransform' in div || 'msTransform' in div || 'MsTransform' in div || 'OTransform' in div);
2589        })(),
2590
2591        transitions : (window.Modernizr && Modernizr.csstransitions===true) || (function(){
2592            var div = document.createElement('div').style;
2593            return ('transition' in div || 'WebkitTransition' in div || 'MozTransition' in div || 'msTransition' in div || 'MsTransition' in div || 'OTransition' in div);
2594        })()
2595    },
2596
2597    browser : {
2598
2599        ie8 : (function(){
2600            var rv = -1; // Return value assumes failure.
2601            if (navigator.appName == 'Microsoft Internet Explorer') {
2602                var ua = navigator.userAgent;
2603                var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
2604                if (re.exec(ua) != null)
2605                    rv = parseFloat(RegExp.$1);
2606            }
2607            return rv != -1 && rv < 9;
2608        })(),
2609
2610        ie10 : window.navigator.msPointerEnabled
2611    }
2612};
2613
2614/*=========================
2615  jQuery & Zepto Plugins
2616  ===========================*/
2617if (window.jQuery||window.Zepto) {
2618    (function($){
2619        if(!jQuery().nectarswiper) {
2620            $.fn.nectarswiper = function(params) {
2621                var s = new NectarSwiper($(this)[0], params);
2622                $(this).data('swiper',s);
2623                return s;
2624            };
2625        }
2626    })(window.jQuery||window.Zepto);
2627}
2628
2629// component
2630if ( typeof( module ) !== 'undefined' )
2631{
2632    module.exports = NectarSwiper;
2633}
2634
2635
2636
2637
2638
2639}
2640
2641
2642
2643
2644/*
2645 * Swiper Smooth Progress 1.1.0
2646 * Smooth progress plugin for Swiper
2647 *
2648 * http://www.idangero.us/sliders/swiper/plugins/progress.php
2649 *
2650 * Copyright 2010-2014, Vladimir Kharlampidi
2651 * The iDangero.us
2652 * http://www.idangero.us/
2653 *
2654 * Licensed under GPL & MIT
2655 *
2656 * Released on: January 29, 2014
2657*/
2658NectarSwiper.prototype.plugins.progress=function(a){function b(){for(var b=0;b<a.slides.length;b++){var c=a.slides[b];c.progressSlideSize=e?a.h.getWidth(c):a.h.getHeight(c),c.progressSlideOffset="offsetLeft"in c?e?c.offsetLeft:c.offsetTop:e?c.getOffset().left-a.h.getOffset(a.container).left:c.getOffset().top-a.h.getOffset(a.container).top}d=e?a.h.getWidth(a.wrapper)+a.wrapperLeft+a.wrapperRight-a.width:a.h.getHeight(a.wrapper)+a.wrapperTop+a.wrapperBottom-a.height}function c(b){var c,b=b||{x:0,y:0,z:0};c=1==a.params.centeredSlides?e?-b.x+a.width/2:-b.y+a.height/2:e?-b.x:-b.y;for(var f=0;f<a.slides.length;f++){var g=a.slides[f],h=1==a.params.centeredSlides?g.progressSlideSize/2:0,i=(c-g.progressSlideOffset-h)/g.progressSlideSize;g.progress=i}a.progress=e?-b.x/d:-b.y/d,a.params.onProgressChange&&a.fireCallback(a.params.onProgressChange,a)}var d,e="horizontal"==a.params.mode,f={onFirstInit:function(){b(),c({x:a.getWrapperTranslate("x"),y:a.getWrapperTranslate("y")})},onInit:function(){b()},onSetWrapperTransform:function(a){c(a)}};return f};
2659
2660
2661
2662/*
2663* jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/
2664*/
2665!function(n){"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e)}):"object"==typeof module&&"object"==typeof module.exports?module.exports=n(require("jquery")):n(jQuery)}(function(n){function e(n){var e=7.5625,t=2.75;return n<1/t?e*n*n:n<2/t?e*(n-=1.5/t)*n+.75:n<2.5/t?e*(n-=2.25/t)*n+.9375:e*(n-=2.625/t)*n+.984375}void 0!==n.easing&&(n.easing.jswing=n.easing.swing);var t=Math.pow,u=Math.sqrt,r=Math.sin,i=Math.cos,a=Math.PI,o=1.70158,c=1.525*o,s=2*a/3,f=2*a/4.5;return n.extend(n.easing,{def:"easeOutQuad",swing:function(e){return n.easing[n.easing.def](e)},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-t(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-t(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-t(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-t(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-t(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-t(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-t(-2*n+2,5)/2},easeInSine:function(n){return 1-i(n*a/2)},easeOutSine:function(n){return r(n*a/2)},easeInOutSine:function(n){return-(i(a*n)-1)/2},easeInExpo:function(n){return 0===n?0:t(2,10*n-10)},easeOutExpo:function(n){return 1===n?1:1-t(2,-10*n)},easeInOutExpo:function(n){return 0===n?0:1===n?1:n<.5?t(2,20*n-10)/2:(2-t(2,-20*n+10))/2},easeInCirc:function(n){return 1-u(1-t(n,2))},easeOutCirc:function(n){return u(1-t(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-u(1-t(2*n,2)))/2:(u(1-t(-2*n+2,2))+1)/2}
2665,easeInElastic:function(n){return 0===n?0:1===n?1:-t(2,10*n-10)*r((10*n-10.75)*s)},easeOutElastic:function(n){return 0===n?0:1===n?1:t(2,-10*n)*r((10*n-.75)*s)+1},easeInOutElastic:function(n){return 0===n?0:1===n?1:n<.5?-t(2,20*n-10)*r((20*n-11.125)*f)/2:t(2,-20*n+10)*r((20*n-11.125)*f)/2+1},easeInBack:function(n){return 2.70158*n*n*n-o*n*n},easeOutBack:function(n){return 1+2.70158*t(n-1,3)+o*t(n-1,2)},easeInOutBack:function(n){return n<.5?t(2*n,2)*(7.189819*n-c)/2:(t(2*n-2,2)*((c+1)*(2*n-2)+c)+2)/2},easeInBounce:function(n){return 1-e(1-n)},easeOutBounce:e,easeInOutBounce:function(n){return n<.5?(1-e(1-2*n))/2:(1+e(2*n-1))/2}}),n});
2666
2667
2668 
2669 
2670
2671jQuery(document).ready(function($){ 
2672    
2673  "use strict";
2674
2675  function nectarGetKeyByValue(arr, value) {
2676    for (let i = 0; i < arr.length; i++) {
2677      if (arr[i] === value) {
2678        return i;
2679      }
2680    }
2681    return 0; // Not found
2682  }
2683
2684
2685
2686  var doneVideoInit = false;
2687  var $captionTrans = 0;
2688  var $loading_bg_storage = $('.first-section .nectar-slider-loading').css('background-image');
2689  
2690  function transparentheaderLoadingCalcs() {
2691
2692    if($('body #header-outer[data-transparent-header="true"]').length > 0) {
2693      
2694      if($('#page-header-bg').length === 0) {
2695        
2696        $('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').addClass('not-loaded');
2697        
2698        if($('.container-wrap .main-content > .row > div').find('.nectar-slider-wrap.first-section').length > 0) {
2699          $('.container-wrap .main-content > .row > div').first().css('padding-top','0');
2700        }
2701        
2702        if($('#header-outer[data-remove-border="true"]').length === 0) {
2703
2704          if($('.first-section .nectar-slider-wrap[data-flexible-height="true"]').length === 0 && 
2705          $('.first-section .nectar-slider-wrap[data-fullscreen="true"]').length === 0) {
2706            
2707            $('.first-section .nectar-slider-loading').css({
2708              'top': $('#header-space').height(),
2709              'background-position' : 'center ' + ((($('.first-section .swiper-container').height()/2) + 15) - $('#header-space').height()) +'px'
2710            });
2711            
2712            $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({
2713              'opacity' : '1',
2714              'height' :  $('.first-section .swiper-container').height() - $('#header-space').height() + 'px'
2715            });
2716            
2717          } else {
2718            $loading_bg_storage = $('.first-section .nectar-slider-loading').css('background-image');
2719            
2720            $('.first-section .nectar-slider-loading').css({
2721              'top': $('#header-space').height(),
2722              'background-image': 'none'
2723            });
2724          }
2725        }
2726        
2727      }
2728    } 
2729  }
2730  transparentheaderLoadingCalcs();
2731  
2732  
2733  var $onMobileBrowser = navigator.userAgent.match(/(Android|iPod|iPhone|iPad|BlackBerry|IEMobile|Opera Mini)/);
2734  var $smoothSrollWidth = 0; 
2735  var nectarSliderKenBurns;
2736  
2737  
2738  function prevArrowAnimation(e) {
2739    
2740    if($(this).hasClass('inactive')) { 
2741      return false;
2742    }
2743    
2744    var i = e.data.i;
2745    var $that = $(this); 
2746    var $timeout;
2747      
2748    //non looped slider
2749    if($(this).parents('.swiper-container').attr('data-loop') != 'true') {
2750      
2751      
2752      if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == 1 && !$('html').hasClass('no-video')){
2753        
2754        //make sure the animation is complete
2755        clearTimeout($timeout);
2756        $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,700);
2757        
2758        if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') {
2759          
2760          $that = $(this);
2761          
2762          $(this).parents('.swiper-container').animate({
2763            'left' : 25+'px'
2764          },250,function(){
2765            $that.parents('.swiper-container').stop().animate({
2766              'left' : 0+'px'
2767            },250);
2768          });
2769        }
2770        
2771        $(this).addClass('inactive');
2772        
2773      }    
2774      
2775    }
2776    
2777    e.preventDefault();
2778    $nectarSliders[i].swipePrev();
2779    
2780    if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') === 'fade') {
2781
2782      clearTimeout($timeout);
2783      $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,800);
2784      
2785      $(this).addClass('inactive');
2786    }
2787  }
2788  
2789  function nextArrowAnimation(e) {
2790    
2791    if($(this).hasClass('inactive')) {
2792      return false;
2793    }
2794    
2795    var i = e.data.i;
2796    var $that = $(this);     
2797    var $slideNum = $(this).parents('.swiper-container').find('.swiper-wrapper > div').length;
2798    var $timeout;
2799    
2800    //non looped slider
2801    if($(this).parents('.swiper-container').attr('data-loop') != 'true') {
2802      
2803      if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == $slideNum && !$('html').hasClass('no-video')) {
2804        
2805        //make sure the animation is complete
2806        clearTimeout($timeout);
2807        $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,700);
2808        
2809        if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') {
2810          $that = $(this);
2811          
2812          $(this).parents('.swiper-container').animate({
2813            'left' : -25+'px'
2814          },250,function(){
2815            $that.parents('.swiper-container').stop().animate({
2816              'left' : 0+'px'
2817            },250);
2818          });
2819        }
2820        $(this).addClass('inactive');
2821      }
2822    }
2823    
2824    
2825    e.preventDefault();
2826    $nectarSliders[i].swipeNext();
2827    
2828    if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') === 'fade') {
2829
2830      clearTimeout($timeout);
2831      $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,800);
2832      
2833      $(this).addClass('inactive');
2834    }
2835    
2836  }
2837  
2838  function prevArrowAnimationWithPreview(e) {
2839    if($(this).hasClass('inactive')) {
2840      return false;
2841    }
2842    
2843    var i = e.data.i;
2844    var $that = $(this);     
2845    
2846    //make sure the animation is complete
2847    var $timeout;
2848    
2849    clearTimeout($timeout);
2850    $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,1000);
2851    
2852    var $timeout2;
2853    
2854    clearTimeout($timeout2);
2855    $timeout2 = setTimeout(function(){ $that.removeClass('stophover'); } ,500);
2856    
2857    $(this).addClass('inactive').addClass('stophover');
2858    
2859    $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').prev('.swiper-slide').removeClass('prev-high-z-index');
2860    $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('prev-move');
2861    
2862    e.preventDefault();
2863    $nectarSliders[i].swipePrev();
2864  }
2865  
2866  function nextArrowAnimationWithPreview(e) {
2867    if($(this).hasClass('inactive')) {
2868      return false;
2869    }
2870    
2871    var i = e.data.i;
2872    var $that = $(this);     
2873    
2874    //make sure the animation is complete
2875    var $timeout;
2876    
2877    clearTimeout($timeout);
2878    $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,1000);
2879    
2880    var $timeout2;
2881    
2882    clearTimeout($timeout2);
2883    $timeout2 = setTimeout(function(){ $that.removeClass('stophover'); } ,500);
2884    
2885    $(this).addClass('inactive').addClass('stophover');
2886    
2887    $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').next('.swiper-slide').removeClass('high-z-index');
2888    $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('next-move');
2889    
2890    e.preventDefault();
2891    $nectarSliders[i].swipeNext();
2892  }
2893  
2894  function darkSlideNextMouseOver(currentSlider, activeIndex) { 
2895    var $indexAdd = ($(currentSlider).find('.swiper-container').attr('data-loop') === 'true') ? 2 : 2;
2896    
2897    if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + 1) +')').attr('data-color-scheme') === 'dark') {
2898      if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +')').attr('data-color-scheme') === 'dark') {
2899        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('half-light-overlay').addClass('no-trans');
2900      }
2901      else {
2902        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('light-overlay').addClass('no-trans');
2903      }
2904    } else {
2905      if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +')').attr('data-color-scheme') === 'light') {
2906        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('half-dark-overlay').addClass('no-trans');
2907      } else {
2908        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('dark-overlay').addClass('no-trans');
2909      }
2910    }
2911  }
2912  
2913  function darkSlidePrevMouseOver(currentSlider, activeIndex) { 
2914    var $indexAdd = ($(currentSlider).find('.swiper-container').attr('data-loop') === 'true') ? 0 : 0;
2915    
2916    if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + 1) +')').attr('data-color-scheme') === 'dark') {
2917      if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +')').attr('data-color-scheme') === 'dark') {
2918        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('half-light-overlay').addClass('no-trans');
2919      } else {
2920        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('light-overlay').addClass('no-trans');
2921      }
2922    } else {
2923      if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +')').attr('data-color-scheme') === 'light') {
2924        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('half-dark-overlay').addClass('no-trans');
2925      } else {
2926        $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('dark-overlay').addClass('no-trans');
2927      }
2928    }
2929  }
2930  
2931  
2932  function resetContentPos(i) {
2933    $($nectarSliders[i].container).find('.swiper-slide .content > *').css({ 'transform': 'translateX(0px)' }); 
2934  }
2935  
2936  function prevArrowAnimationDirectional(e) {
2937    
2938    if($(this).hasClass('inactive') || $(this).parents('.swiper-container').find('.slider-next').hasClass('inactive')) {
2939      return false;
2940    }
2941    
2942    var i = e.data.i;
2943    var $that = $(this);     
2944    
2945    //make sure the animation is complete
2946    var $timeout;
2947    
2948    clearTimeout($timeout);
2949    $timeout = setTimeout(function(){ 
2950      
2951      $that.parents('.swiper-container').removeClass('directional-trans-prev');
2952      
2953      $that.parents('.swiper-container').find('.swiper-wrapper').css({ 'transform': 'translateX(0)', 'left': parseInt($that.parents('.swiper-container').find('.swiper-wrapper').css('left')) + $that.parents('.swiper-container').width() });
2954      setTimeout(function(){ 
2955        $nectarSliders[i].updateActiveSlide();
2956        $nectarSliders[i].fixLoop();
2957        $that.removeClass('inactive');
2958      },50);
2959      
2960      resetContentPos(i);
2961      
2962    } ,1100);
2963    
2964    //call the dark/light slide coloring half way through transition
2965    var $timeout2;
2966    
2967    clearTimeout($timeout2);
2968    $timeout2 = setTimeout(function(){ 
2969      
2970      if($that.parents('.swiper-container').attr('data-loop') != 'true') {
2971        if( $that.parents('.swiper-container').find('.swiper-slide-active').index()+1 != 1) {
2972          onChangeStart($nectarSliders[i]); 
2973        }
2974      }
2975      
2976      else {
2977        onChangeStart($nectarSliders[i]); 
2978      }
2979      
2980    } ,100);
2981    
2982    //non looped slider
2983    if($(this).parents('.swiper-container').attr('data-loop') != 'true') {
2984      
2985      
2986      $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content').children().each(function(i){
2987        
2988        anime({
2989          targets: $(this)[0],
2990          translateX: [0, $that.parents('.swiper-container').width()/2.5 ],
2991          easing: 'easeInOutCubic',
2992          duration: 850
2993        });
2994        
2995      });
2996      
2997      
2998    }
2999    
3000    $(this).addClass('inactive');
3001    
3002    //move the slide with eaising
3003    anime({
3004      targets: $(this).parents('.swiper-container').find('.swiper-wrapper')[0],
3005      translateX: [0, $(this).parents('.swiper-container').width() ],
3006      easing: 'easeInOutCubic',
3007      duration: 1000
3008    });
3009    
3010    if($(this).parents('.swiper-container').attr('data-loop') === 'true') {
3011      
3012      
3013      $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content > *').each(function(i){
3014        
3015        anime({
3016          targets: $(this)[0],
3017          translateX: [0, $that.parents('.swiper-container').width()/2.5 ],
3018          easing: 'easeInOutCubic',
3019          duration: 850,
3020          delay: i*50
3021        });
3022        
3023      });
3024    }
3025    
3026    //kenburns
3027    
3028    if($that.parents('.nectar-slider-wrap').is('[data-bg-animation="ken_burns"]')) {
3029      
3030      $that.parents('.swiper-container').find('.swiper-slide').attr('data-ken-burns','active');
3031      
3032      clearTimeout(nectarSliderKenBurns);
3033      nectarSliderKenBurns = setTimeout(function(){
3034        $that.parents('.swiper-container').find('.swiper-slide:not(".swiper-slide-active")').attr('data-ken-burns','inactive');
3035      },1350);
3036      
3037    }
3038    
3039    
3040    $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').prev('.swiper-slide').find('.content > *').css({
3041      'transform': 'translateX(-' + $that.parents('.swiper-container').width() + "px)"
3042    }, 0);
3043    
3044    setTimeout(function(){
3045      
3046      $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').prev('.swiper-slide').find('.content > *').each(function(i){
3047        
3048        anime({
3049          targets: $(this)[0],
3050          translateX: 0,
3051          easing: 'easeInOutCubic',
3052          duration: 700,
3053          delay: i*50
3054        });
3055        
3056        
3057      });
3058    },200);
3059    
3060    $that.parents('.swiper-container').addClass('directional-trans-prev');
3061    
3062    e.preventDefault();
3063    
3064  }
3065  
3066  function nextArrowAnimationDirectional(e) {
3067    
3068    if($(this).hasClass('inactive') || $(this).parents('.swiper-container').find('.slider-prev').hasClass('inactive')) {
3069      return false;
3070    }
3071    
3072    var i = e.data.i;
3073    var $that = $(this);     
3074    
3075    //make sure the animation is complete
3076    var $timeout;
3077    
3078    clearTimeout($timeout);
3079    $timeout = setTimeout(function(){ 
3080      
3081      $that.parents('.swiper-container').removeClass('directional-trans-next');
3082      $that.parents('.swiper-container').find('.swiper-wrapper').css({ 'transform': 'translateX(0)', 'left': parseInt($that.parents('.swiper-container').find('.swiper-wrapper').css('left')) - $that.parents('.swiper-container').width() });
3083      setTimeout(function(){ 
3084        $nectarSliders[i].updateActiveSlide();
3085        $nectarSliders[i].fixLoop(); 
3086        $that.removeClass('inactive');
3087      },50);
3088      resetContentPos(i);
3089      
3090    } ,1100);
3091    
3092    var $timeout2;
3093    
3094    clearTimeout($timeout2);
3095    $timeout2 = setTimeout(function(){ 
3096      
3097      if($that.parents('.swiper-container').attr('data-loop') != 'true') {
3098        if( $that.parents('.swiper-container').find('.swiper-slide-active').index()+1 != $slideNum) {
3099          onChangeStart($nectarSliders[i]); 
3100        }
3101      }
3102      
3103      else {
3104        onChangeStart($nectarSliders[i]); 
3105      }
3106      
3107    } ,100);
3108    
3109    
3110    
3111    var $slideNum = $(this).parents('.swiper-container').find('.swiper-wrapper > div').length;
3112    
3113    //non looped slider
3114    if($(this).parents('.swiper-container').attr('data-loop') != 'true') {
3115      
3116      if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == $slideNum && !$('html').hasClass('no-video')) {
3117        
3118        if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') {
3119          $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','none').animate({
3120            'left' : parseInt($(this).parents('.swiper-container').find('.swiper-wrapper').css('left')) - 20
3121          },200,function(){
3122            $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','left,top');
3123            $nectarSliders[i].swipeReset();
3124          });
3125        }
3126      } else {
3127        
3128        $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content > *').each(function(i){
3129          
3130          anime({
3131            targets: $(this)[0],
3132            translateX: '-' + $that.parents('.swiper-container').width()/2.5 + "px",
3133            easing: 'easeInOutCubic',
3134            duration: 850,
3135            delay: i*50
3136          });
3137          
3138        });
3139      }
3140    }
3141    
3142    $(this).addClass('inactive');
3143    
3144    
3145    //move the slide with easing
3146    anime({
3147      targets: $(this).parents('.swiper-container').find('.swiper-wrapper')[0],
3148      translateX: '-' + $that.parents('.swiper-container').width() + "px",
3149      easing: 'easeInOutCubic',
3150      duration: 1000
3151    });
3152    
3153    
3154    if($(this).parents('.swiper-container').attr('data-loop') === 'true') {
3155      
3156      
3157      $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content > *').each(function(i){
3158        
3159        anime({
3160          targets: $(this)[0],
3161          translateX: '-' + $that.parents('.swiper-container').width()/2.5 + "px",
3162          easing: 'easeInOutCubic',
3163          duration: 850,
3164          delay: i*50
3165        });
3166        
3167      });
3168    }
3169    
3170    
3171    //kenburns
3172    if($that.parents('.nectar-slider-wrap').is('[data-bg-animation="ken_burns"]')) {
3173      
3174      $that.parents('.swiper-container').find('.swiper-slide').attr('data-ken-burns','active');
3175      
3176      clearTimeout(nectarSliderKenBurns);
3177      nectarSliderKenBurns = setTimeout(function(){
3178        $that.parents('.swiper-container').find('.swiper-slide:not(".swiper-slide-active")').attr('data-ken-burns','inactive');  
3179      },1350);
3180      
3181    }
3182    
3183    
3184    $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').next('.swiper-slide').find('.content > *').css({
3185      'transform': 'translateX(' + $that.parents('.swiper-container').width() + "px)"
3186    });
3187    
3188    setTimeout(function(){
3189      
3190      
3191      $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').next('.swiper-slide').find('.content > *').each(function(i){
3192        
3193        anime({
3194          targets: $(this)[0],
3195          translateX: '0px',
3196          easing: 'easeInOutCubic',
3197          duration: 700,
3198          delay: i*50
3199        });
3200        
3201        
3202      });
3203    },200);
3204    
3205    
3206    $that.parents('.swiper-container').addClass('directional-trans-next');
3207    
3208    e.preventDefault();
3209
3210  }
3211  
3212  
3213  /*=========================
3214  Begin Nectar Slider Main Construction
3215  ===========================*/
3216  var $nectarSliders = [];
3217  
3218  function nectarSliderMainInit() { 
3219    
3220    $nectarSliders = [];
3221    
3222    // remove boxed full width attr when not needed
3223    $('.nectar-slider-wrap[data-full-width="boxed-full-width"]').each(function(){ 
3224      if($(this).parents('.wpb_column').length > 0 && 
3225      $(this).parents('.full-width-content').length > 0) {
3226        $(this).attr('data-full-width','false'); 
3227      }
3228    });
3229    
3230    // remove full width attribute on slider in full width content section
3231    $('.full-width-content .wpb_column .nectar-slider-wrap[data-full-width="true"]').attr('data-full-width', 'false');
3232    
3233    var $leftHeaderSize = ($('#header-outer[data-format="left-header"]').length > 0 && window.innerWidth >= 1000) ? parseInt($('#header-outer[data-format="left-header"]').width()) : 0;
3234    var $windowWidth = $(window).width() - $leftHeaderSize;
3235    
3236    if($('body > #boxed').length === 0 && 
3237    $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') != 'portfolio-extra' && 
3238    $('.nectar-slider-wrap[data-full-width="true"]').parents('.post-area:not(".span_12")').length === 0){ 
3239      
3240      $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap')
3241        .css({'left': -( ($windowWidth-$smoothSrollWidth)/2 - $('.main-content').width()/2), 'margin-left': '0' });
3242        
3243      $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap')
3244        .css('width',$windowWidth);
3245    } 
3246    
3247    else if( $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') === 'portfolio-extra' && $('#full_width_portfolio').length !== 0){  
3248      
3249      $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap')
3250        .css({'left': -( ($windowWidth-$smoothSrollWidth)/2 - $('.main-content').width()/2), 'margin-left': '0' });
3251        
3252      $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap')
3253        .css('width',$windowWidth);
3254    }
3255    
3256    else { 
3257      var $container = ($('body > #boxed').length === 0) ? '.post-area' : '.container-wrap';
3258      
3259      if($($container).width() == '0' && $('body > #boxed').length > 0) {
3260        $container = '#boxed';
3261      }
3262      
3263      $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap')
3264        .css('width',$($container).width());
3265    
3266    }
3267    
3268    //show slider once full width calcs have taken place
3269    $('.nectar-slider-wrap, .slide-bg-overlay').show();
3270    
3271    //set bg colors / textures after js has made the slider fullwidth
3272    $('.swiper-container').each(function(){
3273      if( $(this).parents('.wpb_gallery').length == 0 ) {
3274        $(this).css('background-color','#000');
3275        $(this).find('.swiper-slide').css('background-color','#000');
3276      } 
3277    });
3278
3279    
3280    $('.video-texture').css('opacity','1');
3281    
3282    
3283    
3284    $('.nectar-slider-wrap').each(function(i){
3285      var $arrows = $(this).find('.swiper-container').attr('data-arrows');
3286      var $bullets = $(this).find('.swiper-container').attr('data-bullets');
3287      var $swipe = $(this).find('.swiper-container').attr('data-desktop-swipe');
3288      var $loop = $(this).find('.swiper-container').attr('data-loop');
3289      var $grab = 1;
3290      var $desktopSwipe = 1;
3291      
3292      //swipe  
3293      if($swipe == 'true' && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 && 
3294      $(this).attr('data-overall_style') != 'directional' ){
3295        $grab = 1;
3296        $desktopSwipe = 1;
3297      } else {
3298        $grab = 0;
3299        $desktopSwipe = 0;
3300      }
3301      
3302      ////set swipe as true for mobile
3303      if( $(window).width() < 1000 && $(this).attr('data-overall_style') != 'directional') {
3304        $grab = 1;
3305        $desktopSwipe = 1;
3306      }
3307
3308      //bullets
3309      if($bullets == 'true' && $(this).find('.swiper-wrapper > div').length > 1 && 
3310      $(this).attr('data-overall_style') != 'directional' ){
3311        $bullets = '#'+$(this).attr('id')+' .slider-pagination';
3312      } else {
3313        $bullets = null;
3314      }
3315      
3316      //loop
3317      var $useLoop = ($loop == 'true' && $(this).find('.swiper-wrapper > div').length > 1 && !$('html').hasClass('no-video') || $(this).attr('data-overall_style') === 'directional' && $(this).find('.swiper-wrapper > div').length > 1 && !$('html').hasClass('no-video')) ? true : false;
3318      if($useLoop == false) {
3319        $(this).find('.swiper-container').attr('data-loop','false');
3320      }
3321      
3322      //obj config
3323      var $sliderOptions, touchRatio;
3324      
3325      if($(this).attr('data-transition') === 'fade' && 
3326      $(this).attr('data-overall_style') !== 'directional' && 
3327      $(this).attr('data-button-styling') !== 'btn_with_preview'){
3328        
3329        var progressVar = true;
3330        touchRatio = 1.3;
3331        
3332        $sliderOptions = {
3333          loop: $useLoop,
3334          grabCursor: $grab,
3335          touchRatio: touchRatio,
3336          speed: 600,
3337          pagination : $bullets,
3338          simulateTouch: $desktopSwipe,
3339          onSlideChangeEnd: nectarSlideRotateReset,
3340          onTouchEnd: nectarSlideRotateResetTouch,
3341          onSlideChangeStart: onChangeStart,
3342          onTouchMove: clearAutoplay,
3343          onFirstInit: nectarInit,
3344          progress: progressVar,
3345          onProgressChange: function(swiper){
3346            
3347            if($(swiper.container).parents('.nectar-slider-wrap').hasClass('loaded')) {
3348              for (var i = 0; i < swiper.slides.length; i++){
3349                var slide = swiper.slides[i];
3350                var progress = slide.progress;
3351                var translate = progress*swiper.width;  
3352                
3353                var opacity = Math.max(1 - Math.abs(progress), 0);
3354                slide.style.opacity = opacity;
3355                swiper.setTransform(slide,'translate3d('+translate+'px,0,0)');
3356              }
3357            }
3358          },
3359          onTouchStart: function(swiper){
3360            for (var i = 0; i < swiper.slides.length; i++){
3361              swiper.setTransition(swiper.slides[i], 0);
3362            }
3363          },
3364          onSetWrapperTransition:  function(swiper, speed) {
3365            for (var i = 0; i < swiper.slides.length; i++){
3366              swiper.setTransition(swiper.slides[i], speed);
3367            }
3368          }
3369        }
3370        
3371        
3372      } else {
3373        
3374        touchRatio = 0.6;
3375        var css3Trans = ($('#'+$(this).attr('id') + '.nectar-slider-wrap[data-overall_style="directional"]').length == 1) ? false: true;
3376        $sliderOptions = {
3377          loop: $useLoop,
3378          grabCursor: $grab,
3379          touchRatio: touchRatio,
3380          speed: 500,
3381          useCSS3Transforms: css3Trans,
3382          pagination : $bullets,
3383          simulateTouch: $desktopSwipe,
3384          onSlideChangeEnd: nectarSlideRotateReset,
3385          onTouchEnd: nectarSlideRotateResetTouch,
3386          onSlideChangeStart: onChangeStart,
3387          onTouchMove: clearAutoplay,
3388          onFirstInit: nectarInit
3389          
3390        }
3391      }
3392      
3393      
3394      $nectarSliders[i] = new NectarSwiper('#'+$(this).attr('id')+' .swiper-container', $sliderOptions);
3395
3396      /* Workaround for hidden sliders */
3397      if( isNaN($nectarSliders[i].activeIndex) ) {
3398        $nectarSliders[i].activeIndex = $useLoop ? 1 : -0;
3399      }
3400      if( isNaN($nectarSliders[i].previousIndex) ) {
3401        $nectarSliders[i].previousIndex = $useLoop ? 1 : 0;
3402      }
3403
3404      $nectarSliders[i].swipeReset();
3405      
3406      $('#'+$(this).attr('id')).addClass('nectar-slider-enabled');
3407      
3408
3409      //webkit looped slider first video fix
3410      if(navigator.userAgent.indexOf('Chrome') > 0 && 
3411      !/Edge\/12./i.test(navigator.userAgent) && 
3412      !/Edge\/\d./i.test(navigator.userAgent)) { 
3413        
3414        var webmSource, webmSource2, firstVideo, lastVideo;
3415        
3416        if( jQuery(this).find('.swiper-slide:nth-child(2) video source[type="video/webm"]').length > 0 && 
3417        jQuery(this).find('.swiper-container').attr('data-loop') === 'true') {
3418          
3419          webmSource = jQuery(this).find('.swiper-slide:nth-child(2) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);
3420          firstVideo = jQuery(this).find('.swiper-slide:nth-child(2) video').get(0);
3421          firstVideo.src = webmSource;
3422          firstVideo.load();
3423          
3424          webmSource2 = jQuery(this).find('.swiper-slide:last-child video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);
3425          lastVideo = jQuery(this).find('.swiper-slide:last-child video').get(0);
3426          lastVideo.src = webmSource2;
3427          lastVideo.load();
3428        }
3429        
3430        if( jQuery(this).find('.swiper-slide:eq(-2) video source[type="video/webm"]').length > 0 && 
3431        jQuery(this).find('.swiper-container').attr('data-loop') === 'true') {
3432          
3433          webmSource = jQuery(this).find('.swiper-slide:eq(-2) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);
3434          firstVideo = jQuery(this).find('.swiper-slide:eq(-2) video').get(0);
3435          firstVideo.src = webmSource;
3436          firstVideo.load();
3437          
3438          webmSource2 = jQuery(this).find('.swiper-slide:nth-child(1) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000);
3439          lastVideo = jQuery(this).find('.swiper-slide:nth-child(1) video').get(0);
3440          lastVideo.src = webmSource2;
3441          lastVideo.load();
3442        }
3443      }
3444      
3445      
3446      //autorotation visualized style
3447      if($('#'+$(this).attr('id') + ' [data-bullet_style="see_through_ar_visualized"]').length == 1) {
3448        $('#'+$(this).attr('id'))
3449          .find('.slider-pagination .swiper-pagination-switch')
3450          .append('<svg width="65px" height="65px" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"><circle stroke-width="9" fill="none" stroke-linecap="round" cx="33" cy="33" r="28"></circle> <circle class="time" stroke-width="9" fill="none" stroke-linecap="round" cx="33" cy="33" r="28"></circle></svg>');
3451      } 
3452      
3453      //Navigation arrows
3454      
3455      ////default arrows
3456      if($arrows == 'true' && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 && 
3457      $('#'+$(this).attr('id') + '.nectar-slider-wrap[data-button-styling="btn_with_preview"]').length === 0 && 
3458      $('#'+$(this).attr('id') + '.nectar-slider-wrap[data-overall_style="directional"]').length === 0 ){
3459        
3460        
3461        $('.slide-count i').css({ 'transform': 'scale(0.5)', 'opacity': '0' });
3462        
3463        //hover event
3464        $('body').on('mouseenter','.nectar-slider-wrap[data-button-styling="btn_with_count"][data-overall_style="classic"] .swiper-container .slider-prev, .nectar-slider-wrap[data-button-styling="btn_with_count"][data-overall_style="classic"] .swiper-container .slider-next',function(){
3465          
3466          anime({
3467            targets: $(this).find('.slide-count i')[0],
3468            scale: [0,1],
3469            translateZ: 0,
3470            opacity: 1,
3471            easing: 'easeOutCubic',
3472            duration: 250,
3473            delay: 110
3474          });
3475          
3476          anime({
3477            targets: $(this)[0],
3478            width: [50,100],
3479            easing: 'easeOutCubic',
3480            duration: 300
3481          });
3482          
3483          anime({
3484            targets: $(this)[0].querySelectorAll('.slide-count span'),
3485            opacity: 1,
3486            easing: 'easeOutCubic',
3487            duration: 225,
3488            delay: 100
3489          });
3490          
3491          
3492        });
3493        
3494        $('body').on('mouseleave','.nectar-slider-wrap[data-button-styling="btn_with_count"][data-overall_style="classic"] .swiper-container .slider-prev, .nectar-slider-wrap[data-button-styling="btn_with_count"][data-overall_style="classic"] .swiper-container .slider-next',function(){
3495          
3496          anime.remove('.slide-count i, .slider-next, .slider-prev, .slide-count span');
3497          
3498          anime({
3499            targets: $(this).find('.slide-count i')[0],
3500            scale: 0,
3501            translateZ: 0,
3502            opacity: 0,
3503            easing: 'easeOutCubic',
3504            duration: 250
3505          });
3506          
3507          anime({
3508            targets: $(this)[0],
3509            width: 50,
3510            easing: 'easeOutCubic',
3511            duration: 300
3512          });
3513          
3514          anime({
3515            targets: $(this)[0].querySelectorAll('.slide-count span'),
3516            opacity: 0,
3517            easing: 'easeOutCubic',
3518            duration: 225
3519          });
3520          
3521        });
3522        
3523        //add slide counts
3524        var $slideCount = ($(this).find('.swiper-container').attr('data-loop') != 'true' ) ? $('#'+$(this).attr('id') + ' .swiper-wrapper > div').length :  $('#'+$(this).attr('id') + ' .swiper-wrapper > div').length - 2;
3525        
3526        //ie8
3527        if($('html').hasClass('no-video')) $slideCount = $('#'+$(this).attr('id') + ' .swiper-wrapper > div').length;
3528        
3529        $('#'+$(this).attr('id')+' .slider-prev .slide-count .slide-total').html( $slideCount );
3530        $('#'+$(this).attr('id')+' .slider-next .slide-count .slide-total').html( $slideCount );
3531        
3532
3533        //prev
3534        $('body').off('click','#'+$(this).attr('id')+' .slider-prev',prevArrowAnimation);
3535        $('body').on('click','#'+$(this).attr('id')+' .slider-prev', {i: i}, prevArrowAnimation);
3536        
3537        
3538        //next
3539        $('body').off('click','#'+$(this).attr('id')+' .slider-next',  nextArrowAnimation);
3540        $('body').on('click','#'+$(this).attr('id')+' .slider-next', {i: i}, nextArrowAnimation);
3541        
3542
3543      }
3544      
3545      
3546      ////button with preview on hover
3547      else if($arrows == 'true' && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 && $('#'+$(this).attr('id') + '.nectar-slider-wrap[data-button-styling="btn_with_preview"]').length == 1 && $('#'+$(this).attr('id') + '.nectar-slider-wrap[data-overall_style="directional"]').length == 0){
3548
3549        
3550        $('body').off('click','#'+$(this).attr('id')+' .slider-prev', prevArrowAnimationWithPreview);
3551        $('body').on('click','#'+$(this).attr('id')+' .slider-prev', {i: i}, prevArrowAnimationWithPreview);
3552        
3553        //next
3554        $('body').off('click','#'+$(this).attr('id')+' .slider-next', nextArrowAnimationWithPreview);
3555        $('body').on('click','#'+$(this).attr('id')+' .slider-next', {i: i}, nextArrowAnimationWithPreview);
3556        
3557        //hover event
3558        $('body').on('mouseenter','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-next:not(.stophover)',function(){
3559          
3560          $(this).parents('.nectar-slider-wrap')
3561            .find('.swiper-slide-active')
3562            .next('.swiper-slide')
3563            .addClass('high-z-index');
3564            
3565          $(this).parents('.nectar-slider-wrap')
3566            .find('.swiper-slide-active')
3567            .stop()
3568            .addClass('next-move');
3569          
3570          $(this).stop()
3571            .addClass('next-arrow-move');
3572          
3573          darkSlideNextMouseOver($(this).parents('.nectar-slider-wrap'), $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').index());
3574          
3575        });
3576        
3577        $('body').on('mouseleave','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-next',function(){
3578          
3579          $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').next('.swiper-slide').removeClass('high-z-index');
3580          $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('next-move');
3581          $(this).stop().removeClass('next-arrow-move');
3582        });
3583        
3584        
3585        $('body').on('mouseenter','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-prev:not(.stophover)',function(){
3586          
3587          $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').prev('.swiper-slide').addClass('prev-high-z-index');
3588          $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().addClass('prev-move');
3589          $(this).stop().addClass('prev-arrow-move');
3590          darkSlidePrevMouseOver($(this).parents('.nectar-slider-wrap'), $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').index());
3591        });
3592        
3593        $('body').on('mouseleave','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-prev',function(){
3594          
3595          $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').prev('.swiper-slide').removeClass('prev-high-z-index');
3596          $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('prev-move');
3597          $(this).stop().removeClass('prev-arrow-move');
3598          
3599        });
3600        
3601      } else if($('#'+$(this).attr('id') + '.nectar-slider-wrap[data-overall_style="directional"]').length == 1) {
3602        
3603        
3604        //prev
3605        $('body').off('click','#'+$(this).attr('id')+' .slider-prev', prevArrowAnimationDirectional);
3606        $('body').on('click','#'+$(this).attr('id')+' .slider-prev', {i: i}, prevArrowAnimationDirectional);
3607        
3608        //next
3609        $('body').off('click','#'+$(this).attr('id')+' .slider-next',  nextArrowAnimationDirectional);
3610        $('body').on('click','#'+$(this).attr('id')+' .slider-next',  {i: i}, nextArrowAnimationDirectional);
3611
3612        
3613      }
3614      
3615      
3616      //scale pagination style
3617      if($('#'+$(this).attr('id') +' .swiper-container').attr('data-bullet_style') === 'scale' ){
3618        $('#'+$(this).attr('id')+' .slider-pagination .swiper-pagination-switch').append('<i />');
3619      }
3620      //Clickable pagination
3621      if($bullets != null && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 ){
3622        $('#'+$(this).attr('id')+' .slider-pagination .swiper-pagination-switch').on('click', function(){
3623          $nectarSliders[i].swipeTo($(this).index());
3624        });
3625      }
3626    });
3627    
3628    
3629    
3630  }
3631  
3632  nectarSliderMainInit();
3633  
3634$(window).on('vc_reload', function() {
3635  nectarSliderMainInit();
3636  initialSlideLoad();
3637});
3638
3639/* Viewport tracking */
3640if ('IntersectionObserver' in window) {
3641
3642  var options = {
3643    rootMargin: '0px',
3644  }
3645
3646  var sliderObserver = new IntersectionObserver(function(entries) {
3647
3648    entries.forEach(function(entry) {
3649
3650      if (entry.isIntersecting) {
3651        entry.target.classList.remove('out-of-view');
3652        
3653        setTimeout(function(){
3654          if($(entry.target).find('.swiper-slide-active').is('[data-color-scheme="dark"]') ) {
3655            $('#header-outer.transparent').addClass('dark-slide');
3656          } else {
3657            $('#header-outer.transparent').removeClass('dark-slide');
3658          }
3659        },200);
3660        
3661
3662      } else {
3663        entry.target.classList.add('out-of-view');
3664        
3665      }
3666
3667    });
3668
3669  }, options);
3670
3671  if( $('#nectar_fullscreen_rows').length == 0 && $('#header-outer[data-permanent-transparent="1"]').length > 0 ) {
3672    $('.top-level .nectar-slider-wrap').each(function(slider){
3673      sliderObserver.observe($(this)[0]);
3674    });
3675  }
3676  
3677    
3678  
3679
3680}
3681  
3682  
3683  function darkFirstSlide(slider){
3684    if( slider.parents('.parallax_slider_outer').length > 0 && slider.parents('.first-section').length > 0 && slider.find('.swiper-slide-active[data-color-scheme="dark"]').length > 0 ) {
3685      $('#header-outer').addClass('dark-slide');
3686    } else if(slider.parents('.parallax_slider_outer').length > 0 || slider.parents('.first-section').length > 0 ) {
3687      
3688      if( slider.find('.swiper-slide-active[data-color-scheme="dark"]').length > 0 && slider.parents('.first-section').length > 0 && slider.is('[data-full-width="true"]') ) {
3689        //dont remove if needed
3690      } else {
3691        $('#header-outer').removeClass('dark-slide');
3692      }
3693    }
3694  }
3695  
3696  
3697  //initial slide load 
3698  var $animating = false;
3699  
3700  //responsive slider
3701  var $sliderHeights = [];
3702  var $existingSliders = [];
3703  var slideAnimationQueues = [];
3704  
3705  var sliderLength = $('.swiper-container').length;
3706  var sliderLoadedLength = 0;
3707  
3708  function initialSlideLoad() {
3709    
3710    $animating = false;
3711    
3712    //add class to first video slide
3713    $('.swiper-wrapper').each(function(){
3714      if($(this).find('.swiper-slide:nth-child(2) video').length > 0) $(this).find('.swiper-slide:nth-child(2)').addClass('first_video_slide');
3715      
3716      //ken burns start
3717      if($(this).parents('.nectar-slider-wrap[data-bg-animation="ken_burns"]').length > 0) {
3718        if( $('#nectar_fullscreen_rows').length > 0 ) {
3719          var $that = $(this);
3720          setTimeout(function(){
3721            $that.find('.swiper-slide.swiper-slide-active').addClass('ken-burns').attr('data-ken-burns','active');
3722          },100);
3723        } else {
3724          $(this).find('.swiper-slide.swiper-slide-active').addClass('ken-burns').attr('data-ken-burns','active');
3725        }
3726      }
3727      
3728      
3729    });
3730    
3731    
3732    $('.nectar-slider-wrap').each(function(i){
3733      
3734      
3735      slideAnimationQueues[i] = {
3736        sliderID: $(this).attr('id'),
3737        captionInterval: '',
3738        kenBurnsInterval: '' 
3739      } 
3740      
3741      var $that = $(this);
3742      
3743      //store animation queue arr obj
3744      if($(this).find('.swiper-slide-active video').length > 0){
3745        
3746        if(!$('html').hasClass('no-video') && !navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/) ){
3747          
3748          showSliderControls();
3749          resizeToCover();
3750          slideContentPos();
3751          sliderLoadIn($that,i);
3752          
3753          var $timeoutDelay = 0;
3754          if($('#ajax-loading-screen[data-effect="center_mask_reveal"]').length > 0 && $that.parents('.parallax_slider_outer').length > 0 ||
3755          $('#ajax-loading-screen[data-effect="center_mask_reveal"]').length > 0 && $that.hasClass('first-nectar-slider') ) {
3756            $timeoutDelay = 450;
3757          } 
3758          
3759          setTimeout(function(){ captionTransition($nectarSliders[i]); onChangeStart($nectarSliders[i]); }, $timeoutDelay); 
3760          darkFirstSlide($that);
3761          
3762          
3763          $that.addClass('loaded');
3764          if($that.parents('.parallax_slider_outer').length > 0 || $that.hasClass('first-nectar-slider')) {
3765            $('#ajax-loading-screen').addClass('loaded');
3766            setTimeout(function(){ $('#ajax-loading-screen').addClass('hidden'); },1000);
3767          }
3768          
3769        } 
3770        //ie8
3771        else {
3772          showSliderControls();
3773          resizeToCover();
3774          slideContentPos();
3775          sliderLoadIn($that,i);
3776          captionTransition($nectarSliders[i]);
3777          darkFirstSlide($that);
3778        }
3779      } 
3780      
3781      else {
3782        
3783        showSliderControls();
3784        resizeToCover();
3785        slideContentPos();
3786        sliderLoadIn($that,i);
3787        var $timeout = 0;
3788        
3789        if($('#ajax-loading-screen[data-effect="center_mask_reveal"]').length > 0 && 
3790        $that.parents('.parallax_slider_outer').length > 0 &&
3791        $that.parents('.first-section').length > 0 ||
3792        $('#ajax-loading-screen[data-effect="center_mask_reveal"]').length > 0 && $that.hasClass('first-nectar-slider') ) {
3793          $timeout = 450;
3794        } 
3795        
3796        setTimeout(function(){ 
3797          captionTransition($nectarSliders[i]);  
3798          onChangeStart($nectarSliders[i]); 
3799        },$timeout); 
3800        
3801        darkFirstSlide($that);
3802        
3803        $that.addClass('loaded');
3804        if($that.parents('.parallax_slider_outer').length > 0 || 
3805        $that.hasClass('first-nectar-slider')) {
3806          $('#ajax-loading-screen').addClass('loaded');
3807          setTimeout(function(){ 
3808            $('#ajax-loading-screen').addClass('hidden'); 
3809          },1000);
3810        }
3811        
3812      }
3813      
3814      //mobile check
3815      if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){
3816        
3817        
3818        $that.find('.video-wrap').each(function(){
3819          
3820          var $videoSlide = $(this);
3821          
3822          $(this).css('bottom','0');
3823          $(this).find('video')[0].onplay = function(){    
3824            $videoSlide.find('video').css({'opacity':'1'});
3825            setTimeout(function(){
3826              $videoSlide.parents('.swiper-slide').find('.mobile-video-image').transition({'opacity':'0'},250);
3827              
3828              anime({
3829                targets: $videoSlide.parents('.swiper-slide').find('.mobile-video-image')[0],
3830                opacity: 0,
3831                easing: 'easeOutCubic',
3832                duration: 250
3833              });
3834              
3835            },100);
3836            
3837          };
3838          
3839        });
3840        
3841
3842        captionTransition($nectarSliders[i]);
3843        showSliderControls();
3844        resizeToCover();
3845        slideContentPos();
3846        darkFirstSlide($that);
3847        
3848        setTimeout(function(){ 
3849          resizeToCover(); 
3850          slideContentPos(); 
3851        },400);
3852        
3853        $('.nectar-slider-wrap').find('.nectar-slider-loading').fadeOut(800,'easeInOutExpo');
3854        $('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').removeClass('not-loaded');
3855        
3856
3857        $(this).addClass('loaded');
3858        
3859        if($that.parents('.parallax_slider_outer').length > 0 || $that.hasClass('first-nectar-slider')) {
3860          $('#ajax-loading-screen').addClass('loaded');
3861          setTimeout(function(){ $('#ajax-loading-screen').addClass('hidden'); },1000);
3862        }
3863        
3864        autorotateInit($(this),i);
3865      }
3866      
3867      
3868      if($('header#top #logo img').length > 0) {
3869        var logoImg = new Image();
3870        logoImg.src = $('header#top #logo img:first').attr('src');
3871        
3872        $(logoImg).on('load', function(){
3873          if($that.attr('data-overall_style') === 'directional') {
3874            $that.find('.swiper-container').addClass('directional-trans-current'); 
3875            onChangeStart($nectarSliders[i]);
3876          } 
3877        });
3878      } else {
3879        if($that.attr('data-overall_style') === 'directional') {
3880          $that.find('.swiper-container').addClass('directional-trans-current'); 
3881          onChangeStart($nectarSliders[i]);
3882        } 
3883      }
3884      
3885    });
3886    
3887    
3888    ////get slider heights
3889    $('.swiper-container').each(function(){
3890      
3891      //left and right pagination room
3892      if( $(this).is('[data-bullet_position="left"]') ) {
3893        if($(this).find('[data-x-pos="left"]').length > 0) {
3894          $(this).find('.slider-pagination-wrap').addClass('extra-room');
3895        }
3896      }
3897      if( $(this).is('[data-bullet_position="right"]') ) {
3898        if($(this).find('[data-x-pos="right"]').length > 0) {
3899          $(this).find('.slider-pagination-wrap').addClass('extra-room');
3900        }
3901      }
3902      
3903    });
3904    
3905    
3906  }
3907  
3908  
3909  
3910  
3911  function nectarInit() {
3912    if(doneVideoInit == true) { 
3913      return; 
3914    }
3915    
3916    
3917    $('.swiper-slide iframe[data-aspectRatio]').each(function() {
3918      var newWidth = $(this).parent().width();
3919      
3920      var $el = $(this);
3921      
3922      //in nectar slider
3923      if($(this).parents('.swiper-slide').length > 0) {
3924        if($(this).is(':visible')) $el.width(newWidth).height(newWidth * $el.attr('data-aspectRatio'));
3925      } 
3926      //all others
3927      else {
3928        $el.width(newWidth).height(newWidth * $el.attr('data-aspectRatio'));
3929      }
3930      
3931      
3932    });
3933    
3934    
3935    doneVideoInit = true;
3936  }
3937  
3938  
3939  
3940  //autoplay - set vars before init call
3941  var autoplay = [];
3942  var sliderAutoplayCount = 0;
3943  
3944  function nsSliderArrStore() {
3945    $sliderHeights = [];
3946    $existingSliders = [];
3947    $('.swiper-container').each(function(i){
3948      $sliderHeights[i] = parseInt($(this).attr('data-height'));  
3949      $existingSliders[i] = $(this).parent().attr('id');
3950    });
3951  }
3952  
3953  nsSliderArrStore();
3954  dynamicHeightSliders();  
3955  sliderSize();
3956  resizeToCover();
3957  
3958  for(var nsCount=0; nsCount<$nectarSliders.length; nsCount++) {
3959    $nectarSliders[nsCount].resizeFix();
3960  }
3961  
3962  $('.parallax_slider_outer .nectar-slider-wrap .slide-bg-wrap').each(function(){
3963    if($(this).parents('.top-level').length > 0) {
3964      if($(this).find('.image-bg').length > 0) { 
3965        $(this).find('.image-bg').css({'height':  Math.ceil( $(this).parent().offset().top * 0.25 ) + $(this).outerHeight(true) });
3966      }
3967      if($(this).find('.video-wrap').length > 0) { 
3968        $(this).find('.video-wrap').css({'height': Math.ceil( $(this).parent().offset().top * 0.25 ) + $(this).outerHeight(true) }); 
3969      }
3970    } 
3971  });
3972  
3973  
3974  
3975  initialSlideLoad();
3976  
3977  document.addEventListener("visibilitychange", function() {
3978    if (document.hidden){
3979      //browser tab is hidden
3980    } else {
3981      //browser tab is vis
3982      $('.nectar-slider-wrap').each(function(i) {
3983        if( typeof $nectarSliders[i] != 'undefined' ) {
3984          $nectarSliders[i].resizeFix();
3985        }
3986
3987      });
3988      
3989    }
3990  });
3991  
3992  
3993  
3994  
3995  var headerPadding = parseInt($('#header-outer').attr('data-padding'));
3996  var shrinkNum = 8;
3997  
3998  if($('#header-outer[data-shrink-num]').length > 0 ) {
3999    shrinkNum = $('#header-outer').attr('data-shrink-num');
4000  }
4001  
4002  var feEditorStored = false;
4003  function dynamicHeightSliders(){
4004 
4005    var $adminBarHeight = ($('#wpadminbar').length > 0) ? 28 : 0 ;
4006    
4007    if( $('body.compose-mode').length > 0 && feEditorStored == false) {
4008      nsSliderArrStore();
4009      feEditorStored = true;
4010    }
4011
4012    $('.nectar-slider-wrap').each(function(){
4013      
4014      var $heightCalc, $heightCal;
4015      var $minHeight = $('.swiper-container').attr('data-min-height');
4016      
4017      //material header nav parallax top
4018      if(window.innerWidth > 1000 && $('#ajax-content-wrap').length > 0) {
4019        $('body.material:not("[data-header-format=\'left-header\']") .parallax_slider_outer.first-section .nectar-slider-wrap').css('top',$('#ajax-content-wrap').offset().top);
4020      } else {
4021        $('body.material:not("[data-header-format=\'left-header\']") .parallax_slider_outer.first-section .nectar-slider-wrap').css('top','0');
4022      }
4023      
4024      //fullscreen
4025      if($(this).attr('data-fullscreen') === 'true' && $(this).attr('data-full-width') === 'true' || 
4026      $(this).attr('data-fullscreen') === 'true' && $(this).attr('data-full-width') === 'boxed-full-width' ||
4027      $(this).attr('data-fullscreen') === 'true' && $(this).parents('.full-width-content').length > 0 && $(this).parents('.vc_col-sm-12').length > 0 ) {
4028        
4029        if($(this).parents('#nectar_fullscreen_rows').length === 0) {
4030          
4031          //first slider on page
4032          if($(this).hasClass('first-section') && $(this).index() === 0 || 
4033          $(this).parents('.wpb_row').length > 0 && $(this).parents('.wpb_row').hasClass('first-section') && $(this).index() === 0 && $(this).parents('.parallax_slider_outer').length === 0 ||
4034          $(this).parents('.wpb_row').length > 0 && $(this).parents('.wpb_row').hasClass('top-level') && $(this).parents('.parallax_slider_outer').length === 0){
4035            //min height
4036            $heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2;
4037            $(this).find('.swiper-container').attr('data-height',$heightCal);
4038            
4039          }
4040          //first parallax slider on page
4041          else if($(this).parents('.first-section').length > 0 && $(this).parents('.parallax_slider_outer').length > 0 && $(this).parents('#full_width_portfolio').length === 0 || 
4042          $(this).parents('.top-level').length > 0 && $(this).parents('.parallax_slider_outer').length > 0 && $(this).parents('#full_width_portfolio').length === 0){ 
4043            
4044            //min height
4045            $heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2;
4046            $(this).find('.swiper-container').attr('data-height',$heightCal);
4047            
4048          } 
4049          //first portfolio slider on page
4050          else if($(this).parents('#full_width_portfolio').length > 0 && $(this).attr('data-parallax') != 'true' && $(this).index() === 0){ 
4051            //min height
4052            $heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2;
4053            $(this).find('.swiper-container').attr('data-height',$heightCal);
4054            
4055          }
4056          //first portfolio parallax slider on page
4057          else if($(this).parents('#full_width_portfolio').length > 0 && $(this).attr('data-parallax') === 'true'){ 
4058            
4059            //min height
4060            $heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2;
4061            $(this).find('.swiper-container').attr('data-height',$heightCal);
4062          }
4063          //all others
4064          else { 
4065            
4066            var headerPadding = parseInt($('#header-outer').attr('data-padding'));
4067            var shrinkNum = 8;
4068            if($('#header-outer[data-shrink-num]').length > 0 ) { 
4069              shrinkNum = $('#header-outer').attr('data-shrink-num'); 
4070            }
4071            
4072            var $resize = ($('#header-outer[data-header-resize="0"]').length > 0) ? 0 : parseInt(shrinkNum) + headerPadding*2;
4073            var $headerSize = ($('#header-outer[data-permanent-transparent="false"]').length > 0) ? $('#header-space').height() - $resize-3 : -3;
4074            
4075            if($('#nectar_fullscreen_rows').length > 0 || 
4076            ($('body[data-header-format="left-header"]').length > 0 && window.innerWidth >= 1000)) {
4077              $headerSize = $adminBarHeight;
4078            }
4079            
4080            //min height
4081            $heightCal = ( $(window).height() - $headerSize <= $minHeight ) ? $minHeight : $(window).height() - $headerSize;
4082            $(this).find('.swiper-container').attr('data-height',$heightCal);
4083          }
4084          
4085          //transparent header loading icon center
4086          if($('#header-outer[data-remove-border="true"]').length === 0) {
4087            if($('body #header-outer[data-transparent-header="true"]').length > 0
4088            && $('.first-section .nectar-slider-wrap[data-fullscreen="true"]').length > 0 
4089            && $('#page-header-bg').length === 0) {
4090              
4091              $('.first-section .nectar-slider-loading').css({
4092                'background-image': $loading_bg_storage,
4093                'background-position' : 'center ' + ((($(window).height() /2) + 15) - $('#header-space').height()) +'px'
4094              });
4095              
4096              $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({
4097                'opacity' : '1',
4098                'height' :  $(window).height() - $('#header-space').height() + 'px'
4099              });
4100            }
4101          }
4102          
4103        }
4104        
4105      }
4106      
4107      //flexible height
4108      if($(this).attr('data-flexible-height') === 'true' && 
4109      $(this).attr('data-fullscreen') !== 'true') {
4110        
4111        //escape if not placed in a flexible ready position
4112        if($(this).parents('.wpb_row.full-width-content').length === 0 && 
4113        $(this).attr('data-full-width') === 'false') { 
4114          $(this).attr('data-flexible-height','false'); 
4115          return false; 
4116        }
4117        
4118        $minHeight = $('.swiper-container').attr('data-min-height');
4119        
4120        var currentKey = nectarGetKeyByValue($existingSliders,$(this).attr('id')); 
4121        var $definedHeight = $sliderHeights[currentKey];
4122        
4123        var dif = $(window).width() / 1600;
4124        
4125        if( window.innerWidth > 1000 && $('#boxed').length === 0) {
4126          $(this).find('.swiper-container').attr('data-height',Math.
4126ceil($definedHeight*dif));
4127        } else {
4128          
4129          //column sliders
4130          var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col') ;
4131          if($parentCol.length == 0) $parentCol = $('.main-content');
4132          
4133          if(!$parentCol.hasClass('vc_span12') && 
4134          !$parentCol.hasClass('main-content') && 
4135          !$parentCol.hasClass('span_12') && 
4136          !$parentCol.hasClass('vc_col-sm-12') ) {
4137            
4138            var $parentColWidth = sliderColumnDesktopWidth($parentCol);
4139            var $parentColRatio = 1100/$parentColWidth;
4140            
4141            //min height
4142            if( $definedHeight*dif <= $minHeight ){
4143              $(this).find('.swiper-container').attr('data-height',$minHeight);
4144            } else {
4145              $(this).find('.swiper-container').attr('data-height',Math.ceil($parentColRatio*$definedHeight*dif));	
4146            }
4147            
4148          } 
4149          
4150          
4151          //boxed
4152          else if($('#boxed').length > 0) {
4153            
4154            dif = $('#boxed').width() / 1600;
4155            
4156            if( window.innerWidth > 1300 ) {
4157              
4158              if($('body[data-ext-responsive="true"]').length > 0){
4159                
4160                if($(this).has('[data-full-width="boxed-full-width"]')) {
4161                  ($('#boxed').width() < 1400) ? $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif)) : $(this).find('.swiper-container').attr('data-height',$definedHeight*(1400/1600));
4162                  
4163                }
4164                
4165              } else {
4166                
4167                if($(this).has('[data-full-width="boxed-full-width"]')) { 
4168                  $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*(1200/1600)));
4169                }
4170                
4171              }
4172              
4173            } else if( window.innerWidth <= 1300 && window.innerWidth >= 1000  ) {
4174              
4175              if($('body[data-ext-responsive="true"]').length > 0){
4176                $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif));
4177              } else {
4178                if($(this).has('[data-full-width="boxed-full-width"]')) {
4179                  $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*(980/1600)));
4180                }
4181              }
4182              
4183            } else if( window.innerWidth < 1000 && window.innerWidth > 690 ) {
4184              
4185              $heightCalc = ( $definedHeight*(679/1600) <= $minHeight ) ? $minHeight : $definedHeight*(679/1600);
4186              if($(this).has('[data-full-width="boxed-full-width"]')) {
4187                $(this).find('.swiper-container').attr('data-height',$minHeight);
4188              }
4189              
4190            } else if( window.innerWidth <= 690 ) {
4191              
4192              $heightCalc = ( $definedHeight*dif <= $minHeight ) ? $minHeight : $definedHeight*dif;
4193              if($(this).has('[data-full-width="boxed-full-width"]')) {
4194                //mobile transparent
4195                if( $(this).parents('.full-width-ns').length > 0 && $('#header-outer[data-transparent-header="true"]').length > 0 ) {
4196                  $(this).find('.swiper-container').attr('data-height', $height
4196Calc + 50);
4197                } else {
4198                  $(this).find('.swiper-container').attr('data-height', $heightCalc);
4199                }
4200                
4201              }
4202              
4203            } 
4204            
4205          }
4206          
4207          
4208          //regular
4209          else {
4210            
4211            //min height
4212            if( $definedHeight*dif <= $minHeight ){
4213              $(this).find('.swiper-container').attr('data-height',$minHeight);
4214            } else {
4215              
4216              //mobile transparent
4217              if(window.innerWidth < 690 && 
4218                $(this).parents('.full-width-ns').length > 0 &&
4219                $('#header-outer[data-transparent-header="true"]').length > 0 ) {
4220                $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif) + 50);
4221              } else {
4222                $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif));
4223              }
4224              
4225            }
4226            
4227          }
4228          
4229        }
4230        
4231        
4232        //transparent header loading icon center
4233        if($('body #header-outer[data-transparent-header="true"]').length > 0 && 
4234        $('.first-section .nectar-slider-wrap[data-flexible-height="true"]').length > 0) {
4235          
4236          $('.first-section .nectar-slider-loading').css({
4237            'background-image': $loading_bg_storage,
4238            'background-position' : 'center ' + (((($definedHeight*dif)/2) + 15) - $('#header-space').height()) +'px'
4239          });
4240          
4241          $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({
4242            'opacity' : '1',
4243            'height' :  $definedHeight*dif - $('#header-space').height() + 'px'
4244          });
4245        }
4246        
4247      }
4248    });
4249  }
4250  
4251  var usingMobileBrowser = (navigator.userAgent.match(/(Android|iPod|iPhone|iPad|BlackBerry|IEMobile|Opera Mini)/)) ? true : false;
4252
4253  if(!usingMobileBrowser){
4254
4255    $(window).on('resize', function() {
4256      dynamicHeightSliders();
4257      nsSliderContentResize();
4258    });
4259    $(window).on('smartresize', function(){
4260      setTimeout(function(){
4261        dynamicHeightSliders();
4262        nsSliderContentResize();
4263      }, 100);
4264      
4265    });
4266
4267  } else {
4268    
4269    //stop mobile browsers from firing the resize event on scroll (when toolbar hides)
4270    var $windowWidth = $(window).width(), $windowHeight = $(window).height();
4271    var $orientationChange = 0;
4272    
4273    window.addEventListener("orientationchange", function() {
4274      $orientationChange = 1;
4275    });
4276    
4277    $(window).on('resize', function() {
4278
4279      if( ($(window).width() != $windowWidth && $(window).height != $windowHeight) || $orientationChange == 1) {
4280    
4281        dynamicHeightSliders(); 
4282        nsSliderContentResize();
4283        $(window).trigger('salient-parallax-bg-recalculate');
4284
4285        $windowWidth = $(window).width();
4286        $windowHeight = $(window).height();
4287
4288        $orientationChange = 0;
4289      }
4290    });
4291  }
4292  
4293  setTimeout(function(){
4294    dynamicHeightSliders(); 
4295  },100);
4296  
4297  
4298  ////helper function
4299  function sliderColumnDesktopWidth(parentCol) {
4300    
4301    var $parentColWidth = 1100;
4302    var $columnNumberParsed = $(parentCol).attr('class').match(/\d+/);
4303    
4304    if($columnNumberParsed == '2') { $parentColWidth = 170 }
4305    else if($columnNumberParsed == '3') { $parentColWidth = 260 } 
4306    else if($columnNumberParsed == '4') { $parentColWidth = 340 } 
4307    else if($columnNumberParsed == '6') { $parentColWidth = 530 } 
4308    else if($columnNumberParsed == '8') { $parentColWidth = 700 } 
4309    else if($columnNumberParsed == '9') { $parentColWidth = 805 }
4310    else if($columnNumberParsed == '10') { $parentColWidth = 916.3 }
4311    else if($columnNumberParsed == '12') { $parentColWidth = 1100 }
4312    
4313    return $parentColWidth;
4314  }
4315  
4316  
4317  
4318  $(window).on('resize', sliderSize);
4319  
4320  function sliderSize(){
4321    
4322    //check for mobile first
4323    if( window.innerWidth < 1000 && window.innerWidth > 690 ) {
4324      
4325      var currentKey;
4326      
4327      //fullwidth sliders
4328      $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(){
4329        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4330        $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.4 )	
4331      });
4332      
4333      //column sliders
4334      $('.nectar-slider-wrap[data-full-width="false"]:not([data-fullscreen="true"]):not([data-flexible-height="true"])').each(function(){
4335        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4336        
4337        var $currentSliderHeight = $sliderHeights[currentKey];
4338        var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col');
4339        
4340        //fullwidth but inside the span_9 post area
4341        if($(this).parents('.post-area').length > 0 && $(this).parents('.vc_span12').length > 0) $parentCol = $(this).parents('.post-area');
4342        
4343        //last resort
4344        if($parentCol.length === 0) {
4345          $parentCol = $('.main-content');
4346        }
4347        
4348        var $parentColWidth = sliderColumnDesktopWidth($parentCol);
4349        var $aspectRatio = $currentSliderHeight/$parentColWidth;
4350        
4351        $(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width());
4352        
4353      });
4354      
4355      //boxed sliders
4356      $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"]):not([data-fullscreen="true"])').each(function(){
4357        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4358        $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.9 )	
4359      });
4360    } 
4361    
4362    else if( window.innerWidth <= 690 ) {
4363      
4364      //fullwidth sliders		
4365      $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(){
4366        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4367        //mobile transparent.
4368        if($(this).parents('.full-width-ns').length > 0 && $('#header-outer[data-transparent-header="true"]').length > 0 ) {
4369          $(this).find('.swiper-container').attr('data-height',($sliderHeights[currentKey]/2.7) + 50);
4370        } else {
4371          $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/2.7 )	
4372        }
4373        
4374      });
4375      
4376      //column sliders
4377      $('.nectar-slider-wrap[data-full-width="false"]:not([data-fullscreen="true"]):not([data-flexible-height="true"])').each(function(){
4378        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id'));  
4379        
4380        var $currentSliderHeight = $sliderHeights[currentKey];
4381        var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col');
4382        
4383        //fullwidth but inside the span_9 post area
4384        if($(this).parents('.post-area').length > 0 && $(this).parents('.vc_span12').length > 0) {
4385          $parentCol = $(this).parents('.post-area');
4386        }
4387        
4388        //last resort
4389        if($parentCol.length === 0) {
4390          $parentCol = $('.main-content');
4391        }
4392        
4393        var $parentColWidth = sliderColumnDesktopWidth($parentCol);
4394        
4395        var $aspectRatio = $currentSliderHeight/$parentColWidth;
4396        
4397        $(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width());	
4398      });
4399      
4400      //boxed sliders		
4401      $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"]):not([data-fullscreen="true"])').each(function(){
4402        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4403        //mobile transparent.
4404        if($(this).parents('.full-width-ns').length > 0 && $('#header-outer[data-transparent-header="true"]').length > 0 ) {
4405            $(this).find('.swiper-container').attr('data-height', ($sliderHeights[currentKey]/2.9) + 50 );
4406        }
4407       else {
4408         $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/2.9 );
4409       }
4410        
4411      });
4412      
4413    } 
4414    
4415    else if( window.innerWidth < 1300 && window.innerWidth >= 1000  ) {
4416      
4417      //fullwidth sliders		
4418      $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(){
4419        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4420        $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.2 )	
4421      });
4422      
4423      //column sliders
4424      $('.nectar-slider-wrap[data-full-width="false"]:not([data-fullscreen="true"]):not([data-flexible-height="true"])').each(function(){
4425        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4426        
4427        var $currentSliderHeight = $sliderHeights[currentKey];
4428        var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col') ;
4429        
4430        //fullwidth but inside the span_9 post area
4431        if($(this).parents('.post-area').length > 0 && $(this).parents('.vc_span12').length > 0) {
4432          $parentCol = $(this).parents('.post-area');
4433        }
4434        
4435        if($parentCol.length === 0) {
4436          $parentCol = $('.main-content');
4437        }
4438        
4439        var $parentColWidth = sliderColumnDesktopWidth($parentCol);
4440        var $aspectRatio = $currentSliderHeight/$parentColWidth;
4441        
4442        $(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width());	
4443        
4444      });
4445      
4446      //boxed sliders		
4447      $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"]):not([data-fullscreen="true"])').each(function(){
4448        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id'));  
4449        $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.2 )	
4450      });
4451      
4452    } 
4453    
4454    else {
4455      
4456      //fullwidth sliders
4457      $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(){
4458        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id')); 
4459        if($(this).attr('data-flexible-height') != 'true') $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey])	
4460      });
4461      
4462      //boxed sliders
4463      $('.nectar-slider-wrap[data-full-width="false"]:not([data-fullscreen="true"]), .nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"]):not([data-fullscreen="true"])').each(function(){
4464        currentKey = nectarGetKeyByValue($existingSliders, $(this).attr('id'));
4465        if($(this).attr('data-flexible-height') != 'true') $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey] )	
4466      });
4467    }
4468    
4469  }
4470  
4471  
4472  //remove transform if single slide
4473  $('.nectar-slider-wrap').each(function(){
4474    if($(this).find('.swiper-wrapper .swiper-slide').length == 1) {
4475      $(this).find('.swiper-slide').addClass('no-transform');
4476      $(this).find('.swiper-wrapper').addClass('no-transform');
4477    }
4478  });
4479  
4480  
4481  
4482  //slider height
4483  var min_w = 1500; // minimum video width allowed
4484  var vid_w_orig;  // original video dimensions
4485  var vid_h_orig;
4486  
4487  vid_w_orig = 1280;
4488  vid_h_orig = 720;
4489  var $headerHeight = $('header').height()-1;
4490  
4491  function nsSliderContentResize(){
4492
4493    resizeToCover(); 
4494    slideContentPos(); 
4495    
4496    for(var i=0; i < $nectarSliders.length; i++){
4497      
4498      //make sure the parent is not hidden
4499      if($($nectarSliders[i].container).parent().attr('data-transition') && 
4500      $($nectarSliders[i].container).parent().attr('data-transition') === 'fade') {
4501        
4502        for(var k=0; k < $nectarSliders[i].slides.length; k++){
4503          $nectarSliders[i].setTransition($nectarSliders[i].slides[k], 0);
4504        }
4505        
4506        $('.swiper-wrapper').stop(true,true).css('transition-duration','0s');
4507        
4508        if($('.nectar-slider-loading').css('display') === 'none') {
4509          
4510          $('.swiper-wrapper .swiper-slide.swiper-slide-active .content > *').css({
4511            'opacity': 1,
4512            'transform' : 'translateY(0)'
4513          });
4514        }
4515      }
4516      
4517      $nectarSliders[i].reInit();
4518      $nectarSliders[i].resizeFix();
4519      
4520    }
4521    
4522  }
4523  
4524
4525  
4526  
4527  function resizeToCover() {
4528    $('.nectar-slider-wrap').each(function(i){
4529      
4530      
4531      if( $(this).css('visibility') != 'hidden') {
4532        var $that = $(this);
4533        var $leftHeaderSize = ($('#header-outer[data-format="left-header"]').length > 0 && window.innerWidth >= 1000) ? parseInt($('#header-outer[data-format="left-header"]').width()) : 0;
4534        var $windowWidth = $(window).width() - $leftHeaderSize;
4535        
4536        //width resize 
4537        if($('body > #boxed').length === 0 && 
4538        $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') != 'portfolio-extra' && 
4539        $(this).parents('.post-area:not(".span_12")').length === 0){ 
4540          $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css({'left': -( ($windowWidth-$smoothSrollWidth)/2 - $('.main-content').width()/2), 'margin-left': '0' });
4541          $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$windowWidth);
4542          
4543        } 
4544        else if( $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') === 'portfolio-extra' && 
4545        $('#full_width_portfolio').length !== 0){   
4546          $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css({'left': -( ($windowWidth-$smoothSrollWidth)/2 - $('.main-content').width()/2), 'margin-left': '0' });
4547          $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css('width',$windowWidth);
4548        }
4549        else {
4550          var $container = ($('body > #boxed').length === 0) ? '.post-area' : '.container-wrap';
4551          if($($container).width() == '0' && $('body > #boxed').length > 0) $container = '#boxed';
4552          $('.nectar-slider-wrap[data-full-width="true"] .swiper-container, .nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .swiper-container, .parallax_slider_outer.first-section .nectar-slider-wrap').css({'width':$($container).width(), 'margin-left': '0'});
4553        }
4554        
4555        
4556        var $sliderHeight = parseInt($(this).find('.swiper-container').attr('data-height'));
4557        var $sliderMinHeight = ( $(this).find('.swiper-container').is('[data-min-height]') && $(this).find('.swiper-container').attr('data-min-height').length > 0 ) ? parseInt($(this).find('.swiper-container').attr('data-min-height')) : 0;
4558        
4559        if($sliderMinHeight > $sliderHeight) { 
4560          $sliderHeight = $sliderMinHeight; 
4561        }
4562        
4563        var isFullWidthCompatible = ($(this).attr('data-full-width') === 'true') ? 'true' : 'false';
4564        
4565        if($(this).parent().attr('id') == 'portfolio-extra' && $('#full_width_portfolio').length === 0 || 
4566        $(this).parents('.post-area').length > 0) { 
4567          isFullWidthCompatible = 'false'; 
4568        }
4569        
4570        var $sliderWidth = (isFullWidthCompatible === 'true') ? $windowWidth-$smoothSrollWidth : $(this).width();
4571        
4572        var lrPadding = ( $(this).parents('.span_12').length > 0 && parseInt($(this).parents('.span_12').css('padding-left')) > 0 ) ? true : false;
4573      
4574        if($(this).parents('.full-width-content').length > 0 && 
4575        $(this).parents('.vc_col-sm-12').length > 0 &&
4576         $('#boxed').length === 0 &&
4577         lrPadding === false ) {
4578
4579          $sliderWidth = $windowWidth;
4580
4581          /* nested column setup */
4582          if( $(this).parents('.vc_col-sm-12.child_column').length > 0 ) {
4583    
4584            var parentChildCol = $(this).parents('.vc_col-sm-12.child_column');
4585            if( parentChildCol.parents('.vc_col-sm-12').length == 0 ) {
4586   
4587              $sliderWidth = $that.width();
4588            }
4589          }
4590
4591        }
4592
4593
4594        $(this).parents('.parallax_slider_outer').css('height',$sliderHeight);
4595        $(this).css('height',$sliderHeight);
4596        $(this).find('.swiper-container, .swiper-slide').css({'height':$sliderHeight+1});
4597        $(this).find('.swiper-container').css('width', $sliderWidth);
4598
4599        //when using parallax, let that calc height/width
4600        if(!$(this).is('[data-parallax="true"]')) { 
4601          
4602          // set the video viewport to the window size
4603          $(this).find('.video-wrap').width($sliderWidth+2);
4604          $(this).find('.video-wrap').height($sliderHeight+2);
4605          
4606          
4607          // use largest scale factor of horizontal/vertical
4608          var scale_h = $sliderWidth / vid_w_orig;
4609          var scale_v = ($sliderHeight - $headerHeight) / vid_h_orig; 
4610          var scale = scale_h > scale_v ? scale_h : scale_v;
4611          
4612          //update minium width to never allow excess space
4613          min_w = 1280/720 * ($sliderHeight+20);
4614          
4615          // don't allow scaled width < minimum video width
4616          if (scale * vid_w_orig < min_w) {scale = min_w / vid_w_orig;}
4617          
4618          // now scale the video
4619          $(this).find('video, .mejs-overlay, .mejs-poster').width(Math.ceil(scale * vid_w_orig +2));
4620          $(this).find('video, .mejs-overlay, .mejs-poster').height(Math.ceil(scale * vid_h_orig +2));
4621          
4622          // and center it by scrolling the video viewport
4623          $(this).find('.video-wrap').scrollLeft(($(this).find('video').width() - $sliderWidth) / 2);
4624          
4625          $(this).find('.swiper-slide').each(function(){
4626            
4627            //video alignment
4628            if($(this).find('.video-wrap').length > 0){
4629              //align  middle
4630              if($(this).attr('data-bg-alignment') === 'center'){
4631                $(this).find('.video-wrap, .mejs-overlay, .mejs-poster').scrollTop(($(this).find('video').height() - ($sliderHeight)) / 2);
4632              }
4633              //align bottom
4634              else if($(this).attr('data-bg-alignment') === 'bottom'){
4635                $(this).find('.video-wrap').scrollTop(($(this).find('video').height() - ($sliderHeight+2)));
4636              }
4637              //align top
4638              else {
4639                $(this).find('.video-wrap').scrollTop(0);
4640              } 
4641            }
4642            
4643          });
4644          
4645        } //if visible
4646        
4647      }//parallax
4648    });
4649  }
4650  
4651  ////initial call
4652  resizeToCover();
4653  
4654  
4655  //caption transitions 
4656  function captionTransition(obj){ 
4657    
4658    resizeToCover(); 
4659    
4660    var $containerClass;
4661    
4662    (typeof obj == 'undefined') ? $containerClass = 'div[id^=ns-id-]' : $containerClass = '#'+$(obj.container).parents('.nectar-slider-wrap').attr('id');
4663    
4664    
4665    var fromLeft = Math.abs(parseInt($($containerClass+' .swiper-wrapper').css('left')));
4666    var currentSlide = Math.round(fromLeft/$($containerClass+' .swiper-slide').width()); 
4667    var $slideNum =  $($containerClass+':first .swiper-wrapper > div').length;  
4668    
4669    var captionTransString = $($containerClass).is('[data-caption-trans]') ? $($containerClass).attr('data-caption-trans') : 'fade_in_from_bottom';
4670    
4671    
4672    currentSlide = $($containerClass + ' .swiper-slide-active').index();
4673    
4674    //make sure user isn't going back to same slide 
4675    if( $($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content *').length > 0 && captionTransString !== 'reveal_title') {
4676      if($($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content *').css('opacity') != '0' && !$('html').hasClass('no-video')) {
4677        //play video if there's one
4678        playVideoBG(currentSlide + 1, $containerClass);
4679        
4680        if(!$($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').hasClass('autorotate-shown')) {
4681          return false;
4682        } else {
4683          $($containerClass+' .swiper-slide').removeClass('autorotate-shown');
4684        }
4685        
4686      }
4687    } 
4688    
4689    if( $($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content .ns-heading-el').length > 0 && captionTransString === 'reveal_title') {
4690      if($($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content .ns-heading-el .word').css('opacity') != '0' && !$('html').hasClass('no-video')) {
4691        //play video if there's one
4692        playVideoBG(currentSlide + 1, $containerClass);
4693        
4694        if(!$($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').hasClass('autorotate-shown')) {
4695          return false;
4696        } else {
4697          $($containerClass+' .swiper-slide').removeClass('autorotate-shown');
4698        }
4699        
4700      }
4701    } 
4702    
4703    //hide all
4704    if(!$('html').hasClass('no-video')) {
4705      if(captionTransString === 'fade_in_from_bottom') {
4706        
4707        if( $($containerClass).parents('.wpb_gallery').length == 0 ) {
4708          anime.remove($containerClass+' .swiper-slide .content p, '+$containerClass+' .swiper-slide .content h2, '+$containerClass+' .swiper-slide .content h1, '+$containerClass+' .swiper-slide .content .ns-heading-el, '+$containerClass+' .swiper-slide .content .buttons');
4709        }
4710        
4711        $($containerClass+' .swiper-slide .content p, '+$containerClass+' .swiper-slide .content h2, '+$containerClass+' .swiper-slide .content h1, '+$containerClass+' .swiper-slide .content .ns-heading-el, '+$containerClass+' .swiper-slide .content .buttons').stop(true,true).css({'opacity':0, 'transform' : 'translateZ(0) translateY(40px)'});
4712      } else if(captionTransString === 'reveal_title') {
4713        
4714        //$($containerClass+' .swiper-slide .content > h1').stop(true,true).css({'opacity': '0'});
4715        //$($containerClass+' .swiper-slide .content > h3').stop(true,true).css({'opacity': '0'});
4716        
4717        $($containerClass+' .swiper-slide .content .ns-heading-el .word').stop(true,true).css({'opacity': '0'});
4718        $($containerClass+' .swiper-slide .content .ns-heading-el .word > [class*="char"]').css({ 'opacity': '0'});
4719        $($containerClass+' .swiper-slide .content .ns-heading-el .word > [class*="char"] > span').css({'transform' : 'scale(0) translateZ(0)'});
4720        
4721        anime.remove($containerClass+' .swiper-slide .content p, '+$containerClass+' .swiper-slide .content .buttons');
4722        $($containerClass+' .swiper-slide .content p, '+$containerClass+' .swiper-slide .content .buttons').stop(true,true).css({'opacity':0, 'transform' : 'translateZ(0) translateY(40px)'});
4723      }
4724      
4725    }
4726    
4727    //pause video if there's one
4728    $($containerClass+' .swiper-slide').each(function(){
4729      if($(this).find('.video-wrap video').length > 0 && !$('html').hasClass('no-video') && !$onMobileBrowser) { 
4730        $(this).find('.video-wrap video').get(0).pause(); 
4731      }
4732    });
4733    
4734    $($containerClass+' .swiper-slide:not(".swiper-slide-active")').each(function(){
4735      if($(this).find('.video-wrap video').length > 0) { 
4736        if($(this).find('.video-wrap video').get(0).currentTime != 0 ){ 
4737          $(this).find('.video-wrap video').get(0).currentTime = 0;
4738        }
4739      }
4740    });
4741    
4742    
4743    if($($containerClass +' .swiper-container').attr('data-loop') === 'true') {
4744      
4745      
4746      //webkit video fix
4747      if(  $($containerClass+' .swiper-slide-active').index()+1 == 2 && 
4748      $($containerClass+' .swiper-slide-active video').length > 0 && 
4749      !$('html').hasClass('no-video') && !$onMobileBrowser) { 
4750        
4751        $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).play();
4752        $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).pause();
4753      }
4754      if(  $($containerClass+' .swiper-slide-active').index()+1 == $slideNum-1 && 
4755      $($containerClass+' .swiper-slide-active video').length > 0 && 
4756      !$('html').hasClass('no-video') && !$onMobileBrowser) { 
4757        
4758        $($containerClass+' .swiper-slide:first-child').find('.video-wrap video').get(0).play();
4759        $($containerClass+' .swiper-slide:first-child').find('.video-wrap video').get(0).pause();
4760      }
4761      if($($containerClass+' .swiper-slide-active').index()+1 != 2 && 
4762      $($containerClass+' .swiper-slide:nth-child(2) video').length > 0 && 
4763      !$('html').hasClass('no-video') && !$onMobileBrowser) {
4764        
4765        $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).play();
4766        $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).pause();
4767        
4768        $($containerClass+' .swiper-slide:nth-child(2) video').get(0).pause();
4769        if($($containerClass+' .swiper-slide:nth-child(2) video').get(0).currentTime != 0 ) {
4770          $($containerClass+' .swiper-slide:nth-child(2) video').get(0).currentTime = 0;
4771        }
4772      }
4773      
4774      //also show duplicate slide if applicable
4775      if($($containerClass).attr('data-overall_style') != 'directional') {
4776        
4777        ////first
4778        if( $($containerClass+' .swiper-slide-active').index()+1 == $slideNum-1 ){
4779          
4780          $($containerClass+' .swiper-slide:nth-child(1)').find('.content').children().each(function(i){
4781            captionTransAnimation($(this),i,captionTransString); 
4782          });
4783          
4784        }
4785        
4786        ////last
4787        if( $($containerClass+' .swiper-slide-active').index()+1 == 2 ){
4788          $($containerClass+' .swiper-slide:nth-child('+ ($slideNum) + ')').find('.content').children().each(function(i){
4789            captionTransAnimation($(this),i,captionTransString); 
4790          });
4791        }
4792        
4793        
4794        //looped last going to first
4795        if( $($containerClass+' .swiper-slide-active').index()+1 == $slideNum ){
4796          $($containerClass+' .swiper-slide:nth-child(2)').find('.content').children().each(function(i){
4797            captionTransAnimation($(this),i,captionTransString); 
4798          });
4799        }
4800        
4801        //looped first going to last
4802        if( $($containerClass+' .swiper-slide-active').index()+1 == 1 ){  
4803          $($containerClass+' .swiper-slide:eq(-2)').find('.content').children().each(function(i){
4804            captionTransAnimation($(this),i,captionTransString); 
4805          });
4806        }
4807        
4808        
4809      }//directional
4810      
4811      
4812    }//if using loop
4813    
4814    //play video if there's one
4815    setTimeout(function(){ 
4816      playVideoBG($($containerClass + ' .swiper-slide-active').index() + 1, $containerClass); 
4817    },50);
4818    
4819    
4820    //fadeIn active slide
4821    if($($containerClass).attr('data-overall_style') != 'directional') {
4822      $($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content').children().each(function(i){
4823        captionTransAnimation($(this),i,captionTransString);
4824      });
4825    }
4826    
4827    
4828    $captionTrans++;
4829    if($captionTrans == $('.swiper-wrapper').length) { 
4830      $('div.first_video_slide').addClass('nulled'); 
4831    }
4832    
4833    
4834    //slider arrows with preview effect
4835    setTimeout(function(){
4836      
4837      if($('.slider-next').hasClass('next-arrow-move')) {
4838        $('.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-next').trigger('mouseenter');
4839      } else if($('.slider-prev').hasClass('prev-arrow-move')) {
4840        $('.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-prev').trigger('mouseenter');
4841      }
4842      
4843      
4844      if($($containerClass).attr('data-button-styling') === 'btn_with_preview') {     
4845        $($containerClass+' .swiper-slide').addClass('prev-high-z-index-static');
4846        $($containerClass+' .swiper-slide.swiper-slide-active').removeClass('prev-high-z-index-static');
4847      }
4848      
4849    },175);
4850    
4851    
4852    
4853    
4854  } 
4855  
4856  
4857  function NSsplitLineText() {
4858    $('.nectar-slider-wrap[data-caption-trans="reveal_title"] .content .ns-heading-el').each(function(){
4859      
4860      var storedCSSOpacity = ($(this).parents('.swiper-slide-active').length > 0 && $(this).find('.word').length > 0 ) ? $(this).find('> .word').css('opacity') : '0';
4861      
4862      var textArr = $(this).text();
4863      textArr = textArr.trim();
4864      textArr = textArr.split(' ');
4865      
4866      $(this)[0].innerHTML = '';
4867      
4868      for(var i=0;i<textArr.length;i++) {
4869        $(this)[0].innerHTML += '<span class="word">'+ textArr[i] + '</span> ';
4870      }
4871      
4872      $(this).find('.word').each(function(){
4873        charming($(this)[0]);
4874      });
4875      
4876      $(this).find('[class*="char"]').wrapInner('<span class="char-inner" />');
4877      
4878      if($(this).parents('.swiper-slide-active').length > 0) {
4879        $(this).find('> .word').css('opacity', storedCSSOpacity);
4880      }
4881      
4882    });
4883    
4884  }
4885  
4886  function charming(element, options) {
4887    options = options || {}
4888    element.normalize()
4889    var splitRegex = options.splitRegex
4890    
4891    var tagName = options.tagName || 'span'
4892    var classPrefix = options.classPrefix != null ? options.classPrefix : 'char'
4893    var count = 1
4894    
4895    function inject (element) {
4896      var parentNode = element.parentNode
4897      var string = element.nodeValue
4898      var split = splitRegex ? string.split(splitRegex) : string
4899      var length = split.length
4900      var i = -1
4901      while (++i < length) {
4902        var node = document.createElement(tagName)
4903        if (classPrefix) {
4904          node.className = classPrefix + count
4905          count++
4906        }
4907        node.appendChild(document.createTextNode(split[i]))
4908        node.setAttribute('aria-hidden', 'true')
4909        parentNode.insertBefore(node, element)
4910      }
4911      if (string.trim() !== '') {
4912        parentNode.setAttribute('aria-label', string)
4913      }
4914      parentNode.removeChild(element)
4915    }
4916    
4917    ;(function traverse (element) {
4918      if (element.nodeType === 3) {
4919        return inject(element)
4920      }
4921      
4922      var childNodes = Array.prototype.slice.call(element.childNodes) 
4923      var length = childNodes.length
4924      if (length === 1 && childNodes[0].nodeType === 3) {
4925        return inject(childNodes[0])
4926      }
4927      var i = -1
4928      while (++i < length) {
4929        traverse(childNodes[i])
4930      }
4931    })(element)
4932  }
4933  
4934  NSsplitLineText();
4935
4936  
4937  //caption trans helper
4938  var charCount = 0;
4939  function captionTransAnimation(obj,index,animationName) {
4940    
4941    if(animationName === 'reveal_title') {
4942      
4943      if(obj.parent().find('.word').length === 0) charCount = 0;
4944      
4945      if(index === 0 && obj.parent().find('.word').length > 0) {
4946        
4947        charCount = obj.find('.word > [class*="char"]').length;
4948        
4949        obj.find('.word').css('opacity','1');
4950        
4951        obj.find('.word > [class*="char"]').each(function(i) {
4952          
4953          anime({
4954            targets: $(this)[0],
4955            translateY: [50,0],
4956            translateZ: 0,
4957            opacity: 1,
4958            easing: 'cubicBezier(.25,.25,.1,1)',
4959            duration: 700,
4960            delay: i*18
4961          });
4962          
4963          anime({
4964            targets: $(this).find('> span')[0],
4965            scale: [0,1],
4966            translateZ: 0,
4967            easing: 'cubicBezier(.25,.25,.1,1)',
4968            duration: 700,
4969            delay: i*18
4970          });
4971          
4972          
4973        }); //char loop
4974        
4975        
4976        
4977      } else {
4978        
4979        anime({
4980          targets: obj[0],
4981          translateY: [50,0],
4982          translateZ: 0,
4983          opacity: 1,
4984          easing: 'cubicBezier(.25,.25,.1,1)',
4985          duration: 850,
4986          delay: (index*150 + (charCount*18))
4987        });
4988        
4989      }
4990      
4991      
4992    } else if(animationName === 'fade_in_from_bottom') {
4993      
4994      anime({
4995        targets: obj[0],
4996        translateY: [50,0],
4997        translateZ: 0,
4998        opacity: 1,
4999        easing: 'cubicBezier(.25,.25,.1,1)',
5000        duration: 800,
5001        delay: (index*130)
5002      });
5003      
5004      
5005    }
5006    
5007  }
5008  
5009  //used in caption transition
5010  function playVideoBG(nthChild, containerClass){
5011    
5012    if($(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.video-wrap video').length > 0){ 
5013      
5014      if(!$('html').hasClass('no-video') && !$onMobileBrowser) {
5015        $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.video-wrap video').get(0).play();
5016      }
5017      
5018      if(!$(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').hasClass('playing') && 
5019      $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').hasClass('mobile-played')) { 
5020        $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').addClass('playing'); 
5021      }
5022      
5023      if(!$(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').hasClass('playing') && 
5024      $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').hasClass('mobile-played')) {
5025        $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').addClass('playing');
5026      }
5027      
5028      var $that = $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play');
5029      var $that2 = $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster');
5030      
5031      if($that.hasClass('playing') && $that.hasClass('mobile-played')) {
5032        setTimeout(function(){ 
5033          $that.addClass('behind-buttons'); 
5034          $that2.addClass('behind-buttons');},200);
5035      } else {
5036        $that.removeClass('behind-buttons'); 
5037        $that2.removeClass('behind-buttons');
5038      }
5039    }
5040    
5041  }
5042  
5043  
5044  function slideContentPos() {
5045    
5046    $('.swiper-wrapper').each(function(){
5047      
5048      var $sliderHeight = parseInt($(this).parents('.swiper-container').attr('data-height'));
5049      var $minimumHeight = ($(this).parents('.swiper-container').css('min-height')) ? parseInt($(this).parents('.swiper-container').css('min-height')) : 0;
5050      
5051      // min height addition
5052      if($minimumHeight > $sliderHeight) {
5053        $sliderHeight = $minimumHeight;
5054      }
5055      
5056      var $transparentHeader = ($('#header-outer[data-transparent-header="true"]').length > 0) ? $('#header-outer').height() : 0;
5057      
5058      if($(this).parents('.first-section').length == 0 && $(this).parents('.top-level').length == 0 || window.innerWidth < 1000) { 
5059        $transparentHeader = 0;
5060      } else if($transparentHeader != 0 && $('#header-outer[data-remove-border="true"]').length > 0){
5061        $transparentHeader = $transparentHeader/2
5062      }
5063      
5064      
5065      if($(this).parents('.swiper-container[data-bullet_position="right"][data-bullets="true"]').length > 0 && $transparentHeader > 0 || 
5066      $(this).parents('.swiper-container[data-bullet_position="left"][data-bullets="true"]').length > 0 && $transparentHeader > 0) {
5067        
5068        var secondaryHeaderHeight = ($('#header-secondary-outer').length > 0) ? $('#header-secondary-outer').height() : 0;
5069        $(this).parents('.swiper-container').find('.slider-pagination-wrap').css({
5070          'margin-top': ($transparentHeader + secondaryHeaderHeight)/2
5071        });
5072      }
5073      
5074      $(this).find('.swiper-slide').each(function(){
5075        
5076        var $contentHeight2 = 0;
5077        
5078        $(this).find('.content > *').each(function(){
5079          $contentHeight2 += $(this).height() + parseInt($(this).css('margin-bottom')) + parseInt($(this).css('padding-bottom')); 
5080        });
5081        
5082        if($(this).attr('data-y-pos') === 'top' && window.innerWidth > 690 ){
5083          var secondaryHeaderHeight = ($('#header-secondary-outer').length > 0) ? $('#header-secondary-outer').height() : 0;
5084          var $topHeight = ($transparentHeader > 0) ? $transparentHeader + secondaryHeaderHeight + 60 : 60;
5085          $(this).find('.content').css('top', $topHeight + 'px');
5086        } 
5087        
5088        else if($(this).attr('data-y-pos') === 'middle' || window.innerWidth <= 690) {
5089
5090          $(this).find('.content').css('top', ((($sliderHeight + $transparentHeader)/2) - ($contentHeight2/2)) + 'px');
5091        } 
5092        
5093        else {
5094          $(this).find('.content').css({'bottom': '75px', 'top': 'auto'});
5095        }
5096        
5097      });
5098    });
5099  }
5100  
5101  
5102  
5103  function showSliderControls() {
5104    $('.swiper-container .slider-prev, .swiper-container .slider-next, .slider-pagination').animate({'opacity':1},550,'easeOutCubic');
5105  }
5106  
5107  
5108  
5109  function sliderLoadIn(slider,index) { 
5110    
5111    slider.find('.nectar-slider-loading').fadeOut(800,'easeInOutExpo');
5112    
5113    setTimeout(function(){
5114      slider.find('.nectar-slider-loading').css('display','none');
5115    },1000);
5116    
5117    $('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').removeClass('not-loaded');
5118    
5119    slider.find('span.ie-fix').remove();
5120    
5121    //ar visualized start
5122    if(slider.find('.swiper-container[data-bullet_style="see_through_ar_visualized"][data-bullets="true"]').length > 0) {
5123      slider.find('.swiper-active-switch').removeClass('ar-vis');
5124      setTimeout(function(){
5125        slider.parent().find('.swiper-active-switch').addClass('ar-vis');
5126      },50);  
5127    }
5128    
5129    
5130    sliderLoadedLength++;
5131 
5132    
5133    
5134    if(!navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)) { autorotateInit(slider,index); }
5135    
5136  }
5137  
5138  
5139  
5140  //play video user is hovering over
5141  $('body').on('mouseover','.swiper-slide', function(){
5142    if(!$onMobileBrowser && 
5143      $(this).find('video').length > 0 && 
5144      $(this).find('video').get(0).paused == true && 
5145      $animating == false){
5146      $(this).find('video').get(0).play();
5147    }
5148  });
5149  
5150  
5151  //mobile play event
5152  $('body').on('click', '.mejs-overlay.mejs-overlay-play',function(){
5153    $(this).toggleClass('playing');
5154    $(this).addClass('mobile-played');
5155    
5156    $(this).parent().find('.mejs-poster').toggleClass('playing');
5157    $(this).parent().find('.mejs-poster').addClass('mobile-played');
5158    
5159    var $that = $(this);
5160    var $that2 = $(this).parent().find('.mejs-poster');
5161    
5162    if($(this).hasClass('playing') && $(this).hasClass('mobile-played')) {
5163      
5164      setTimeout(function(){ 
5165        $that.addClass('behind-buttons'); 
5166        $that2.addClass('behind-buttons'); 
5167      },200);
5168    } else {
5169      setTimeout(function(){ 
5170        $that.removeClass('behind-buttons'); 
5171        $that2.removeClass('behind-buttons'); 
5172      },1);
5173    }
5174  }); 
5175  
5176  
5177  function autorotateInit(slider,num) {
5178    
5179    var $autoplayVal = slider.attr('data-autorotate');
5180    var $sliderNum = num;
5181    
5182    if(typeof $autoplayVal !='undefined' && 
5183    $autoplayVal.length != '0' && parseInt($autoplayVal)) { 
5184      nectarSlideRotateInit(slider,$autoplayVal,$sliderNum);
5185      
5186    }	
5187
5188  }
5189  
5190  
5191  function nectarSlideRotateInit(slider,interval,sliderNum){
5192    
5193    autoplay[sliderAutoplayCount] = { 
5194      interval: setInterval(function(){ nectarSlideRotate(slider, sliderNum); } ,interval), 
5195      nectarSliderNum: sliderNum, 
5196      autoplayNum: sliderAutoplayCount, 
5197      nectarSliderID: slider.attr('id') 
5198    };
5199    
5200    $('#'+slider.attr('id')).attr('autoplay-id',sliderAutoplayCount);
5201    
5202    //ar visualized style
5203    if( $('#'+slider.attr('id')).find('[data-bullet_style="see_through_ar_visualized"]').length > 0 ) {
5204      $('#'+slider.attr('id')).find('.slider-pagination svg circle.time').css('transition', 'stroke-dashoffset '+ (parseInt(interval) + 100) +'ms linear, stroke 0.2s ease');
5205    }
5206    
5207    var sliderClosure = slider;
5208    var sliderAutoplayCountClosure = sliderAutoplayCount;
5209    var intervalClosure = interval;
5210    var sliderNumClosure = sliderNum;
5211    
5212    
5213    $('#'+slider.attr('id') + ' a.slider-prev, #'+slider.attr('id') + ' a.slider-next, #' + slider.attr('id') + ' .slider-pagination span:not(.swiper-active-switch)').on('click', function(){ 
5214      
5215      nectarSlideRotateReset(sliderClosure, sliderAutoplayCountClosure, intervalClosure, sliderNumClosure);
5216      
5217    });
5218    
5219    sliderAutoplayCount++;
5220  }
5221  
5222  
5223  function nectarSlideRotateReset(slider, sliderAutoplayCount, interval,sliderNum){
5224    
5225    slider = (typeof slider.activeIndex === 'undefined') ? slider : $(slider.container).parent();
5226    
5227    sliderAutoplayCount = (typeof sliderAutoplayCount !== 'undefined' && typeof sliderAutoplayCount === 'number') ? sliderAutoplayCount : 'unknown';
5228    
5229    if( sliderAutoplayCount === 'unknown') {
5230      
5231      $.each(autoplay,function(k,v){
5232        
5233        if( $('body').find('#' + v.nectarSliderID).length > 0 && v.nectarSliderID == $(slider).attr('id') ) {
5234          
5235          sliderAutoplayCount = v.autoplayNum;
5236          interval = ($('body').find('#' + v.nectarSliderID).attr('data-autorotate').length > 0 && parseInt($('body').find('#' + v.nectarSliderID).attr('data-autorotate')) > 1000) ? $('body').find('#' + v.nectarSliderID).attr('data-autorotate') : 4000;
5237          sliderNum = v.nectarSliderNum;
5238          
5239        }
5240        
5241      });
5242    }
5243    
5244    
5245    
5246    //only reset and restart when slider was found and link was made
5247    if( sliderAutoplayCount !== 'unknown') {
5248      clearInterval(autoplay[$('#'+slider.attr('id')).attr('autoplay-id')].interval); 
5249      autoplay[sliderAutoplayCount].interval = setInterval(function(){ nectarSlideRotate(slider, sliderNum); } ,interval);
5250    }
5251    
5252    
5253  }
5254  
5255  
5256  
5257  var resetTouchIndex = 1;
5258  var resetTouchIndexLast = 'unknown';
5259  
5260  function nectarSlideRotateResetTouch(slider){
5261    
5262    
5263    //if user has not dragged any significant distance
5264    if(Math.abs(slider.touches.diff) < 15) { return } 
5265    
5266    //first time run set last index
5267    if(resetTouchIndexLast == 'unknown' && $(slider.container).is('[data-loop="true"]')) {
5268      resetTouchIndexLast = 1;
5269    } else if(resetTouchIndexLast == 'unknown') {
5270      resetTouchIndexLast = 0;
5271    }
5272    
5273    resetTouchIndex = slider.activeIndex;
5274    
5275    nectarSlideRotateReset(slider);
5276    
5277    //if going back to same slide on touch - reset visualization
5278    if($(slider.container).is('[data-bullets="true"][data-bullet_style="see_through_ar_visualized"]') && resetTouchIndex == resetTouchIndexLast) {
5279      var dotIndexStored = $(slider.container).find('.ar-vis').index();
5280      
5281      $(slider.container).find('.ar-vis').removeClass('ar-vis');
5282      setTimeout(function(){
5283        $(slider.container).find('.slider-pagination > span:nth-child('+ (dotIndexStored + 1) +')').addClass('ar-vis');
5284      },50);
5285      
5286      
5287    }  
5288    
5289    resetTouchIndexLast = slider.activeIndex;
5290    
5291  }
5292  
5293  
5294  
5295  
5296  function nectarSlideRotate(slider, sliderNum){
5297
5298
5299    if($(slider).hasClass('out-of-view')) {
5300      return true;
5301    }
5302
5303    if($('#nectar_fullscreen_rows').length > 0) {
5304      if($(slider).parents('.wpb_row.active').length == 0) {
5305        return true;
5306      }
5307    }
5308    //non looped
5309    if($nectarSliders[sliderNum].activeIndex + 1 < $(slider).find('.swiper-wrapper > div.swiper-slide').length){
5310      
5311      //btn with preview hover effect clear
5312      if($(slider).attr('data-button-styling') === 'btn_with_preview') {    
5313        $(slider).find('.swiper-slide').removeClass('high-z-index').removeClass('prev-high-z-index');
5314        $(slider).find('.swiper-slide').removeClass('next-move').removeClass('prev-move');
5315      }
5316      
5317      //classic style
5318      if($(slider).attr('data-overall_style') != 'directional') {
5319        $nectarSliders[sliderNum].updateActiveSlide();
5320        $nectarSliders[sliderNum].swipeNext();
5321        
5322      } else {
5323        //directional based
5324        $($nectarSliders[sliderNum].container).find('.slider-next').trigger('click');
5325      }
5326      
5327    } else {
5328     
5329      //looped sliders
5330      if($(slider).find('.swiper-container').is("[data-loop]") && $(slider).find('.swiper-container').attr('data-loop') === 'true') {
5331        
5332        //classic style
5333        if($(slider).attr('data-overall_style') != 'directional') {
5334          $nectarSliders[sliderNum].swipeNext();
5335        } else {
5336          //directional based
5337          $($nectarSliders[sliderNum].container).find('.slider-next').trigger('click');
5338        } 
5339        
5340      } 
5341      //regular sliders
5342      else {
5343        
5344        if($(slider).attr('data-overall_style') != 'directional') {
5345          $nectarSliders[sliderNum].swipeTo(0,550);
5346        } else {
5347          $(slider).find('.swiper-container').addClass('directional-trans-prev');
5348          $nectarSliders[sliderNum].swipeTo(0,550);
5349          var $timeout2;     
5350          clearTimeout($timeout2);
5351          $timeout2 = setTimeout(function(){ onChangeStart($nectarSliders[sliderNum]); } ,100);
5352        }
5353        
5354      }
5355    }
5356  }
5357  
5358  function clearAutoplay(e){ 
5359    var $autoplayVal = $('#'+$(e.container).parent().attr('id')).attr('data-autorotate');
5360    
5361    if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) {
5362      
5363      clearInterval(autoplay[$('#'+$(e.container).parent().attr('id')).attr('autoplay-id')].interval); 
5364    }
5365  }
5366  
5367  
5368  function onChangeStart(e){
5369    //cache slider obj
5370    var $obj = e;
5371    
5372    $animating = true;
5373    
5374    var $slideNum = $($obj.container).find('.swiper-wrapper > div').length;
5375    
5376    //one for effects and one for basic slide arrow count 
5377    var $activeIndex = ($($obj.container).attr('data-loop') === 'true') ? $obj.activeIndex + 1: $obj.activeIndex+1;
5378    var $activeIndex2 = ($($obj.container).attr('data-loop') === 'true') ? $obj.activeIndex: $obj.activeIndex+1;
5379    
5380    if(isNaN($activeIndex)) {
5381      $activeIndex = 1;
5382    }
5383    if(isNaN($activeIndex2)) {
5384      $activeIndex2 = 1;
5385    }
5386
5387    //dark slide header 
5388    if($($obj.container).parent().attr('data-overall_style') !== 'directional') {
5389      if( $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active[data-color-scheme="dark"]').length > 0 ||
5390      $('#nectar_fullscreen_rows').length > 0 && $($obj.container).find('.swiper-slide-active[data-color-scheme="dark"]').length > 0) {
5391        $('#header-outer').addClass('dark-slide');
5392      } else if( $($obj.container).parents('.first-section').length > 0 || $('#nectar_fullscreen_rows').length > 0) {
5393        $('#header-outer').removeClass('dark-slide');
5394      }
5395    } 
5396    ////directional trans - will be called early so need to adjust the slide being looked for
5397    else {
5398      if($($obj.container).hasClass('directional-trans-next')) {
5399        
5400        if($($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active').next('.swiper-slide').is('[data-color-scheme="dark"]') ) {
5401          $('#header-outer').addClass('dark-slide');
5402        } else {
5403          $('#header-outer').removeClass('dark-slide');
5404        }
5405      } 
5406      
5407      else if($($obj.container).hasClass('directional-trans-prev')) {
5408        if( $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active').prev('.swiper-slide').is('[data-color-scheme="dark"]') ) {
5409          $('#header-outer').addClass('dark-slide');
5410        } else {
5411          $('#header-outer').removeClass('dark-slide');
5412        }
5413      }
5414      
5415      else if($($obj.container).hasClass('directional-trans-current')) {
5416        if( $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active').is('[data-color-scheme="dark"]') ) {
5417          $('#header-outer').addClass('dark-slide');
5418        } else {
5419          $('#header-outer').removeClass('dark-slide');
5420        }
5421      }
5422      
5423      
5424    }
5425    
5426    //light and dark controls
5427    if($($obj.container).parent().attr('data-overall_style') != 'directional') {
5428      if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex) +')').attr('data-color-scheme') === 'dark') {
5429        $($obj.container).find('.slider-pagination').addClass('dark-cs');
5430        $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs');
5431      } else {
5432        $($obj.container).find('.slider-pagination').removeClass('dark-cs');
5433        $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs');
5434      }
5435    } 
5436    ////directional trans - will be called early so need to adjust the slide being looked for
5437    else {
5438      if($($obj.container).hasClass('directional-trans-next')) {
5439        if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex+1) +')').attr('data-color-scheme') === 'dark') {
5440          $($obj.container).find('.slider-pagination').addClass('dark-cs');
5441          $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs');
5442        } else {
5443          $($obj.container).find('.slider-pagination').removeClass('dark-cs');
5444          $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs');
5445        }
5446      } else if($($obj.container).hasClass('directional-trans-prev')) {
5447        if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex-1) +')').attr('data-color-scheme') === 'dark') {
5448          $($obj.container).find('.slider-pagination').addClass('dark-cs');
5449          $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs');
5450        } else {
5451          $($obj.container).find('.slider-pagination').removeClass('dark-cs');
5452          $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs');
5453        }
5454        
5455      } else if($($obj.container).hasClass('directional-trans-current')) {
5456        if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex) +')').attr('data-color-scheme') === 'dark') {
5457          $($obj.container).find('.slider-pagination').addClass('dark-cs');
5458          $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs');
5459        } else {
5460          $($obj.container).find('.slider-pagination').removeClass('dark-cs');
5461          $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs');
5462        }
5463        
5464      }
5465    }
5466    
5467    
5468    $($obj.container)
5469      .find('.swiper-slide .video-texture')
5470      .removeClass('no-trans')
5471      .removeClass('light-overlay')
5472      .removeClass('dark-overlay')
5473      .removeClass('half-dark-overlay')
5474      .removeClass('half-light-overlay');
5475    
5476    //add slide counts
5477    $($obj.container).find('.slider-prev .slide-count .slide-current').html( $activeIndex2 );
5478    $($obj.container).find('.slider-next .slide-count .slide-current').html( $activeIndex2 );
5479    
5480    if($($obj.container).attr('data-loop') === 'true'){
5481      //duplicate first slide
5482      if( $($obj.container).find('.swiper-slide-active').index()+1 == 1) { 
5483        $($obj.container).find('.slider-next .slide-count .slide-current, .slider-prev .slide-count .slide-current').html( $slideNum - 2 );
5484      }
5485      //duplicate last slide
5486      else if( $($obj.container).find('.swiper-slide-active').index()+1 == $slideNum) {
5487        $($obj.container).find('.slider-next .slide-count .slide-current, .slider-prev .slide-count .slide-current').html( 1 );
5488      }
5489    }
5490    
5491    if($obj.activeIndex >= 10) { $($obj.container).find('.slider-next .slide-count .slide-current').addClass('double-digits'); } else {
5492      $($obj.container).find('.slider-next .slide-count .slide-current').removeClass('double-digits');
5493    }
5494    
5495    
5496    //don't allow swiping on duplicate transition
5497    if($($obj.container).attr('data-loop') === 'true'){
5498      if($obj.previousIndex == 1 && $obj.activeIndex == 0 || $obj.previousIndex == $slideNum - 2 && $obj.activeIndex == $slideNum - 1 ){
5499        $('.swiper-slide').addClass('duplicate-transition');	
5500      }
5501    }
5502    
5503    
5504    //reset ken_burns
5505    
5506    var sliderIndex = 0;
5507    
5508    slideAnimationQueues.forEach(function(val,index) {
5509      if(typeof val === 'undefined') return;
5510      
5511      if( val.sliderID == $($obj.container).parent().attr('id') )  {
5512        sliderIndex = index;
5513      }
5514      
5515    });
5516    
5517    
5518    if($($obj.container).parent().is('[data-bg-animation="ken_burns"]') && $($obj.container).parents('.nectar-slider-wrap[data-overall_style="directional"]').length === 0 ) {
5519      $($obj.container).find('.swiper-slide').addClass('ken-burns');
5520      clearTimeout(slideAnimationQueues[sliderIndex].kenBurnsInterval);
5521      slideAnimationQueues[sliderIndex].kenBurnsInterval = setTimeout(function(){
5522        $($obj.container).find('.swiper-slide:not(".swiper-slide-active")').removeClass('ken-burns');
5523      },600);
5524    }
5525    
5526    
5527    var nsTimeout = ($($obj.container).parents('.nectar-slider-wrap[data-transition="fade"]').length > 0) ? 350 : 525;
5528    
5529    clearTimeout(slideAnimationQueues[sliderIndex].captionInterval);
5530    if($($obj.container).parents('.nectar-slider-wrap[data-overall_style="directional"]').length === 0) {
5531      
5532      slideAnimationQueues[sliderIndex].captionInterval = setTimeout(function(){ 
5533        
5534        $animating = false; 
5535        
5536        if( $($obj.container).attr('data-loop') === 'true' ) {
5537          $('.swiper-slide').removeClass('duplicate-transition');
5538          
5539          $.each($nectarSliders,function(k){
5540            $nectarSliders[k].updateActiveSlide();
5541            $nectarSliders[k].fixLoop(); 
5542          });
5543        }
5544        
5545        captionTransition($obj);
5546        
5547      },nsTimeout);
5548      
5549    }
5550    
5551    
5552  }
5553  
5554
5555  // Create cross browser requestAnimationFrame method:
5556  window.requestAnimationFrame = window.requestAnimationFrame
5557  || window.mozRequestAnimationFrame
5558  || window.webkitRequestAnimationFrame
5559  || window.msRequestAnimationFrame
5560  || function(f){setTimeout(f, 1000/60)}
5561  
5562  var $sliderHeight;
5563  function sliderParallaxUpdateHeight(){
5564    $sliderHeight = parseInt($('.parallax_slider_outer.first-section .swiper-container').attr('data-height'));
5565  }
5566  
5567  
5568  var $headerNavSpace = ($('body[data-header-format="left-header"]').length > 0 && $(window).width() > 1000) ? 0 : $('#header-space').height();
5569  
5570  function sliderParallaxInit() {
5571    
5572    if($('#portfolio-extra').length > 0 && $('#full_width_portfolio').length === 0) { 
5573      return false; 
5574    }
5575    
5576    $('.parallax_slider_outer').addClass('element-in-view');
5577    
5578    
5579    if(!$onMobileBrowser) {
5580
5581      //caption alignment if portfolio fullwidth parallax
5582      if($('.project-title.parallax-effect').length > 0) {
5583        $('.parallax_slider_outer.first-section .swiper-slide .content, .nectar-slider-wrap.first-section .swiper-slide .content').css('margin-top','0px');
5584        $('.swiper-container .slider-prev, .swiper-container .slider-next').css('margin-top','-28px');
5585      }
5586      
5587      //if using wooCommerce sitewide notice
5588      if($('.demo_store').length > 0) $('.project-title.parallax-effect').css('margin-top','-25px');
5589      
5590      if($('#full_width_portfolio').length > 0){
5591        $('.parallax_slider_outer.first-section').css('margin-top','93px');
5592      }
5593      
5594      $(window).off('resize.nsHeightUpdate');
5595      $(window).on('resize.nsHeightUpdate',sliderParallaxUpdateHeight);
5596    }
5597    
5598  } 
5599  
5600  //parallax
5601  function parallaxCheck(){
5602    
5603    $(window).off('scroll.nsParallaxScroll'); 
5604    
5605    if($('.parallax_slider_outer').length > 0){
5606      sliderParallaxInit();
5607      if($('body[data-hhun="1"]').length > 0 && !$('#header-outer[data-remove-fixed="1"]').length > 0) {
5608        $('#header-outer').addClass('parallax-contained');
5609      }
5610      
5611    } 
5612  }
5613  parallaxCheck();
5614  
5615  //pause video backgrounds if popup video player is started
5616  $('.portfolio-items a.pp:contains(Video), .swiper-container .buttons a.pp').on('click', function(){
5617    $('.swiper-slide').each(function(){
5618      if($(this).find('.video-wrap video').length > 0) { 
5619        $(this).find('.video-wrap video').get(0).pause();
5620      }
5621    });
5622  });
5623  
5624  
5625  //solid button hover effect
5626  function hexConvert(x) {
5627    return ("0" + parseInt(x).toString(16)).slice(-2);
5628  }
5629  
5630  $.cssHooks.backgroundColor = {
5631    get: function(elem) {
5632      var bg;
5633      
5634      if (elem.currentStyle) {
5635        bg = elem.currentStyle["backgroundColor"];
5636      }
5637      else if (window.getComputedStyle) {
5638        bg = document.defaultView.getComputedStyle(elem,null).getPropertyValue("background-color");
5639      }
5640      
5641      if (bg.search("rgb") == -1) {
5642        return bg;
5643      }
5644      else {
5645        bg = bg.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
5646        if(bg) {
5647          return "#" + hexConvert(bg[1]) + hexConvert(bg[2]) + hexConvert(bg[3]);
5648        }
5649      }
5650    }
5651  }
5652
5653    
5654    //nectar slider external links
5655    $('.swiper-slide.external-full-link a.entire-slide-link').attr('target', '_blank');
5656    $('.swiper-slide.external-button-1 .buttons > div:nth-child(1) a').attr('target', '_blank');
5657    $('.swiper-slide.external-button-2 .buttons > div:nth-child(2) a').attr('target', '_blank');
5658    
5659    //headerPadding/shinkNum moved up before fullscreen calcs
5660    headerPadding = headerPadding - headerPadding/1.8;
5661    
5662    $('body').on('click','.slider-down-arrow',function(){
5663      
5664      //within full page row
5665      if($(this).parents('#nectar_fullscreen_rows').length > 0) {
5666        if($('#fp-nav li .active').parent().next('li').length > 0) {
5667          $('#fp-nav li .active').parent().next('li').find('a').trigger('click');
5668        }
5669        return;
5670      }
5671      
5672      var $currentSlider = $(this).parents('.swiper-container');
5673      var $topDistance = $currentSlider.attr('data-height');
5674      var $offset = ($currentSlider.parents('.first-section').length === 0 || $('#header-outer[data-transparent-header="true"]').length === 0) ? $currentSlider.offset().top : 0;
5675      var materialSecondary = 0;
5676      
5677      if($('body.material').length > 0 && $('#header-secondary-outer').length > 0) { materialSecondary = $('#header-secondary-outer').height(); }
5678      
5679      if($('body[data-permanent-transparent="1"]').length === 0) {
5680        //regular
5681        if(!$('body').hasClass('mobile')){
5682          
5683          //hhun
5684          if($('body[data-hhun="1"]').length > 0) {
5685            $('body,html').stop().animate({
5686              scrollTop: parseInt($topDistance) + $offset + 2
5687            },1000,'easeInOutCubic')
5688          } else {
5689            
5690            
5691            if( $('#header-outer[data-condense="true"]').length > 0) {
5692              
5693              var $headerSpan9 = $('#header-outer[data-format="centered-menu-bottom-bar"] header#top .span_9');
5694              var $secondaryHeaderHeight = ($('#header-secondary-outer').length > 0) ? $('#header-secondary-outer').height() : 0;
5695              
5696              $headerNavSpace = $('#header-outer').height() - (parseInt($headerSpan9.position().top) - parseInt($('#header-outer #logo').css('margin-top')) ) - parseInt($secondaryHeaderHeight);
5697              
5698              $('body,html').stop().animate({
5699                scrollTop: parseInt($topDistance - $headerNavSpace) + 2
5700              },1000,'easeInOutCubic');
5701              
5702            } else {
5703              
5704              $('body,html').stop().animate({
5705                scrollTop: parseInt($topDistance - $('#header-space').height()) + parseInt(shrinkNum) + headerPadding*2 + $offset + 2 + materialSecondary
5706              },1000,'easeInOutCubic');
5707              
5708            }
5709            
5710            
5711          }
5712          
5713        } else {
5714          var $scrollPos = ($('#header-outer[data-mobile-fixed="1"]').length > 0) ? parseInt($topDistance) - $('#header-space').height() + parseInt($currentSlider.offset().top) + 2 : parseInt($topDistance) + parseInt($currentSlider.offset().top) + 2;
5715          $('body,html').stop().animate({
5716            scrollTop: $scrollPos
5717          },1000,'easeInOutCubic')
5718        }
5719      } else {
5720        //permanent transparent
5721        $('body,html').stop().animate({
5722          scrollTop: parseInt($topDistance) + parseInt($currentSlider.offset().top) + 2
5723        },1000,'easeInOutCubic')
5724      }
5725      return false;
5726    });
5727    
5728    
5729    
5730  });

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.