/********************************************

 * REVOLUTION 5.4.5 EXTENSION - PARALLAX

 * @version: 2.2.3 (17.05.2017)

 * @requires jquery.themepunch.revolution.js

 * @author ThemePunch

*********************************************/

(function($) {

"use strict";

var _R = jQuery.fn.revolution,

	_ISM = _R.is_mobile(),

	extension = {	alias:"Parallax Min JS",

					name:"revolution.extensions.parallax.min.js",

					min_core: "5.4.5",

					version:"2.2.3"

			  };



jQuery.extend(true,_R, {	

	

	checkForParallax : function(container,opt) {		

		if (_R.compare_version(extension).check==="stop") return false;

		var _ = opt.parallax;



		if (_.done) return;

		_.done = true;



		if (_ISM && _.disable_onmobile=="on") return false;





		if (_.type=="3D" || _.type=="3d") {			

			punchgs.TweenLite.set(opt.c,{overflow:_.ddd_overflow});

			punchgs.TweenLite.set(opt.ul,{overflow:_.ddd_overflow});		

			if (opt.sliderType!="carousel" && _.ddd_shadow=="on") {

				opt.c.prepend('<div class="dddwrappershadow"></div>')

				punchgs.TweenLite.set(opt.c.find('.dddwrappershadow'),{force3D:"auto",transformPerspective:1600,transformOrigin:"50% 50%", width:"100%",height:"100%",position:"absolute",top:0,left:0,zIndex:0});			

			}

		}

		

		function setDDDInContainer(li) {

			if (_.type=="3D" || _.type=="3d") {

				li.find('.slotholder').wrapAll('<div class="dddwrapper" style="width:100%;height:100%;position:absolute;top:0px;left:0px;overflow:hidden"></div>');				

				li.find('.tp-parallax-wrap').wrapAll('<div class="dddwrapper-layer" style="width:100%;height:100%;position:absolute;top:0px;left:0px;z-index:5;overflow:'+_.ddd_layer_overflow+';"></div>');				



				// MOVE THE REMOVED 3D LAYERS OUT OF THE PARALLAX GROUP					

				li.find('.rs-parallaxlevel-tobggroup').closest('.tp-parallax-wrap').wrapAll('<div class="dddwrapper-layertobggroup" style="position:absolute;top:0px;left:0px;z-index:50;width:100%;height:100%"></div>');



				var dddw = li.find('.dddwrapper'),

					dddwl = li.find('.dddwrapper-layer'),

					dddwlbg = li.find('.dddwrapper-layertobggroup');



				dddwlbg.appendTo(dddw);

								

				if (opt.sliderType=="carousel") {

					 if (_.ddd_shadow=="on") dddw.addClass("dddwrappershadow");					 

					 punchgs.TweenLite.set(dddw,{borderRadius:opt.carousel.border_radius});

				}

				punchgs.TweenLite.set(li,{overflow:"visible",transformStyle:"preserve-3d",perspective:1600});

				punchgs.TweenLite.set(dddw,{force3D:"auto",transformOrigin:"50% 50%"});					

				punchgs.TweenLite.set(dddwl,{force3D:"auto",transformOrigin:"50% 50%",zIndex:5});					

				punchgs.TweenLite.set(opt.ul,{transformStyle:"preserve-3d",transformPerspective:1600});					

			}

		}



		opt.li.each(function() {

			setDDDInContainer(jQuery(this));						

		});



		if ((_.type=="3D" || _.type=="3d") && opt.c.find('.tp-static-layers').length>0) {

			punchgs.TweenLite.set(opt.c.find('.tp-static-layers'),{top:0, left:0,width:"100%",height:"100%"});

			setDDDInContainer(opt.c.find('.tp-static-layers'));

		}

		_.pcontainers = new Array();

		_.pcontainer_depths = new Array();

		_.bgcontainers = new Array();

		_.bgcontainer_depths = new Array();



		opt.c.find('.tp-revslider-slidesli .slotholder, .tp-revslider-slidesli .rs-background-video-layer').each(function() {

			var t = jQuery(this),

				l = t.data('bgparallax') || opt.parallax.bgparallax;		

			l = l == "on" ? 1 : l;				

			if (l!==undefined && l!=="off") {									

				_.bgcontainers.push(t);

				_.bgcontainer_depths.push(opt.parallax.levels[parseInt(l,0)-1]/100);

			}

		})



		



		for (var i = 1; i<=_.levels.length;i++)				

			opt.c.find('.rs-parallaxlevel-'+i).each(function() {					

				var pw = jQuery(this),

					tpw = pw.closest('.tp-parallax-wrap');												

				

				tpw.data('parallaxlevel',_.levels[i-1])

				tpw.addClass("tp-parallax-container");

				_.pcontainers.push(tpw);

				_.pcontainer_depths.push(_.levels[i-1]);

			});		



		

		if (_.type=="mouse" || _.type=="scroll+mouse" || _.type=="mouse+scroll" || _.type=="3D" || _.type=="3d") {

		

			container.mouseenter(function(event) {

				var currslide = container.find('.active-revslide'),

					t = container.offset().top,

					l = container.offset().left,

					ex = (event.pageX-l),

					ey =  (event.pageY-t);

				currslide.data("enterx",ex);

				currslide.data("entery",ey);

			});



			container.on('mousemove.hoverdir, mouseleave.hoverdir, trigger3dpath',function(event,data) {				

				var currslide = data && data.li ? data.li : container.find('.active-revslide');



				

				// CALCULATE DISTANCES

				if (_.origo=="enterpoint") {

					var	t = container.offset().top,

						l = container.offset().left;



					if (currslide.data("enterx")==undefined) currslide.data("enterx",(event.pageX-l));

					if (currslide.data("entery")==undefined) currslide.data("entery",(event.pageY-t));										



					var mh = currslide.data("enterx") || (event.pageX-l),

						mv = currslide.data("entery") || (event.pageY-t),

						diffh = (mh - (event.pageX - l)),

						diffv = (mv - (event.pageY - t)),

						s = _.speed/1000 || 0.4;

				} else {

					var	t = container.offset().top,

						l = container.offset().left,

						diffh = (opt.conw/2 - (event.pageX-l)),

						diffv = (opt.conh/2 - (event.pageY-t)),

						s = _.speed/1000 || 3;

				}

				



				if (event.type=="mouseleave") {

					diffh = _.ddd_lasth || 0;

					diffv = _.ddd_lastv || 0;

					s = 1.5;									

				}



				

				for (var i=0;i<_.pcontainers.length;i++) {				

					var pc = _.pcontainers[i],

						bl = _.pcontainer_depths[i],

						pl = _.type=="3D" || _.type=="3d" ? bl/200 : bl/100,

						offsh =	 diffh * pl,

						offsv =	 diffv * pl;		

						if (_.type=="scroll+mouse" || _.type=="mouse+scroll" ) 

							punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,ease:punchgs.Power3.easeOut,overwrite:"all"});

						else

							punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"});

				};



				if (_.type=="3D" || _.type=="3d") {

					var sctor = '.tp-revslider-slidesli .dddwrapper, .dddwrappershadow, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer';

					if (opt.sliderType==="carousel") sctor = ".tp-revslider-slidesli .dddwrapper, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer";

					opt.c.find(sctor).each(function() {										

						var t = jQuery(this),

							pl = _.levels[_.levels.length-1]/200,										

							offsh =	diffh * pl,

							offsv =	diffv * pl,

							offrv = opt.conw == 0 ? 0 :  Math.round((diffh / opt.conw * pl)*100) || 0,

							offrh = opt.conh == 0 ? 0 : Math.round((diffv / opt.conh * pl)*100) || 0,										

							li = t.closest('li'),

							zz = 0,

							itslayer = false;



							if (t.hasClass("dddwrapper-layer")) {

								zz = _.ddd_z_correction || 65;

								itslayer = true;

							}



						if (t.hasClass("dddwrapper-layer")) {

							offsh=0;

							offsv=0;

						}

												

						if (li.hasClass("active-revslide") || opt.sliderType!="carousel")

							if (_.ddd_bgfreeze!="on" || (itslayer))								

								punchgs.TweenLite.to(t,s,{rotationX:offrh, rotationY:-offrv, x:offsh, z:zz,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"});								  	

							else 								

								punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0, rotationX:0, z:0,ease:punchgs.Power3.easeOut,overwrite:"all"});

						else 

							punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0,x:0,y:0, rotationX:0, z:0,ease:punchgs.Power3.easeOut,overwrite:"all"});

																	

						if (event.type=="mouseleave")

						 	punchgs.TweenLite.to(jQuery(this),3.8,{z:0, ease:punchgs.Power3.easeOut});

					});

				}					

			});



			if (_ISM)

				window.ondeviceorientation = function(event) {

					var y = Math.round(event.beta  || 0)-70,

						x = Math.round(event.gamma || 0);



					var currslide = container.find('.active-revslide');



					if (jQuery(window).width() > jQuery(window).height()){

							var xx = x;

							x = y;

							y = xx;

					}



					var cw = container.width(),

						ch = container.height(),

						diffh = (360/cw * x),

				  		diffv = (180/ch * y),

				  		s = _.speed/1000 || 3,				  	

				  		pcnts = [];

					

					currslide.find(".tp-parallax-container").each(function(i){					

						pcnts.push(jQuery(this));

					});

					container.find('.tp-static-layers .tp-parallax-container').each(function(){

						pcnts.push(jQuery(this));

					});



				  	jQuery.each(pcnts, function() {

						var pc = jQuery(this),

							bl = parseInt(pc.data('parallaxlevel'),0),

							pl = bl/100,

							offsh =	 diffh * pl*2,

							offsv =	 diffv * pl*4;									

							punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"});	

					});

					

					if (_.type=="3D" || _.type=="3d") {

						var sctor = '.tp-revslider-slidesli .dddwrapper, .dddwrappershadow, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer';

						if (opt.sliderType==="carousel") sctor = ".tp-revslider-slidesli .dddwrapper, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer";

						opt.c.find(sctor).each(function() {			

							var t = jQuery(this),

								pl = _.levels[_.levels.length-1]/200,

								offsh =	diffh * pl,

								offsv =	diffv * pl*3,

								offrv = opt.conw == 0 ? 0 :  Math.round((diffh / opt.conw * pl)*500) || 0,

								offrh = opt.conh == 0 ? 0 : Math.round((diffv / opt.conh * pl)*700) || 0,

								li = t.closest('li'),

								zz = 0,

								itslayer = false;



							if (t.hasClass("dddwrapper-layer")) {

								zz = _.ddd_z_correction || 65;

								itslayer = true;

							}



							if (t.hasClass("dddwrapper-layer")) {

								offsh=0;

								offsv=0;

							}

												

							if (li.hasClass("active-revslide") || opt.sliderType!="carousel")

								if (_.ddd_bgfreeze!="on" || (itslayer))								

									punchgs.TweenLite.to(t,s,{rotationX:offrh, rotationY:-offrv, x:offsh, z:zz,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"});								  	

								else 								

									punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0, rotationX:0, z:0,ease:punchgs.Power3.easeOut,overwrite:"all"});

							else 

								punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0,z:0,x:0,y:0, rotationX:0, ease:punchgs.Power3.easeOut,overwrite:"all"});

																	

							if (event.type=="mouseleave")

							 	punchgs.TweenLite.to(jQuery(this),3.8,{z:0, ease:punchgs.Power3.easeOut});

						});

					}

				}			 

		}

				

		// COLLECT ALL ELEMENTS WHICH NEED FADE IN/OUT ON PARALLAX SCROLL

		var _s = opt.scrolleffect;

		_s.bgs = new Array();		



		if (_s.on) {		

			if (_s.on_slidebg==="on")

				for (var i=0;i<opt.allslotholder.length;i++) {													

					_s.bgs.push(opt.allslotholder[i]);

				}

								

			_s.multiplicator_layers = parseFloat(_s.multiplicator_layers);

			_s.multiplicator = parseFloat(_s.multiplicator);	

		}

		if (_s.layers!==undefined && _s.layers.length===0) _s.layers = false;

		if (_s.bgs!==undefined && _s.bgs.length===0) _s.bgs = false;	



		_R.scrollTicker(opt,container);



	},

	

	scrollTicker : function(opt,container) {

		var faut;



		if (opt.scrollTicker!=true) {

			opt.scrollTicker = true;		

			if (_ISM) {		

				punchgs.TweenLite.ticker.fps(150);

				punchgs.TweenLite.ticker.addEventListener("tick",function() {_R.scrollHandling(opt);},container,false,1);

			} else {				

				document.addEventListener('scroll',function(e) {						

					_R.scrollHandling(opt,true);											

				}, {passive:true});



				/*window.addEventListener('mousewheel',function(e) {

					_R.scrollHandling(opt,true);

				}, {passive:true});



				window.addEventListener('DOMMouseScroll',function() {_R.scrollHandling(opt,true);}, {passive:true});*/

			}		

				

		}		

		_R.scrollHandling(opt, true);

	},







	//	-	SET POST OF SCROLL PARALLAX	-

	scrollHandling : function(opt,fromMouse,speedoverwrite) {	

		opt.lastwindowheight = opt.lastwindowheight || window.innerHeight;

		opt.conh = opt.conh===0 || opt.conh===undefined ? opt.infullscreenmode ? opt.minHeight : opt.c.height() : opt.conh;

		if (opt.lastscrolltop==window.scrollY && !opt.duringslidechange && !fromMouse) return false;		

		punchgs.TweenLite.delayedCall(0.2,saveLastScroll,[opt,window.scrollY]);



		var b = opt.c[0].getBoundingClientRect(),

			_v = opt.viewPort,

			_ = opt.parallax;

		

		var proc = b.top<0 || b.height>opt.lastwindowheight ? b.top / b.height : b.bottom>opt.lastwindowheight ? (b.bottom-opt.lastwindowheight) / b.height : 0;

		opt.scrollproc = proc;



		if (_R.callBackHandling)

			_R.callBackHandling(opt,"parallax","start");



		if (_v.enable) {

			var area = 1-Math.abs(proc);

			area = area<0 ? 0 : area;

			// To Make sure it is not any more in %			

			if (!jQuery.isNumeric(_v.visible_area))

			 if (_v.visible_area.indexOf('%')!==-1) 

				_v.visible_area = parseInt(_v.visible_area)/100;

			

		 	if (1-_v.visible_area<=area) {

				if (!opt.inviewport) {

					opt.inviewport = true;

					_R.enterInViewPort(opt);

				}

			} else {

				if (opt.inviewport) {

					opt.inviewport = false;

					_R.leaveViewPort(opt);

				}

			}

		}

					

		// SCROLL BASED PARALLAX EFFECT 

		if (_ISM && _.disable_onmobile=="on") return false;



		if (_.type!="3d" && _.type!="3D") {

			if (_.type=="scroll" || _.type=="scroll+mouse" || _.type=="mouse+scroll") 		

				if (_.pcontainers) 		

					for (var i=0;i<_.pcontainers.length;i++) {

						if (_.pcontainers[i].length>0) {

							var pc = _.pcontainers[i],

								pl = _.pcontainer_depths[i]/100,						

								offsv = Math.round((proc * -(pl*opt.conh)*10))/10 || 0,

								s = speedoverwrite!==undefined ? speedoverwrite :  _.speedls/1000 || 0;

							pc.data('parallaxoffset',offsv);		

							punchgs.TweenLite.to(pc,s,{overwrite:"auto",force3D:"auto",y:offsv})

						}

					}											

			if (_.bgcontainers)

				for (var i=0;i<_.bgcontainers.length;i++) {

					var t = _.bgcontainers[i],

						l = _.bgcontainer_depths[i],			

						offsv =	proc * -(l*opt.conh) || 0,

						s = speedoverwrite!==undefined ? speedoverwrite : _.speedbg/1000 || 0;	



					punchgs.TweenLite.to(t,s,{position:"absolute",top:"0px",left:"0px",backfaceVisibility:"hidden",force3D:"true",y:offsv+"px"});											

				}							

		}



		// SCROLL BASED BLUR,FADE,GRAYSCALE EFFECT

		var _s = opt.scrolleffect;

		if (_s.on && (_s.disable_on_mobile!=="on" || !_ISM)) { 

			

			var _fproc = Math.abs(proc)-(_s.tilt/100);

			_fproc = _fproc<0 ? 0 : _fproc;			

			if (_s.layers!==false) {									

				var fadelevel = 1 - (_fproc *_s.multiplicator_layers),

					seo = { backfaceVisibility:"hidden",force3D:"true",z:0.001,perspective:600};

				if (_s.direction=="top" && proc>=0) fadelevel=1;

				if (_s.direction=="bottom" && proc<=0) fadelevel=1;

				fadelevel = fadelevel>1 ? 1 : fadelevel < 0 ? 0 : fadelevel;	

								



				if (_s.fade==="on")

					seo.opacity = fadelevel;



				if (_s.scale==="on") {					

					var scalelevel = (fadelevel);

					seo.scale = 1+(1-scalelevel);	

					

				}



				if (_s.blur==="on") {					

					var blurlevel = (1-fadelevel) * _s.maxblur;

					seo['-webkit-filter'] = 'blur('+blurlevel+'px)';

					seo['filter'] = 'blur('+blurlevel+'px)';

				}



				

				if (_s.grayscale==="on") {					

					var graylevel = (1-fadelevel) * 100,

						gf = 'grayscale('+graylevel+'%)';

					seo['-webkit-filter'] = seo['-webkit-filter']===undefined ? gf : seo['-webkit-filter']+' '+gf;

					seo['filter'] = seo['filter']===undefined ? gf: seo['filter']+' '+gf;

				}				

				punchgs.TweenLite.set(_s.layers,seo);    								

			}



			if (_s.bgs!==false) {									

				var fadelevel = 1 - (_fproc *_s.multiplicator),

					seo = { backfaceVisibility:"hidden",force3D:"true"};

				if (_s.direction=="top" && proc>=0) fadelevel=1;

				if (_s.direction=="bottom" && proc<=0) fadelevel=1;					

				fadelevel = fadelevel>1 ? 1 : fadelevel < 0 ? 0 : fadelevel;



				if (_s.fade==="on")

					seo.opacity = fadelevel;



				if (_s.scale==="on") {					

					var scalelevel = fadelevel;

					//seo.scale = scalelevel;

					punchgs.TweenLite.set(jQuery('.tp-kbimg-wrap'),{transformOrigin:"50% 50%",scale:scalelevel,force3D:true})

				}



				if (_s.blur==="on") {					

					var blurlevel = (1-fadelevel) * _s.maxblur;

					seo['-webkit-filter'] = 'blur('+blurlevel+'px)';

					seo['filter'] = 'blur('+blurlevel+'px)';

				}



				

				if (_s.grayscale==="on") {					

					var graylevel = (1-fadelevel) * 100,

						gf = 'grayscale('+graylevel+'%)';

					seo['-webkit-filter'] = seo['-webkit-filter']===undefined ? gf : seo['-webkit-filter']+' '+gf;

					seo['filter'] = seo['filter']===undefined ? gf: seo['filter']+' '+gf;

				}



				punchgs.TweenLite.set(_s.bgs,seo);    								

			}

		}		

		

		if (_R.callBackHandling)

			_R.callBackHandling(opt,"parallax","end");		

		

	}

		

});



function saveLastScroll(opt,st) { opt.lastscrolltop = st;}





//// END OF PARALLAX EFFECT	

})(jQuery);