/* * Swiper 2.2 - Mobile Touch Slider * http://www.idangero.us/sliders/swiper/ * * Copyright 2012-2013, Vladimir Kharlampidi * The iDangero.us * http://www.idangero.us/ * * Licensed under GPL & MIT * * Updated on: September 15, 2013 */ if(!jQuery().swiper) { var Swiper = function (selector, params) { /*========================= A little bit dirty but required part for IE8 and old FF support ===========================*/ if (document.body.__defineGetter__) { if (HTMLElement) { var element = HTMLElement.prototype; if (element.__defineGetter__) { element.__defineGetter__("outerHTML", function () { return new XMLSerializer().serializeToString(this); } ); } } } if (!window.getComputedStyle) { window.getComputedStyle = function (el, pseudo) { this.el = el; this.getPropertyValue = function (prop) { var re = /(\-([a-z]){1})/g; if (prop === 'float') prop = 'styleFloat'; if (re.test(prop)) { prop = prop.replace(re, function () { return arguments[2].toUpperCase(); }); } return el.currentStyle[prop] ? el.currentStyle[prop] : null; } return this; } } if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(obj, start) { for (var i = (start || 0), j = this.length; i < j; i++) { if (this[i] === obj) { return i; } } return -1; } } if (!document.querySelectorAll) { if (!window.jQuery) return; } function $$(selector, context) { if (document.querySelectorAll) return (context || document).querySelectorAll(selector); else return jQuery(selector, context); } /*========================= Check for correct selector ===========================*/ if(typeof selector === 'undefined') return; if(!(selector.nodeType)){ if ($$(selector).length === 0) return; } /*========================= _this ===========================*/ var _this = this; /*========================= Default Flags and vars ===========================*/ _this.touches = { start:0, startX:0, startY:0, current:0, currentX:0, currentY:0, diff:0, abs:0 }; _this.positions = { start:0, abs:0, diff:0, current:0 }; _this.times = { start:0, end:0 }; _this.id = (new Date()).getTime(); _this.container = (selector.nodeType) ? selector : $$(selector)[0]; _this.isTouched = false; _this.isMoved = false; _this.activeIndex = 0; _this.activeLoaderIndex = 0; _this.activeLoopIndex = 0; _this.previousIndex = null; _this.velocity = 0; _this.snapGrid = []; _this.slidesGrid = []; _this.imagesToLoad = []; _this.imagesLoaded = 0; _this.wrapperLeft=0; _this.wrapperRight=0; _this.wrapperTop=0; _this.wrapperBottom=0; var wrapper, slideSize, wrapperSize, direction, isScrolling, containerSize; /*========================= Default Parameters ===========================*/ var defaults = { mode : 'horizontal', // or 'vertical' touchRatio : 1, speed : 300, freeMode : false, freeModeFluid : false, momentumRatio: 1, momentumBounce: true, momentumBounceRatio: 1, slidesPerView : 1, slidesPerGroup : 1, simulateTouch : true, followFinger : true, shortSwipes : true, moveStartThreshold:false, autoplay: false, onlyExternal : false, createPagination : true, pagination : false, paginationElement: 'span', paginationClickable: false, paginationAsRange: true, resistance : true, // or false or 100% scrollContainer : false, preventLinks : true, noSwiping : false, // or class noSwipingClass : 'swiper-no-swiping', //:) initialSlide: 0, keyboardControl: false, mousewheelControl : false, mousewheelDebounce: 600, useCSS3Transforms : true, //Loop mode loop:false, loopAdditionalSlides:0, //Auto Height calculateHeight: false, //Images Preloader updateOnImagesReady : true, //Form elements releaseFormElements : true, //Watch for active slide, useful when use effects on different slide states watchActiveIndex: false, //Slides Visibility Fit visibilityFullFit : false, //Slides Offset offsetPxBefore : 0, offsetPxAfter : 0, offsetSlidesBefore : 0, offsetSlidesAfter : 0, centeredSlides: false, //Queue callbacks queueStartCallbacks : false, queueEndCallbacks : false, //Auto Resize autoResize : true, resizeReInit : false, //DOMAnimation DOMAnimation : true, //Slides Loader loader: { slides:[], //array with slides slidesHTMLType:'inner', // or 'outer' surroundGroups: 1, //keep preloaded slides groups around view logic: 'reload', //or 'change' loadAllSlides: false }, //Namespace slideElement : 'div', slideClass : 'swiper-slide', slideActiveClass : 'swiper-slide-active', slideVisibleClass : 'swiper-slide-visible', wrapperClass : 'swiper-wrapper', paginationElementClass: 'swiper-pagination-switch', paginationActiveClass : 'swiper-active-switch', paginationVisibleClass : 'swiper-visible-switch' } params = params || {}; for (var prop in defaults) { if (prop in params && typeof params[prop]==='object') { for (var subProp in defaults[prop]) { if (! (subProp in params[prop])) { params[prop][subProp] = defaults[prop][subProp]; } } } else if (! (prop in params)) { params[prop] = defaults[prop] } } _this.params = params; if (params.scrollContainer) { params.freeMode = true; params.freeModeFluid = true; } if (params.loop) { params.resistance = '100%'; } var isH = params.mode==='horizontal'; /*========================= Define Touch Events ===========================*/ _this.touchEvents = { touchStart : _this.support.touch || !params.simulateTouch ? 'touchstart' : (_this.browser.ie10 ? 'MSPointerDown' : 'mousedown'), touchMove : _this.support.touch || !params.simulateTouch ? 'touchmove' : (_this.browser.ie10 ? 'MSPointerMove' : 'mousemove'), touchEnd : _this.support.touch || !params.simulateTouch ? 'touchend' : (_this.browser.ie10 ? 'MSPointerUp' : 'mouseup') }; /*========================= Wrapper ===========================*/ for (var i = _this.container.childNodes.length - 1; i >= 0; i--) { if (_this.container.childNodes[i].className) { var _wrapperClasses = _this.container.childNodes[i].className.split(/\s+/); for (var j = 0; j < _wrapperClasses.length; j++) { if (_wrapperClasses[j] === params.wrapperClass) { wrapper = _this.container.childNodes[i]; } } } } _this.wrapper = wrapper; /*========================= Slide API ===========================*/ _this._extendSwiperSlide = function (el) { el.append = function () { if (params.loop) { el.insertAfter(_this.slides.length-_this.loopedSlides); _this.removeLoopedSlides(); _this.calcSlides(); _this.createLoop(); } else { _this.wrapper.appendChild(el); } _this.reInit(); return el; } el.prepend = function () { if (params.loop) { _this.wrapper.insertBefore(el, _this.slides[_this.loopedSlides]); _this.removeLoopedSlides(); _this.calcSlides(); _this.createLoop(); } else { _this.wrapper.insertBefore(el, _this.wrapper.firstChild); } _this.reInit(); return el; } el.insertAfter = function (index) { if(typeof index === 'undefined') return false; var beforeSlide; if (params.loop) { beforeSlide = _this.slides[index + 1 + _this.loopedSlides]; _this.wrapper.insertBefore(el, beforeSlide); _this.removeLoopedSlides(); _this.calcSlides(); _this.createLoop(); } else { beforeSlide = _this.slides[index + 1]; _this.wrapper.insertBefore(el, beforeSlide) } _this.reInit(); return el; } el.clone = function () { return _this._extendSwiperSlide(el.cloneNode(true)) } el.remove = function () { _this.wrapper.removeChild(el); _this.reInit(); } el.html = function (html) { if (typeof html === 'undefined') { return el.innerHTML; } else { el.innerHTML = html; return el; } } el.index = function () { var index; for (var i = _this.slides.length - 1; i >= 0; i--) { if(el === _this.slides[i]) index = i; } return index; } el.isActive = function () { if (el.index() === _this.activeIndex) return true; else return false; } if (!el.swiperSlideDataStorage) el.swiperSlideDataStorage={}; el.getData = function (name) { return el.swiperSlideDataStorage[name]; } el.setData = function (name, value) { el.swiperSlideDataStorage[name] = value; return el; } el.data = function (name, value) { if (!value) { return el.getAttribute('data-'+name); } else { el.setAttribute('data-'+name,value); return el; } } el.getWidth = function (outer) { return _this.h.getWidth(el, outer); } el.getHeight = function (outer) { return _this.h.getHeight(el, outer); } el.getOffset = function() { return _this.h.getOffset(el); } return el; } //Calculate information about number of slides _this.calcSlides = function (forceCalcSlides) { var oldNumber = _this.slides ? _this.slides.length : false; _this.slides = []; _this.displaySlides = []; for (var i = 0; i < _this.wrapper.childNodes.length; i++) { if (_this.wrapper.childNodes[i].className) { var _className = _this.wrapper.childNodes[i].className; var _slideClasses = _className.split(' '); for (var j = 0; j < _slideClasses.length; j++) { if(_slideClasses[j]===params.slideClass) { _this.slides.push(_this.wrapper.childNodes[i]); } } } } for (i = _this.slides.length - 1; i >= 0; i--) { _this._extendSwiperSlide(_this.slides[i]); } if (!oldNumber) return; if(oldNumber!==_this.slides.length || forceCalcSlides) { // Number of slides has been changed removeSlideEvents(); addSlideEvents(); _this.updateActiveSlide(); if (params.createPagination && _this.params.pagination) _this.createPagination(); _this.callPlugins('numberOfSlidesChanged'); } } //Create Slide _this.createSlide = function (html, slideClassList, el) { var slideClassList = slideClassList || _this.params.slideClass; var el = el||params.slideElement; var newSlide = document.createElement(el); newSlide.innerHTML = html||''; newSlide.className = slideClassList; return _this._extendSwiperSlide(newSlide); } //Append Slide _this.appendSlide = function (html, slideClassList, el) { if (!html) return; if (html.nodeType) { return _this._extendSwiperSlide(html).append() } else { return _this.createSlide(html, slideClassList, el).append() } } _this.prependSlide = function (html, slideClassList, el) { if (!html) return; if (html.nodeType) { return _this._extendSwiperSlide(html).prepend() } else { return _this.createSlide(html, slideClassList, el).prepend() } } _this.insertSlideAfter = function (index, html, slideClassList, el) { if (typeof index === 'undefined') return false; if (html.nodeType) { return _this._extendSwiperSlide(html).insertAfter(index); } else { return _this.createSlide(html, slideClassList, el).insertAfter(index); } } _this.removeSlide = function (index) { if (_this.slides[index]) { if (params.loop) { if (!_this.slides[index+_this.loopedSlides]) return false; _this.slides[index+_this.loopedSlides].remove(); _this.removeLoopedSlides(); _this.calcSlides(); _this.createLoop(); } else _this.slides[index].remove(); return true; } else return false; } _this.removeLastSlide = function () { if (_this.slides.length>0) { if (params.loop) { _this.slides[_this.slides.length - 1 - _this.loopedSlides].remove(); _this.removeLoopedSlides(); _this.calcSlides(); _this.createLoop(); } else _this.slides[ (_this.slides.length-1) ].remove(); return true; } else { return false; } } _this.removeAllSlides = function () { for (var i = _this.slides.length - 1; i >= 0; i--) { _this.slides[i].remove() } } _this.getSlide = function (index) { return _this.slides[index] } _this.getLastSlide = function () { return _this.slides[ _this.slides.length-1 ] } _this.getFirstSlide = function () { return _this.slides[0] } //Currently Active Slide _this.activeSlide = function () { return _this.slides[_this.activeIndex] } /*========================= Plugins API ===========================*/ var _plugins = []; for (var plugin in _this.plugins) { if (params[plugin]) { var p = _this.plugins[plugin](_this, params[plugin]); if (p) _plugins.push( p ); } } _this.callPlugins = function(method, args) { if (!args) args = {} for (var i=0; i<_plugins.length; i++) { if (method in _plugins[i]) { _plugins[i][method](args); } } } /*========================= Wrapper for Callbacks : Allows additive callbacks via function arrays ===========================*/ _this.fireCallback = function() { var callback = arguments[0]; if( Object.prototype.toString.call( callback ) === '[object Array]' ) { for (var i = 0; i < callback.length; i++) { if (typeof callback[i] === 'function') { callback[i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]) } } } else { callback(arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); } } function isArray (obj) { "use strict"; if (Object.prototype.toString.apply( obj ) === '[object Array]') return true; return false; } /** + * Allows user to add callbacks, rather than replace them + * @param callback + * @param func + * @return {*} + */ _this.addCallback = function (callback, func) { "use strict"; var _this = this, tempFunc; if (_this.params['on' + callback]) { if (isArray(this.params['on' + callback])) { return this.params['on' + callback].push(func); } else if (typeof this.params['on' + callback] === 'function') { tempFunc = this.params['on' + callback]; this.params['on' + callback] = []; this.params['on' + callback].push(tempFunc); return this.params['on' + callback].push(func); } } else { this.params['on' + callback] = []; return this.params['on' + callback].push(func); } } _this.removeCallbacks = function (callback) { if (_this.params['on' + callback]) { return _this.params['on' + callback] = null; } } /*========================= /*========================= WP8 Fix ===========================*/ if (_this.browser.ie10 && !params.onlyExternal) { _this.wrapper.classList.add('swiper-wp8-' + (isH ? 'horizontal' : 'vertical')); } /*========================= Free Mode Class ===========================*/ if (params.freeMode) { _this.container.className+=' swiper-free-mode'; } /*================================================== Init/Re-init/Resize Fix ====================================================*/ _this.initialized = false; _this.init = function(force, forceCalcSlides) { var _width = _this.h.getWidth(_this.container); var _height = _this.h.getHeight(_this.container); if (_width===_this.width && _height===_this.height && !force) return; _this.width = _width; _this.height = _height; containerSize = isH ? _width : _height; var wrapper = _this.wrapper; if (force) { _this.calcSlides(forceCalcSlides); } if (params.slidesPerView==='auto') { //Auto mode var slidesWidth = 0; var slidesHeight = 0; //Unset Styles if (params.slidesOffset>0) { wrapper.style.paddingLeft = ''; wrapper.style.paddingRight = ''; wrapper.style.paddingTop = ''; wrapper.style.paddingBottom = ''; } wrapper.style.width = ''; wrapper.style.height = ''; if (params.offsetPxBefore>0) { if (isH) _this.wrapperLeft = params.offsetPxBefore; else _this.wrapperTop = params.offsetPxBefore; } if (params.offsetPxAfter>0) { if (isH) _this.wrapperRight = params.offsetPxAfter; else _this.wrapperBottom = params.offsetPxAfter; } if (params.centeredSlides) { if (isH) { _this.wrapperLeft = (containerSize - this.slides[0].getWidth(true) )/2; _this.wrapperRight = (containerSize - _this.slides[ _this.slides.length-1 ].getWidth(true))/2; } else { _this.wrapperTop = (containerSize - _this.slides[0].getHeight(true))/2; _this.wrapperBottom = (containerSize - _this.slides[ _this.slides.length-1 ].getHeight(true))/2; } } if (isH) { if (_this.wrapperLeft>=0) wrapper.style.paddingLeft = _this.wrapperLeft+'px'; if (_this.wrapperRight>=0) wrapper.style.paddingRight = _this.wrapperRight+'px'; } else { if (_this.wrapperTop>=0) wrapper.style.paddingTop = _this.wrapperTop+'px'; if (_this.wrapperBottom>=0) wrapper.style.paddingBottom = _this.wrapperBottom+'px'; } var slideLeft = 0; var centeredSlideLeft=0; _this.snapGrid = []; _this.slidesGrid = []; var slideMaxHeight = 0; for(var i = 0; i<_this.slides.length; i++) { var slideWidth = _this.slides[i].getWidth(true); var slideHeight = _this.slides[i].getHeight(true); if (params.calculateHeight) { slideMaxHeight = Math.max(slideMaxHeight, slideHeight) } var _slideSize = isH ? slideWidth : slideHeight; if (params.centeredSlides) { var nextSlideWidth = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getWidth(true); var nextSlideHeight = i === _this.slides.length-1 ? 0 : _this.slides[i+1].getHeight(true); var nextSlideSize = isH ? nextSlideWidth : nextSlideHeight; if (_slideSize>containerSize) { for (var j=0; j<=Math.floor(_slideSize/(containerSize+_this.wrapperLeft)); j++) { if (j === 0) _this.snapGrid.push(slideLeft+_this.wrapperLeft); else _this.snapGrid.push(slideLeft+_this.wrapperLeft+containerSize*j); } _this.slidesGrid.push(slideLeft+_this.wrapperLeft); } else { _this.snapGrid.push(centeredSlideLeft); _this.slidesGrid.push(centeredSlideLeft); } centeredSlideLeft += _slideSize/2 + nextSlideSize/2; } else { if (_slideSize>containerSize) { for (var j=0; j<=Math.floor(_slideSize/containerSize); j++) { _this.snapGrid.push(slideLeft+containerSize*j); } } else { _this.snapGrid.push(slideLeft); } _this.slidesGrid.push(slideLeft); } slideLeft += _slideSize; slidesWidth += slideWidth; slidesHeight += slideHeight; } if (params.calculateHeight) _this.height = slideMaxHeight; if(isH) { wrapperSize = slidesWidth + _this.wrapperRight + _this.wrapperLeft; wrapper.style.width = (slidesWidth)+'px'; wrapper.style.height = (_this.height)+'px'; } else { wrapperSize = slidesHeight + _this.wrapperTop + _this.wrapperBottom; wrapper.style.width = (_this.width)+'px'; wrapper.style.height = (slidesHeight)+'px'; } } else if (params.scrollContainer) { //Scroll Container wrapper.style.width = ''; wrapper.style.height = ''; var wrapperWidth = _this.slides[0].getWidth(true); var wrapperHeight = _this.slides[0].getHeight(true); wrapperSize = isH ? wrapperWidth : wrapperHeight; wrapper.style.width = wrapperWidth+'px'; wrapper.style.height = wrapperHeight+'px'; slideSize = isH ? wrapperWidth : wrapperHeight; } else { //For usual slides if (params.calculateHeight) { var slideMaxHeight = 0; var wrapperHeight = 0; //ResetWrapperSize if (!isH) _this.container.style.height= ''; wrapper.style.height=''; for (var i=0; i<_this.slides.length; i++) { //ResetSlideSize _this.slides[i].style.height=''; slideMaxHeight = Math.max( _this.slides[i].getHeight(true), slideMaxHeight ); if (!isH) wrapperHeight+=_this.slides[i].getHeight(true); } var slideHeight = slideMaxHeight; _this.height = slideHeight; if (isH) wrapperHeight = slideHeight; else containerSize = slideHeight, _this.container.style.height= containerSize+'px'; } else { var slideHeight = isH ? _this.height : _this.height/params.slidesPerView; var wrapperHeight = isH ? _this.height : _this.slides.length*slideHeight; } var slideWidth = isH ? _this.width/params.slidesPerView : _this.width; var wrapperWidth = isH ? _this.slides.length*slideWidth : _this.width; slideSize = isH ? slideWidth : slideHeight; if (params.offsetSlidesBefore>0) { if (isH) _this.wrapperLeft = slideSize*params.offsetSlidesBefore; else _this.wrapperTop = slideSize*params.offsetSlidesBefore; } if (params.offsetSlidesAfter>0) { if (isH) _this.wrapperRight = slideSize*params.offsetSlidesAfter; else _this.wrapperBottom = slideSize*params.offsetSlidesAfter; } if (params.offsetPxBefore>0) { if (isH) _this.wrapperLeft = params.offsetPxBefore; else _this.wrapperTop = params.offsetPxBefore; } if (params.offsetPxAfter>0) { if (isH) _this.wrapperRight = params.offsetPxAfter; else _this.wrapperBottom = params.offsetPxAfter; } if (params.centeredSlides) { if (isH) { _this.wrapperLeft = (containerSize - slideSize)/2; _this.wrapperRight = (containerSize - slideSize)/2; } else { _this.wrapperTop = (containerSize - slideSize)/2; _this.wrapperBottom = (containerSize - slideSize)/2; } } if (isH) { if (_this.wrapperLeft>0) wrapper.style.paddingLeft = _this.wrapperLeft+'px'; if (_this.wrapperRight>0) wrapper.style.paddingRight = _this.wrapperRight+'px'; } else { if (_this.wrapperTop>0) wrapper.style.paddingTop = _this.wrapperTop+'px'; if (_this.wrapperBottom>0) wrapper.style.paddingBottom = _this.wrapperBottom+'px'; } wrapperSize = isH ? wrapperWidth + _this.wrapperRight + _this.wrapperLeft : wrapperHeight + _this.wrapperTop + _this.wrapperBottom; if (!params.cssWidthAndHeight) { if (parseFloat(wrapperWidth) > 0) { wrapper.style.width = wrapperWidth+'px'; } if (parseFloat(wrapperHeight) > 0) { wrapper.style.height = wrapperHeight+'px'; } } var slideLeft = 0; _this.snapGrid = []; _this.slidesGrid = []; for (var i=0; i<_this.slides.length; i++) { _this.snapGrid.push(slideLeft); _this.slidesGrid.push(slideLeft); slideLeft+=slideSize; if (!params.cssWidthAndHeight) { if (parseFloat(slideWidth) > 0) { _this.slides[i].style.width = slideWidth+'px'; } if (parseFloat(slideHeight) > 0) { _this.slides[i].style.height = slideHeight+'px'; } } } } if (!_this.initialized) { _this.callPlugins('onFirstInit'); if (params.onFirstInit) _this.fireCallback(params.onFirstInit,_this); } else { _this.callPlugins('onInit'); if (params.onInit) _this.fireCallback(params.onInit,_this); } _this.initialized = true; } _this.reInit = function (forceCalcSlides) { _this.init(true, forceCalcSlides); } _this.resizeFix = function (reInit) { _this.callPlugins('beforeResizeFix'); _this.init(params.resizeReInit || reInit); // swipe to active slide in fixed mode if (!params.freeMode) { _this.swipeTo((params.loop ? _this.activeLoopIndex : _this.activeIndex), 0, false); } // move wrapper to the beginning in free mode else if (_this.getWrapperTranslate() < -maxWrapperPosition()) { _this.setWrapperTransition(0); _this.setWrapperTranslate(-maxWrapperPosition()); } _this.callPlugins('afterResizeFix'); } /*========================================== Max and Min Positions ============================================*/ function maxWrapperPosition() { var a = (wrapperSize - containerSize); if (params.freeMode) { a = wrapperSize - containerSize; } // if (params.loop) a -= containerSize; if (params.slidesPerView > _this.slides.length) a = 0; if (a<0) a = 0; return a; } function minWrapperPosition() { var a = 0; // if (params.loop) a = containerSize; return a; } /*========================================== Event Listeners ============================================*/ function initEvents() { var bind = _this.h.addEventListener; //Touch Events if (!_this.browser.ie10) { if (_this.support.touch) { bind(_this.wrapper, 'touchstart', onTouchStart); bind(_this.wrapper, 'touchmove', onTouchMove); bind(_this.wrapper, 'touchend', onTouchEnd); } if (params.simulateTouch) { bind(_this.wrapper, 'mousedown', onTouchStart); bind(document, 'mousemove', onTouchMove); bind(document, 'mouseup', onTouchEnd); } } else { bind(_this.wrapper, _this.touchEvents.touchStart, onTouchStart); bind(document, _this.touchEvents.touchMove, onTouchMove); bind(document, _this.touchEvents.touchEnd, onTouchEnd); } //Resize Event if (params.autoResize) { bind(window, 'resize', _this.resizeFix); } //Slide Events addSlideEvents(); //Mousewheel _this._wheelEvent = false; if (params.mousewheelControl) { if ( document.onmousewheel !== undefined ) { _this._wheelEvent = "mousewheel"; } try { WheelEvent("wheel"); _this._wheelEvent = "wheel"; } catch (e) {} if ( !_this._wheelEvent ) { _this._wheelEvent = "DOMMouseScroll"; } if (_this._wheelEvent) { bind(_this.container, _this._wheelEvent, handleMousewheel); } } //Keyboard if (params.keyboardControl) { bind(document, 'keydown', handleKeyboardKeys); } if (params.updateOnImagesReady) { _this.imagesToLoad = $$('img', _this.container); for (var i=0; i<_this.imagesToLoad.length; i++) { _loadImage(_this.imagesToLoad[i].getAttribute('src')) } } function _loadImage(src) { var image = new Image(); image.onload = function(){ _this.imagesLoaded++; if (_this.imagesLoaded==_this.imagesToLoad.length) { _this.reInit(); if (params.onImagesReady) _this.fireCallback(params.onImagesReady, _this); } } image.src = src; } } //Remove Event Listeners _this.destroy = function(removeResizeFix){ var unbind = _this.h.removeEventListener; //Touch Events if (!_this.browser.ie10) { if (_this.support.touch) { unbind(_this.wrapper, 'touchstart', onTouchStart); unbind(_this.wrapper, 'touchmove', onTouchMove); unbind(_this.wrapper, 'touchend', onTouchEnd); } if (params.simulateTouch) { unbind(_this.wrapper, 'mousedown', onTouchStart); unbind(document, 'mousemove', onTouchMove); unbind(document, 'mouseup', onTouchEnd); } } else { unbind(_this.wrapper, _this.touchEvents.touchStart, onTouchStart); unbind(document, _this.touchEvents.touchMove, onTouchMove); unbind(document, _this.touchEvents.touchEnd, onTouchEnd); } //Resize Event if (params.autoResize) { unbind(window, 'resize', _this.resizeFix); } //Init Slide Events removeSlideEvents(); //Pagination if (params.paginationClickable) { removePaginationEvents(); } //Mousewheel if (params.mousewheelControl && _this._wheelEvent) { unbind(_this.container, _this._wheelEvent, handleMousewheel); } //Keyboard if (params.keyboardControl) { unbind(document, 'keydown', handleKeyboardKeys); } //Stop autoplay if (params.autoplay) { _this.stopAutoplay(); } _this.callPlugins('onDestroy'); //Destroy variable _this = null; } function addSlideEvents() { var bind = _this.h.addEventListener, i; //Prevent Links Events if (params.preventLinks) { var links = $$('a', _this.container); for (i=0; i=scrollLeft && point[0]<=scrollLeft+windowWidth && point[1]>=scrollTop && point[1]<=scrollTop+windowHeight ) { inView = true; } } if (!inView) return; } if (isH) { if (kc==37 || kc==39) { if (e.preventDefault) e.preventDefault(); else e.returnValue = false; } if (kc == 39) _this.swipeNext(); if (kc == 37) _this.swipePrev(); } else { if (kc==38 || kc==40) { if (e.preventDefault) e.preventDefault(); else e.returnValue = false; } if (kc == 40) _this.swipeNext(); if (kc == 38) _this.swipePrev(); } } /*========================================== Mousewheel Control ============================================*/ var allowScrollChange = true; var lastScrollTime = (new Date()).getTime(); function handleMousewheel (e) { var we = _this._wheelEvent; var delta = 0; //Opera & IE if (e.detail) delta = -e.detail; //WebKits else if (we == 'mousewheel') delta = e.wheelDelta; //Old FireFox else if (we == 'DOMMouseScroll') delta = -e.detail; //New FireFox else if (we == 'wheel') { delta = Math.abs(e.deltaX)>Math.abs(e.deltaY) ? - e.deltaX : - e.deltaY; } if (!params.freeMode) { if(delta<0) _this.swipeNext(); else _this.swipePrev(); } else { //Freemode or scrollContainer: var position = _this.getWrapperTranslate() + delta; if (position > 0) position = 0; if (position < -maxWrapperPosition()) position = -maxWrapperPosition(); _this.setWrapperTransition(0); _this.setWrapperTranslate(position); _this.updateActiveSlide(position); } if (params.autoplay) _this.stopAutoplay(); if(e.preventDefault) e.preventDefault(); else e.returnValue = false; return false; } /*========================= Grab Cursor ===========================*/ if (params.grabCursor) { var containerStyle = _this.container.style; containerStyle.cursor = 'move'; containerStyle.cursor = 'grab'; containerStyle.cursor = '-moz-grab'; containerStyle.cursor = '-webkit-grab'; } /*========================= Slides Events Handlers ===========================*/ _this.allowSlideClick = true; function slideClick(event) { if (_this.allowSlideClick) { setClickedSlide(event); this.fireCallback(params.onSlideClick, _this, event); } } function slideTouch(event) { setClickedSlide(event); _this.fireCallback(params.onSlideTouch, _this, event); } function setClickedSlide(event) { // IE 6-8 support if (!event.currentTarget) { var element = event.srcElement; do { if (element.className.indexOf(params.slideClass) > -1) { break; } } while (element = element.parentNode); _this.clickedSlide = element; } else { _this.clickedSlide = event.currentTarget; } _this.clickedSlideIndex = _this.slides.indexOf(_this.clickedSlide); _this.clickedSlideLoopIndex = _this.clickedSlideIndex - (_this.loopedSlides || 0); } _this.allowLinks = true; function preventClick(e) { if (!_this.allowLinks) { if(e.preventDefault) e.preventDefault(); else e.returnValue = false; return false; } } function releaseForms(e) { if (e.stopPropagation) e.stopPropagation(); else e.returnValue = false; return false; } /*================================================== Event Handlers ====================================================*/ var isTouchEvent = false; var allowThresholdMove; var allowMomentumBounce = true; function onTouchStart(event) { //vc gallery when using lightbox fix if(jQuery(event.target).parents('.swiper-container').attr('data-desktop-swipe') == 'false' && !Modernizr.touch) return false; //deactivate touch if only one slide if(jQuery(event.target).parents('.swiper-container').find('.swiper-slide').length == 1) return false; //deactivate touch for duplicate transitions if(jQuery(event.target).parents('.swiper-container').find('.swiper-slide.duplicate-transition').length > 0) return false; if (params.preventLinks) _this.allowLinks = true; //Exit if slider is already was touched if (_this.isTouched || params.onlyExternal) { return false; } if (params.noSwiping && (event.target || event.srcElement) && noSwipingSlide(event.target || event.srcElement)) return false; allowMomentumBounce = false; //Check For Nested Swipers _this.isTouched = true; isTouchEvent = event.type=='touchstart'; if (!isTouchEvent || event.targetTouches.length == 1 ) { _this.callPlugins('onTouchStartBegin'); if(!isTouchEvent) { if(event.preventDefault) event.preventDefault(); else event.returnValue = false; } var pageX = isTouchEvent ? event.targetTouches[0].pageX : (event.pageX || event.clientX); var pageY = isTouchEvent ? event.targetTouches[0].pageY : (event.pageY || event.clientY); //Start Touches to check the scrolling _this.touches.startX = _this.touches.currentX = pageX; _this.touches.startY = _this.touches.currentY = pageY; _this.touches.start = _this.touches.current = isH ? pageX : pageY; //Set Transition Time to 0 _this.setWrapperTransition(0); //Get Start Translate Position _this.positions.start = _this.positions.current = _this.getWrapperTranslate(); //Set Transform _this.setWrapperTranslate(_this.positions.start); //TouchStartTime _this.times.start = (new Date()).getTime(); //Unset Scrolling isScrolling = undefined; //Set Treshold if (params.moveStartThreshold>0) allowThresholdMove = false; //CallBack if (params.onTouchStart) _this.fireCallback(params.onTouchStart, _this); _this.callPlugins('onTouchStartEnd'); } } var velocityPrevPosition, velocityPrevTime; function onTouchMove(event) { // If slider is not touched - exit if (!_this.isTouched || params.onlyExternal) return; if (isTouchEvent && event.type=='mousemove') return; var pageX = isTouchEvent ? event.targetTouches[0].pageX : (event.pageX || event.clientX); var pageY = isTouchEvent ? event.targetTouches[0].pageY : (event.pageY || event.clientY); //check for scrolling if ( typeof isScrolling === 'undefined' && isH) { isScrolling = !!( isScrolling || Math.abs(pageY - _this.touches.startY) > Math.abs( pageX - _this.touches.startX ) ); } if ( typeof isScrolling === 'undefined' && !isH) { isScrolling = !!( isScrolling || Math.abs(pageY - _this.touches.startY) < Math.abs( pageX - _this.touches.startX ) ); } if (isScrolling ) { _this.isTouched = false; return; } //Check For Nested Swipers if (event.assignedToSwiper) { _this.isTouched = false; return; } event.assignedToSwiper = true; //Block inner links if (params.preventLinks) { _this.allowLinks = false; } if (params.onSlideClick) { _this.allowSlideClick = false; } //Stop AutoPlay if exist if (params.autoplay) { _this.stopAutoplay(); } if (!isTouchEvent || event.touches.length == 1) { //Moved Flag if (!_this.isMoved) { _this.callPlugins('onTouchMoveStart'); if (params.loop) { _this.fixLoop(); _this.positions.start = _this.getWrapperTranslate(); } if (params.onTouchMoveStart) _this.fireCallback(params.onTouchMoveStart, _this); } _this.isMoved = true; // cancel event if(event.preventDefault) event.preventDefault(); else event.returnValue = false; _this.touches.current = isH ? pageX : pageY ; _this.positions.current = (_this.touches.current - _this.touches.start) * params.touchRatio + _this.positions.start; //Resistance Callbacks if(_this.positions.current > 0 && params.onResistanceBefore) { _this.fireCallback(params.onResistanceBefore, _this, _this.positions.current); } if(_this.positions.current < -maxWrapperPosition() && params.onResistanceAfter) { _this.fireCallback(params.onResistanceAfter, _this, Math.abs(_this.positions.current + maxWrapperPosition())); } //Resistance if (params.resistance && params.resistance!='100%') { //Resistance for Negative-Back sliding if(_this.positions.current > 0) { var resistance = 1 - _this.positions.current/containerSize/2; if (resistance < 0.5) _this.positions.current = (containerSize/2); else _this.positions.current = _this.positions.current * resistance; } //Resistance for After-End Sliding if ( _this.positions.current < -maxWrapperPosition() ) { var diff = (_this.touches.current - _this.touches.start)*params.touchRatio + (maxWrapperPosition()+_this.positions.start); var resistance = (containerSize+diff)/(containerSize); var newPos = _this.positions.current-diff*(1-resistance)/2; var stopPos = -maxWrapperPosition() - containerSize/2; if (newPos < stopPos || resistance<=0) _this.positions.current = stopPos; else _this.positions.current = newPos; } } if (params.resistance && params.resistance=='100%') { //Resistance for Negative-Back sliding if(_this.positions.current > 0 && !(params.freeMode&&!params.freeModeFluid)) { _this.positions.current = 0; } //Resistance for After-End Sliding if ( (_this.positions.current) < -maxWrapperPosition() && !(params.freeMode&&!params.freeModeFluid)) { _this.positions.current = -maxWrapperPosition(); } } //Move Slides if (!params.followFinger) return; if (!params.moveStartThreshold) { _this.setWrapperTranslate(_this.positions.current); } else { if ( Math.abs(_this.touches.current - _this.touches.start)>params.moveStartThreshold || allowThresholdMove) { allowThresholdMove = true; _this.setWrapperTranslate(_this.positions.current); } else { _this.positions.current = _this.positions.start; } } if (params.freeMode || params.watchActiveIndex) { _this.updateActiveSlide(_this.positions.current); } //Grab Cursor //Grab Cursor if (params.grabCursor) { _this.container.style.cursor = 'move'; _this.container.style.cursor = 'grabbing'; _this.container.style.cursor = '-moz-grabbing'; _this.container.style.cursor = '-webkit-grabbing'; } //Velocity if (!velocityPrevPosition) velocityPrevPosition = _this.touches.current; if (!velocityPrevTime) velocityPrevTime = (new Date).getTime(); _this.velocity = (_this.touches.current - velocityPrevPosition)/((new Date).getTime() - velocityPrevTime)/2; if (Math.abs(_this.touches.current - velocityPrevPosition)<2) _this.velocity=0; velocityPrevPosition = _this.touches.current; velocityPrevTime = (new Date).getTime(); //Callbacks _this.callPlugins('onTouchMoveEnd'); if (params.onTouchMove) _this.fireCallback(params.onTouchMove, _this); return false; } } function onTouchEnd(event) { //Check For scrolling if (isScrolling) { _this.swipeReset(); } // If slider is not touched exit if ( params.onlyExternal || !_this.isTouched ) return; _this.isTouched = false //Return Grab Cursor if (params.grabCursor) { _this.container.style.cursor = 'move'; _this.container.style.cursor = 'grab'; _this.container.style.cursor = '-moz-grab'; _this.container.style.cursor = '-webkit-grab'; } //Check for Current Position if (!_this.positions.current && _this.positions.current!==0) { _this.positions.current = _this.positions.start } //For case if slider touched but not moved if (params.followFinger) { _this.setWrapperTranslate(_this.positions.current); } // TouchEndTime _this.times.end = (new Date()).getTime(); //Difference _this.touches.diff = _this.touches.current - _this.touches.start _this.touches.abs = Math.abs(_this.touches.diff) _this.positions.diff = _this.positions.current - _this.positions.start _this.positions.abs = Math.abs(_this.positions.diff) var diff = _this.positions.diff ; var diffAbs =_this.positions.abs ; var timeDiff = _this.times.end - _this.times.start if(diffAbs < 5 && (timeDiff) < 300 && _this.allowLinks == false) { if (!params.freeMode && diffAbs!=0) _this.swipeReset() //Release inner links if (params.preventLinks) { _this.allowLinks = true; } if (params.onSlideClick) { _this.allowSlideClick = true; } } setTimeout(function () { //Release inner links if (params.preventLinks) { _this.allowLinks = true; } if (params.onSlideClick) { _this.allowSlideClick = true; } }, 100); var maxPosition = maxWrapperPosition(); //Not moved or Prevent Negative Back Sliding/After-End Sliding if (!_this.isMoved && params.freeMode) { _this.isMoved = false; if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this); _this.callPlugins('onTouchEnd'); return; } if (!_this.isMoved || _this.positions.current > 0 || _this.positions.current < -maxPosition) { _this.swipeReset(); if (params.onTouchEnd) _this.fireCallback(params.onTouchEnd, _this); _this.callPlugins('onTouchEnd'); return; } _this.isMoved = false; //Free Mode if (params.freeMode) { if ( params.freeModeFluid ) { var momentumDuration = 1000*params.momentumRatio; var momentumDistance = _this.velocity*momentumDuration; var newPosition = _this.positions.current + momentumDistance var doBounce = false; var afterBouncePosition; var bounceAmount = Math.abs( _this.velocity )*20*params.momentumBounceRatio; if (newPosition < -maxPosition) { if (params.momentumBounce && _this.support.transitions) { if (newPosition + maxPosition < -bounceAmount) newPosition = -maxPosition-bounceAmount; afterBouncePosition = -maxPosition; doBounce=true; allowMomentumBounce = true; } else newPosition = -maxPosition; } if (newPosition > 0) { if (params.momentumBounce && _this.support.transitions) { if (newPosition>bounceAmount) newPosition = bounceAmount; afterBouncePosition = 0 doBounce = true; allowMomentumBounce = true; } else newPosition = 0; } //Fix duration if (_this.velocity!=0) momentumDuration = Math.abs((newPosition - _this.positions.current)/_this.velocity) _this.setWrapperTranslate(newPosition); _this.setWrapperTransition( momentumDuration ); if (params.momentumBounce && doBounce) { _this.wrapperTransitionEnd(function () { if (!allowMomentumBounce) return; if (params.onMomentumBounce) params.onMomentumBounce(_this); _this.setWrapperTranslate(afterBouncePosition); _this.setWrapperTransition(300); }) } _this.updateActiveSlide(newPosition) } if (!params.freeModeFluid || timeDiff >= 300) _this.updateActiveSlide(_this.positions.current) if (params.onTouchEnd) params.onTouchEnd(_this) _this.callPlugins('onTouchEnd'); return; } //Direction direction = diff < 0 ? "toNext" : "toPrev" //Short Touches if (direction=="toNext" && ( timeDiff <= 300 ) ) { if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset() else _this.swipeNext(true); } if (direction=="toPrev" && ( timeDiff <= 300 ) ) { if (diffAbs < 30 || !params.shortSwipes) _this.swipeReset() else _this.swipePrev(true); } //Long Touches var targetSlideSize = 0; if(params.slidesPerView == 'auto') { //Define current slide's width var currentPosition = Math.abs(_this.getWrapperTranslate()); var slidesOffset = 0; var _slideSize; for (var i=0; i<_this.slides.length; i++) { _slideSize = isH ? _this.slides[i].getWidth(true) : _this.slides[i].getHeight(true); slidesOffset+= _slideSize; if (slidesOffset>currentPosition) { targetSlideSize = _slideSize; break; } } if (targetSlideSize>containerSize) targetSlideSize = containerSize; } else { targetSlideSize = slideSize * params.slidesPerView; } if (direction=="toNext" && ( timeDiff > 300 ) ) { if (diffAbs >= targetSlideSize*0.5) { _this.swipeNext(true) } else { _this.swipeReset() } } if (direction=="toPrev" && ( timeDiff > 300 ) ) { if (diffAbs >= targetSlideSize*0.5) { _this.swipePrev(true); } else { _this.swipeReset() } } if (params.onTouchEnd) params.onTouchEnd(_this) _this.callPlugins('onTouchEnd'); } /*================================================== noSwiping Bubble Check by Isaac Strack ====================================================*/ function noSwipingSlide(el){ /*This function is specifically designed to check the parent elements for the noSwiping class, up to the wrapper. We need to check parents because while onTouchStart bubbles, _this.isTouched is checked in onTouchStart, which stops the bubbling. So, if a text box, for example, is the initial target, and the parent slide container has the noSwiping class, the _this.isTouched check will never find it, and what was supposed to be noSwiping is able to be swiped. This function will iterate up and check for the noSwiping class in parents, up through the wrapperClass.*/ // First we create a truthy variable, which is that swiping is allowd (noSwiping = false) var noSwiping = false; // Now we iterate up (parentElements) until we reach the node with the wrapperClass. do{ // Each time, we check to see if there's a 'swiper-no-swiping' class (noSwipingClass). if (el.className.indexOf(params.noSwipingClass)>-1) { noSwiping = true; // If there is, we set noSwiping = true; } el = el.parentElement; // now we iterate up (parent node) } while(!noSwiping && el.parentElement && el.className.indexOf(params.wrapperClass)==-1); // also include el.parentElement truthy, just in case. // because we didn't check the wrapper itself, we do so now, if noSwiping is false: if (!noSwiping && el.className.indexOf(params.wrapperClass)>-1 && el.className.indexOf(params.noSwipingClass)>-1) noSwiping = true; // if the wrapper has the noSwipingClass, we set noSwiping = true; return noSwiping; } /*================================================== Swipe Functions ====================================================*/ _this.swipeNext = function(internal){ if (!internal && params.loop) _this.fixLoop(); _this.callPlugins('onSwipeNext'); var currentPosition = _this.getWrapperTranslate(); var newPosition = currentPosition; if (params.slidesPerView=='auto') { for (var i=0; i<_this.snapGrid.length; i++) { if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) { newPosition = -_this.snapGrid[i+1] break; } } } else { var groupSize = slideSize * params.slidesPerGroup; newPosition = -(Math.floor(Math.abs(currentPosition)/Math.floor(groupSize))*groupSize + groupSize); } if (newPosition < - maxWrapperPosition()) { newPosition = - maxWrapperPosition() }; if (newPosition == currentPosition) return false; swipeToPosition(newPosition, 'next'); return true } _this.swipePrev = function(internal){ if (!internal && params.loop) _this.fixLoop(); if (!internal && params.autoplay) _this.stopAutoplay(); _this.callPlugins('onSwipePrev'); var currentPosition = Math.ceil(_this.getWrapperTranslate()); var newPosition; if (params.slidesPerView=='auto') { newPosition = 0; for (var i=1; i<_this.snapGrid.length; i++) { if (-currentPosition == _this.snapGrid[i]) { newPosition = -_this.snapGrid[i-1] break; } if (-currentPosition > _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) { newPosition = -_this.snapGrid[i] break; } } } else { var groupSize = slideSize * params.slidesPerGroup; newPosition = -(Math.ceil(-currentPosition/groupSize)-1)*groupSize; } if (newPosition > 0) newPosition = 0; if (newPosition == currentPosition) return false; swipeToPosition(newPosition, 'prev'); return true; } _this.swipeReset = function(){ _this.callPlugins('onSwipeReset'); var currentPosition = _this.getWrapperTranslate(); var groupSize = slideSize * params.slidesPerGroup; var newPosition; var maxPosition = -maxWrapperPosition(); if (params.slidesPerView=='auto') { newPosition = 0; for (var i=0; i<_this.snapGrid.length; i++) { if (-currentPosition===_this.snapGrid[i]) return; if (-currentPosition >= _this.snapGrid[i] && -currentPosition<_this.snapGrid[i+1]) { if(_this.positions.diff>0) newPosition = -_this.snapGrid[i+1] else newPosition = -_this.snapGrid[i] break; } } if (-currentPosition >= _this.snapGrid[_this.snapGrid.length-1]) newPosition = -_this.snapGrid[_this.snapGrid.length-1]; if (currentPosition <= -maxWrapperPosition()) newPosition = -maxWrapperPosition() } else { newPosition = currentPosition<0 ? Math.round(currentPosition/groupSize)*groupSize : 0 } if (params.scrollContainer) { newPosition = currentPosition<0 ? currentPosition : 0; } if (newPosition < -maxWrapperPosition()) { newPosition = -maxWrapperPosition() } if (params.scrollContainer && (containerSize>slideSize)) { newPosition = 0; } if (newPosition == currentPosition) return false; swipeToPosition(newPosition, 'reset'); return true; } _this.swipeTo = function(index, speed, runCallbacks) { index = parseInt(index, 10); _this.callPlugins('onSwipeTo', {index:index, speed:speed}); if (params.loop) index = index + _this.loopedSlides; var currentPosition = _this.getWrapperTranslate(); if (index > (_this.slides.length-1) || index < 0) return; var newPosition if (params.slidesPerView=='auto') { newPosition = -_this.slidesGrid[ index ]; } else { newPosition = -index*slideSize; } if (newPosition < - maxWrapperPosition()) { newPosition = - maxWrapperPosition(); }; if (newPosition == currentPosition) return false; runCallbacks = runCallbacks===false ? false : true; swipeToPosition(newPosition, 'to', {index:index, speed:speed, runCallbacks:runCallbacks}); return true; } function swipeToPosition(newPosition, action, toOptions) { var speed = (action=='to' && toOptions.speed >= 0) ? toOptions.speed : params.speed; var timeOld = + new Date(); if (_this.support.transitions || !params.DOMAnimation) { _this.setWrapperTranslate(newPosition); _this.setWrapperTransition(speed); } else { //Try the DOM animation var currentPosition = _this.getWrapperTranslate(); var animationStep = Math.ceil( (newPosition - currentPosition)/speed*(1000/60) ); var direction = currentPosition > newPosition ? 'toNext' : 'toPrev'; var condition = direction=='toNext' ? currentPosition > newPosition : currentPosition < newPosition; if (_this._DOMAnimating) return; anim(); } function anim(){ var timeNew = + new Date(); var time = timeNew - timeOld; currentPosition += animationStep * time / (1000/60); condition = direction=='toNext' ? currentPosition > newPosition : currentPosition < newPosition; if (condition) { _this.setWrapperTranslate(Math.round(currentPosition)); _this._DOMAnimating = true window.setTimeout(function(){ anim() }, 1000 / 60) } else { if (params.onSlideChangeEnd) _this.fireCallback(params.onSlideChangeEnd, _this); _this.setWrapperTranslate(newPosition); _this._DOMAnimating = false; } } //Update Active Slide Index _this.updateActiveSlide(newPosition); //Callbacks if (params.onSlideNext && action=='next') { _this.fireCallback(params.onSlideNext, _this, newPosition); } if (params.onSlidePrev && action=='prev') { _this.fireCallback(params.onSlidePrev, _this, newPosition); } //"Reset" Callback if (params.onSlideReset && action=='reset') { _this.fireCallback(params.onSlideReset, _this, newPosition); } //"Next", "Prev" and "To" Callbacks if (action=='next' || action=='prev' || (action=='to' && toOptions.runCallbacks==true)) slideChangeCallbacks(action); } /*================================================== Transition Callbacks ====================================================*/ //Prevent Multiple Callbacks _this._queueStartCallbacks = false; _this._queueEndCallbacks = false; function slideChangeCallbacks(direction) { //Transition Start Callback _this.callPlugins('onSlideChangeStart'); if (params.onSlideChangeStart) { if (params.queueStartCallbacks && _this.support.transitions) { if (_this._queueStartCallbacks) return; _this._queueStartCallbacks = true; _this.fireCallback(params.onSlideChangeStart, _this, direction) _this.wrapperTransitionEnd(function(){ _this._queueStartCallbacks = false; }) } else _this.fireCallback(params.onSlideChangeStart, _this, direction) } //Transition End Callback if (params.onSlideChangeEnd) { if (_this.support.transitions) { if (params.queueEndCallbacks) { if (_this._queueEndCallbacks) return; _this._queueEndCallbacks = true; _this.wrapperTransitionEnd(function(swiper){ setTimeout(function(){ if (params.loop) _this.fixLoop(); },50); _this.fireCallback(params.onSlideChangeEnd, swiper, direction) }) } else _this.wrapperTransitionEnd(function(swiper){ setTimeout(function(){ if (params.loop) _this.fixLoop(); },50); _this.fireCallback(params.onSlideChangeEnd, swiper, direction) }) } else { if (!params.DOMAnimation) { setTimeout(function(){ _this.fireCallback(params.onSlideChangeStart, _this, direction) },10) } } } } /*================================================== Update Active Slide Index ====================================================*/ _this.updateActiveSlide = function(position) { if (!_this.initialized) return; if (_this.slides.length==0) return; _this.previousIndex = _this.activeIndex; if (typeof position=='undefined') position = _this.getWrapperTranslate(); if (position>0) position=0; if (params.slidesPerView == 'auto') { var slidesOffset = 0; _this.activeIndex = _this.slidesGrid.indexOf(-position); if (_this.activeIndex<0) { for (var i=0; i<_this.slidesGrid.length-1; i++) { if (-position>_this.slidesGrid[i] && -position<_this.slidesGrid[i+1]) { break; } } var leftDistance = Math.abs( _this.slidesGrid[i] + position ) var rightDistance = Math.abs( _this.slidesGrid[i+1] + position ) if (leftDistance<=rightDistance) _this.activeIndex = i; else _this.activeIndex = i+1; } } else { _this.activeIndex = Math[params.visibilityFullFit ? 'ceil' : 'round']( -position/slideSize ); } if (_this.activeIndex == _this.slides.length ) _this.activeIndex = _this.slides.length - 1; if (_this.activeIndex < 0) _this.activeIndex = 0; // Check for slide if (!_this.slides[_this.activeIndex]) return; // Calc Visible slides _this.calcVisibleSlides(position); // Mark visible and active slides with additonal classes var activeClassRegexp = new RegExp( "\\s*" + params.slideActiveClass ); var inViewClassRegexp = new RegExp( "\\s*" + params.slideVisibleClass ); for (var i = 0; i < _this.slides.length; i++) { _this.slides[ i ].className = _this.slides[ i ].className.replace( activeClassRegexp, '' ).replace( inViewClassRegexp, '' ); if ( _this.visibleSlides.indexOf( _this.slides[ i ] )>=0 ) { _this.slides[ i ].className += ' ' + params.slideVisibleClass; } } _this.slides[ _this.activeIndex ].className += ' ' + params.slideActiveClass; //Update loop index if (params.loop) { var ls = _this.loopedSlides; _this.activeLoopIndex = _this.activeIndex - ls; if (_this.activeLoopIndex >= _this.slides.length - ls*2 ) { _this.activeLoopIndex = _this.slides.length - ls*2 - _this.activeLoopIndex; } if (_this.activeLoopIndex<0) { _this.activeLoopIndex = _this.slides.length - ls*2 + _this.activeLoopIndex; } } else { _this.activeLoopIndex = _this.activeIndex; } //Update Pagination if (params.pagination) { _this.updatePagination(position); } } /*================================================== Pagination ====================================================*/ _this.createPagination = function (firstInit) { if (params.paginationClickable && _this.paginationButtons) { removePaginationEvents(); } var paginationHTML = ""; var numOfSlides = _this.slides.length; var numOfButtons = numOfSlides; if (params.loop) numOfButtons -= _this.loopedSlides*2 for (var i = 0; i < numOfButtons; i++) { paginationHTML += '<'+params.paginationElement+' class="'+params.paginationElementClass+'">' } _this.paginationContainer = params.pagination.nodeType ? params.pagination : $$(params.pagination)[0]; _this.paginationContainer.innerHTML = paginationHTML; _this.paginationButtons = $$('.'+params.paginationElementClass, _this.paginationContainer); if (!firstInit) _this.updatePagination() _this.callPlugins('onCreatePagination'); if (params.paginationClickable) { addPaginationEvents(); } } function removePaginationEvents() { var pagers = _this.paginationButtons; for (var i=0; i=_this.slides.length-_this.loopedSlides*2) { visIndex = _this.slides.length - _this.loopedSlides*2 - visIndex; visIndex = Math.abs(visIndex) } visibleIndexes.push( visIndex ) } for (i=0; i0) position = position+_this.wrapperLeft; if (!isH && _this.wrapperTop>0) position = position+_this.wrapperTop; for (var i=0; i<_this.slides.length; i++) { _slideLeft += _slideSize; if (params.slidesPerView == 'auto') _slideSize = isH ? _this.h.getWidth(_this.slides[i],true) : _this.h.getHeight(_this.slides[i],true); else _slideSize = slideSize; _slideRight = _slideLeft + _slideSize; var isVisibile = false; if (params.visibilityFullFit) { if (_slideLeft >= -position && _slideRight <= -position+containerSize) isVisibile = true; if (_slideLeft <= -position && _slideRight >= -position+containerSize) isVisibile = true; } else { if (_slideRight > -position && _slideRight <= ((-position+containerSize))) isVisibile = true; if (_slideLeft >= -position && _slideLeft < ((-position+containerSize))) isVisibile = true; if (_slideLeft < -position && _slideRight > ((-position+containerSize))) isVisibile = true; } if (isVisibile) visibleSlides.push(_this.slides[i]) } if (visibleSlides.length==0) visibleSlides = [ _this.slides[ _this.activeIndex ] ] _this.visibleSlides = visibleSlides; } /*========================================== Autoplay ============================================*/ _this.autoPlayIntervalId = undefined; _this.startAutoplay = function () { if (typeof _this.autoPlayIntervalId !== 'undefined') return false; if (params.autoplay && !params.loop) { _this.autoPlayIntervalId = setInterval(function(){ if (!_this.swipeNext(true)) _this.swipeTo(0); }, params.autoplay) } if (params.autoplay && params.loop) { _this.autoPlayIntervalId = setInterval(function(){ _this.swipeNext(); }, params.autoplay) } _this.callPlugins('onAutoplayStart'); } _this.stopAutoplay = function () { if (_this.autoPlayIntervalId) clearInterval(_this.autoPlayIntervalId); _this.autoPlayIntervalId = undefined; _this.callPlugins('onAutoplayStop'); } /*================================================== Loop ====================================================*/ _this.loopCreated = false; _this.removeLoopedSlides = function(){ if (_this.loopCreated) { for (var i=0; i<_this.slides.length; i++) { if (_this.slides[i].getData('looped')===true) _this.wrapper.removeChild(_this.slides[i]); } } } _this.createLoop = function() { if (_this.slides.length==0) return; _this.loopedSlides = params.slidesPerView + params.loopAdditionalSlides; if (_this.loopedSlides > _this.slides.length) { _this.loopedSlides = _this.slides.length; } var slideFirstHTML = '', slideLastHTML = '', i; //Grab First Slides for (i=0; i<_this.loopedSlides; i++) { slideFirstHTML += _this.slides[i].outerHTML; } //Grab Last Slides for (i=_this.slides.length-_this.loopedSlides; i<_this.slides.length; i++) { slideLastHTML += _this.slides[i].outerHTML; } wrapper.innerHTML = slideLastHTML + wrapper.innerHTML + slideFirstHTML; _this.loopCreated = true; _this.calcSlides(); //Update Looped Slides with special class for (i=0; i<_this.slides.length; i++) { if (i<_this.loopedSlides || i>=_this.slides.length-_this.loopedSlides) _this.slides[i].setData('looped', true); } _this.callPlugins('onCreateLoop'); } _this.fixLoop = function() { if(_this.params.loop == true) { var newIndex; //Fix For Negative Oversliding if (_this.activeIndex < _this.loopedSlides) { newIndex = _this.slides.length - _this.loopedSlides*3 + _this.activeIndex; _this.swipeTo(newIndex, 0, false); } //Fix For Positive Oversliding else if (_this.activeIndex > _this.slides.length - params.slidesPerView*2) { newIndex = -_this.slides.length + _this.activeIndex + _this.loopedSlides _this.swipeTo(newIndex, 0, false); } } } /*================================================== Slides Loader ====================================================*/ _this.loadSlides = function(){ var slidesHTML = ''; _this.activeLoaderIndex = 0; var slides = params.loader.slides; var slidesToLoad = params.loader.loadAllSlides ? slides.length : params.slidesPerView*(1+params.loader.surroundGroups); for (var i=0; i< slidesToLoad; i++) { if (params.loader.slidesHTMLType=='outer') slidesHTML+=slides[i]; else { slidesHTML+='<'+params.slideElement+' class="'+params.slideClass+'" data-swiperindex="'+i+'">'+slides[i]+''; } } _this.wrapper.innerHTML = slidesHTML; _this.calcSlides(true); //Add permanent transitionEnd callback if (!params.loader.loadAllSlides) { _this.wrapperTransitionEnd(_this.reloadSlides, true); } } _this.reloadSlides = function(){ var slides = params.loader.slides; var newActiveIndex = parseInt(_this.activeSlide().data('swiperindex'),10) if (newActiveIndex<0 || newActiveIndex>slides.length-1) return //<-- Exit _this.activeLoaderIndex = newActiveIndex; var firstIndex = Math.max(0, newActiveIndex - params.slidesPerView*params.loader.surroundGroups) var lastIndex = Math.min(newActiveIndex+params.slidesPerView*(1+params.loader.surroundGroups)-1, slides.length-1) //Update Transforms if (newActiveIndex>0) { var newTransform = -slideSize*(newActiveIndex-firstIndex) _this.setWrapperTranslate(newTransform); _this.setWrapperTransition(0); } //New Slides if (params.loader.logic==='reload') { _this.wrapper.innerHTML = ''; var slidesHTML = ''; for (var i = firstIndex; i<=lastIndex; i++) { slidesHTML += params.loader.slidesHTMLType == 'outer' ? slides[i] : '<'+params.slideElement+' class="'+params.slideClass+'" data-swiperindex="'+i+'">'+slides[i]+''; } _this.wrapper.innerHTML = slidesHTML; } else { var minExistIndex=1000; var maxExistIndex=0; for (var i=0; i<_this.slides.length; i++) { var index = _this.slides[i].data('swiperindex'); if (indexlastIndex) { _this.wrapper.removeChild(_this.slides[i]); } else { minExistIndex = Math.min(index, minExistIndex) maxExistIndex = Math.max(index, maxExistIndex) } } for (var i=firstIndex; i<=lastIndex; i++) { if (imaxExistIndex) { var newSlide = document.createElement(params.slideElement); newSlide.className = params.slideClass; newSlide.setAttribute('data-swiperindex',i); newSlide.innerHTML = slides[i]; _this.wrapper.appendChild(newSlide); } } } //reInit _this.reInit(true); } /*================================================== Make Swiper ====================================================*/ function makeSwiper(){ _this.calcSlides(); if (params.loader.slides.length>0 && _this.slides.length==0) { _this.loadSlides(); } if (params.loop) { _this.createLoop(); } _this.init(); initEvents(); if (params.pagination && params.createPagination) { _this.createPagination(true); } if (params.loop || params.initialSlide>0) { _this.swipeTo( params.initialSlide, 0, false ); } else { _this.updateActiveSlide(0); } if (params.autoplay) { _this.startAutoplay(); } } makeSwiper(); } Swiper.prototype = { plugins : {}, /*================================================== Wrapper Operations ====================================================*/ wrapperTransitionEnd : function(callback, permanent) { var a = this, el = a.wrapper, events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], i; function fireCallBack() { callback(a); if (a.params.queueEndCallbacks) a._queueEndCallbacks = false; if (!permanent) { for (i=0; i0) { returnWidth = el.offsetWidth - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right')); } if (outer) returnWidth += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-right')) return returnWidth; }, getHeight: function(el, outer) { if (outer) return el.offsetHeight; var height = window.getComputedStyle(el, null).getPropertyValue('height') var returnHeight = parseFloat(height); //IE Fixes if(isNaN(returnHeight) || height.indexOf('%')>0) { returnHeight = el.offsetHeight - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) - parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom')); } if (outer) returnHeight += parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue('padding-bottom')) return returnHeight; }, getOffset: function(el) { var box = el.getBoundingClientRect(); var body = document.body; var clientTop = el.clientTop || body.clientTop || 0; var clientLeft = el.clientLeft || body.clientLeft || 0; var scrollTop = window.pageYOffset || el.scrollTop; var scrollLeft = window.pageXOffset || el.scrollLeft; if (document.documentElement && !window.pageYOffset) { //IE7-8 scrollTop = document.documentElement.scrollTop; scrollLeft = document.documentElement.scrollLeft; } return { top: box.top + scrollTop - clientTop, left: box.left + scrollLeft - clientLeft }; }, windowWidth : function() { if (window.innerWidth) return window.innerWidth else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth; }, windowHeight : function() { if (window.innerHeight) return window.innerHeight else if (document.documentElement && document.documentElement.clientHeight) return document.documentElement.clientHeight; }, windowScroll : function() { var left=0, top=0; if (typeof pageYOffset != 'undefined') { return { left: window.pageXOffset, top: window.pageYOffset } } else if (document.documentElement) { return { left: document.documentElement.scrollLeft, top: document.documentElement.scrollTop } } }, addEventListener : function (el, event, listener, useCapture) { if (typeof useCapture == 'undefined') { useCapture = false; } if (el.addEventListener) { el.addEventListener(event, listener, useCapture); } else if (el.attachEvent) { el.attachEvent('on' + event, listener); } }, removeEventListener : function (el, event, listener, useCapture) { if (typeof useCapture == 'undefined') { useCapture = false; } if (el.removeEventListener) { el.removeEventListener(event, listener, useCapture); } else if (el.detachEvent) { el.detachEvent('on' + event, listener); } } }, setTransform : function (el, transform) { var es = el.style es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transform }, setTranslate : function (el, translate) { var es = el.style var pos = { x : translate.x || 0, y : translate.y || 0, z : translate.z || 0 }; var transformString = this.support.transforms3d ? 'translate3d('+(pos.x)+'px,'+(pos.y)+'px,'+(pos.z)+'px)' : 'translate('+(pos.x)+'px,'+(pos.y)+'px)'; es.webkitTransform = es.MsTransform = es.msTransform = es.MozTransform = es.OTransform = es.transform = transformString; if (!this.support.transforms) { es.left = pos.x+'px' es.top = pos.y+'px' } }, setTransition : function (el, duration) { var es = el.style es.webkitTransitionDuration = es.MsTransitionDuration = es.msTransitionDuration = es.MozTransitionDuration = es.OTransitionDuration = es.transitionDuration = duration+'ms'; }, /*================================================== Feature Detection ====================================================*/ support: { touch : (window.Modernizr && Modernizr.touch===true) || (function() { return !!(("ontouchstart" in window) || window.DocumentTouch && document instanceof DocumentTouch); })(), transforms3d : (window.Modernizr && Modernizr.csstransforms3d===true) || (function() { var div = document.createElement('div').style; return ("webkitPerspective" in div || "MozPerspective" in div || "OPerspective" in div || "MsPerspective" in div || "perspective" in div); })(), transforms : (window.Modernizr && Modernizr.csstransforms===true) || (function(){ var div = document.createElement('div').style; return ('transform' in div || 'WebkitTransform' in div || 'MozTransform' in div || 'msTransform' in div || 'MsTransform' in div || 'OTransform' in div); })(), transitions : (window.Modernizr && Modernizr.csstransitions===true) || (function(){ var div = document.createElement('div').style; return ('transition' in div || 'WebkitTransition' in div || 'MozTransition' in div || 'msTransition' in div || 'MsTransition' in div || 'OTransition' in div); })() }, browser : { ie8 : (function(){ var rv = -1; // Return value assumes failure. if (navigator.appName == 'Microsoft Internet Explorer') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat(RegExp.$1); } return rv != -1 && rv < 9; })(), ie10 : window.navigator.msPointerEnabled } } /*========================= jQuery & Zepto Plugins ===========================*/ if (window.jQuery||window.Zepto) { (function($){ if(!jQuery().swiper) { $.fn.swiper = function(params) { var s = new Swiper($(this)[0], params) $(this).data('swiper',s); return s; } } })(window.jQuery||window.Zepto) } // component if ( typeof( module ) !== 'undefined' ) { module.exports = Swiper; } } /* * Swiper Smooth Progress 1.1.0 * Smooth progress plugin for Swiper * * http://www.idangero.us/sliders/swiper/plugins/progress.php * * Copyright 2010-2014, Vladimir Kharlampidi * The iDangero.us * http://www.idangero.us/ * * Licensed under GPL & MIT * * Released on: January 29, 2014 */ Swiper.prototype.plugins.progress=function(a){function b(){for(var b=0;b 0) { if($('#page-header-bg').length == 0) { $('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').addClass('not-loaded'); if($('.container-wrap .main-content > .row > div').find('.nectar-slider-wrap.first-section').length > 0) { $('.container-wrap .main-content > .row > div').first().css('padding-top','0'); } $('body #header-outer[data-transparent-header="true"] .ns-loading-cover').show(); if($('#header-outer[data-remove-border="true"]').length == 0) { //if not using flexible/fullscreen height - calculate the loading / bg pos early (if using the option calculates later) if($('.first-section .nectar-slider-wrap[data-flexible-height="true"]').length == 0 && $('.first-section .nectar-slider-wrap[data-fullscreen="true"]').length == 0) { $('.first-section .nectar-slider-loading').css({ 'top': $('#header-space').height(), 'background-position' : 'center ' + ((($('.first-section .swiper-container').height()/2) + 15) - $('#header-space').height()) +'px' }); $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({ 'opacity' : '1', 'height' : $('.first-section .swiper-container').height() - $('#header-space').height() + 'px' }); } else { var $loading_bg_storage = $('.first-section .nectar-slider-loading').css('background-image'); $('.first-section .nectar-slider-loading').css({ 'top': $('#header-space').height(), 'background-image': 'none' }); } } } } } transparentheaderLoadingCalcs(); //move parallax sliders to correct dom location var parallaxSlider = $('.parallax_slider_outer.first-section'); //ajaxify $(window).on("pronto.request", function(){ //remove window resize events $(window).off('resize.nsSliderContent'); $(window).off('resize.dynamicHeights'); $(window).off('resize.nsHeightUpdate'); //clear all autoplay intervals $('.nectar-slider-wrap').each(function(){ if($(this).attr('data-autorotate') && $(this).attr('data-autorotate').length > 1) { var $autoplayVal = $('#'+$(this).attr('id')).attr('data-autorotate'); if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) { clearInterval(autoplay[$('#'+$(this).attr('id')).attr('autoplay-id')]); } } }); }); $(window).on("pronto.render", function(){ if($('.nectar-slider-wrap').length > 0){ $(window).on('resize.nsSliderContent', nsSliderContentResize); parallaxSlider = $('.parallax_slider_outer.first-section'); $(window).unbind('resize.nsHeightUpdate'); transparentheaderLoadingCalcs(); ////remove parallax if using page header on projects/posts if($('body.single #page-header-bg').length > 0) $('.parallax_slider_outer').removeClass('parallax_slider_outer').addClass('no-left-margin'); parallaxSliderPos(); nectarSliderMainInit(); setTimeout(function(){ initialSlideLoad(); dynamicHeightSliders(); $(window).on('resize.dynamicHeights', dynamicHeightSliders); sliderSize(); resizeToCover(); autorotateInit(); parallaxCheck(); sliderbuttonHoverEffect(); },150); } }); //pronto render function parallaxSliderPos(){ if(parallaxSlider.parent().attr('class') == 'wpb_wrapper') { //give the slider the custom row ID if assigned if(parallaxSlider.parents('.wpb_row').length > 0) { if(parallaxSlider.parents('.wpb_row').not('[id^="fws_"]').length > 0) parallaxSlider.attr('id',parallaxSlider.parents('.wpb_row').attr('id')); } //remove the row parallaxSlider.parents('.wpb_row').remove(); } //alter the DOM pos parallaxSlider.insertBefore('.container-wrap'); } ////remove parallax if using page header on projects/posts if($('body.single #page-header-bg').length > 0) $('.parallax_slider_outer').removeClass('parallax_slider_outer').addClass('no-left-margin'); parallaxSliderPos(); //initial cals var $smoothSrollWidth = ($('body').attr('data-smooth-scrolling') == '1') ? 0 : 0; /*========================= Begin Nectar Slider Main Construction ===========================*/ var $nectarSliders = []; function nectarSliderMainInit() { $nectarSliders = []; //remove boxed full width attr when not needed $('.nectar-slider-wrap[data-full-width="boxed-full-width"]').each(function(){ if($(this).parents('.wpb_column').length > 0 && $(this).parents('.full-width-content').length > 0) $(this).attr('data-full-width','false') }); if($('body > #boxed').length == 0 && $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') != 'portfolio-extra' && $('.nectar-slider-wrap[data-full-width="true"]').parents('#post-area:not(".span_12")').length == 0){ $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px'; $('.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',$(window).width()); } else if( $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') == 'portfolio-extra' && $('#full_width_portfolio').length != 0){ $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px'; $('.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',$(window).width()); } else { var $container = ($('body > #boxed').length == 0) ? '#post-area' : '.container-wrap'; //backup incase only slider is used with nothing else in boxed mode if($($container).width() == '0' && $('body > #boxed').length > 0) $container = '#boxed'; $('.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()); } //show slider once full width calcs have taken place $('.nectar-slider-wrap').show(); //set bg colors / textures after js has made the slider fullwidth $('.swiper-container, .swiper-slide').css('background-color','#000'); $('.video-texture').css('opacity','1'); $('.nectar-slider-wrap').each(function(i){ var $arrows = $(this).find('.swiper-container').attr('data-arrows'); var $bullets = $(this).find('.swiper-container').attr('data-bullets'); var $swipe = $(this).find('.swiper-container').attr('data-desktop-swipe'); var $loop = $(this).find('.swiper-container').attr('data-loop'); //swipe if($swipe == 'true' && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 && $(this).attr('data-overall_style') != 'directional' ){ var $grab = 1; var $desktopSwipe = 1; } else { var $grab = 0; var $desktopSwipe = 0; } ////set swipe as true for mobile if($('body').hasClass('mobile') && $(this).attr('data-overall_style') != 'directional') $desktopSwipe = 1; //bullets if($bullets == 'true' && $(this).find('.swiper-wrapper > div').length > 1 && $(this).attr('data-overall_style') != 'directional' ){ $bullets = '#'+$(this).attr('id')+' .slider-pagination'; } else { $bullets = null; } //loop $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; if($useLoop == false) $(this).find('.swiper-container').attr('data-loop','false'); //obj config if($(this).attr('data-transition') == 'fade' && $(this).attr('data-overall_style') != 'directional' && $(this).attr('data-button-styling') != 'btn_with_preview'){ var progressVar = true; var touchRatio = 1.3; $sliderOptions = { loop: $useLoop, grabCursor: $grab, touchRatio: touchRatio, speed: 900, pagination : $bullets, simulateTouch: $desktopSwipe, onSlideChangeEnd: captionTransition, onTouchEnd: captionTransition, onSlideChangeStart: onChangeStart, onTouchMove: clearAutoplay, onFirstInit: nectarInit, progress: progressVar, onProgressChange: function(swiper){ for (var i = 0; i < swiper.slides.length; i++){ var slide = swiper.slides[i]; var progress = slide.progress; var translate = progress*swiper.width; var opacity = 1 - Math.min(Math.abs(progress),1); slide.style.opacity = opacity; swiper.setTransform(slide,'translate3d('+translate+'px,0,0)'); } }, onTouchStart: function(swiper){ for (var i = 0; i < swiper.slides.length; i++){ swiper.setTransition(swiper.slides[i], 0); } }, onSetWrapperTransition: function(swiper, speed) { for (var i = 0; i < swiper.slides.length; i++){ swiper.setTransition(swiper.slides[i], speed); } } } } else { var touchRatio = 0.6; $sliderOptions = { loop: $useLoop, grabCursor: $grab, touchRatio: touchRatio, speed: 550, useCSS3Transforms: false, pagination : $bullets, simulateTouch: $desktopSwipe, onSlideChangeEnd: captionTransition, onSlideChangeStart: onChangeStart, onTouchMove: clearAutoplay, onFirstInit: nectarInit } } $nectarSliders[i] = new Swiper('#'+$(this).attr('id')+' .swiper-container', $sliderOptions); $nectarSliders[i].swipeReset(); //webkit looped slider first video fix if(navigator.userAgent.indexOf('Chrome') > 0) { if( jQuery(this).find('.swiper-slide:nth-child(2) video').length > 0 && jQuery(this).find('.swiper-container').attr('data-loop') == 'true') { var webmSource = jQuery(this).find('.swiper-slide:nth-child(2) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000); var firstVideo = jQuery(this).find('.swiper-slide:nth-child(2) video').get(0); firstVideo.src = webmSource; firstVideo.load(); var webmSource2 = jQuery(this).find('.swiper-slide:last-child video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000); var lastVideo = jQuery(this).find('.swiper-slide:last-child video').get(0); lastVideo.src = webmSource2; lastVideo.load(); } if( jQuery(this).find('.swiper-slide:eq(-2) video').length > 0 && jQuery(this).find('.swiper-container').attr('data-loop') == 'true') { var webmSource = jQuery(this).find('.swiper-slide:eq(-2) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000); var firstVideo = jQuery(this).find('.swiper-slide:eq(-2) video').get(0); firstVideo.src = webmSource; firstVideo.load(); var webmSource2 = jQuery(this).find('.swiper-slide:nth-child(1) video source[type="video/webm"]').attr('src') + "?id="+Math.ceil(Math.random()*10000); var lastVideo = jQuery(this).find('.swiper-slide:nth-child(1) video').get(0); lastVideo.src = webmSource2; lastVideo.load(); } } //Navigation arrows ////default arrows if($arrows == 'true' && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 && $('#'+$(this).attr('id') + '.nectar-slider-wrap[data-button-styling="btn_with_preview"]').length == 0 && $('#'+$(this).attr('id') + '.nectar-slider-wrap[data-overall_style="directional"]').length == 0 ){ $('.slide-count i').transition({ scale: 0.5, opacity: 0 }); //hover event $('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"] .swiper-container .slider-next',function(){ $(this).find('.slide-count i').clearQueue().stop(true,true).delay(110).transition({ scale: 1, opacity: 1 },200); $(this).stop(true,true).animate({ 'width' : '100px' },300,'easeOutCubic'); $(this).find('.slide-count span').clearQueue().stop().delay(100).animate({ 'opacity' : '1' },225,'easeOutCubic'); }); $('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"] .swiper-container .slider-next',function(){ $('.slide-count i').stop(true,true).transition({ scale: 0, opacity: 0 },200); $(this).stop().delay(150).animate({ 'width' : '50px' },300,'easeOutCubic'); $(this).find('.slide-count span').stop(true,true).animate({ 'opacity' : '0' },200,'easeOutCubic'); }); //add slide counts 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; //ie8 if($('html').hasClass('no-video')) $slideCount = $('#'+$(this).attr('id') + ' .swiper-wrapper > div').length; $('#'+$(this).attr('id')+' .slider-prev .slide-count .slide-total').html( $slideCount ); $('#'+$(this).attr('id')+' .slider-next .slide-count .slide-total').html( $slideCount ); //prev function prevArrowAnimation(e) { if($(this).hasClass('inactive')) return false; var $that = $(this); //non looped slider if($(this).parents('.swiper-container').attr('data-loop') != 'true') { if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == 1 && !$('html').hasClass('no-video')){ //make sure the animation is complete var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,700); if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') { $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','none').animate({ 'left' : parseInt($(this).parents('.swiper-container').find('.swiper-wrapper').css('left')) + 20 },200,function(){ $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','left,top'); $nectarSliders[i].swipeReset(); }); } $(this).addClass('inactive'); } } e.preventDefault(); $nectarSliders[i].swipePrev(); if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') == 'fade') { var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,800); $(this).addClass('inactive'); } } $('body').off('click','#'+$(this).attr('id')+' .slider-prev',prevArrowAnimation); $('body').on('click','#'+$(this).attr('id')+' .slider-prev',prevArrowAnimation); function nextArrowAnimation(e) { if($(this).hasClass('inactive')) return false; var $that = $(this); var $slideNum = $(this).parents('.swiper-container').find('.swiper-wrapper > div').length; //non looped slider if($(this).parents('.swiper-container').attr('data-loop') != 'true') { if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == $slideNum && !$('html').hasClass('no-video')) { //make sure the animation is complete var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,700); if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') { $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','none').animate({ 'left' : parseInt($(this).parents('.swiper-container').find('.swiper-wrapper').css('left')) - 20 },200,function(){ $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','left,top'); $nectarSliders[i].swipeReset(); }); } $(this).addClass('inactive'); } } e.preventDefault(); $nectarSliders[i].swipeNext(); if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') == 'fade') { var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,800); $(this).addClass('inactive'); } } //next $('body').off('click','#'+$(this).attr('id')+' .slider-next', nextArrowAnimation); $('body').on('click','#'+$(this).attr('id')+' .slider-next', nextArrowAnimation); } ////button with preview on hover 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){ function prevArrowAnimationWithPreview(e) { if($(this).hasClass('inactive')) return false; var $that = $(this); //make sure the animation is complete var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,1000); var $timeout2; clearTimeout($timeout2); $timeout2 = setTimeout(function(){ $that.removeClass('stophover'); } ,500); $(this).addClass('inactive').addClass('stophover'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').prev('.swiper-slide').removeClass('prev-high-z-index'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('prev-move'); e.preventDefault(); $nectarSliders[i].swipePrev(); } function nextArrowAnimationWithPreview(e) { if($(this).hasClass('inactive')) return false; var $that = $(this); //make sure the animation is complete var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.removeClass('inactive'); } ,1000); var $timeout2; clearTimeout($timeout2); $timeout2 = setTimeout(function(){ $that.removeClass('stophover'); } ,500); $(this).addClass('inactive').addClass('stophover'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').next('.swiper-slide').removeClass('high-z-index'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('next-move'); e.preventDefault(); $nectarSliders[i].swipeNext(); } function darkSlideNextMouseOver(currentSlider, activeIndex) { var $indexAdd = ($(currentSlider).find('.swiper-container').attr('data-loop') == 'true') ? 2 : 2; if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + 1) +')').attr('data-color-scheme') == 'dark') { if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +')').attr('data-color-scheme') == 'dark') { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('half-light-overlay').addClass('no-trans'); } else { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('light-overlay').addClass('no-trans'); } } else { if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +')').attr('data-color-scheme') == 'light') { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('half-dark-overlay').addClass('no-trans'); } else { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + $indexAdd) +') .video-texture').addClass('dark-overlay').addClass('no-trans'); } } } function darkSlidePrevMouseOver(currentSlider, activeIndex) { var $indexAdd = ($(currentSlider).find('.swiper-container').attr('data-loop') == 'true') ? 0 : 0; if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex + 1) +')').attr('data-color-scheme') == 'dark') { if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +')').attr('data-color-scheme') == 'dark') { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('half-light-overlay').addClass('no-trans'); } else { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('light-overlay').addClass('no-trans'); } } else { if($(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +')').attr('data-color-scheme') == 'light') { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('half-dark-overlay').addClass('no-trans'); } else { $(currentSlider).find('.swiper-slide:nth-child('+ (activeIndex - $indexAdd) +') .video-texture').addClass('dark-overlay').addClass('no-trans'); } } } $('body').off('click','#'+$(this).attr('id')+' .slider-prev',prevArrowAnimationWithPreview); $('body').on('click','#'+$(this).attr('id')+' .slider-prev',prevArrowAnimationWithPreview); //next $('body').off('click','#'+$(this).attr('id')+' .slider-next', nextArrowAnimationWithPreview); $('body').on('click','#'+$(this).attr('id')+' .slider-next', nextArrowAnimationWithPreview); //hover event $('body').on('mouseenter','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-next:not(.stophover)',function(){ $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').next('.swiper-slide').addClass('high-z-index'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().addClass('next-move'); $(this).stop().addClass('next-arrow-move'); darkSlideNextMouseOver($(this).parents('.nectar-slider-wrap'), $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').index()); }); $('body').on('mouseleave','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-next',function(){ $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').next('.swiper-slide').removeClass('high-z-index'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('next-move'); $(this).stop().removeClass('next-arrow-move'); }); $('body').on('mouseenter','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-prev:not(.stophover)',function(){ $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').prev('.swiper-slide').addClass('prev-high-z-index'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().addClass('prev-move'); $(this).stop().addClass('prev-arrow-move'); darkSlidePrevMouseOver($(this).parents('.nectar-slider-wrap'), $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').index()); }); $('body').on('mouseleave','.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-prev',function(){ $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').prev('.swiper-slide').removeClass('prev-high-z-index'); $(this).parents('.nectar-slider-wrap').find('.swiper-slide-active').stop().removeClass('prev-move'); $(this).stop().removeClass('prev-arrow-move'); }); } else if($('#'+$(this).attr('id') + '.nectar-slider-wrap[data-overall_style="directional"]').length == 1) { function prevArrowAnimationDirectional(e) { if($(this).hasClass('inactive') || $(this).parents('.swiper-container').find('.slider-next').hasClass('inactive')) return false; var $that = $(this); //cache the widths if($('#header-outer.transparent').length > 0){ $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $extraWidth = ($(this).find('.original .sf-sub-indicator').length > 0) ? 14: 1; $(this).find('.original').attr('data-w',$(this).find('span.original').width()+$extraWidth); }); } //make sure the animation is complete var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.parents('.swiper-container').removeClass('directional-trans-prev'); $that.parents('.swiper-container').find('.swiper-wrapper').transition({ 'x': 0, 'left': parseInt($that.parents('.swiper-container').find('.swiper-wrapper').css('left')) + $that.parents('.swiper-container').width() },0); setTimeout(function(){ $nectarSliders[i].updateActiveSlide(); $nectarSliders[i].fixLoop(); $that.removeClass('inactive'); },50); resetContentPos(); } ,1100); //call the dark/light slide coloring half way through transition var $timeout2; clearTimeout($timeout2); $timeout2 = setTimeout(function(){ if($that.parents('.swiper-container').attr('data-loop') != 'true') { if( $that.parents('.swiper-container').find('.swiper-slide-active').index()+1 != 1) { onChangeStart($nectarSliders[i]); } } else { onChangeStart($nectarSliders[i]); } } ,100); //non looped slider if($(this).parents('.swiper-container').attr('data-loop') != 'true') { if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == 1 && !$('html').hasClass('no-video')){ if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') { $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','none').animate({ 'left' : parseInt($(this).parents('.swiper-container').find('.swiper-wrapper').css('left')) + 20 },200,function(){ $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','left,top'); $nectarSliders[i].swipeReset(); }); } } else { $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content').children().each(function(i){ $(this).stop().delay(i*50).transition({ 'x': $that.parents('.swiper-container').width()/2.5 + "px" }, 950,'easeInOutQuart'); }); } } $(this).addClass('inactive'); //move the slide with eaising $(this).parents('.swiper-container').find('.swiper-wrapper').transition({ 'x': $(this).parents('.swiper-container').width() + "px"},1100,'easeInOutQuart'); if($(this).parents('.swiper-container').attr('data-loop') == 'true') { $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content > *').each(function(i){ $(this).stop().delay(i*50).transition({ 'x': $that.parents('.swiper-container').width()/2.5 + "px" }, 950,'easeInOutQuart'); }); } $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').prev('.swiper-slide').find('.content > *').transition({ 'x': '-' + $that.parents('.swiper-container').width() + "px" }, 0); setTimeout(function(){ $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').prev('.swiper-slide').find('.content > *').each(function(i){ $(this).stop().delay(i*50).transition({ 'x': "0px" }, 750,'easeInOutQuart'); }); },200); $that.parents('.swiper-container').addClass('directional-trans-prev'); e.preventDefault(); } function nextArrowAnimationDirectional(e) { if($(this).hasClass('inactive') || $(this).parents('.swiper-container').find('.slider-prev').hasClass('inactive')) return false; var $that = $(this); //cache the widths if($('#header-outer.transparent').length > 0){ $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $extraWidth = ($(this).find('.original .sf-sub-indicator').length > 0) ? 14: 1; $(this).find('.original').attr('data-w',$(this).find('span.original').width()+$extraWidth); }); } //make sure the animation is complete var $timeout; clearTimeout($timeout); $timeout = setTimeout(function(){ $that.parents('.swiper-container').removeClass('directional-trans-next'); $that.parents('.swiper-container').find('.swiper-wrapper').transition({ 'x': 0, 'left': parseInt($that.parents('.swiper-container').find('.swiper-wrapper').css('left')) - $that.parents('.swiper-container').width() },0); setTimeout(function(){ $nectarSliders[i].updateActiveSlide(); $nectarSliders[i].fixLoop(); $that.removeClass('inactive'); },50); resetContentPos(); } ,1100); //call the dark/light slide coloring half way through transition var $timeout2; clearTimeout($timeout2); $timeout2 = setTimeout(function(){ if($that.parents('.swiper-container').attr('data-loop') != 'true') { if( $that.parents('.swiper-container').find('.swiper-slide-active').index()+1 != $slideNum) { onChangeStart($nectarSliders[i]); } } else { onChangeStart($nectarSliders[i]); } } ,100); var $slideNum = $(this).parents('.swiper-container').find('.swiper-wrapper > div').length; //non looped slider if($(this).parents('.swiper-container').attr('data-loop') != 'true') { if( $(this).parents('.swiper-container').find('.swiper-slide-active').index()+1 == $slideNum && !$('html').hasClass('no-video')) { if( $(this).parents('.nectar-slider-wrap ').attr('data-transition') != 'fade') { $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','none').animate({ 'left' : parseInt($(this).parents('.swiper-container').find('.swiper-wrapper').css('left')) - 20 },200,function(){ $(this).parents('.swiper-container').find('.swiper-wrapper').stop(true,false).css('transition','left,top'); $nectarSliders[i].swipeReset(); }); } } else { $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content > *').each(function(i){ $(this).stop().delay(i*50).transition({ 'x': '-' + $that.parents('.swiper-container').width()/2.5 + "px" }, 950,'easeInOutQuart'); }); } } $(this).addClass('inactive'); //move the slide with eaising $(this).parents('.swiper-container').find('.swiper-wrapper').transition({ 'x': - $(this).parents('.swiper-container').width() + "px"},1100,'easeInOutQuart'); if($(this).parents('.swiper-container').attr('data-loop') == 'true') { $(this).parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active .content > *').each(function(i){ $(this).stop().delay(i*50).transition({ 'x': '-' + $that.parents('.swiper-container').width()/2.5 + "px" }, 950,'easeInOutQuart'); }); } $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').next('.swiper-slide').find('.content > *').transition({ 'x': $that.parents('.swiper-container').width() + "px" }, 0); setTimeout(function(){ $that.parents('.swiper-container').find('.swiper-wrapper').find('.swiper-slide-active').next('.swiper-slide').find('.content > *').each(function(i){ $(this).stop().delay(i*50).transition({ 'x': "0px" }, 750,'easeInOutQuart'); }); },200); $that.parents('.swiper-container').addClass('directional-trans-next'); e.preventDefault(); } //prev $('body').off('click','#'+$(this).attr('id')+' .slider-prev', prevArrowAnimationDirectional); $('body').on('click','#'+$(this).attr('id')+' .slider-prev', prevArrowAnimationDirectional); //next $('body').off('click','#'+$(this).attr('id')+' .slider-next', nextArrowAnimationDirectional); $('body').on('click','#'+$(this).attr('id')+' .slider-next', nextArrowAnimationDirectional); function resetContentPos() { $($nectarSliders[i].container).find('.swiper-slide .content > *').transition({ 'x': '0px' }, 0); } } //Clickable pagination if($bullets != null && $('#'+$(this).attr('id') +' .swiper-wrapper > div').length > 1 ){ $('#'+$(this).attr('id')+' .slider-pagination .swiper-pagination-switch').click(function(){ $nectarSliders[i].swipeTo($(this).index()); }); } }); } nectarSliderMainInit(); function darkFirstSlide(slider){ if( slider.parents('.parallax_slider_outer').length > 0 && slider.find('.swiper-slide-active[data-color-scheme="dark"]').length > 0 ) { $('#header-outer').addClass('dark-slide'); } else { $('#header-outer').removeClass('dark-slide'); } } function directionalNavColorInit(slider) { if(slider.attr('data-overall_style') == 'directional' && slider.find('.swiper-slide[data-color-scheme="dark"]').length > 0 && $('#header-outer[data-transparent-header="true"]').length > 0) { if( slider.parents('.parallax_slider_outer').length > 0 || slider.parents('.first-section').length > 0 ) { $('#header-outer').addClass('directional-nav-effect'); $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a span, #header-outer nav > ul.buttons > li#search-btn a').each(function(){ var $text = $(this).html(); $(this).html(' '); $(this).append(''+ $text + ''); $(this).append(''+ $text + ''); $(this).append(''+ $text + ''); }); $('#header-outer .cart-outer .cart-icon-wrap').each(function(){ $(this).find('> i').remove(); $(this).append(''); $(this).append(''); $(this).append(''); }); setTimeout(function(){ $('#header-outer .cart-outer .cart-icon-wrap').each(function(){ $(this).find('> i, > span').remove(); $(this).append(''); $(this).append(''); $(this).append(''); }); },1000); //logo if($('header#top #logo img').length > 0) { $('header#top #logo').append(''); $('header#top #logo').append(''); $('header#top #logo').append(''); $('header#top #logo img:first').clone().appendTo($('header#top #logo .original span')); if($('header#top #logo img.starting-logo').length > 0) $('header#top #logo img.starting-logo:not(.dark-version)').clone().appendTo($('header#top #logo .light span')); if($('header#top #logo img.starting-logo.retina.logo').length > 0) $('header#top #logo img.starting-logo.retina-logo:not(.dark-version)').clone().appendTo($('header#top #logo .light span')); if($('header#top #logo img.starting-logo.dark-version').length > 0) $('header#top #logo img.starting-logo.dark-version').clone().appendTo($('header#top #logo .dark span')); if($('header#top #logo img.starting-logo.dark-version.retina.logo').length > 0) $('header#top #logo img.starting-logo.dark-version.retina-logo').clone().appendTo($('header#top #logo .dark span')); $('header#top #logo > img').remove(); } else { var $logoText = $('header#top #logo').text(); $('header#top #logo').html(' '); $('header#top #logo').append(''+$logoText+''); $('header#top #logo').append(''+$logoText+''); $('header#top #logo').append(''+$logoText+''); } //retina logo fix if($('.retina-logo:visible').length > 0) $('header#top #logo').css('width',$('.retina-logo').width()); //cache the widths $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $extraWidth = ($(this).find('.original .sf-sub-indicator').length > 0) ? 14: 1; $(this).find('.original').attr('data-w',$(this).find('span.original').width()+$extraWidth); }); } } } //initial slide load var $animating = false; //responsive slider var $sliderHeights = []; var $existingSliders = []; function initialSlideLoad() { $animating = false; $sliderHeights = []; $existingSliders = []; //add class to first video slide $('.swiper-wrapper').each(function(){ if($(this).find('.swiper-slide:nth-child(2) video').length > 0) $(this).find('.swiper-slide:nth-child(2)').addClass('first_video_slide'); }); $('.nectar-slider-wrap').each(function(i){ var $sliderWrapCount = $('.nectar-slider-wrap').length; var $that = $(this); if($(this).find('.swiper-slide-active video').length > 0){ if(!$('html').hasClass('no-video')){ $(this).find('.swiper-slide-active:first video').get(0).load(); $(this).find('.swiper-slide-active:first video').get(0).addEventListener('loadeddata',function(){ showSliderControls(); resizeToCover(); slideContentPos(); sliderLoadIn($that); captionTransition($nectarSliders[i]); darkFirstSlide($that); }); } //ie8 else { showSliderControls(); resizeToCover(); slideContentPos(); sliderLoadIn($that); captionTransition($nectarSliders[i]); darkFirstSlide($that); } } else { var $firstBg = $(this).find('.swiper-slide-active').attr('style'); var pattern = /url\(["']?([^'")]+)['"]?\)/; var match = pattern.exec($firstBg); if (match) { var slideImg = new Image(); slideImg.src = match[1]; $(slideImg).load(function(){ showSliderControls(); resizeToCover(); slideContentPos(); sliderLoadIn($that); captionTransition($nectarSliders[i]); darkFirstSlide($that); }); } } //mobile check if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){ captionTransition($nectarSliders[i]); showSliderControls(); resizeToCover(); slideContentPos(); darkFirstSlide($that); setTimeout(function(){ resizeToCover(); slideContentPos(); },400); $('.nectar-slider-wrap').find('.nectar-slider-loading').fadeOut(800,'easeInOutExpo'); $('body #header-outer[data-transparent-header="true"] .ns-loading-cover').fadeOut(800,'easeInOutExpo',function(){ $(this).remove(); $('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').removeClass('not-loaded'); }); $('.nectar-slider-wrap .mobile-video-image').show(); $('.nectar-slider-wrap .video-wrap').remove(); } if($('header#top #logo img').length > 0) { var logoImg = new Image(); logoImg.src = $('header#top #logo img:first').attr('src'); $(logoImg).load(function(){ directionalNavColorInit($that); if($that.attr('data-overall_style') == 'directional') { $that.find('.swiper-container').addClass('directional-trans-current'); onChangeStart($nectarSliders[i]); } }); } else { directionalNavColorInit($that); if($that.attr('data-overall_style') == 'directional') { $that.find('.swiper-container').addClass('directional-trans-current'); onChangeStart($nectarSliders[i]); } } }); ////get slider heights $('.swiper-container').each(function(i){ $sliderHeights[i] = parseInt($(this).attr('data-height')); $existingSliders[i] = $(this).parent().attr('id'); }); } function nectarInit(){ if(doneVideoInit == true) return; //videos /*$('.swiper-slide .slider-video').mediaelementplayer({ enableKeyboard: false, iPadUseNativeControls: false, pauseOtherPlayers: false, // force iPhone's native controls iPhoneUseNativeControls: false, // force Android's native controls AndroidUseNativeControls: false });*/ //if using pp - init it after slide loads if($().prettyPhoto) prettyPhotoInit(); doneVideoInit = true; } initialSlideLoad(); //dynamic height sliders dynamicHeightSliders(); function dynamicHeightSliders(){ var $adminBarHeight = ($('#wpadminbar').length > 0) ? 28 : 0 ; $('.nectar-slider-wrap').each(function(){ var $heightCalc; var $minHeight = $('.swiper-container').attr('data-min-height'); //fullscreen if($(this).attr('data-fullscreen') == 'true' && $(this).attr('data-full-width') == 'true') { //first slider on page if($(this).hasClass('first-section') && $(this).index() == 0){ //min height $heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2; $(this).find('.swiper-container').attr('data-height',$heightCal); } //first parallax slider on page else if($(this).parents('.parallax_slider_outer').length > 0 && $(this).parents('#full_width_portfolio').length == 0){ //min height $heightCal = ( ($(window).height() - $(this).parent().offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).parent().offset().top + 2; $(this).find('.swiper-container').attr('data-height',$heightCal); } //first portfolio slider on page else if($(this).parents('#full_width_portfolio').length > 0 && $(this).attr('data-parallax') != 'true' && $(this).index() == 0){ //min height $heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2; $(this).find('.swiper-container').attr('data-height',$heightCal); } //first portfolio parallax slider on page else if($(this).parents('#full_width_portfolio').length > 0 && $(this).attr('data-parallax') == 'true'){ //min height $heightCal = ( ($(window).height() - $(this).offset().top + 2) <= $minHeight ) ? $minHeight : $(window).height() - $(this).offset().top + 2; $(this).find('.swiper-container').attr('data-height',$heightCal); } //all others else { //min height $heightCal = ( $(window).height() <= $minHeight ) ? $minHeight : $(window).height(); $(this).find('.swiper-container').attr('data-height',$heightCal); } //transparent header loading icon center if($('#header-outer[data-remove-border="true"]').length == 0) { if($('body #header-outer[data-transparent-header="true"]').length > 0 && $('.first-section .nectar-slider-wrap[data-fullscreen="true"]').length > 0 && $('#page-header-bg').length == 0) { $('.first-section .nectar-slider-loading').css({ 'background-image': $loading_bg_storage, 'background-position' : 'center ' + ((($(window).height() /2) + 15) - $('#header-space').height()) +'px' }); $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({ 'opacity' : '1', 'height' : $(window).height() - $('#header-space').height() + 'px' }); } } } //flexible height if($(this).attr('data-flexible-height') == 'true' && $(this).attr('data-fullscreen') != 'true') { //escape if not placed in a flexible ready position if($(this).parents('.wpb_row.full-width-content').length == 0 && $(this).attr('data-full-width') == 'false') { $(this).attr('data-flexible-height','false'); return false; } var $minHeight = $('.swiper-container').attr('data-min-height'); var currentKey = $existingSliders.getKeyByValue($(this).attr('id')); var $windowWidth = $(window).width(); var $definedHeight = $sliderHeights[currentKey]; var dif = $(window).width() / 1600; if( window.innerWidth > 1000 && $('#boxed').length == 0) { $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif)); } else { //column sliders var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col') ; if($parentCol.length == 0) $parentCol = $('.main-content'); if(!$parentCol.hasClass('vc_span12') && !$parentCol.hasClass('main-content') && !$parentCol.hasClass('span_12') ) { var $parentColWidth = sliderColumnDesktopWidth($parentCol); var $parentColRatio = 1100/$parentColWidth; //min height if( $definedHeight*dif <= $minHeight ){ $(this).find('.swiper-container').attr('data-height',$minHeight); } else { $(this).find('.swiper-container').attr('data-height',Math.ceil($parentColRatio*$definedHeight*dif)); } } //boxed else if($('#boxed').length > 0){ var dif = $('#boxed').width() / 1600; if( window.innerWidth > 1300 ) { if($('body[data-ext-responsive="true"]').length > 0){ if($(this).has('[data-full-width="boxed-full-width"]')) { ($('#boxed').width() < 1400) ? $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif)) : $(this).find('.swiper-container').attr('data-height',$definedHeight*(1400/1600)); } } else { if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*(1200/1600))); } } else if( window.innerWidth <= 1300 && window.innerWidth >= 1000 ) { if($('body[data-ext-responsive="true"]').length > 0){ $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif)); } else { if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*(980/1600))); } } else if( window.innerWidth < 1000 && window.innerWidth > 690 ) { var $heightCalc = ( $definedHeight*(679/1600) <= $minHeight ) ? $minHeight : $definedHeight*(679/1600); if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height',$minHeight); } else if( window.innerWidth <= 690 && window.innerWidth >= 470 ) { var $heightCalc = ( $definedHeight*(410/1600) <= $minHeight ) ? $minHeight : $definedHeight*(410/1600); if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height', $heightCalc); } else if( window.innerWidth < 470 ) { var $heightCalc = ( $definedHeight*(318/1600) <= $minHeight ) ? $minHeight : $definedHeight*(318/1600); if($(this).has('[data-full-width="boxed-full-width"]')) $(this).find('.swiper-container').attr('data-height', $heightCalc); } } //regular else { //min height if( $definedHeight*dif <= $minHeight ){ $(this).find('.swiper-container').attr('data-height',$minHeight); } else { $(this).find('.swiper-container').attr('data-height',Math.ceil($definedHeight*dif)); } } } //transparent header loading icon center if($('body #header-outer[data-transparent-header="true"]').length > 0 && $('.first-section .nectar-slider-wrap[data-flexible-height="true"]').length > 0) { $('.first-section .nectar-slider-loading').css({ 'background-image': $loading_bg_storage, 'background-position' : 'center ' + (((($definedHeight*dif)/2) + 15) - $('#header-space').height()) +'px' }); $('.first-section .nectar-slider-wrap .nectar-slider-loading .loading-icon').css({ 'opacity' : '1', 'height' : $definedHeight*dif - $('#header-space').height() + 'px' }); } } }); } if(window.innerWidth > 690){ $(window).on('resize.dynamicHeights',dynamicHeightSliders); } else { //stop mobile browsers from firing the resize event on scroll (when toolbar hides) var $windowWidth = $(window).width(), $windowHeight = $(window).height(); var $orientationChange = 0; window.addEventListener("orientationchange", function() { $orientationChange = 1; }); $(window).resize(function(){ if( ($(window).width() != $windowWidth && $(window).height != $windowHeight) || $orientationChange == 1){ dynamicHeightSliders(); $orientationChange = 0; } }); } ////helper function function sliderColumnDesktopWidth(parentCol) { var $parentColWidth = 1100; var $columnNumberParsed = $(parentCol).attr('class').match(/\d+/); if($columnNumberParsed == '2') { $parentColWidth = 170 } else if($columnNumberParsed == '3') { $parentColWidth = 260 } else if($columnNumberParsed == '4') { $parentColWidth = 340 } else if($columnNumberParsed == '6') { $parentColWidth = 530 } else if($columnNumberParsed == '8') { $parentColWidth = 700 } else if($columnNumberParsed == '9') { $parentColWidth = 805 } else if($columnNumberParsed == '10') { $parentColWidth = 916.3 } else if($columnNumberParsed == '12') { $parentColWidth = 1100 } return $parentColWidth; } sliderSize(); $(window).resize(sliderSize); function sliderSize(){ //check for mobile first if( window.innerWidth < 1000 && window.innerWidth > 690 ) { //fullwidth sliders $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.4 ) }); //column sliders $('.nectar-slider-wrap[data-full-width="false"]:not([data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); var $currentSliderHeight = $sliderHeights[currentKey]; var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col'); //fullwidth but inside the span_9 post area if($(this).parents('#post-area').length > 0 && $(this).parents('.vc_span12').length > 0) $parentCol = $(this).parents('#post-area'); //last resort if($parentCol.length == 0) $parentCol = $('.main-content'); var $parentColWidth = sliderColumnDesktopWidth($parentCol); var $aspectRatio = $currentSliderHeight/$parentColWidth; $(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width()); }); //boxed sliders $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.9 ) }); } else if( window.innerWidth <= 690 ) { //fullwidth sliders $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/2.7 ) }); //column sliders $('.nectar-slider-wrap[data-full-width="false"]:not([data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); var $currentSliderHeight = $sliderHeights[currentKey]; var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col'); //fullwidth but inside the span_9 post area if($(this).parents('#post-area').length > 0 && $(this).parents('.vc_span12').length > 0) $parentCol = $(this).parents('#post-area'); //last resort if($parentCol.length == 0) $parentCol = $('.main-content'); var $parentColWidth = sliderColumnDesktopWidth($parentCol); var $aspectRatio = $currentSliderHeight/$parentColWidth; $(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width()); }); //boxed sliders $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/2.9 ) }); } else if( window.innerWidth < 1300 && window.innerWidth >= 1000 ) { //fullwidth sliders $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.2 ) }); //column sliders $('.nectar-slider-wrap[data-full-width="false"]:not([data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); var $currentSliderHeight = $sliderHeights[currentKey]; var $parentCol = ($(this).parents('.wpb_column').length > 0) ? $(this).parents('.wpb_column') : $(this).parents('.col') ; //fullwidth but inside the span_9 post area if($(this).parents('#post-area').length > 0 && $(this).parents('.vc_span12').length > 0) $parentCol = $(this).parents('#post-area'); //last resort if($parentCol.length == 0) $parentCol = $('.main-content'); var $parentColWidth = sliderColumnDesktopWidth($parentCol); var $aspectRatio = $currentSliderHeight/$parentColWidth; $(this).find('.swiper-container').attr('data-height',$aspectRatio*$parentCol.width()); }); //boxed sliders $('.nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]/1.2 ) }); } else { //fullwidth sliders $('.nectar-slider-wrap[data-full-width="true"]:not([data-fullscreen="true"],[data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); if($(this).attr('data-flexible-height') != 'true') $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey]) }); //boxed sliders $('.nectar-slider-wrap[data-full-width="false"], .nectar-slider-wrap[data-full-width="boxed-full-width"]:not([data-flexible-height="true"])').each(function(i){ currentKey = $existingSliders.getKeyByValue($(this).attr('id')); if($(this).attr('data-flexible-height') != 'true') $(this).find('.swiper-container').attr('data-height',$sliderHeights[currentKey] ) }); } } //remove transform if single slide $('.nectar-slider-wrap').each(function(){ if($(this).find('.swiper-wrapper .swiper-slide').length == 1) { $(this).find('.swiper-slide').addClass('no-transform'); $(this).find('.swiper-wrapper').addClass('no-transform'); } }); //slider height var min_w = 1500; // minimum video width allowed var vid_w_orig; // original video dimensions var vid_h_orig; vid_w_orig = 1280; vid_h_orig = 720; var $headerHeight = $('header').height()-1; function nsSliderContentResize(e){ resizeToCover(); slideContentPos(); for(var i=0; i < $nectarSliders.length; i++){ //make sure the parent is not hidden if($($nectarSliders[i].container).parent().attr('data-transition') && $($nectarSliders[i].container).parent().attr('data-transition') == 'fade') { for(var k=0; k < $nectarSliders[i].slides.length; k++){ $nectarSliders[i].setTransition($nectarSliders[i].slides[k], 0); } $('.swiper-wrapper').stop(true,true).css('transition-duration','0s'); if($('.nectar-slider-loading').css('display') == 'none') { $('.swiper-wrapper .swiper-slide.swiper-slide-active .content > *').css({ 'opacity': 1, 'padding-top' : 0 }); } } $nectarSliders[i].reInit(); $nectarSliders[i].resizeFix(); } } // $(window).off('resize.nsSliderContent'); $(window).on('resize.nsSliderContent',nsSliderContentResize); if(!$('body').hasClass('ajax-loaded')) $(window).trigger('resize'); function resizeToCover() { $('.nectar-slider-wrap').each(function(i){ if( $(this).css('visibility') != 'hidden') { //width resize if($('body > #boxed').length == 0 && $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') != 'portfolio-extra' && $(this).parents('#post-area:not(".span_12")').length == 0){ $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px'; $('.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',$(window).width()); } else if( $('.nectar-slider-wrap[data-full-width="true"]').parent().attr('id') == 'portfolio-extra' && $('#full_width_portfolio').length != 0){ $('.nectar-slider-wrap[data-full-width="true"], .parallax_slider_outer.first-section .nectar-slider-wrap').css('left', -(($(window).width()-$smoothSrollWidth)/2 - $('.main-content').width()/2))+'px'; $('.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',$(window).width()); } else { var $container = ($('body > #boxed').length == 0) ? '#post-area' : '.container-wrap'; //backup incase only slider is used with nothing else in boxed mode if($($container).width() == '0' && $('body > #boxed').length > 0) $container = '#boxed'; $('.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()); } var $sliderHeight = parseInt($(this).find('.swiper-container').attr('data-height')); var isFullWidthCompatible = ($(this).attr('data-full-width') == 'true') ? 'true' : 'false'; if($(this).parent().attr('id') == 'portfolio-extra' && $('#full_width_portfolio').length == 0 || $(this).parents('#post-area').length > 0) { isFullWidthCompatible = 'false'; }; var $sliderWidth = (isFullWidthCompatible == 'true') ? $(window).width()-$smoothSrollWidth : $(this).width(); $(this).parents('.parallax_slider_outer').css('height',$sliderHeight); $(this).css('height',$sliderHeight); $(this).find('.swiper-container, .swiper-slide').css({'height':$sliderHeight+2, 'top':'-1px'}); $(this).find('.swiper-container').css('width', $sliderWidth); //$(this).find('.swiper-slide').css('width', $sliderWidth); // set the video viewport to the window size $(this).find('.video-wrap').width($sliderWidth+2); $(this).find('.video-wrap').height($sliderHeight+2); // use largest scale factor of horizontal/vertical var scale_h = $sliderWidth / vid_w_orig; var scale_v = ($sliderHeight - $headerHeight) / vid_h_orig; var scale = scale_h > scale_v ? scale_h : scale_v; //update minium width to never allow excess space min_w = 1280/720 * ($sliderHeight+20); // don't allow scaled width < minimum video width if (scale * vid_w_orig < min_w) {scale = min_w / vid_w_orig;} // now scale the video $(this).find('video, .mejs-overlay, .mejs-poster').width(Math.ceil(scale * vid_w_orig +2)); $(this).find('video, .mejs-overlay, .mejs-poster').height(Math.ceil(scale * vid_h_orig +2)); // and center it by scrolling the video viewport $(this).find('.video-wrap').scrollLeft(($(this).find('video').width() - $sliderWidth) / 2); $(this).find('.swiper-slide').each(function(){ //video alignment if($(this).find('.video-wrap').length > 0){ //align middle if($(this).attr('data-bg-alignment') == 'center'){ $(this).find('.video-wrap, .mejs-overlay, .mejs-poster').scrollTop(($(this).find('video').height() - ($sliderHeight)) / 2); } //align bottom else if($(this).attr('data-bg-alignment') == 'bottom'){ $(this).find('.video-wrap').scrollTop(($(this).find('video').height() - ($sliderHeight+2))); } //align top else { $(this).find('.video-wrap').scrollTop(0); } } }); } //if visible }); }; ////initial call resizeToCover(); //caption transitions function captionTransition(obj){ resizeToCover(); var $containerClass; (typeof obj == 'undefined') ? $containerClass = 'div[id^=ns-id-]' : $containerClass = '#'+$(obj.container).parents('.nectar-slider-wrap').attr('id'); ; var fromLeft = Math.abs(parseInt($($containerClass+' .swiper-wrapper').css('left'))); var currentSlide = Math.round(fromLeft/$($containerClass+' .swiper-slide').width()); var $slideNum = $($containerClass+':first .swiper-wrapper > div').length; if($($containerClass).attr('data-transition') == 'fade') currentSlide = $($containerClass + ' .swiper-slide-active').index(); if(isNaN(currentSlide)) currentSlide = 0; //make sure user isn't going back to same slide if( $($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content *').length > 0 ) { if($($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content *').css('opacity') != '0' && !$('html').hasClass('no-video')) { //play video if there's one playVideoBG(currentSlide + 1, $containerClass); if(!$($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').hasClass('autorotate-shown')) { return false; } else { $($containerClass+' .swiper-slide').removeClass('autorotate-shown'); } } } //hide all if(!$('html').hasClass('no-video')) { $($containerClass+' .swiper-slide .content p, '+$containerClass+' .swiper-slide .content h2, '+$containerClass+' .swiper-slide .content .buttons').stop(true,true).animate({'opacity':0, 'padding-top': 25},1); } //pause video if there's one $($containerClass+' .swiper-slide').each(function(){ if($(this).find('.video-wrap video').length > 0 && !$('html').hasClass('no-video')) { $(this).find('.video-wrap video').get(0).pause(); } }); $($containerClass+' .swiper-slide:not(".swiper-slide-active")').each(function(){ if($(this).find('.video-wrap video').length > 0) { if($(this).find('.video-wrap video').get(0).currentTime != 0 ) $(this).find('.video-wrap video').get(0).currentTime = 0; } }); if($($containerClass +' .swiper-container').attr('data-loop') == 'true') { //webkit video fix if( $($containerClass+' .swiper-slide-active').index()+1 == 2 && $($containerClass+' .swiper-slide-active video').length > 0 && !$('html').hasClass('no-video')) { $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).play(); $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).pause(); } if( $($containerClass+' .swiper-slide-active').index()+1 == $slideNum-1 && $($containerClass+' .swiper-slide-active video').length > 0 && !$('html').hasClass('no-video')) { $($containerClass+' .swiper-slide:first-child').find('.video-wrap video').get(0).play(); $($containerClass+' .swiper-slide:first-child').find('.video-wrap video').get(0).pause(); } if($($containerClass+' .swiper-slide-active').index()+1 != 2 && $($containerClass+' .swiper-slide:nth-child(2) video').length > 0 && !$('html').hasClass('no-video')) { $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).play(); $($containerClass+' .swiper-slide:last-child').find('.video-wrap video').get(0).pause(); $($containerClass+' .swiper-slide:nth-child(2) video').get(0).pause(); if($($containerClass+' .swiper-slide:nth-child(2) video').get(0).currentTime != 0 ) $($containerClass+' .swiper-slide:nth-child(2) video').get(0).currentTime = 0; } //also show duplicate slide if applicable if($($containerClass).attr('data-overall_style') != 'directional') { ////first if( $($containerClass+' .swiper-slide-active').index()+1 == $slideNum-1 ){ $($containerClass+' .swiper-slide:nth-child(1)').find('.content').children().each(function(i){ $(this).stop().delay(i*90).animate({ 'opacity' : 1, 'padding-top' : 0 },{ duration: 400, easing: 'easeOutQuad'}); }); } ////last if( $($containerClass+' .swiper-slide-active').index()+1 == 2 ){ $($containerClass+' .swiper-slide:nth-child('+ ($slideNum) + ')').find('.content').children().each(function(i){ $(this).stop().delay(i*90).animate({ 'opacity' : 1, 'padding-top' : 0 },{ duration: 400, easing: 'easeOutQuad'}); }); } //looped last going to first if( $($containerClass+' .swiper-slide-active').index()+1 == $slideNum ){ $($containerClass+' .swiper-slide:nth-child(2)').find('.content').children().each(function(i){ $(this).stop().delay(i*90).animate({ 'opacity' : 1, 'padding-top' : 0 },{ duration: 400, easing: 'easeOutQuad'}); }); } //looped first going to last if( $($containerClass+' .swiper-slide-active').index()+1 == 1 ){ $($containerClass+' .swiper-slide:eq(-2)').find('.content').children().each(function(i){ $(this).stop().delay(i*90).animate({ 'opacity' : 1, 'padding-top' : 0 },{ duration: 400, easing: 'easeOutQuad'}); }); } } }//if using loop //play video if there's one playVideoBG(currentSlide + 1, $containerClass); //fadeIn active slide if($($containerClass).attr('data-overall_style') != 'directional') { $($containerClass+' .swiper-slide:nth-child('+ (currentSlide + 1) +')').find('.content').children().each(function(i){ $(this).stop().delay(i*90).animate({ 'opacity' : 1, 'padding-top' : 0 },{ duration: 400, easing: 'easeOutQuad'}); }); } $captionTrans++; if($captionTrans == $('.swiper-wrapper').length) { $('div.first_video_slide').addClass('nulled') } //slider arrows with preview effect setTimeout(function(){ if($('.slider-next').hasClass('next-arrow-move')) { $('.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-next').trigger('mouseenter'); } else if($('.slider-prev').hasClass('prev-arrow-move')) { $('.nectar-slider-wrap[data-button-styling="btn_with_preview"] .swiper-container .slider-prev').trigger('mouseenter'); } if($($containerClass).attr('data-button-styling') == 'btn_with_preview') { $($containerClass+' .swiper-slide').addClass('prev-high-z-index-static'); $($containerClass+' .swiper-slide.swiper-slide-active').removeClass('prev-high-z-index-static'); } },175); } //used in caption transition function playVideoBG(nthChild, containerClass){ if($(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.video-wrap video').length > 0){ if(!$('html').hasClass('no-video')) $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.video-wrap video').get(0).play(); if(!$(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').hasClass('playing') && $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').hasClass('mobile-played')) { $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play').addClass('playing'); } if(!$(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').hasClass('playing') && $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').hasClass('mobile-played')) $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster').addClass('playing'); var $that = $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-overlay.mejs-overlay-play'); var $that2 = $(containerClass+' .swiper-slide:nth-child('+ (nthChild) +')').find('.mejs-poster'); if($that.hasClass('playing') && $that.hasClass('mobile-played')) { setTimeout(function(){ $that.addClass('behind-buttons'); $that2.addClass('behind-buttons');},200); } else { $that.removeClass('behind-buttons'); $that2.removeClass('behind-buttons'); } } } var $startingSlide = null; function slideContentPos(){ $('.swiper-wrapper').each(function(){ //etxra space if first slider in section var $extraHeight = ($(this).parents('.nectar-slider-wrap').hasClass('first-section') || $(this).parents('.parallax_slider_outer').hasClass('first-section')) ? 30 : 0; var $sliderHeight = parseInt($(this).parents('.swiper-container').attr('data-height')); var $transparentHeader = ($('#header-outer[data-transparent-header="true"]').length > 0) ? $('#header-space').height() : 0 ; if($(this).parents('.first-section').length == 0 || window.innerWidth < 1000) { $transparentHeader = null; } else if($transparentHeader != 0 && $('#header-outer[data-remove-border="true"]').length > 0){ $transparentHeader = $transparentHeader/2 } $(this).find('.swiper-slide').each(function(){ var $contentHeight = $(this).find('.content').height(); var $contentItems = $(this).find('.content > *').length; $contentHeight2 = 0; $(this).find('.content > *').each(function(){ $contentHeight2 += $(this).height() + parseInt($(this).css('margin-bottom')) + parseInt($(this).css('padding-bottom')); }); if($(this).find('.content > *').css('padding-top') == '25px') $contentHeight = $contentHeight - 25*$contentItems; if($(this).attr('data-y-pos') == 'top'){ var $topHeight = ($contentHeight2/2) < ((($sliderHeight+ $transparentHeader)/4) - 30) ? ((($sliderHeight+ $transparentHeader)/4) - ($contentHeight2/2)) + 20 : ($sliderHeight+ $transparentHeader)/8; $(this).find('.content').css('top', $topHeight + 'px'); } else if($(this).attr('data-y-pos') == 'middle') { $(this).find('.content').css('top', ((($sliderHeight + $transparentHeader)/2) - ($contentHeight2/2)) + 'px'); } else { if($contentHeight2 > 180) { $(this).find('.content').css('top', ((($sliderHeight + $transparentHeader)/2) - ($contentHeight2/10)) +'px'); } else { $(this).find('.content').css('top', ((($sliderHeight + $transparentHeader)/2) + ($contentHeight2/9)) + 'px'); } } }); }); } function showSliderControls() { $('.swiper-container .slider-prev, .swiper-container .slider-next, .slider-pagination').animate({'opacity':1},550,'easeOutSine'); } var sliderLength = $('.swiper-container').length; var sliderLoadedLength = 0; function sliderLoadIn(slider) { slider.find('.nectar-slider-loading').fadeOut(800,'easeInOutExpo'); $('body #header-outer[data-transparent-header="true"] .ns-loading-cover').fadeOut(800,'easeInOutExpo',function(){ $(this).remove(); $('.nectar-slider-wrap.first-section .swiper-container .swiper-wrapper .swiper-slide').removeClass('not-loaded'); }); slider.find('span.ie-fix').remove(); ///make sure to init smooth scrolling after slider height exists var $smoothActive = $('body').attr('data-smooth-scrolling'); if( $smoothActive == 1 && $(window).width() > 690 && $('body').outerHeight(true) > $(window).height() && $('#ascrail2000').length == 0 && !navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){ niceScrollInit(); resizeToCover(); } //check for sliders in tabbed sliderLoadedLength++; if($('.tabbed').find('.swiper-container').length > 0 && sliderLoadedLength == sliderLength) { setTimeout(function(){ $('.tabbed > ul li:first-child a').click(); }, 200); } } //play video user is hovering over $('body').on('mouseover','.swiper-slide', function(){ if($(this).find('video').length > 0 && $(this).find('video').get(0).paused == true && $animating == false){ $(this).find('video').get(0).play(); } }); //mobile play event $('body').on('click', '.mejs-overlay.mejs-overlay-play',function(){ $(this).toggleClass('playing'); $(this).addClass('mobile-played'); $(this).parent().find('.mejs-poster').toggleClass('playing'); $(this).parent().find('.mejs-poster').addClass('mobile-played'); var $that = $(this); var $that2 = $(this).parent().find('.mejs-poster'); if($(this).hasClass('playing') && $(this).hasClass('mobile-played')) { setTimeout(function(){ $that.addClass('behind-buttons'); $that2.addClass('behind-buttons'); },200); } else { setTimeout(function(){ $that.removeClass('behind-buttons'); $that2.removeClass('behind-buttons'); },1); } }); //autoplay var autoplay = []; var sliderAutoplayCount = -1; var $sliderHeight = parseInt($(this).find('.swiper-container').attr('data-height')); var portfolioHeaderHeight = ($('.project-title.parallax-effect').length > 0) ? 100 : 0; function autorotateInit() { $('.nectar-slider-wrap').each(function(i){ var $autoplayVal = $(this).attr('data-autorotate'); var $that = $(this); var $sliderNum = i; if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) { nectarSlideRotateInit($that,$autoplayVal,$sliderNum); } }); } autorotateInit(); function nectarSlideRotateInit(slider,interval,sliderNum){ autoplay[sliderAutoplayCount] = setInterval(function(){ nectarSlideRotate(slider, sliderNum); } ,interval); $('#'+slider.attr('id')).attr('autoplay-id',sliderAutoplayCount); $('#'+slider.attr('id') + ' a.slider-prev, #'+slider.attr('id') + ' a.slider-next, #' + slider.attr('id') + ' .slider-pagination span').click(function(e){ if(typeof e.clientY != 'undefined'){ clearInterval(autoplay[$('#'+slider.attr('id')).attr('autoplay-id')]); //class for directional if( $('#'+slider.attr('id')).parent().hasClass('parallax_slider_outer') && $('#'+slider.attr('id')).attr('data-overall_style') == 'directional' ) { $('#'+slider.attr('id')).parent().addClass('user-stopped'); } } }); sliderAutoplayCount++; } function nectarSlideRotate(slider, sliderNum){ //non looped if($nectarSliders[sliderNum].activeIndex + 1 < $(slider).find('.swiper-wrapper > div.swiper-slide').length){ //btn with preview hover effect clear if($(slider).attr('data-button-styling') == 'btn_with_preview') { $(slider).find('.swiper-slide').removeClass('high-z-index').removeClass('prev-high-z-index'); $(slider).find('.swiper-slide').removeClass('next-move').removeClass('prev-move'); } //classic style if($(slider).attr('data-overall_style') != 'directional') { $nectarSliders[sliderNum].swipeNext(); } else { //directional based $($nectarSliders[sliderNum].container).find('.slider-next').trigger('click'); } } else { //looped sliders if($(slider).find('.swiper-container').is("[data-loop]") && $(slider).find('.swiper-container').attr('data-loop') == 'true') { //classic style if($(slider).attr('data-overall_style') != 'directional') { $nectarSliders[sliderNum].swipeNext(); } else { //directional based $($nectarSliders[sliderNum].container).find('.slider-next').trigger('click'); } } //regular sliders else { if($(slider).attr('data-overall_style') != 'directional') { $nectarSliders[sliderNum].swipeTo(0,800); } else { $(slider).find('.swiper-container').addClass('directional-trans-prev'); $nectarSliders[sliderNum].swipeTo(0,800); //call the dark/light slide coloring half way through transition var $timeout2; clearTimeout($timeout2); $timeout2 = setTimeout(function(){ onChangeStart($nectarSliders[sliderNum]); } ,100); } } } } function clearAutoplay(e){ var $autoplayVal = $('#'+$(e.container).parent().attr('id')).attr('data-autorotate'); if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) { clearInterval(autoplay[$('#'+$(e.container).parent().attr('id')).attr('autoplay-id')]); } } var animationQueue = null; function onChangeStart(e){ //cache slider obj var $obj = e; $animating = true; var $slideNum = $($obj.container).find('.swiper-wrapper > div').length; //one for effects and one for basic slide arrow count $activeIndex = ($($obj.container).attr('data-loop') == 'true') ? $obj.activeIndex + 1: $obj.activeIndex+1; $activeIndex2 = ($($obj.container).attr('data-loop') == 'true') ? $obj.activeIndex: $obj.activeIndex+1; //dark slide header if($($obj.container).parent().attr('data-overall_style') != 'directional') { if( $($obj.container).parents('.parallax_slider_outer').length > 0 && $($obj.container).find('.swiper-slide-active[data-color-scheme="dark"]').length > 0 || $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active[data-color-scheme="dark"]').length > 0) { $('#header-outer').addClass('dark-slide'); } else { $('#header-outer').removeClass('dark-slide'); } } ////directional trans - will be called early so need to adjust the slide being looked for else { if($($obj.container).hasClass('directional-trans-next')) { if( $($obj.container).parents('.parallax_slider_outer').length > 0 && $($obj.container).find('.swiper-slide-active').next('.swiper-slide').is('[data-color-scheme="dark"]') || $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active').next('.swiper-slide').is('[data-color-scheme="dark"]') ) { $('#header-outer').addClass('dark-slide'); //nav items animation if($('body.mobile').length == 0) { $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $itemWidth = parseInt($(this).find('span.original').attr('data-w')); $(this).find('span.dark').css('display','inline').transition({'margin-left': '0'},0).transition({ 'width' : $itemWidth }, 325, 'easeInOutQuart'); $(this).find('span.dark > span').transition({'margin-left': '0'},0); $(this).find('span.light').css('display','inline-block').transition({'margin-left': $itemWidth, 'width' : '0' }, 325, 'easeInOutQuart'); $(this).find('span.light > span').transition({'margin-left': '-' + ($itemWidth) + 'px', 'width' : $itemWidth }, 325, 'easeInOutQuart'); }); } } else { $('#header-outer').removeClass('dark-slide'); //nav items animation if($('body.mobile').length == 0) { $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $itemWidth = parseInt($(this).find('span.original').attr('data-w')); $(this).find('span.light').css('display','inline').transition({'margin-left': '0'},0).css('display','inline').transition({'width' : $itemWidth }, 325, 'easeInOutQuart'); $(this).find('span.light > span').transition({'margin-left': '0'},0); $(this).find('span.dark').css('display','inline-block').transition({'margin-left': $itemWidth, 'width' : '0' }, 325, 'easeInOutQuart'); $(this).find('span.dark > span').transition({'margin-left': '-' + ($itemWidth) + 'px', 'width' : $itemWidth }, 325, 'easeInOutQuart'); }); } } } else if($($obj.container).hasClass('directional-trans-prev')) { if( $($obj.container).parents('.parallax_slider_outer').length > 0 && $($obj.container).find('.swiper-slide-active').prev('.swiper-slide').is('[data-color-scheme="dark"]') || $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active').prev('.swiper-slide').is('[data-color-scheme="dark"]') ) { $('#header-outer').addClass('dark-slide'); //nav items animation if($('body.mobile').length == 0) { $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $itemWidth = parseInt($(this).find('span.original').attr('data-w')); $(this).find('span.dark').css('display','inline').transition({'margin-left': '0'},0).transition({ 'width' : $itemWidth }, 325, 'easeInOutQuart'); $(this).find('span.dark > span').transition({'margin-left': '0'},0); $(this).find('span.light').css('display','inline-block').transition({'margin-left': $itemWidth, 'width' : '0' }, 325, 'easeInOutQuart'); $(this).find('span.light > span').transition({'margin-left': '-' + ($itemWidth) + 'px', 'width' : $itemWidth }, 325, 'easeInOutQuart'); }); } } else { $('#header-outer').removeClass('dark-slide'); //nav items animation if($('body.mobile').length == 0) { $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $itemWidth = parseInt($(this).find('span.original').attr('data-w')); $(this).find('span.light').css('display','inline').transition({'margin-left': '0'},0).transition({'width' : $itemWidth }, 325, 'easeInOutQuart'); $(this).find('span.light > span').transition({'margin-left': '0'},0); $(this).find('span.dark').css('display','inline-block').transition({'margin-left': $itemWidth, 'width' : '0' }, 325, 'easeInOutQuart'); $(this).find('span.dark > span').transition({'margin-left': '-' + ($itemWidth) + 'px', 'width' : $itemWidth }, 325, 'easeInOutQuart'); }); } } } else if($($obj.container).hasClass('directional-trans-current')) { if( $($obj.container).parents('.parallax_slider_outer').length > 0 && $($obj.container).find('.swiper-slide-active').is('[data-color-scheme="dark"]') || $($obj.container).parents('.first-section').length > 0 && $($obj.container).find('.swiper-slide-active').is('[data-color-scheme="dark"]') ) { $('#header-outer').addClass('dark-slide'); //nav items animation if($('body.mobile').length == 0) { $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $itemWidth = parseInt($(this).find('span.original').attr('data-w')); $(this).find('span.dark').css('display','inline').transition({'margin-left': '0'},0).transition({ 'width' : $itemWidth }, 325, 'easeInOutQuart'); $(this).find('span.dark > span').transition({'margin-left': '0'},0); $(this).find('span.light').css('display','inline-block').transition({'margin-left': $itemWidth, 'width' : '0' }, 325, 'easeInOutQuart'); $(this).find('span.light > span').transition({'margin-left': '-' + ($itemWidth) + 'px', 'width' : $itemWidth }, 325, 'easeInOutQuart'); }); } } else { $('#header-outer').removeClass('dark-slide'); //nav items animation if($('body.mobile').length == 0) { $('#header-outer nav > ul.sf-menu > li > a, #header-outer nav > ul.buttons > li#search-btn a, #header-outer nav > ul.buttons > li.slide-out-widget-area-toggle a > span, #header-outer .cart-icon-wrap, header#top #logo').each(function(){ var $itemWidth = parseInt($(this).find('span.original').attr('data-w')); $(this).find('span.light').css('display','inline').transition({'margin-left': '0'},0).transition({'width' : $itemWidth }, 325, 'easeInOutQuart'); $(this).find('span.light > span').transition({'margin-left': '0'},0); $(this).find('span.dark').css('display','inline-block').transition({'margin-left': $itemWidth, 'width' : '0' }, 325, 'easeInOutQuart'); $(this).find('span.dark > span').transition({'margin-left': '-' + ($itemWidth) + 'px', 'width' : $itemWidth }, 325, 'easeInOutQuart'); }); } } } } //light and dark controls if($($obj.container).parent().attr('data-overall_style') != 'directional') { if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex) +')').attr('data-color-scheme') == 'dark') { $($obj.container).find('.slider-pagination').addClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs'); } else { $($obj.container).find('.slider-pagination').removeClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs'); } } ////directional trans - will be called early so need to adjust the slide being looked for else { if($($obj.container).hasClass('directional-trans-next')) { if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex+1) +')').attr('data-color-scheme') == 'dark') { $($obj.container).find('.slider-pagination').addClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs'); } else { $($obj.container).find('.slider-pagination').removeClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs'); } } else if($($obj.container).hasClass('directional-trans-prev')) { if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex-1) +')').attr('data-color-scheme') == 'dark') { $($obj.container).find('.slider-pagination').addClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs'); } else { $($obj.container).find('.slider-pagination').removeClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs'); } } else if($($obj.container).hasClass('directional-trans-current')) { if($($obj.container).find('.swiper-slide:nth-child('+ ($activeIndex) +')').attr('data-color-scheme') == 'dark') { $($obj.container).find('.slider-pagination').addClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').addClass('dark-cs'); } else { $($obj.container).find('.slider-pagination').removeClass('dark-cs'); $($obj.container).find('.slider-prev, .slider-next').removeClass('dark-cs'); } } } $($obj.container).find('.swiper-slide .video-texture').removeClass('no-trans').removeClass('light-overlay').removeClass('dark-overlay').removeClass('half-dark-overlay').removeClass('half-light-overlay'); //add slide counts $($obj.container).find('.slider-prev .slide-count .slide-current').html( $activeIndex2 ); $($obj.container).find('.slider-next .slide-count .slide-current').html( $activeIndex2 ); if($($obj.container).attr('data-loop') == 'true'){ //duplicate first slide if( $($obj.container).find('.swiper-slide-active').index()+1 == 1) { $($obj.container).find('.slider-next .slide-count .slide-current, .slider-prev .slide-count .slide-current').html( $slideNum - 2 ); } //duplicate last slide else if( $($obj.container).find('.swiper-slide-active').index()+1 == $slideNum) { $($obj.container).find('.slider-next .slide-count .slide-current, .slider-prev .slide-count .slide-current').html( 1 ); } } if($obj.activeIndex >= 10) { $($obj.container).find('.slider-next .slide-count .slide-current').addClass('double-digits'); } else { $($obj.container).find('.slider-next .slide-count .slide-current').removeClass('double-digits'); } $($obj.container).find('.swiper-slide:not(".swiper-slide-active")').each(function(){ if($(this).find('.video-wrap video').length > 0) { //if($(this).find('.video-wrap video').get(0).currentTime != 0 ) $(this).find('.video-wrap video').get(0).currentTime = 0; } }); //don't allow swiping on duplicate transition if($($obj.container).attr('data-loop') == 'true'){ if($obj.previousIndex == 1 && $obj.activeIndex == 0 || $obj.previousIndex == $slideNum - 2 && $obj.activeIndex == $slideNum - 1 ){ $('.swiper-slide').addClass('duplicate-transition'); } } clearTimeout(animationQueue); animationQueue = setTimeout(function(){ $animating = false; $('.swiper-slide').removeClass('duplicate-transition'); },800); } //functions to add or remove slider for webkit parallax fix function hideSlider() { if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 125) >= 1){ $('.parallax_slider_outer .nectar-slider-wrap, .project-title.parallax-effect').css('visibility','hidden').hide(); $('.parallax_slider_outer').removeClass('element-in-view').addClass('element-out-of-view'); //directional slider autorotate clear if($('.parallax_slider_outer .nectar-slider-wrap[data-overall_style="directional"]').length > 0) { var $autoplayVal = $('.parallax_slider_outer .nectar-slider-wrap[data-overall_style="directional"]').attr('data-autorotate'); if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) { clearInterval( autoplay[$('.parallax_slider_outer .nectar-slider-wrap').attr('autoplay-id')] ); } } $(window).on('scroll',showSlider); $(window).off('scroll',hideSlider); } } function showSlider() { if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 125) <= 1){ $('.parallax_slider_outer .nectar-slider-wrap, .project-title.parallax-effect').css('visibility','visible').show(); $('.parallax_slider_outer').addClass('element-in-view'); //directional slider autorotate restart if($('.parallax_slider_outer .nectar-slider-wrap[data-overall_style="directional"]').length > 0 && $('.parallax_slider_outer.element-out-of-view').length > 0 && $('.parallax_slider_outer.user-stopped').length == 0) { var $autoplayVal = $('.parallax_slider_outer .nectar-slider-wrap[data-overall_style="directional"]').attr('data-autorotate'); if(typeof $autoplayVal !='undefined' && $autoplayVal.length != '0' && parseInt($autoplayVal)) { nectarSlideRotateInit($('.parallax_slider_outer .nectar-slider-wrap'),$autoplayVal,0); } } $('.parallax_slider_outer').removeClass('element-out-of-view'); //resize iframes incase user resized window when out of view $('.swiper-slide iframe[data-aspectRatio]').each(function() { var newWidth = $(this).parent().width(); var $el = $(this); if($(this).is(':visible')) $el.width(newWidth).height(newWidth * $el.attr('data-aspectRatio')); }); nsSliderContentResize(); //show content on current slide - could have been hidden from autorotate when slider was hidden if($('.parallax_slider_outer').length > 0) { var fromLeft = Math.abs(parseInt($('.parallax_slider_outer .nectar-slider-wrap .swiper-wrapper').css('left'))); var currentSlide = Math.round(fromLeft/$('.parallax_slider_outer .nectar-slider-wrap .swiper-slide').width()); $('.parallax_slider_outer .swiper-wrapper .swiper-slide:eq(' + currentSlide + ')').find('.content').children().each(function(i){ $(this).stop(true,true).css({ 'opacity' : 1, 'padding-top' : 0 }); }); $('.parallax_slider_outer .swiper-wrapper .swiper-slide:eq(' + currentSlide + ')').addClass('autorotate-shown'); } $(window).on('scroll',hideSlider); $(window).off('scroll',showSlider); } } function sliderCorrectDisplayCheck() { if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 125) >= 1){ hideSlider(); } $(window).unbind('scroll',sliderCorrectDisplayCheck); } var $smoothActive = $('body').attr('data-smooth-scrolling'); // Create cross browser requestAnimationFrame method: window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(f){setTimeout(f, 1000/60)} function parallaxScroll(){ if($('.parallax_slider_outer.element-in-view').length == 0) return false; if($smoothActive == 1 && navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) { return false; } $('.parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"]').stop(true,true).transition({ y: $(window).scrollTop()*-.2 },0); $('.parallax_slider_outer.first-section .swiper-slide:not(".static"):not(".caption-no-fade") .content, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-next, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-prev, .swiper-wrapper .slider-down-arrow').stop(true,true).transition({ y: $(window).scrollTop()*-.14 },0); $('#full_width_portfolio .project-title.parallax-effect').transition({ y: $(window).scrollTop()*-.2 },0); $('.parallax_slider_outer.first-section .swiper-slide:not(".caption-no-fade") .content, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-next, .parallax_slider_outer.first-section .nectar-slider-wrap[data-parallax="true"] .swiper-container .slider-prev, .swiper-wrapper .slider-down-arrow').css('opacity', 1-($(window).scrollTop()/($sliderHeight-120)) ); } function sliderParallaxUpdateHeight(){ $sliderHeight = parseInt($('.parallax_slider_outer.first-section .swiper-container').attr('data-height')); $('.project-title').css({ 'top': $('#header-space').outerHeight() + $adminBarHeight + 'px' }); } var $sliderHeight = parseInt($('.parallax_slider_outer.first-section .swiper-container').attr('data-height')); var $adminBarHeight = ($('#wpadminbar').length > 0) ? 28 : 0; function sliderParallaxInit() { if($('#portfolio-extra').length > 0 && $('#full_width_portfolio').length == 0) { return false; } //$(window).on('scroll.nsParallaxScroll',parallaxScroll); $('.parallax_slider_outer').addClass('element-in-view'); window.addEventListener('scroll', function(){ requestAnimationFrame(parallaxScroll) }, false) //hide slider to not mess up parallax section var portfolioHeaderHeight = ($('.project-title.parallax-effect').length > 0) ? 100 : 0; function displayParallaxSliderInit() { if( $(window).scrollTop()/($sliderHeight + portfolioHeaderHeight + 90) >= 1){ $(window).off('scroll.nsVisibilityHide'); $(window).on('scroll.nsVisibilityHide', hideSlider); $(window).on('scroll',showSlider); } else { $(window).off('scroll.nsVisibilityShow'); $(window).on('scroll.nsVisibilityShow', showSlider); $(window).off('scroll', hideSlider); } } displayParallaxSliderInit(); $(window).off('scroll.nsCorrectDisplayCheck'); $(window).on('scroll.nsCorrectDisplayCheck',sliderCorrectDisplayCheck); $('body:not(".single") .page-header-no-bg, body:not(".single") #page-header-wrap, body:not(".single") #page-header-bg').remove(); $('.project-title').addClass('parallax-effect').css({ 'top': $('#header-space').outerHeight() + $adminBarHeight + 'px' }); //caption alignment if portfolio fullwidth parallax if($('.project-title.parallax-effect').length > 0) { $('.parallax_slider_outer.first-section .swiper-slide .content, .nectar-slider-wrap.first-section .swiper-slide .content').css('margin-top','0px'); $('.swiper-container .slider-prev, .swiper-container .slider-next').css('margin-top','-28px'); } //if using wooCommerce sitewide notice if($('.demo_store').length > 0) $('.project-title.parallax-effect').css('margin-top','-25px'); if($('#full_width_portfolio').length > 0){ $('.parallax_slider_outer.first-section').css('margin-top','93px'); } $(window).off('resize.nsHeightUpdate'); $(window).on('resize.nsHeightUpdate',sliderParallaxUpdateHeight); } //parallax function parallaxCheck(){ $(window).off('scroll.nsParallaxScroll'); if($('.parallax_slider_outer').length > 0 && !navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)){ sliderParallaxInit(); } else if($('.parallax_slider_outer').length > 0 && navigator.userAgent.match(/(Android|iPod|iPhone|iPad|IEMobile|Opera Mini)/)) { $('.project-title').addClass('parallax-effect').css({ 'top': $('#header-space').outerHeight() + $adminBarHeight + 'px' }); $('body:not(".single") .page-header-no-bg, body:not(".single") #page-header-wrap, body:not(".single") #page-header-bg').remove(); } else { $('.project-title').css({'top':'0'}); } } parallaxCheck(); function niceScrollInit(){ $("html").niceScroll({ scrollspeed: 60, mousescrollstep: 40, cursorwidth: 15, cursorborder: 0, cursorcolor: '#303030', cursorborderradius: 6, autohidemode: false, horizrailenabled: false }); if($('#boxed').length == 0){ $('body, body #header-outer, body #header-secondary-outer, body #search-outer').css('padding-right','16px'); } $('html').addClass('no-overflow-y'); } //pause video backgrounds if popup video player is started $('.portfolio-items a.pp:contains(Video), .swiper-container .buttons a.pp').click(function(){ $('.swiper-slide').each(function(){ if($(this).find('.video-wrap video').length > 0) { $(this).find('.video-wrap video').get(0).pause(); } }); }); //solid button hover effect $.cssHooks.backgroundColor = { get: function(elem) { if (elem.currentStyle) var bg = elem.currentStyle["backgroundColor"]; else if (window.getComputedStyle) var bg = document.defaultView.getComputedStyle(elem, null).getPropertyValue("background-color"); if (bg.search("rgb") == -1) return bg; else { bg = bg.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); function hex(x) { return ("0" + parseInt(x).toString(16)).slice(-2); } if(bg) { return "#" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]); } } } } function shadeColor(color, shade) { var colorInt = parseInt(color.substring(1),16); var R = (colorInt & 0xFF0000) >> 16; var G = (colorInt & 0x00FF00) >> 8; var B = (colorInt & 0x0000FF) >> 0; R = R + Math.floor((shade/255)*R); G = G + Math.floor((shade/255)*G); B = B + Math.floor((shade/255)*B); var newColorInt = (R<<16) + (G<<8) + (B); var newColorStr = "#"+newColorInt.toString(16); return newColorStr; } function sliderbuttonHoverEffect() { $('.swiper-slide').each(function(){ $(this).find('.solid_color').each(function(){ var $currentColor = $(this).find('a').css('background-color'); var $hoverColor = shadeColor($currentColor, -16); $(this).find('a').hover(function(){ $(this).attr('style','background-color:'+$hoverColor+'!important;'); },function(){ $(this).attr('style',''); }); }); }); } sliderbuttonHoverEffect(); //slider down arrow var logoHeight = parseInt($('#header-outer').attr('data-logo-height')); var headerPadding = parseInt($('#header-outer').attr('data-padding')); var shrinkNum = 8; if($('#header-outer[data-shrink-num]').length > 0 ) shrinkNum = $('#header-outer').attr('data-shrink-num'); headerPadding = headerPadding - headerPadding/1.8; $('body').on('click','.slider-down-arrow',function(){ var $currentSlider = $(this).parents('.swiper-container'); var $topDistance = $currentSlider.attr('data-height'); var $offset = ($currentSlider.parents('.first-section').length == 0 || $('body[data-transparent-header="false"]').length > 0) ? $currentSlider.offset().top : 0; if(!$('body').hasClass('mobile')){ $('body,html').stop().animate({ scrollTop: parseInt($topDistance - $('#header-space').height()) + parseInt(shrinkNum) + headerPadding*2 + $offset + 2 },1000,'easeInOutCubic') } else { $('body,html').stop().animate({ scrollTop: parseInt($topDistance) + parseInt($currentSlider.offset().top) + 2 },1000,'easeInOutCubic') } return false; }); function prettyPhotoInit(){ var loading_animation = ($('body[data-loading-animation]').attr('data-loading-animation') != 'none') ? $('body').attr('data-loading-animation') : null ; var ascend_loader = ($('body').hasClass('ascend')) ? '' : ''; var ascend_loader_class = ($('body').hasClass('ascend')) ? 'default_loader ' : ''; $(".nectar-slider-wrap a[rel^='prettyPhoto']").prettyPhoto({ theme: 'dark_rounded', allow_resize: true, default_width: 690, opacity: 0.85, animation_speed: 'normal', default_height: 388, social_tools: '', markup: '
\
 
\
\
\ \ \

0/0

\
\ \
\
\
\
\
\
\
\
\
\

\
\
\
\
\
\
\
'+ascend_loader+'
\
' }); } });