(function () { "use strict"; // "Private" members var countdownSecondsRemaining; var countdownIntervalPromise; var countdownCompleteCallback; var paused; angular.module("enrServicesModule") .factory("secondsCountdown", ["$interval", function ($interval) { return { start: function (secondsRemaining, timesUpCallback) { countdownSecondsRemaining = secondsRemaining; countdownCompleteCallback = timesUpCallback; // End any current countdown if (countdownIntervalPromise != undefined) $interval.cancel(countdownIntervalPromise); // Kickoff the countdown paused = false; countdownIntervalPromise = $interval(function () { if (!paused) { countdownSecondsRemaining -= 1; } if (countdownSecondsRemaining === 0) { $interval.cancel(countdownIntervalPromise); countdownIntervalPromise = undefined; if (countdownCompleteCallback != undefined) countdownCompleteCallback(); } }, 1000); }, togglePause: function () { paused = !paused; }, isPaused: function () { return paused; }, secondsRemaining: function () { return countdownSecondsRemaining; }, stopInterval: function () { if (angular.isDefined(countdownIntervalPromise)) { $interval.cancel(countdownIntervalPromise); countdownIntervalPromise = undefined; } } }; }]); }());