386 lines
12 KiB
JavaScript
386 lines
12 KiB
JavaScript
/********************************************
|
|
* REVOLUTION 5.4.6.5 EXTENSION - ACTIONS
|
|
* @version: 2.1.1 (22.11.2017)
|
|
* @requires jquery.themepunch.revolution.js
|
|
* @author ThemePunch
|
|
*********************************************/
|
|
(function($) {
|
|
"use strict";
|
|
var _R = jQuery.fn.revolution,
|
|
_ISM = _R.is_mobile(),
|
|
extension = { alias:"Actions Min JS",
|
|
name:"revolution.extensions.actions.min.js",
|
|
min_core: "5.4.5",
|
|
version:"2.1.0"
|
|
};
|
|
|
|
|
|
///////////////////////////////////////////
|
|
// EXTENDED FUNCTIONS AVAILABLE GLOBAL //
|
|
///////////////////////////////////////////
|
|
jQuery.extend(true,_R, {
|
|
checkActions : function(_nc,opt,as) {
|
|
|
|
if (_R.compare_version(extension).check==="stop") return false;
|
|
|
|
checkActions_intern(_nc,opt,as);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
//////////////////////////////////////////
|
|
// - INITIALISATION OF ACTIONS - //
|
|
//////////////////////////////////////////
|
|
var checkActions_intern = function(_nc,opt,as) {
|
|
|
|
if (as)
|
|
jQuery.each(as,function(i,a) {
|
|
|
|
a.delay = parseInt(a.delay,0)/1000;
|
|
_nc.addClass("tp-withaction");
|
|
|
|
// LISTEN TO ESC TO EXIT FROM FULLSCREEN
|
|
if (!opt.fullscreen_esclistener) {
|
|
if (a.action=="exitfullscreen" || a.action=="togglefullscreen") {
|
|
jQuery(document).keyup(function(e) {
|
|
if (e.keyCode == 27 && jQuery('#rs-go-fullscreen').length>0)
|
|
_nc.trigger(a.event);
|
|
});
|
|
opt.fullscreen_esclistener = true;
|
|
}
|
|
}
|
|
|
|
var tnc = a.layer == "backgroundvideo" ? jQuery(".rs-background-video-layer") : a.layer == "firstvideo" ? jQuery(".tp-revslider-slidesli").find('.tp-videolayer') : jQuery("#"+a.layer);
|
|
|
|
|
|
// NO NEED EXTRA TOGGLE CLASS HANDLING
|
|
if (jQuery.inArray(a.action,["toggleslider","toggle_mute_video","toggle_global_mute_video","togglefullscreen"])!=-1) {
|
|
_nc.data('togglelisteners',true);
|
|
}
|
|
|
|
// COLLECT ALL TOGGLE TRIGGER TO CONNECT THEM WITH TRIGGERED LAYER
|
|
switch (a.action) {
|
|
case "togglevideo":
|
|
jQuery.each(tnc,function(i,_tnc) {
|
|
_tnc = jQuery(_tnc);
|
|
var videotoggledby = _tnc.data('videotoggledby');
|
|
if (videotoggledby == undefined)
|
|
videotoggledby = new Array();
|
|
videotoggledby.push(_nc);
|
|
_tnc.data('videotoggledby',videotoggledby)
|
|
});
|
|
break;
|
|
case "togglelayer":
|
|
jQuery.each(tnc,function(i,_tnc) {
|
|
_tnc = jQuery(_tnc);
|
|
var layertoggledby = _tnc.data('layertoggledby');
|
|
if (layertoggledby == undefined)
|
|
layertoggledby = new Array();
|
|
layertoggledby.push(_nc);
|
|
_tnc.data('layertoggledby',layertoggledby);
|
|
_tnc.data('triggered_startstatus',a.layerstatus);
|
|
|
|
});
|
|
break;
|
|
case "toggle_mute_video":
|
|
jQuery.each(tnc,function(i,_tnc) {
|
|
_tnc = jQuery(_tnc);
|
|
var videomutetoggledby = _tnc.data('videomutetoggledby');
|
|
if (videomutetoggledby == undefined)
|
|
videomutetoggledby = new Array();
|
|
videomutetoggledby.push(_nc);
|
|
_tnc.data('videomutetoggledby',videomutetoggledby);
|
|
});
|
|
break;
|
|
case "toggle_global_mute_video":
|
|
jQuery.each(tnc,function(i,_tnc) {
|
|
_tnc = jQuery(_tnc);
|
|
var videomutetoggledby = _tnc.data('videomutetoggledby');
|
|
if (videomutetoggledby == undefined)
|
|
videomutetoggledby = new Array();
|
|
videomutetoggledby.push(_nc);
|
|
_tnc.data('videomutetoggledby',videomutetoggledby);
|
|
});
|
|
break;
|
|
case "toggleslider":
|
|
if (opt.slidertoggledby == undefined) opt.slidertoggledby = new Array();
|
|
opt.slidertoggledby.push(_nc);
|
|
break;
|
|
case "togglefullscreen":
|
|
if (opt.fullscreentoggledby == undefined) opt.fullscreentoggledby = new Array();
|
|
opt.fullscreentoggledby.push(_nc);
|
|
break;
|
|
|
|
}
|
|
|
|
_nc.on(a.event,function() {
|
|
|
|
if (a.event==="click" && _nc.hasClass("tp-temporarydisabled")) return false;
|
|
var tnc = a.layer == "backgroundvideo" ? jQuery(".active-revslide .slotholder .rs-background-video-layer") : a.layer == "firstvideo" ? jQuery(".active-revslide .tp-videolayer").first() : jQuery("#"+a.layer);
|
|
|
|
if (a.action=="stoplayer" || a.action=="togglelayer" || a.action=="startlayer") {
|
|
|
|
if (tnc.length>0) {
|
|
var _ = tnc.data();
|
|
if (_.clicked_time_stamp !==undefined) {
|
|
if ((new Date().getTime() - _.clicked_time_stamp)>150) {
|
|
clearTimeout(_.triggerdelayIn);
|
|
clearTimeout(_.triggerdelayOut);
|
|
}
|
|
}
|
|
_.clicked_time_stamp = new Date().getTime();
|
|
|
|
if (a.action=="startlayer" || (a.action=="togglelayer" && tnc.data('animdirection')!="in")) {
|
|
_.animdirection= "in";
|
|
_.triggerstate = "on";
|
|
_R.toggleState(_.layertoggledby);
|
|
|
|
if (_R.playAnimationFrame) {
|
|
clearTimeout(_.triggerdelayIn);
|
|
_.triggerdelayIn = setTimeout(function() {
|
|
_R.playAnimationFrame({caption:tnc,opt:opt,frame:"frame_0", triggerdirection:"in", triggerframein:"frame_0", triggerframeout:"frame_999"});
|
|
},(a.delay*1000));
|
|
}
|
|
} else
|
|
|
|
if (a.action=="stoplayer" || (a.action=="togglelayer" && tnc.data('animdirection')!="out")) {
|
|
_.animdirection= "out";
|
|
_.triggered= true;
|
|
_.triggerstate = "off";
|
|
if (_R.stopVideo) _R.stopVideo(tnc,opt);
|
|
_R.unToggleState(_.layertoggledby);
|
|
if (_R.endMoveCaption) {
|
|
clearTimeout(_.triggerdelayOut);
|
|
_.triggerdelayOut = setTimeout(function() {
|
|
_R.playAnimationFrame({caption:tnc,opt:opt,frame:"frame_999", triggerdirection:"out", triggerframein:"frame_0", triggerframeout:"frame_999"});
|
|
},(a.delay*1000));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
|
|
if (_ISM && (a.action=='playvideo' || a.action=='stopvideo' || a.action=='togglevideo' || a.action=='mutevideo' || a.action=='unmutevideo' || a.action=='toggle_mute_video' || a.action=='toggle_global_mute_video')) {
|
|
actionSwitches(tnc,opt,a,_nc);
|
|
} else {
|
|
a.delay = a.delay === "NaN" || a.delay ===NaN ? 0 : a.delay;
|
|
punchgs.TweenLite.delayedCall(a.delay,function() {
|
|
actionSwitches(tnc,opt,a,_nc);
|
|
},[tnc,opt,a,_nc]);
|
|
}
|
|
}
|
|
});
|
|
switch (a.action) {
|
|
case "togglelayer":
|
|
case "startlayer":
|
|
case "playlayer":
|
|
case "stoplayer":
|
|
|
|
var tnc = jQuery("#"+a.layer),
|
|
d = tnc.data();
|
|
|
|
if (tnc.length>0 && d!==undefined && ((d.frames!==undefined && d.frames[0].delay!="bytrigger") || (d.frames===undefined && d.start!=="bytrigger"))) {
|
|
d.triggerstate="on";
|
|
//d.animdirection="in";
|
|
|
|
}
|
|
break;
|
|
}
|
|
})
|
|
}
|
|
|
|
function getScrollRoot(){
|
|
var html = document.documentElement, body = document.body,
|
|
cacheTop = ((typeof window.pageYOffset !== "undefined") ? window.pageYOffset : null) || body.scrollTop || html.scrollTop, // cache the window's current scroll position
|
|
root;
|
|
html.scrollTop = body.scrollTop = cacheTop + (cacheTop > 0) ? -1 : 1;
|
|
root = (html.scrollTop !== cacheTop) ? html : body;
|
|
root.scrollTop = cacheTop;
|
|
return root;
|
|
}
|
|
|
|
|
|
|
|
var actionSwitches = function(tnc,opt,a,_nc) {
|
|
switch (a.action) {
|
|
case "scrollbelow":
|
|
|
|
a.speed = a.speed!==undefined ? a.speed : 400;
|
|
a.ease = a.ease!==undefined ? a.ease : punchgs.Power2.easeOut;
|
|
|
|
_nc.addClass("tp-scrollbelowslider");
|
|
_nc.data('scrolloffset',a.offset);
|
|
_nc.data('scrolldelay',a.delay);
|
|
_nc.data('scrollspeed',a.speed);
|
|
_nc.data('scrollease',a.ease);
|
|
|
|
var off=getOffContH(opt.fullScreenOffsetContainer) || 0,
|
|
aof = parseInt(a.offset,0) || 0;
|
|
off = off - aof || 0;
|
|
opt.scrollRoot = jQuery(document);
|
|
var sobj = {_y:opt.scrollRoot.scrollTop()};
|
|
punchgs.TweenLite.to(sobj,a.speed/1000,{_y:(opt.c.offset().top+(jQuery(opt.li[0]).height())-off), ease:a.ease, onUpdate:function() { opt.scrollRoot.scrollTop(sobj._y)}})
|
|
break;
|
|
case "callback":
|
|
eval(a.callback);
|
|
break;
|
|
case "jumptoslide":
|
|
switch (a.slide.toLowerCase()) {
|
|
case "+1":
|
|
case "next":
|
|
opt.sc_indicator="arrow";
|
|
_R.callingNewSlide(opt.c,1);
|
|
break;
|
|
case "previous":
|
|
case "prev":
|
|
case "-1":
|
|
opt.sc_indicator="arrow";
|
|
_R.callingNewSlide(opt.c,-1);
|
|
break;
|
|
default:
|
|
var ts = jQuery.isNumeric(a.slide) ? parseInt(a.slide,0) : a.slide;
|
|
_R.callingNewSlide(opt.c,ts);
|
|
break;
|
|
}
|
|
break;
|
|
case "simplelink":
|
|
window.open(a.url,a.target);
|
|
break;
|
|
case "toggleslider":
|
|
opt.noloopanymore=0;
|
|
if (opt.sliderstatus=="playing") {
|
|
opt.c.revpause();
|
|
opt.forcepause_viatoggle = true;
|
|
_R.unToggleState(opt.slidertoggledby);
|
|
}
|
|
else {
|
|
opt.forcepause_viatoggle = false;
|
|
opt.c.revresume();
|
|
_R.toggleState(opt.slidertoggledby);
|
|
}
|
|
break;
|
|
case "pauseslider":
|
|
opt.c.revpause();
|
|
_R.unToggleState(opt.slidertoggledby);
|
|
break;
|
|
case "playslider":
|
|
opt.noloopanymore=0;
|
|
opt.c.revresume();
|
|
_R.toggleState(opt.slidertoggledby);
|
|
break;
|
|
case "playvideo":
|
|
|
|
if (tnc.length>0)
|
|
_R.playVideo(tnc,opt);
|
|
break;
|
|
case "stopvideo":
|
|
if (tnc.length>0)
|
|
if (_R.stopVideo) _R.stopVideo(tnc,opt);
|
|
break;
|
|
case "togglevideo":
|
|
if (tnc.length>0)
|
|
if (!_R.isVideoPlaying(tnc,opt))
|
|
_R.playVideo(tnc,opt);
|
|
else
|
|
if (_R.stopVideo) _R.stopVideo(tnc,opt);
|
|
break;
|
|
case "mutevideo":
|
|
if (tnc.length>0)
|
|
_R.muteVideo(tnc,opt);
|
|
break;
|
|
case "unmutevideo":
|
|
if (tnc.length>0)
|
|
if (_R.unMuteVideo) _R.unMuteVideo(tnc,opt);
|
|
break;
|
|
case "toggle_mute_video":
|
|
|
|
if (tnc.length>0)
|
|
if (_R.isVideoMuted(tnc,opt)) {
|
|
_R.unMuteVideo(tnc,opt);
|
|
} else {
|
|
if (_R.muteVideo) _R.muteVideo(tnc,opt);
|
|
}
|
|
_nc.toggleClass('rs-toggle-content-active');
|
|
break;
|
|
case "toggle_global_mute_video":
|
|
if (opt.globalmute === true) {
|
|
opt.globalmute = false;
|
|
if (opt.playingvideos != undefined && opt.playingvideos.length>0) {
|
|
jQuery.each(opt.playingvideos,function(i,_nc) {
|
|
if (_R.unMuteVideo) _R.unMuteVideo(_nc,opt);
|
|
});
|
|
}
|
|
|
|
} else {
|
|
opt.globalmute = true;
|
|
if (opt.playingvideos != undefined && opt.playingvideos.length>0) {
|
|
jQuery.each(opt.playingvideos,function(i,_nc) {
|
|
if (_R.muteVideo) _R.muteVideo(_nc,opt);
|
|
});
|
|
}
|
|
}
|
|
_nc.toggleClass('rs-toggle-content-active');
|
|
break;
|
|
case "simulateclick":
|
|
if (tnc.length>0) tnc.click();
|
|
break;
|
|
case "toggleclass":
|
|
if (tnc.length>0)
|
|
if (!tnc.hasClass(a.classname))
|
|
tnc.addClass(a.classname);
|
|
else
|
|
tnc.removeClass(a.classname);
|
|
break;
|
|
case "gofullscreen":
|
|
case "exitfullscreen":
|
|
case "togglefullscreen":
|
|
|
|
if (jQuery('.rs-go-fullscreen').length>0 && (a.action=="togglefullscreen" || a.action=="exitfullscreen")) {
|
|
jQuery('.rs-go-fullscreen').removeClass("rs-go-fullscreen");
|
|
var gf = opt.c.closest('.forcefullwidth_wrapper_tp_banner').length>0 ? opt.c.closest('.forcefullwidth_wrapper_tp_banner') : opt.c.closest('.rev_slider_wrapper');
|
|
opt.minHeight = opt.oldminheight;
|
|
opt.infullscreenmode = false;
|
|
opt.c.revredraw();
|
|
jQuery(window).trigger("resize");
|
|
_R.unToggleState(opt.fullscreentoggledby);
|
|
|
|
} else
|
|
if (jQuery('.rs-go-fullscreen').length==0 && (a.action=="togglefullscreen" || a.action=="gofullscreen")) {
|
|
var gf = opt.c.closest('.forcefullwidth_wrapper_tp_banner').length>0 ? opt.c.closest('.forcefullwidth_wrapper_tp_banner') : opt.c.closest('.rev_slider_wrapper');
|
|
gf.addClass("rs-go-fullscreen");
|
|
opt.oldminheight = opt.minHeight;
|
|
opt.minHeight = jQuery(window).height();
|
|
opt.infullscreenmode = true;
|
|
opt.c.revredraw();
|
|
jQuery(window).trigger("resize");
|
|
_R.toggleState(opt.fullscreentoggledby);
|
|
}
|
|
|
|
break;
|
|
default:
|
|
var obj = {};
|
|
obj.event = a;
|
|
obj.layer = _nc;
|
|
opt.c.trigger('layeraction',[obj]);
|
|
break;
|
|
}
|
|
}
|
|
|
|
var getOffContH = function(c) {
|
|
if (c==undefined) return 0;
|
|
if (c.split(',').length>1) {
|
|
var oc = c.split(","),
|
|
a =0;
|
|
if (oc)
|
|
jQuery.each(oc,function(index,sc) {
|
|
if (jQuery(sc).length>0)
|
|
a = a + jQuery(sc).outerHeight(true);
|
|
});
|
|
return a;
|
|
} else {
|
|
return jQuery(c).height();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
})(jQuery); |