Current File : /home/kelaby89/muzza.fit/wp-content/plugins/wolf-visual-composer/assets/js/sliders.js
/*!
 * Sliders
 *
 * Requires flexslider.js
 *
 * WPBakery Page Builder Extension 3.2.8
 */
/* jshint -W062 */

/* global WVCParams */
var WVCSliders = function( $ ) {

	'use strict';

	return {

		isMobile : false,

		/**
		 * Init UI
		 */
		init : function () {

			this.isMobile = WVCParams.isMobile;

			if ( $.isFunction( $.flexslider ) ) {

				var _this = this;

				this.advancedSlider();
				this.tabletSlider();
				this.laptopSlider();
				this.desktopSlider();
				this.mobileSlider();
				//this.lastPostsBigSlider();

				/**
				 * Resize event
				 */
				$( window ).resize( function() {
					_this.fullHeightSlider();
					_this.tabletSlider();
					_this.laptopSlider();
					_this.desktopSlider();
					_this.mobileSlider();
					_this.slideVideoBackground();
				} ).resize();
			}

			this.flexSlider();
		},

		/**
		 * Advanced Slider
		 */
		advancedSlider : function() {

			var isMobile = this.isMobile,
				defaultTransition = ( this.isMobile ) ? 'slide' : 'fade';

			$( '.wvc-advanced-slider, .wvc-last-posts-big-slider .flexslider' ).each( function() {

				var $slider = $( this ),
					transition,
					dataAutoplay = $slider.data( 'autoplay' ),
					dataSpeed = $slider.data( 'slideshow-speed' ),
					dataPauseonHover = $slider.data( 'pause-on-hover' ),
					dataTransition = $slider.data( 'transition' ),
					dataHeight = $slider.data( 'height' ),
					dataHeightUnit = $slider.data( 'height-unit' ),
					dataNavbullets = $slider.data( 'nav-bullets' ),
					dataArrows = $slider.data( 'nav-arrows' );

				transition = ( 'auto' === dataTransition ) ? defaultTransition : dataTransition;

				$( '#' + $slider.attr( 'id' ) ).wvcSlider( {
					selector : '#' + $slider.attr( 'id' ),
					isMobile : isMobile,
					animation : transition,
					slideshow : dataAutoplay,
					pauseOnHover: dataPauseonHover,
					slideshowSpeed : dataSpeed,
					controlNav : dataNavbullets,
					directionNav : dataArrows,
					sliderHeight : dataHeight,
					sliderHeightUnit : dataHeightUnit
				} );
			} );
		},

		/**
		 * FlexSlider
		 */
		flexSlider : function() {

			var defaultTransition = ( this.isMobile ) ? 'slide' : 'fade';

			/* Image Slider & Last Posts Slider */
			$( '.wvc-images-slider, .wvc-last-posts-slider .flexslider' ).each( function () {
				var $slider = $( this ),
					transition,
					dataAutoplay = $slider.data( 'autoplay' ),
					dataSpeed = $slider.data( 'slideshow-speed' ),
					dataPauseonHover = $slider.data( 'pause-on-hover' ),
					dataTransition = $slider.data( 'transition' ),
					dataNavbullets = $slider.data( 'nav-bullets' ),
					dataArrows = $slider.data( 'nav-arrows' );

				transition = ( 'auto' === dataTransition ) ? defaultTransition : dataTransition;

				$slider.flexslider( {
					animation: transition,
					slideshow : dataAutoplay,
					pauseOnHover: dataPauseonHover,
					slideshowSpeed : dataSpeed,
					smoothHeight: true,
					directionNav : dataArrows,
					controlNav : dataNavbullets
				} );
			} );

			$( '.wvc-post-gallery-slider' ).each( function () {
				var $slider = $( this );

				$slider.flexslider( {
					animation: defaultTransition,
					slideshow : true,
					pauseOnHover: true,
					slideshowSpeed : 4000,
					smoothHeight: true,
					directionNav : true,
					controlNav : true
				} );
			} );

			$( '.wvc-product-presentation .product-images' ).each( function () {
				var $slider = $( this );

				$slider.flexslider( {
					animation: defaultTransition,
					slideshow : true,
					pauseOnHover: true,
					slideshowSpeed : 4000,
					smoothHeight: true,
					directionNav : true,
					controlNav : false
				} );
			} );

			$( '.wvc-section-slideshow-background' ).each( function () {
				var $slider = $( this ),
					dataSpeed = $slider.data( 'slideshow-speed' );

				$slider.flexslider( {
					animation: 'fade',
					slideshow : true,
					pauseOnHover: false,
					slideshowSpeed : dataSpeed,
					animationSpeed : 1000,
					smoothHeight: false,
					directionNav : false,
					controlNav : false,
					useCSS : false
				} );
			} );
		},

		/**
		 * Last posts big slider
		 *
		 * deprecated. Advanced slider used instead
		 */
		lastPostsBigSlider : function () {

			var _this = this,
				defaultTransition = ( this.isMobile ) ? 'slide' : 'fade';


			$( '.wvc-last-posts-big-slider .flexslider' ).each( function () {

				var $slider = $( this ),
					transition,
					dataAutoplay = $slider.data( 'autoplay' ),
					dataSpeed = $slider.data( 'slideshow-speed' ),
					dataPauseonHover = $slider.data( 'pause-on-hover' ),
					dataTransition = $slider.data( 'transition' ),
					dataNavbullets = $slider.data( 'nav-bullets' ),
					dataArrows = $slider.data( 'nav-arrows' ),
					dataHeight = $slider.data( 'height' ),
					dataUnit = $slider.data( 'height-unit' );

				_this.setSliderHeight( $slider, dataHeight, dataUnit );

				transition = ( 'auto' === dataTransition ) ? defaultTransition : dataTransition;

				$slider.flexslider( {
					animation: transition,
					slideshow : dataAutoplay,
					pauseOnHover: dataPauseonHover,
					slideshowSpeed : dataSpeed,
					smoothHeight: true,
					directionNav : dataArrows,
					controlNav : dataNavbullets
				} );
			} );
		},

		/**
		 * Set element height to full screen
		 */
		setSliderHeight : function( $slider, value, unit ) {
			var _this = this,
				winHeight,
				scrollOffset = _this.getToolBarOffset(),
				bleed = 2;

			winHeight = parseInt( value, 10 );

			if ( 100 === winHeight && '%' === unit ) {
				scrollOffset = _this.getToolBarOffset();
			}

			if ( '%' === unit ) {
				winHeight = Math.floor( $( window ).height() * value / 100 );
			}

			if ( $( '.wpm-sticky-playlist-container' ).length ) {
				scrollOffset += $( '.wpm-sticky-playlist-container' ).height();
			}

			winHeight = winHeight - scrollOffset + bleed;

			$slider.find( '.slide' ).each( function() {
				$( this ).css( { 'height' : winHeight  } );
			} );
		},

		/**
		 * Slider with Tablet Background
		 */
		tabletSlider : function () {

			$( '.wvc-slider-background-tablet' ).each( function() {

				var tabletSliderContainer = $( this ),
					tabletSliderContainerWidth = tabletSliderContainer.width(),
					maxWidth = 625,
					defaultPaddingTop = 101,
					defaultPaddingLeft = 102,
					defaultPaddingRight = 95,
					defaultPaddingBottom = 0,
					newPaddingTop,
					newPaddingLeft,
					newPaddingRight,
					newPaddingBottom,
					newCss,

					colContainer = tabletSliderContainer.parent( '[class*="wolf_col_"]' );

				colContainer.css( { marginBottom : 0 } );

				if ( 822 > tabletSliderContainerWidth ) {

					newPaddingTop = Math.floor( ( tabletSliderContainerWidth / maxWidth ) * defaultPaddingTop );
					newPaddingLeft = Math.floor( ( tabletSliderContainerWidth / maxWidth ) * defaultPaddingLeft );
					newPaddingRight = Math.floor( ( tabletSliderContainerWidth / maxWidth ) * defaultPaddingRight );
					newPaddingBottom = Math.floor( ( tabletSliderContainerWidth / maxWidth ) * defaultPaddingBottom );

					newCss = {

						paddingTop : newPaddingTop,
						paddingLeft : newPaddingLeft,
						paddingRight : newPaddingRight,
						paddingBottom : newPaddingBottom

					};

					$( this ).css( newCss );
				}
			} );
		},

		/**
		 * Slider with Laptop Background
		 */
		laptopSlider : function () {

			$( '.wvc-slider-background-laptop' ).each( function() {

				var laptopSliderContainer = $( this ),
					laptopSliderContainerWidth = laptopSliderContainer.width(),
					maxWidth = 676,
					defaultPaddingTop = 40,
					defaultPaddingLeft = 116,
					defaultPaddingRight = 120,
					defaultPaddingBottom = 73,
					newPaddingTop,
					newPaddingLeft,
					newPaddingRight,
					newPaddingBottom,
					newCss;

				if ( 912 > laptopSliderContainerWidth ) {

					newPaddingTop = Math.floor( ( laptopSliderContainerWidth / maxWidth ) * defaultPaddingTop );
					newPaddingBottom = Math.floor( ( laptopSliderContainerWidth / maxWidth ) * defaultPaddingBottom );
					newPaddingLeft = Math.floor( ( laptopSliderContainerWidth / maxWidth ) * defaultPaddingLeft );
					newPaddingRight = Math.floor( ( laptopSliderContainerWidth / maxWidth ) * defaultPaddingRight );

					newCss = {

						paddingTop : newPaddingTop,
						paddingLeft : newPaddingLeft,
						paddingRight : newPaddingRight,
						paddingBottom : newPaddingBottom

					};

					$( this ).css( newCss );
				}
			} );
		},

		/**
		 * Slider with desktop Background
		 */
		desktopSlider : function () {

			$( '.wvc-slider-background-desktop' ).each( function() {

				var desktopSliderContainer = $( this ),
					desktopSliderContainerWidth = desktopSliderContainer.width(),
					maxWidth = 922,
					defaultPaddingTop = 41,
					defaultPaddingLeft = 42,
					defaultPaddingRight = 44,
					defaultPaddingBottom = 330,
					newPaddingTop,
					newPaddingLeft,
					newPaddingRight,
					newPaddingBottom,
					newCss;

				if ( 1007 > desktopSliderContainerWidth ) {

					newPaddingTop = Math.floor( ( desktopSliderContainerWidth / maxWidth ) * defaultPaddingTop );
					newPaddingBottom = Math.floor( ( desktopSliderContainerWidth / maxWidth ) * defaultPaddingBottom );
					newPaddingLeft = Math.floor( ( desktopSliderContainerWidth / maxWidth ) * defaultPaddingLeft );
					newPaddingRight = Math.floor( ( desktopSliderContainerWidth / maxWidth ) * defaultPaddingRight );

					newCss = {

						paddingTop : newPaddingTop,
						paddingLeft : newPaddingLeft,
						paddingRight : newPaddingRight,
						paddingBottom : newPaddingBottom

					};

					$( this ).css( newCss );
				}
			} );
		},

		/**
		 * Slider with mobile Background
		 */
		mobileSlider : function () {

			$( '.wvc-slider-background-mobile' ).each( function() {

				var mobileSliderContainer = $( this ),
					mobileSliderContainerWidth = mobileSliderContainer.width(),
					maxWidth = 277,
					defaultPaddingTop = 95,
					defaultPaddingLeft = 38,
					defaultPaddingRight = 37,
					defaultPaddingBottom = 103,
					newPaddingTop,
					newPaddingLeft,
					newPaddingRight,
					newPaddingBottom,
					newCss;

				if ( 350 > mobileSliderContainerWidth ) {

					newPaddingTop = Math.floor( ( mobileSliderContainerWidth / maxWidth ) * defaultPaddingTop );
					newPaddingBottom = Math.floor( ( mobileSliderContainerWidth / maxWidth ) * defaultPaddingBottom );
					newPaddingLeft = Math.floor( ( mobileSliderContainerWidth / maxWidth ) * defaultPaddingLeft );
					newPaddingRight = Math.floor( ( mobileSliderContainerWidth / maxWidth ) * defaultPaddingRight );

					newCss = {

						paddingTop : newPaddingTop,
						paddingLeft : newPaddingLeft,
						paddingRight : newPaddingRight,
						paddingBottom : newPaddingBottom

					};

					$( this ).css( newCss );
				}
			} );
		},

		/**
		 * Set element height to full screen
		 */
		fullHeightSlider : function() {
			var _this = this;

			$( '.wvc-fullscreen-slider' ).find( '.slide' ).each( function() {
				$( this ).css( { 'height' : $( window ).height() - _this.getToolBarOffset() } );
			} );
		},

		getToolBarOffset : function () {

			var scrollOffset = 0;

			if ( $( 'body' ).is( '.admin-bar' ) ) {

				if ( 782 < $( window ).width() ) {
					scrollOffset = 32;
				} else {
					scrollOffset = 46;
				}
			}

			return scrollOffset;
		},

		/**
		 * Video background
		 */
		slideVideoBackground : function () {

			var _this = this;

			$( '.wvc-slide-video-container').each( function() {
				var videoContainer = $( this ),
					containerWidth = $( this ).width(),
					containerHeight = $( this ).height(),
					ratioWidth = 640,
					ratioHeight = 360,
					//ratio = ratioWidth/ratioHeight,
					video = $( this ).find( '.wvc-slide-video' ),
					newHeight,
					newWidth,
					newMarginLeft,
					newMarginTop,
					newCss;

				if ( videoContainer.hasClass( 'wvc-youtube-video-bg-container' ) ) {
					video = videoContainer.find( 'iframe' );
					ratioWidth = 560;
					ratioHeight = 315;

				} else {
					if ( _this.isMobile ) {
						// console.log( this.isTouch );
						videoContainer.find( '.wvc-video-bg-fallback' ).css( { 'z-index' : 1 } );
						video.remove();
						return;
					}
				}

				if ( ( containerWidth / containerHeight ) >= 1.8 ) {
					newWidth = containerWidth;

					// console.log( containerWidth / containerHeight );

					newHeight = Math.floor( ( containerWidth/ratioWidth ) * ratioHeight ) + 2;
					newMarginTop =  - ( Math.floor( ( newHeight - containerHeight  ) ) / 2 );
					newMarginLeft =  - ( Math.floor( ( newWidth - containerWidth  ) ) / 2 );

					newCss = {
						width : newWidth,
						height : newHeight,
						marginTop :  newMarginTop,
						marginLeft : newMarginLeft
					};

					video.css( newCss );

				} else {

					// console.log( containerHeight );
					newHeight = containerHeight;
					newWidth = Math.floor( ( containerHeight/ratioHeight ) * ratioWidth );
					newMarginLeft =  - ( Math.floor( ( newWidth - containerWidth  ) ) / 2 );

					newCss = {
						width : newWidth,
						height : newHeight,
						marginLeft :  newMarginLeft,
						marginTop : 0
					};

					video.css( newCss );
				}
			} );
		}
	};

}( jQuery );

( function( $ ) {

	'use strict';

	$( document ).ready( function() {
		WVCSliders.init();
	} );

} )( jQuery );
Hello World !