File "jquery.countdownTimer.js"
Full Path: /home/adniftyx/public_html/wp-content/plugins/credio-addons/assets/js/jquery.countdownTimer.js
File size: 35.38 KB
MIME-type: text/plain
Charset: utf-8
/*
* Author - Harshen Amarnath Pandey
* Version - 1.0.8
* Release - 18th April 2015
* Copyright (c) 2014 - 2018 Harshen Pandey
*/
(function ($) {
$.fn.countdowntimer = function (options) {
return this.each(function () {
countdown($(this), options);
});
};
//Definition of private function countdown.
function countdown($this, options) {
var opts = $.extend({}, $.fn.countdowntimer.defaults, options);
var $this = $this;
$this.addClass("style");
var size = "";
var borderColor = "";
var fontColor = "";
var backgroundColor = "";
var regexpMatchFormat = "";
var regexpReplaceWith = "";
size = opts.size;
borderColor = opts.borderColor;
fontColor = opts.fontColor;
backgroundColor = opts.backgroundColor;
if (options.regexpMatchFormat != undefined && options.regexpReplaceWith != undefined && options.timeSeparator == undefined) {
window['regexpMatchFormat_' + $this.attr('id')] = options.regexpMatchFormat;
window['regexpReplaceWith_' + $this.attr('id')] = options.regexpReplaceWith;
}
if (options.borderColor != undefined || options.fontColor != undefined || options.backgroundColor != undefined) {
var customStyle = {
"background": backgroundColor,
"color": fontColor,
"border-color": borderColor
}
$this.css(customStyle);
} else {
$this.addClass("colorDefinition");
}
if (options.size != undefined) {
switch (size) {
case "xl" :
$this.addClass("size_xl");
break;
case "lg" :
$this.addClass("size_lg");
break;
case "md" :
$this.addClass("size_md");
break;
case "sm" :
$this.addClass("size_sm");
break;
case "xs" :
$this.addClass("size_xs");
break;
}
} else if (size == "sm") {
$this.addClass("size_sm");
}
if (options.startDate == undefined && options.dateAndTime == undefined && options.currentTime == undefined && (options.hours != undefined || options.minutes != undefined || options.seconds != undefined)) {
if (options.hours != undefined && options.minutes == undefined && options.seconds == undefined) {
hours_H = "";
minutes_H = "";
seconds_H = "";
timer_H = "";
window['hours_H' + $this.attr('id')] = opts.hours;
window['minutes_H' + $this.attr('id')] = opts.minutes;
window['seconds_H' + $this.attr('id')] = opts.seconds;
if (options.pauseButton != undefined) {
pauseTimer($this, "H", opts, onlyHours);
}
if (options.stopButton != undefined) {
stopTimer($this, "H", opts, onlyHours);
}
onlyHours($this, opts);
window['timer_H' + $this.attr('id')] = setInterval(function () {
onlyHours($this, opts)
}, opts.tickInterval * 1000);
} else if (options.hours == undefined && options.minutes != undefined && options.seconds == undefined) {
hours_M = "";
minutes_M = "";
seconds_M = "";
timer_M = "";
window['hours_M' + $this.attr('id')] = opts.hours;
window['minutes_M' + $this.attr('id')] = opts.minutes;
window['seconds_M' + $this.attr('id')] = opts.seconds;
if (options.pauseButton != undefined) {
pauseTimer($this, "M", opts, onlyMinutes);
}
if (options.stopButton != undefined) {
stopTimer($this, "M", opts, onlyMinutes);
}
onlyMinutes($this, opts);
window['timer_M' + $this.attr('id')] = setInterval(function () {
onlyMinutes($this, opts)
}, opts.tickInterval * 1000);
} else if (options.hours == undefined && options.minutes == undefined && options.seconds != undefined) {
hours_S = "";
minutes_S = "";
seconds_S = "";
timer_S = "";
window['hours_S' + $this.attr('id')] = opts.hours;
window['minutes_S' + $this.attr('id')] = opts.minutes;
window['seconds_S' + $this.attr('id')] = opts.seconds;
if (options.pauseButton != undefined) {
pauseTimer($this, "S", opts, onlySeconds);
}
if (options.stopButton != undefined) {
stopTimer($this, "S", opts, onlySeconds);
}
onlySeconds($this, opts);
window['timer_S' + $this.attr('id')] = setInterval(function () {
onlySeconds($this, opts)
}, opts.tickInterval * 1000);
} else if (options.hours != undefined && options.minutes != undefined && options.seconds == undefined) {
hours_HM = "";
minutes_HM = "";
seconds_HM = "";
timer_HM = "";
window['hours_HM' + $this.attr('id')] = opts.hours;
window['minutes_HM' + $this.attr('id')] = opts.minutes;
window['seconds_HM' + $this.attr('id')] = opts.seconds;
if (options.pauseButton != undefined) {
pauseTimer($this, "HM", opts, hoursMinutes);
}
if (options.stopButton != undefined) {
stopTimer($this, "HM", opts, hoursMinutes);
}
hoursMinutes($this, opts);
window['timer_HM' + $this.attr('id')] = setInterval(function () {
hoursMinutes($this, opts)
}, opts.tickInterval * 1000);
} else if (options.hours == undefined && options.minutes != undefined && options.seconds != undefined) {
hours_MS = "";
minutes_MS = "";
seconds_MS = "";
timer_MS = "";
window['hours_MS' + $this.attr('id')] = opts.hours;
window['minutes_MS' + $this.attr('id')] = opts.minutes;
window['seconds_MS' + $this.attr('id')] = opts.seconds;
if (options.pauseButton != undefined) {
pauseTimer($this, "MS", opts, minutesSeconds);
}
if (options.stopButton != undefined) {
stopTimer($this, "MS", opts, minutesSeconds);
}
minutesSeconds($this, opts);
window['timer_MS' + $this.attr('id')] = setInterval(function () {
minutesSeconds($this, opts)
}, opts.tickInterval * 1000);
} else if (options.hours != undefined && options.minutes == undefined && options.seconds != undefined) {
hours_HS = "";
minutes_HS = "";
seconds_HS = "";
timer_HS = "";
window['hours_HS' + $this.attr('id')] = opts.hours;
window['minutes_HS' + $this.attr('id')] = opts.minutes;
window['seconds_HS' + $this.attr('id')] = opts.seconds;
if (options.pauseButton != undefined) {
pauseTimer($this, "HS", opts, hoursSeconds);
}
if (options.stopButton != undefined) {
stopTimer($this, "HS", opts, hoursSeconds);
}
hoursSeconds($this, opts);
window['timer_HS' + $this.attr('id')] = setInterval(function () {
hoursSeconds($this, opts)
}, opts.tickInterval * 1000);
} else if (options.hours != undefined && options.minutes != undefined && options.seconds != undefined) {
hours_HMS = "";
minutes_HMS = "";
seconds_HMS = "";
timer_HMS = "";
window['hours_HMS' + $this.attr('id')] = opts.hours;
window['minutes_HMS' + $this.attr('id')] = opts.minutes;
window['seconds_HMS' + $this.attr('id')] = opts.seconds;
if (options.pauseButton != undefined) {
pauseTimer($this, "HMS", opts, hoursMinutesSeconds);
}
if (options.stopButton != undefined) {
stopTimer($this, "HMS", opts, hoursMinutesSeconds);
}
hoursMinutesSeconds($this, opts);
window['timer_HMS' + $this.attr('id')] = setInterval(function () {
hoursMinutesSeconds($this, opts)
}, opts.tickInterval * 1000);
}
} else if (options.startDate != undefined && options.dateAndTime != undefined && options.currentTime == undefined) {
startDate = "";
endDate = "";
timer_startDate = "";
window['startDate' + $this.attr('id')] = new Date(opts.startDate);
window['endDate' + $this.attr('id')] = new Date(opts.dateAndTime);
var type = "withStart";
givenDate($this, opts, type);
window['timer_startDate' + $this.attr('id')] = setInterval(function () {
givenDate($this, opts, type)
}, opts.tickInterval * 1000);
} else if (options.startDate == undefined && options.dateAndTime != undefined && options.currentTime == undefined) {
startTime = "";
dateTime = "";
timer_givenDate = "";
var hour = opts.startDate.getHours() < 10 ? '0' + opts.startDate.getHours() : opts.startDate.getHours();
var minutes = opts.startDate.getMinutes() < 10 ? '0' + opts.startDate.getMinutes() : opts.startDate.getMinutes();
var seconds = opts.startDate.getSeconds() < 10 ? '0' + opts.startDate.getSeconds() : opts.startDate.getSeconds();
var month = (opts.startDate.getMonth() + 1) < 10 ? '0' + (opts.startDate.getMonth() + 1) : (opts.startDate.getMonth() + 1);
var date = opts.startDate.getDate() < 10 ? '0' + opts.startDate.getDate() : opts.startDate.getDate();
var year = opts.startDate.getFullYear();
window['startTime' + $this.attr('id')] = new Date(year + '/' + month + '/' + date + ' ' + hour + ':' + minutes + ':' + seconds);
window['dateTime' + $this.attr('id')] = new Date(opts.dateAndTime);
var type = "withnoStart";
givenDate($this, opts, type);
window['timer_givenDate' + $this.attr('id')] = setInterval(function () {
givenDate($this, opts, type)
}, opts.tickInterval * 1000);
} else if (options.currentTime != undefined) {
currentTime = "";
timer_currentDate = "";
window['currentTime' + $this.attr('id')] = opts.currentTime;
currentDate($this, opts);
window['timer_currentDate' + $this.attr('id')] = setInterval(function () {
currentDate($this, opts)
}, opts.tickInterval * 1000);
} else {
countSeconds = "";
timer_secondsTimer = "";
window['countSeconds' + $this.attr('id')] = opts.seconds;
window['timer_secondsTimer' + $this.attr('id')] = setInterval(function () {
secondsTimer($this)
}, 1000);
}
}
;
//Function for only hours are set when invoking plugin.
function onlyHours($this, opts) {
var id = $this.attr('id');
if (window['minutes_H' + id] == opts.minutes && window['seconds_H' + id] == opts.seconds && window['hours_H' + id] == opts.hours) {
if (window['hours_H' + id].toString().length < 2) {
window['hours_H' + id] = "0" + window['hours_H' + id];
}
html($this, window['hours_H' + id] + opts.timeSeparator + "00" + opts.timeSeparator + "00");
window['seconds_H' + id] = 60 - opts.tickInterval;
window['minutes_H' + id] = 59;
if (window['hours_H' + id] != 0) {
window['hours_H' + id]--;
} else {
delete window['hours_H' + id];
delete window['minutes_H' + id];
delete window['seconds_H' + id];
clearInterval(window['timer_H' + id]);
timeUp($this, opts);
}
} else {
if (window['hours_H' + id].toString().length < 2) {
window['hours_H' + id] = "0" + window['hours_H' + id];
}
if (window['minutes_H' + id].toString().length < 2) {
window['minutes_H' + id] = "0" + window['minutes_H' + id];
}
if (window['seconds_H' + id].toString().length < 2) {
window['seconds_H' + id] = "0" + window['seconds_H' + id];
}
html($this, window['hours_H' + id] + opts.timeSeparator + window['minutes_H' + id] + opts.timeSeparator + window['seconds_H' + id]);
window['seconds_H' + id] -= opts.tickInterval;
if (window['minutes_H' + id] != 0 && window['seconds_H' + id] < 0) {
window['minutes_H' + id]--;
window['seconds_H' + id] = 60 - opts.tickInterval;
}
if (window['minutes_H' + id] == 0 && window['seconds_H' + id] < 0 && window['hours_H' + id] != 0)
{
window['hours_H' + id]--;
window['minutes_H' + id] = 59;
window['seconds_H' + id] = 60 - opts.tickInterval;
}
if (window['minutes_H' + id] == 0 && window['seconds_H' + id] < 0 && window['hours_H' + id] == 0)
{
delete window['hours_H' + id];
delete window['minutes_H' + id];
delete window['seconds_H' + id];
clearInterval(window['timer_H' + id]);
timeUp($this, opts);
}
}
id = null;
}
//Function for only minutes are set when invoking plugin.
function onlyMinutes($this, opts) {
var id = $this.attr('id');
if (window['minutes_M' + id] == opts.minutes && window['seconds_M' + id] == opts.seconds) {
if (window['minutes_M' + id].toString().length < 2) {
window['minutes_M' + id] = "0" + window['minutes_M' + id];
}
html($this, window['minutes_M' + id] + opts.timeSeparator + "00");
window['seconds_M' + id] = 60 - opts.tickInterval;
if (window['minutes_M' + id] != 0) {
window['minutes_M' + id]--;
} else {
delete window['hours_M' + id];
delete window['minutes_M' + id];
delete window['seconds_M' + id];
clearInterval(window['timer_M' + id]);
timeUp($this, opts);
}
} else {
if (window['minutes_M' + id].toString().length < 2) {
window['minutes_M' + id] = "0" + window['minutes_M' + id];
}
if (window['seconds_M' + id].toString().length < 2) {
window['seconds_M' + id] = "0" + window['seconds_M' + id];
}
html($this, window['minutes_M' + id] + opts.timeSeparator + window['seconds_M' + id]);
window['seconds_M' + id] -= opts.tickInterval;
if (window['minutes_M' + id] != 0 && window['seconds_M' + id] < 0) {
window['minutes_M' + id]--;
window['seconds_M' + id] = 60 - opts.tickInterval;
}
if (window['minutes_M' + id] == 0 && window['seconds_M' + id] < 0)
{
delete window['hours_M' + id];
delete window['minutes_M' + id];
delete window['seconds_M' + id];
clearInterval(window['timer_M' + id]);
timeUp($this, opts);
}
}
id = null;
}
//Function for only seconds are set when invoking plugin.
function onlySeconds($this, opts) {
var id = $this.attr('id');
if (window['seconds_S' + id].toString().length < 2) {
window['seconds_S' + id] = "0" + window['seconds_S' + id];
}
html($this, window['seconds_S' + id] + " " + "sec");
window['seconds_S' + id] -= opts.tickInterval;
if (window['seconds_S' + id] < 0)
{
delete window['hours_S' + id];
delete window['minutes_S' + id];
delete window['seconds_S' + id];
clearInterval(window['timer_S' + id]);
timeUp($this, opts);
}
id = null;
}
//Function for hours and minutes are set when invoking plugin.
function hoursMinutes($this, opts) {
var id = $this.attr('id');
if (window['minutes_HM' + id] == opts.minutes && window['hours_HM' + id] == opts.hours) {
if (window['hours_HM' + id].toString().length < 2) {
window['hours_HM' + id] = "0" + window['hours_HM' + id];
}
if (window['minutes_HM' + id].toString().length < 2) {
window['minutes_HM' + id] = "0" + window['minutes_HM' + id];
}
html($this, window['hours_HM' + id] + opts.timeSeparator + window['minutes_HM' + id] + opts.timeSeparator + "00");
if (window['hours_HM' + id] != 0 && window['minutes_HM' + id] == 0) {
window['hours_HM' + id]--;
window['minutes_HM' + id] = 59;
window['seconds_HM' + id] = 60 - opts.tickInterval;
} else if (window['hours_HM' + id] == 0 && window['minutes_HM' + id] != 0) {
window['seconds_HM' + id] = 60 - opts.tickInterval;
window['minutes_HM' + id]--;
} else {
window['seconds_HM' + id] = 60 - opts.tickInterval;
window['minutes_HM' + id]--;
}
if (window['hours_HM' + id] == 0 && window['minutes_HM' + id] == 0 && window['seconds_HM' + id] == 60)
{
delete window['hours_HM' + id];
delete window['minutes_HM' + id];
delete window['seconds_HM' + id];
clearInterval(window['timer_HM' + id]);
timeUp($this, opts);
}
} else {
if (window['hours_HM' + id].toString().length < 2) {
window['hours_HM' + id] = "0" + window['hours_HM' + id];
}
if (window['minutes_HM' + id].toString().length < 2) {
window['minutes_HM' + id] = "0" + window['minutes_HM' + id];
}
if (window['seconds_HM' + id].toString().length < 2) {
window['seconds_HM' + id] = "0" + window['seconds_HM' + id];
}
html($this, window['hours_HM' + id] + opts.timeSeparator + window['minutes_HM' + id] + opts.timeSeparator + window['seconds_HM' + id]);
window['seconds_HM' + id] -= opts.tickInterval;
if (window['minutes_HM' + id] != 0 && window['seconds_HM' + id] < 0) {
window['minutes_HM' + id]--;
window['seconds_HM' + id] = 60 - opts.tickInterval;
}
if (window['minutes_HM' + id] == 0 && window['seconds_HM' + id] < 0 && window['hours_HM' + id] != 0)
{
window['hours_HM' + id]--;
window['minutes_HM' + id] = 59;
window['seconds_HM' + id] = 60 - opts.tickInterval;
}
if (window['minutes_HM' + id] == 0 && window['seconds_HM' + id] < 0 && window['hours_HM' + id] == 0)
{
delete window['hours_HM' + id];
delete window['minutes_HM' + id];
delete window['seconds_HM' + id];
clearInterval(window['timer_HM' + id]);
timeUp($this, opts);
}
}
id = null;
}
//Function for minutes and seconds are set when invoking plugin.
function minutesSeconds($this, opts) {
var id = $this.attr('id');
if (window['minutes_MS' + id] == opts.minutes && window['seconds_MS' + id] == opts.seconds) {
if (window['minutes_MS' + id].toString().length < 2) {
window['minutes_MS' + id] = "0" + window['minutes_MS' + id];
}
if (window['seconds_MS' + id].toString().length < 2) {
window['seconds_MS' + id] = "0" + window['seconds_MS' + id];
}
html($this, window['minutes_MS' + id] + opts.timeSeparator + window['seconds_MS' + id]);
if (window['minutes_MS' + id] != 0 && window['seconds_MS' + id] == 0) {
window['minutes_MS' + id]--;
window['seconds_MS' + id] = 60 - opts.tickInterval;
} else if (window['minutes_MS' + id] == 0 && window['seconds_MS' + id] == 0) {
delete window['hours_MS' + id];
delete window['minutes_MS' + id];
delete window['seconds_MS' + id];
clearInterval(window['timer_MS' + id]);
timeUp($this, opts);
} else {
window['seconds_MS' + id] -= opts.tickInterval;
}
} else {
if (window['minutes_MS' + id].toString().length < 2) {
window['minutes_MS' + id] = "0" + window['minutes_MS' + id];
}
if (window['seconds_MS' + id].toString().length < 2) {
window['seconds_MS' + id] = "0" + window['seconds_MS' + id];
}
html($this, window['minutes_MS' + id] + opts.timeSeparator + window['seconds_MS' + id]);
window['seconds_MS' + id] -= opts.tickInterval;
if (window['minutes_MS' + id] != 0 && window['seconds_MS' + id] < 0) {
window['minutes_MS' + id]--;
window['seconds_MS' + id] = 60 - opts.tickInterval;
}
if (window['minutes_MS' + id] == 0 && window['seconds_MS' + id] < 0)
{
delete window['hours_MS' + id];
delete window['minutes_MS' + id];
delete window['seconds_MS' + id];
clearInterval(window['timer_MS' + id]);
timeUp($this, opts);
}
}
id = null;
}
//Function for hours and seconds are set when invoking plugin.
function hoursSeconds($this, opts) {
var id = $this.attr('id');
if (window['seconds_HS' + id] == opts.seconds && window['hours_HS' + id] == opts.hours) {
if (window['hours_HS' + id].toString().length < 2) {
window['hours_HS' + id] = "0" + window['hours_HS' + id];
}
if (window['seconds_HS' + id].toString().length < 2) {
window['seconds_HS' + id] = "0" + window['seconds_HS' + id];
}
html($this, window['hours_HS' + id] + opts.timeSeparator + "00" + opts.timeSeparator + window['seconds_HS' + id]);
if (window['hours_HS' + id] == 0 && window['seconds_HS' + id] == 0) {
delete window['hours_HS' + id];
delete window['minutes_HS' + id];
delete window['seconds_HS' + id];
clearInterval(window['timer_HS' + id]);
timeUp($this, opts);
} else if (window['hours_HS' + id] != 0 && window['seconds_HS' + id] == 0) {
window['hours_HS' + id]--;
window['minutes_HS' + id] = 59;
window['seconds_HS' + id] = 60 - opts.tickInterval;
} else {
window['seconds_HS' + id] -= opts.tickInterval;
}
} else {
if (window['hours_HS' + id].toString().length < 2) {
window['hours_HS' + id] = "0" + window['hours_HS' + id];
}
if (window['minutes_HS' + id].toString().length < 2) {
window['minutes_HS' + id] = "0" + window['minutes_HS' + id];
}
if (window['seconds_HS' + id].toString().length < 2) {
window['seconds_HS' + id] = "0" + window['seconds_HS' + id];
}
html($this, window['hours_HS' + id] + opts.timeSeparator + window['minutes_HS' + id] + opts.timeSeparator + window['seconds_HS' + id]);
window['seconds_HS' + id] -= opts.tickInterval;
if (window['minutes_HS' + id] != 0 && window['seconds_HS' + id] < 0) {
window['minutes_HS' + id]--;
window['seconds_HS' + id] = 60 - opts.tickInterval;
}
if (window['minutes_HS' + id] == 0 && window['seconds_HS' + id] < 0 && window['hours_HS' + id] != 0)
{
window['hours_HS' + id]--;
window['minutes_HS' + id] = 59;
window['seconds_HS' + id] = 60 - opts.tickInterval;
}
if (window['minutes_HS' + id] == 0 && window['seconds_HS' + id] < 0 && window['hours_HS' + id] == 0)
{
delete window['hours_HS' + id];
delete window['minutes_HS' + id];
delete window['seconds_HS' + id];
clearInterval(window['timer_HS' + id]);
timeUp($this, opts);
}
}
id = null;
}
//Function for hours, minutes and seconds are set when invoking plugin.
function hoursMinutesSeconds($this, opts) {
var id = $this.attr('id');
if (window['minutes_HMS' + id] == opts.minutes && window['seconds_HMS' + id] == opts.seconds && window['hours_HMS' + id] == opts.hours) {
if (window['hours_HMS' + id].toString().length < 2) {
window['hours_HMS' + id] = "0" + window['hours_HMS' + id];
}
if (window['minutes_HMS' + id].toString().length < 2) {
window['minutes_HMS' + id] = "0" + window['minutes_HMS' + id];
}
if (window['seconds_HMS' + id].toString().length < 2) {
window['seconds_HMS' + id] = "0" + window['seconds_HMS' + id];
}
html($this, window['hours_HMS' + id] + opts.timeSeparator + window['minutes_HMS' + id] + opts.timeSeparator + window['seconds_HMS' + id]);
if (window['hours_HMS' + id] == 0 && window['minutes_HMS' + id] == 0 && window['seconds_HMS' + id] == 0) {
delete window['hours_HMS' + id];
delete window['minutes_HMS' + id];
delete window['seconds_HMS' + id];
clearInterval(window['timer_HMS' + id]);
timeUp($this, opts);
} else if (window['hours_HMS' + id] != 0 && window['minutes_HMS' + id] == 0 && window['seconds_HMS' + id] == 0) {
window['hours_HMS' + id]--;
window['minutes_HMS' + id] = 59;
window['seconds_HMS' + id] = 60 - opts.tickInterval;
} else if (window['hours_HMS' + id] == 0 && window['minutes_HMS' + id] != 0 && window['seconds_HMS' + id] == 0) {
window['minutes_HMS' + id]--;
window['seconds_HMS' + id] = 60 - opts.tickInterval;
} else if (window['hours_HMS' + id] != 0 && window['minutes_HMS' + id] != 0 && window['seconds_HMS' + id] == 0) {
window['minutes_HMS' + id]--;
window['seconds_HMS' + id] = 60 - opts.tickInterval;
} else {
window['seconds_HMS' + id] -= opts.tickInterval;
}
} else {
if (window['hours_HMS' + id].toString().length < 2) {
window['hours_HMS' + id] = "0" + window['hours_HMS' + id];
}
if (window['minutes_HMS' + id].toString().length < 2) {
window['minutes_HMS' + id] = "0" + window['minutes_HMS' + id];
}
if (window['seconds_HMS' + id].toString().length < 2) {
window['seconds_HMS' + id] = "0" + window['seconds_HMS' + id];
}
html($this, window['hours_HMS' + id] + opts.timeSeparator + window['minutes_HMS' + id] + opts.timeSeparator + window['seconds_HMS' + id]);
window['seconds_HMS' + id] -= opts.tickInterval;
if (window['minutes_HMS' + id] != 0 && window['seconds_HMS' + id] < 0) {
window['minutes_HMS' + id]--;
window['seconds_HMS' + id] = 60 - opts.tickInterval;
}
if (window['minutes_HMS' + id] == 0 && window['seconds_HMS' + id] < 0 && window['hours_HMS' + id] != 0)
{
window['hours_HMS' + id]--;
window['minutes_HMS' + id] = 59;
window['seconds_HMS' + id] = 60 - opts.tickInterval;
}
if (window['minutes_HMS' + id] == 0 && window['seconds_HMS' + id] < 0 && window['hours_HMS' + id] == 0)
{
delete window['hours_HMS' + id];
delete window['minutes_HMS' + id];
delete window['seconds_HMS' + id];
clearInterval(window['timer_HMS' + id]);
timeUp($this, opts);
}
}
id = null;
}
//Function for reverse timer to given date.
function givenDate($this, opts, type) {
var id = $this.attr('id');
var endDate = (type == "withnoStart") ? window['dateTime' + id] : window['endDate' + id];
var startDate = (type == "withnoStart") ? window['startTime' + id] : window['startDate' + id];
var days = Math.floor((endDate - startDate) / (24 * 60 * 60 * 1000));
var hours = Math.floor(((endDate - startDate) % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000));
var minutes = Math.floor(((endDate - startDate) % (24 * 60 * 60 * 1000)) / (60 * 1000)) % 60;
var seconds = Math.floor(((endDate - startDate) % (24 * 60 * 60 * 1000)) / 1000) % 60 % 60;
if ((endDate - startDate) > 0) {
if (days.toString().length < 2) {
days = "0" + days;
}
if (hours.toString().length < 2) {
hours = "0" + hours;
}
if (minutes.toString().length < 2) {
minutes = "0" + minutes;
}
if (seconds.toString().length < 2) {
seconds = "0" + seconds;
}
html($this, days + opts.timeSeparator + hours + opts.timeSeparator + minutes + opts.timeSeparator + seconds);
(type == "withnoStart") ? (window['startTime' + id].setSeconds(window['startTime' + id].getSeconds() + opts.tickInterval)) : (window['startDate' + id].setSeconds(window['startDate' + id].getSeconds() + opts.tickInterval));
} else {
html($this, "00" + opts.timeSeparator + "00" + opts.timeSeparator + "00" + opts.timeSeparator + "00");
if (type == "withnoStart") {
delete window['dateTime' + id];
delete window['startTime' + id];
clearInterval(window['timer_givenDate' + id]);
} else if (type == "withStart") {
delete window['startDate' + id];
delete window['endDate' + id];
clearInterval(window['timer_startDate' + id]);
}
timeUp($this, opts);
}
id = null;
}
//Function for displaying current time.
function currentDate($this, opts) {
if (window['currentTime' + $this.attr('id')] == true) {
var today = new Date();
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds()
if (hours.toString().length < 2) {
hours = "0" + hours;
}
if (minutes.toString().length < 2) {
minutes = "0" + minutes;
}
if (seconds.toString().length < 2) {
seconds = "0" + seconds;
}
html($this, hours + opts.timeSeparator + minutes + opts.timeSeparator + seconds);
} else {
alert('Set Current Time option.');
}
}
//Default function called when no options are set.
function secondsTimer($this) {
var id = $this.attr('id');
if (window['countSeconds' + id].toString().length < 2) {
window['countSeconds' + id] = "0" + window['countSeconds' + id];
}
html($this, window['countSeconds' + id] + " " + "sec");
window['countSeconds' + id]--;
if (window['countSeconds' + id] == -1)
{
delete window['countSeconds' + id];
clearInterval(window['timer_secondsTimer' + id]);
}
id = null;
}
//Function for calling the given function name when time is expired.
function timeUp($this, opts) {
if (opts.timeUp != null) {
if ($.isFunction(opts.timeUp) == true) {
opts.timeUp.apply($this, []);
}
}
if (opts.expiryUrl != null) {
window.location = opts.expiryUrl;
}
}
//Function for displaying the timer.
function html($this, content) {
var processedContent = content;
if (typeof window['regexpMatchFormat_' + $this.attr('id')] !== 'undefined' &&
typeof window['regexpReplaceWith_' + $this.attr('id')] !== 'undefined') {
var regexp = new RegExp(window['regexpMatchFormat_' + $this.attr('id')]);
processedContent = content.replace(regexp,
window['regexpReplaceWith_' + $this.attr('id')]);
}
$this.html(processedContent);
}
//Function to Pause/Resume Timer.
function pauseTimer($this, timerType, opts, func) {
$("#" + opts.pauseButton).click(function () {
if ($(this).val() != "resume") {
$("#" + opts.pauseButton).val("resume").text("Resume");
clearInterval(window['timer_' + timerType + $this.attr('id')]);
}
else if ($(this).val() == "resume") {
$("#" + opts.pauseButton).val("pause").text("Pause");
window['timer_' + timerType + $this.attr('id')] = setInterval(function () {
func($this, opts)
}, opts.tickInterval * 1000);
}
});
}
//Function to Start/Stop Timer.
function stopTimer($this, timerType, opts, func) {
$("#" + opts.stopButton).click(function () {
if ($(this).val() != "start") {
$("#" + opts.stopButton).val("start").text("Start");
clearInterval(window['timer_' + timerType + $this.attr('id')]);
window['hours_' + timerType + $this.attr('id')] = opts.hours;
window['minutes_' + timerType + $this.attr('id')] = opts.minutes;
window['seconds_' + timerType + $this.attr('id')] = opts.seconds;
func($this, opts);
}
else if ($(this).val() == "start") {
$("#" + opts.stopButton).val("stop").text("Stop");
window['timer_' + timerType + $this.attr('id')] = setInterval(function () {
func($this, opts)
}, opts.tickInterval * 1000);
}
});
}
//Giving default value for options.
$.fn.countdowntimer.defaults = {
hours: 0,
minutes: 0,
seconds: 60,
startDate: new Date(),
dateAndTime: new Date("0000/00/00 00:00:00"),
currentTime: false,
size: "sm",
borderColor: "#F0068E",
fontColor: "#FFFFFF",
backgroundColor: "#000000",
timeSeparator: ":",
tickInterval: 1,
timeUp: null,
expiryUrl: null,
regexpMatchFormat: null,
regexpReplaceWith: null,
pauseButton: null,
stopButton: null
};
}(jQuery));