# merchant/1.8.2/assets/js/modules/countdown-timer/countdown-timer.js

Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together &amp; More for WooCommerce – Merchant, version 1.8.2. 102 lines.

- Page: https://pluginprobe.com/plugins/merchant/1.8.2/code/assets/js/modules/countdown-timer/countdown-timer.js
- Raw: https://pluginprobe.com/plugins/merchant/1.8.2/raw/assets/js/modules/countdown-timer/countdown-timer.js
- Modified: 2024-01-03T19:34:36+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/merchant/1.8.2/code/assets/js/modules/countdown-timer/countdown-timer.js#L10-L20`.

```javascript
"use strict";

;
(function ($, window, document, undefined) {
  'use strict';

  var countdownTimer, countdownTimerDate, countdownMinExpiration, countdownMaxExpiration;
  var countdownTimerId = 'merchant-countdown-timer';
  var countdownTimerCookie = 'merchant_countdown_timer_date';
  var countdownTimerCoolOffCookie = 'merchant_countdown_timer_cool_off_date';
  var setCookie = function setCookie(name, value, expirationDays) {
    var date = new Date();
    date.setTime(date.getTime() + expirationDays * 24 * 60 * 60 * 1000); // Calculate expiration date

    var expires = "expires=" + date.toUTCString();
    document.cookie = name + "=" + value + ";" + expires + ";path=/";
  };
  var getCookie = function getCookie(name) {
    var cookieArr = document.cookie.split(';');
    for (var i = 0; i < cookieArr.length; i++) {
      var cookiePair = cookieArr[i].split('=');
      var cookieName = cookiePair[0].trim();
      var cookieValue = cookiePair[1].trim();
      if (cookieName === name) {
        return decodeURIComponent(cookieValue);
      }
    }
    return null;
  };
  var deleteCookie = function deleteCookie(name) {
    document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
  };
  var updateCountdown = function updateCountdown() {
    var now = new Date().getTime();
    var minExpirationTime = countdownMinExpiration.getTime();
    var maxExpirationTime = countdownMaxExpiration.getTime();
    if (now < minExpirationTime) {
      // The current time is before the minimum expiration deadline
      displayCountdown(maxExpirationTime - now);
    } else if (now > maxExpirationTime) {
      // The current time is after the maximum expiration deadline
      destroyCountDown();
    } else {
      // The current time is between the minimum and maximum expiration deadlines
      destroyCountDown();
    }
  };
  var displayCountdown = function displayCountdown(timeLeft) {
    var days = Math.floor(timeLeft / (1000 * 60 * 60 * 24));
    var hours = Math.floor(timeLeft % (1000 * 60 * 60 * 24) / (1000 * 60 * 60)).toString().padStart(2, '0');
    var minutes = Math.floor(timeLeft % (1000 * 60 * 60) / (1000 * 60)).toString().padStart(2, '0');
    var seconds = Math.floor(timeLeft % (1000 * 60) / 1000).toString().padStart(2, '0');
    document.getElementById(countdownTimerId).innerHTML = "".concat(days, " days ").concat(hours, ":").concat(minutes, ":").concat(seconds);
    if (timeLeft > 0) {
      setTimeout(updateCountdown, 1000);
    }
  };
  var destroyCountDown = function destroyCountDown() {
    displayCountdown(0);
    deleteCookie(countdownTimerCookie);
    setCoolOffDate();
    countdownTimer.hide();
  };
  var setCoolOffDate = function setCoolOffDate() {
    if (!getCookie(countdownTimerCoolOffCookie)) {
      var coolOffDate = new Date();
      coolOffDate.setMinutes(coolOffDate.getMinutes() + parseInt(countdownTimer.attr('data-cop')));
      setCookie(countdownTimerCoolOffCookie, coolOffDate, 1);
    }
  };
  $(document).ready(function () {
    countdownTimer = $('.merchant-countdown-timer');
    if (countdownTimer.length) {
      var maxExpirationHours = parseInt(countdownTimer.attr('data-max'));
      var minExpirationHours = maxExpirationHours - parseInt(countdownTimer.attr('data-min'));
      var startCountdown = true;
      if (getCookie(countdownTimerCoolOffCookie)) {
        var coolOffPeriodDate = new Date(getCookie(countdownTimerCoolOffCookie));
        var now = new Date().getTime();
        if (now > coolOffPeriodDate) {
          deleteCookie(countdownTimerCoolOffCookie);
        } else {
          startCountdown = false;
        }
      }
      if (startCountdown) {
        countdownTimer.show();
        if (!getCookie(countdownTimerCookie)) {
          countdownTimerDate = new Date();
          setCookie(countdownTimerCookie, countdownTimerDate, 9);
        } else {
          countdownTimerDate = new Date(getCookie(countdownTimerCookie));
        }
        countdownMaxExpiration = new Date(countdownTimerDate.getTime());
        countdownMaxExpiration.setHours(countdownMaxExpiration.getHours() + maxExpirationHours);
        countdownMinExpiration = new Date(countdownTimerDate.getTime());
        countdownMinExpiration.setHours(countdownMinExpiration.getHours() + minExpirationHours);
        updateCountdown();
      }
    }
  });
})(jQuery, window, document);
```
