text: "use strict";
  
  /********************************************
   * REVOLUTION 5.4.6.4 EXTENSION - KEN BURN
   * @version: 1.3.1 (15.05.2017)
   * @requires jquery.themepunch.revolution.js
   * @author ThemePunch
  *********************************************/
  (function ($) {
  	"use strict";
  
  	var _R = jQuery.fn.revolution,
  	    extension = { alias: "KenBurns Min JS",
  		name: "revolution.extensions.kenburn.min.js",
  		min_core: "5.4",
  		version: "1.3.1"
  	};
  
  	///////////////////////////////////////////
  	// 	EXTENDED FUNCTIONS AVAILABLE GLOBAL  //
  	///////////////////////////////////////////
  	jQuery.extend(true, _R, {
  
  		stopKenBurn: function stopKenBurn(l) {
  			if (_R.compare_version(extension).check === "stop") return false;
  
  			if (l.data('kbtl') != undefined) l.data('kbtl').pause();
  		},
  
  		startKenBurn: function startKenBurn(l, opt, prgs) {
  
  			if (_R.compare_version(extension).check === "stop") return false;
  
  			var d = l.data(),
  			    i = l.find('.defaultimg'),
  			    s = i.data('lazyload') || i.data('src'),
  			    i_a = d.owidth / d.oheight,
  			    cw = opt.sliderType === "carousel" ? opt.carousel.slide_width : opt.ul.width(),
  			    ch = opt.ul.height(),
  			    c_a = cw / ch;
  
  			if (l.data('kbtl')) l.data('kbtl').kill();
  
  			prgs = prgs || 0;
  
  			// NO KEN BURN IMAGE EXIST YET
  			if (l.find('.tp-kbimg').length == 0) {
  				var mediafilter = i.data('mediafilter');
  				mediafilter = mediafilter === undefined ? "" : mediafilter;
  				l.append('<div class="tp-kbimg-wrap ' + mediafilter + '" style="z-index:2;width:100%;height:100%;top:0px;left:0px;position:absolute;"><img class="tp-kbimg" src="' + s + '" style="position:absolute;" width="' + d.owidth + '" height="' + d.oheight + '"></div>');
  				l.data('kenburn', l.find('.tp-kbimg'));
  			}
  
  			var getKBSides = function getKBSides(w, h, f, cw, ch, ho, vo) {
  				var tw = w * f,
  				    th = h * f,
  				    hd = Math.abs(cw - tw),
  				    vd = Math.abs(ch - th),
  				    s = new Object();
  				s.l = (0 - ho) * hd;
  				s.r = s.l + tw;
  				s.t = (0 - vo) * vd;
  				s.b = s.t + th;
  				s.h = ho;
  				s.v = vo;
  				return s;
  			},
  			    getKBCorners = function getKBCorners(d, cw, ch, ofs, o) {
  
  				var p = d.bgposition.split(" ") || "center center",
  				    ho = p[0] == "center" ? "50%" : p[0] == "left" || p[1] == "left" ? "0%" : p[0] == "right" || p[1] == "right" ? "100%" : p[0],
  				    vo = p[1] == "center" ? "50%" : p[0] == "top" || p[1] == "top" ? "0%" : p[0] == "bottom" || p[1] == "bottom" ? "100%" : p[1];
  
  				ho = parseInt(ho, 0) / 100 || 0;
  				vo = parseInt(vo, 0) / 100 || 0;
  
  				var sides = new Object();
  
  				sides.start = getKBSides(o.start.width, o.start.height, o.start.scale, cw, ch, ho, vo);
  				sides.end = getKBSides(o.start.width, o.start.height, o.end.scale, cw, ch, ho, vo);
  
  				return sides;
  			},
  			    kcalcL = function kcalcL(cw, ch, d) {
  				var f = d.scalestart / 100,
  				    fe = d.scaleend / 100,
  				    ofs = d.offsetstart != undefined ? d.offsetstart.split(" ") || [0, 0] : [0, 0],
  				    ofe = d.offsetend != undefined ? d.offsetend.split(" ") || [0, 0] : [0, 0];
  				d.bgposition = d.bgposition == "center center" ? "50% 50%" : d.bgposition;
  
  				var o = new Object(),
  				    sw = cw * f,
  				    sh = sw / d.owidth * d.oheight,
  				    ew = cw * fe,
  				    eh = ew / d.owidth * d.oheight;
  
  				o.start = new Object();
  				o.starto = new Object();
  				o.end = new Object();
  				o.endo = new Object();
  
  				o.start.width = cw;
  				o.start.height = o.start.width / d.owidth * d.oheight;
  
  				if (o.start.height < ch) {
  					var newf = ch / o.start.height;
  					o.start.height = ch;
  					o.start.width = o.start.width * newf;
  				}
  				o.start.transformOrigin = d.bgposition;
  				o.start.scale = f;
  				o.end.scale = fe;
  
  				d.rotatestart = d.rotatestart === 0 ? 0.01 : d.rotatestart;
  				o.start.rotation = d.rotatestart + "deg";
  				o.end.rotation = d.rotateend + "deg";
  
  				// MAKE SURE THAT OFFSETS ARE NOT TOO HIGH
  				var c = getKBCorners(d, cw, ch, ofs, o);
  
  				ofs[0] = parseFloat(ofs[0]) + c.start.l;
  				ofe[0] = parseFloat(ofe[0]) + c.end.l;
  
  				ofs[1] = parseFloat(ofs[1]) + c.start.t;
  				ofe[1] = parseFloat(ofe[1]) + c.end.t;
  
  				var iws = c.start.r - c.start.l,
  				    ihs = c.start.b - c.start.t,
  				    iwe = c.end.r - c.end.l,
  				    ihe = c.end.b - c.end.t;
  
  				ofs[0] = ofs[0] > 0 ? 0 : iws + ofs[0] < cw ? cw - iws : ofs[0];
  				ofe[0] = ofe[0] > 0 ? 0 : iwe + ofe[0] < cw ? cw - iwe : ofe[0];
  
  				ofs[1] = ofs[1] > 0 ? 0 : ihs + ofs[1] < ch ? ch - ihs : ofs[1];
  				ofe[1] = ofe[1] > 0 ? 0 : ihe + ofe[1] < ch ? ch - ihe : ofe[1];
  
  				o.starto.x = ofs[0] + "px";
  				o.starto.y = ofs[1] + "px";
  				o.endo.x = ofe[0] + "px";
  				o.endo.y = ofe[1] + "px";
  				o.end.ease = o.endo.ease = d.ease;
  				o.end.force3D = o.endo.force3D = true;
  				return o;
  			};
  
  			if (l.data('kbtl') != undefined) {
  				l.data('kbtl').kill();
  				l.removeData('kbtl');
  			}
  
  			var k = l.data('kenburn'),
  			    kw = k.parent(),
  			    anim = kcalcL(cw, ch, d),
  			    kbtl = new punchgs.TimelineLite();
  
  			kbtl.pause();
  
  			anim.start.transformOrigin = "0% 0%";
  			anim.starto.transformOrigin = "0% 0%";
  
  			kbtl.add(punchgs.TweenLite.fromTo(k, d.duration / 1000, anim.start, anim.end), 0);
  			kbtl.add(punchgs.TweenLite.fromTo(kw, d.duration / 1000, anim.starto, anim.endo), 0);
  
  			// ADD BLUR EFFECT ON THE ELEMENTS
  			if (d.blurstart !== undefined && d.blurend !== undefined && (d.blurstart !== 0 || d.blurend !== 0)) {
  				var blurElement = { a: d.blurstart },
  				    blurElementEnd = { a: d.blurend, ease: anim.endo.ease },
  				    blurAnimation = new punchgs.TweenLite(blurElement, d.duration / 1000, blurElementEnd);
  
  				blurAnimation.eventCallback("onUpdate", function (kw) {
  					punchgs.TweenLite.set(kw, { filter: 'blur(' + blurElement.a + 'px)', webkitFilter: 'blur(' + blurElement.a + 'px)' });
  				}, [kw]);
  				kbtl.add(blurAnimation, 0);
  			}
  
  			kbtl.progress(prgs);
  			kbtl.play();
  
  			l.data('kbtl', kbtl);
  		}
  	});
  })(jQuery);