Skip to content

Instantly share code, notes, and snippets.

@psahalot
Last active April 9, 2021 12:25
Show Gist options
  • Save psahalot/cf6037b0a5fe7339510d28e615613802 to your computer and use it in GitHub Desktop.
Save psahalot/cf6037b0a5fe7339510d28e615613802 to your computer and use it in GitHub Desktop.
PowerPack for Beaver Countdown JS
(function($) {
PPCountdown = function( settings )
{
this.timer_exp_text = "";
this.settings = settings;
this.nodeClass = '.fl-node-' + settings.id;
this.id = settings.id;
this.timertype = settings.timertype;
this.timerid = '#countdown-' + settings.id;
this.timer_date = settings.timer_date;
this.timer_format = settings.timer_format;
this.timer_layout = settings.timer_layout;
this.timer_labels = settings.timer_labels;
this.timer_labels_singular = settings.timer_labels_singular;
this.redirect_link = settings.redirect_link;
this.redirect_link_target = settings.redirect_link_target;
this.fixed_timer_action = settings.fixed_timer_action;
this.evergreen_timer_action = settings.evergreen_timer_action;
this.evergreen_date_days = settings.evergreen_date_days;
this.evergreen_date_hours = settings.evergreen_date_hours;
this.evergreen_date_minutes = settings.evergreen_date_minutes;
this.evergreen_date_seconds = settings.evergreen_date_seconds;
this.timezone = settings.time_zone;
if (this.timezone == 'NULL') {
this.timezone = null;
}
if ( settings.timer_exp_text ) {
this.timer_exp_text = settings.timer_exp_text;
}
if( this.timertype == "fixed" ) {
this._initFixedTimer();
}
if( this.timertype == "evergreen" ) {
var currdate = '';
var timevar = 0;
if( $.cookie( "countdown-" + settings.id) == undefined ) {
$.cookie( "countdown-" + settings.id, true);
$.cookie( "countdown-" + settings.id + "-currdate", new Date());
$.cookie( "countdown-" + settings.id + "-day", this.evergreen_date_days);
$.cookie( "countdown-" + settings.id + "-hour", this.evergreen_date_hours);
$.cookie( "countdown-" + settings.id + "-min", this.evergreen_date_minutes);
$.cookie( "countdown-" + settings.id + "-sec", this.evergreen_date_seconds);
}
currdate = new Date( $.cookie( "countdown-" + settings.id + "-currdate") );
timevar = ( parseFloat(this.evergreen_date_days*24*60*60) + parseFloat(this.evergreen_date_hours*60*60) + parseFloat(this.evergreen_date_minutes*60) + parseFloat( this.evergreen_date_seconds ) ) * 1000;
currdate.setTime(currdate.getTime() + timevar);
this.timer_date = currdate;
this._initEverGreenTimer();
}
this._initCountdown();
};
PPCountdown.prototype = {
_initCountdown: function() {
fixed_timer_action = this.fixed_timer_action;
settings = this.settings;
var action = '';
if( this.timertype == "fixed" ) {
action = this.fixed_timer_action;
} else {
action = this.evergreen_timer_action;
}
$.cookie( "countdown-" + settings.id + "expiremsg", null);
$.cookie( "countdown-" + settings.id + "redirect", null);
$.cookie( "countdown-" + settings.id + "redirectwindow", null);
$.cookie( "countdown-" + settings.id + "hide", null);
$.cookie( "countdown-" + settings.id + "reset", null);
$.removeCookie( "countdown-" + settings.id + "expiremsg");
$.removeCookie( "countdown-" + settings.id + "redirect");
$.removeCookie( "countdown-" + settings.id + "redirectwindow");
$.removeCookie( "countdown-" + settings.id + "hide");
$.removeCookie( "countdown-" + settings.id + "reset");
if( action == "msg") {
$.cookie( "countdown-" + settings.id + "expiremsg", settings.expire_message, { expires: 365 } );
} else if( action == "redirect") {
$.cookie( "countdown-" + settings.id + "redirect", settings.redirect_link, { expires: 365 } );
$.cookie( "countdown-" + settings.id + "redirectwindow", settings.redirect_link_target, { expires: 365 } );
} else if( action == "hide") {
$.cookie( "countdown-" + settings.id + "hide", "yes", { expires: 365 } );
} else if( action == 'reset' ) {
$.cookie( "countdown-" + settings.id + "reset", "yes", { expires: 365 } );
}
},
_initFixedTimer: function() {
var dateNow = new Date();
if( ( dateNow.getTime() - this.timer_date.getTime() ) > 0 ) {
if( this.fixed_timer_action == 'msg' ) {
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
$( this.timerid ).append(this.timer_exp_text);
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: this.timer_exp_text
});
}
} else if( this.fixed_timer_action == 'redirect' ) {
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
window.open( this.redirect_link, this.redirect_link_target );
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: this.timer_exp_text
});
}
} else if( this.fixed_timer_action == 'hide' ) {
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
$( this.timerid ).countdown('destroy');
$( this.nodeClass ).find('.pp-countdown-title').remove();
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: this.timer_exp_text
});
}
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
});
}
} else {
if( this.fixed_timer_action == 'msg' ) {
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: this.timer_exp_text,
});
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
});
}
} else if( this.fixed_timer_action == 'redirect' ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: this.timer_exp_text,
onExpiry: this._redirectCounter
});
} else if( this.fixed_timer_action == 'hide' ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: this.timer_exp_text,
onExpiry: $.proxy( this._destroyCounter, this )
});
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: this.timer_exp_text
});
}
}
},
_destroyCounter: function() {
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
$( this.timerid ).countdown('destroy');
$( this.nodeClass ).find('.pp-countdown-title').remove();
}
},
_redirectCounter: function() {
redirect_link = jQuery.cookie( jQuery(this)[0].id + "redirect" );
redirect_link_target = jQuery.cookie( jQuery(this)[0].id + "redirectwindow" );
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
window.open( redirect_link, redirect_link_target );
} else {
return;
}
},
_initEverGreenTimer: function() {
var dateNow = new Date();
if( ( dateNow.getTime() - this.timer_date.getTime() ) > 0 ) {
if( this.evergreen_timer_action == 'msg' ) {
var msg = '<div class="pp-countdown-expire-message">' + $.cookie( "countdown-" + this.settings.id + "expiremsg" ) + '</div>';
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
$( this.timerid ).append(msg);
$( this.timerid ).trigger( 'pp_countdown_expired', [ this ] );
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: msg,
onExpiry: function() {
$( this.timerid ).trigger( 'pp_countdown_expired', [ this ] );
}
});
}
} else if( this.evergreen_timer_action == 'redirect' ) {
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
window.open( this.redirect_link, this.redirect_link_target );
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
onExpiry: this._redirectCounter
});
}
} else if( this.evergreen_timer_action == 'hide' ) {
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
$( this.timerid ).countdown('destroy');
$( this.nodeClass ).find('.pp-countdown-title').remove();
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
onExpiry: $.proxy( this._destroyCounter, this )
});
}
} else if( this.evergreen_timer_action == 'reset' ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
onExpiry: this._restartCountdown
});
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
});
}
} else {
if( this.evergreen_timer_action == 'msg' ) {
var msg = '<div class="pp-countdown-expire-message">' + this.settings.expire_message + '</div>';
if( parseInt(window.location.href.toLowerCase().indexOf("?fl_builder")) === parseInt(-1) ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
expiryText: msg,
onExpiry: function() {
$( this.timerid ).html( msg );
$( this.timerid ).trigger( 'pp_countdown_expired', [ this ] );
}
});
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
});
}
} else if( this.evergreen_timer_action == 'redirect' ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
onExpiry: this._redirectCounter
});
} else if( this.evergreen_timer_action == 'hide' ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
onExpiry: $.proxy( this._destroyCounter, this )
});
} else if( this.evergreen_timer_action == 'reset' ) {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
onExpiry: this._restartCountdown
});
} else {
$( this.timerid ).countdown({
until: this.timer_date,
format: this.timer_format,
layout: this.timer_layout,
labels: this.timer_labels.split(","),
//timezone: this.timezone,
labels1: this.timer_labels_singular.split(","),
});
}
}
},
_restartCountdown: function() {
$.cookie( "countdown-" + settings.id + "-currdate", new Date());
currdate = new Date( $.cookie( "countdown-" + settings.id + "-currdate") );
var evergreen_date_days = $.cookie( "countdown-" + settings.id + "-day" );
var evergreen_date_hours = $.cookie( "countdown-" + settings.id + "-hour" );
var evergreen_date_minutes = $.cookie( "countdown-" + settings.id + "-min" );
var evergreen_date_seconds = $.cookie( "countdown-" + settings.id + "-sec" );
var timevar = ( parseFloat(evergreen_date_days*24*60*60) + parseFloat(evergreen_date_hours*60*60) + parseFloat(evergreen_date_minutes*60) + parseFloat( evergreen_date_seconds ) ) * 1000;
currdate.setTime(currdate.getTime() + timevar);
this.timer_date = currdate;
jQuery(this).countdown('option', {until: this.timer_date} );
},
};
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment