{"version":3,"file":"timer.min.js","sources":["../src/timer.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery', 'core/log'], function ($, log) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('Timer: initialising');\n\n    return {\n        increment: 1,\n        initseconds: 0,\n        seconds: 0,\n        finalseconds: 0,\n        intervalhandle: null,\n        callback: null,\n        enabled: false,\n\n        //for making multiple instances\n        clone: function () {\n            return $.extend(true, {}, this);\n        },\n\n        init: function (initseconds, callback) {\n            this.initseconds = parseInt(initseconds);\n            this.seconds = parseInt(initseconds);\n            this.callback = callback;\n            this.enabled = true;\n        },\n\n        start: function () {\n            if (!this.enabled) {\n                return;\n            }\n\n            var self = this;\n            this.finalseconds = 0;\n            if (this.initseconds > 0) {\n                this.increment = -1;\n            } else {\n                this.increment = 1;\n            }\n            this.intervalhandle = this.customSetInterval(function () {\n                self.seconds = self.seconds + self.increment;\n                self.finalseconds = self.finalseconds + 1;\n                self.callback();\n            }, 1000);\n        },\n\n        //we use a custom set interval which self adjusts for inaccuracies.\n        customSetInterval: function (func, time) {\n            var lastTime = Date.now(),\n                lastDelay = time,\n                outp = {};\n\n            function tick() {\n                var now = Date.now(),\n                    dTime = now - lastTime;\n\n                lastTime = now;\n                lastDelay = time + lastDelay - dTime;\n                outp.id = setTimeout(tick, lastDelay);\n                func();\n\n            }\n\n            outp.id = setTimeout(tick, time);\n            return outp;\n        },\n\n        disable: function () {\n            this.enabled = false;\n        },\n\n        enable: function () {\n            this.enabled = true;\n        },\n\n        fetch_display_time: function (someseconds) {\n            if (!someseconds) {\n                someseconds = this.seconds;\n            }\n            var theHours = '00' + parseInt(someseconds / 3600);\n            theHours = theHours.substr(theHours.length - 2, 2);\n            var theMinutes = '00' + parseInt(someseconds / 60);\n            theMinutes = theMinutes.substr(theMinutes.length - 2, 2);\n            var theSeconds = '00' + parseInt(someseconds % 60);\n            theSeconds = theSeconds.substr(theSeconds.length - 2, 2);\n            var display_time = theHours + ':' + theMinutes + ':' + theSeconds;\n            return display_time;\n        },\n\n        stop: function () {\n            clearTimeout(this.intervalhandle.id);\n        },\n\n        reset: function () {\n            this.seconds = this.initseconds;\n        },\n\n        pause: function () {\n            this.increment = 0;\n        },\n        resume: function () {\n            if (this.initseconds > 0) {\n                this.increment = -1;\n            } else {\n                this.increment = 1;\n            }\n        }\n\n    };//end of returned object\n});//total end\n"],"names":["define","$","log","debug","increment","initseconds","seconds","finalseconds","intervalhandle","callback","enabled","clone","extend","this","init","parseInt","start","self","customSetInterval","func","time","lastTime","Date","now","lastDelay","outp","id","setTimeout","tick","dTime","disable","enable","fetch_display_time","someseconds","theHours","substr","length","theMinutes","theSeconds","stop","clearTimeout","reset","pause","resume"],"mappings":"AACAA,6BAAO,CAAC,SAAU,aAAa,SAAUC,EAAGC,YAIxCA,IAAIC,MAAM,uBAEH,CACHC,UAAW,EACXC,YAAa,EACbC,QAAS,EACTC,aAAc,EACdC,eAAgB,KAChBC,SAAU,KACVC,SAAS,EAGTC,MAAO,kBACIV,EAAEW,QAAO,EAAM,GAAIC,OAG9BC,KAAM,SAAUT,YAAaI,eACpBJ,YAAcU,SAASV,kBACvBC,QAAUS,SAASV,kBACnBI,SAAWA,cACXC,SAAU,GAGnBM,MAAO,cACEH,KAAKH,aAINO,KAAOJ,UACNN,aAAe,EAChBM,KAAKR,YAAc,OACdD,WAAa,OAEbA,UAAY,OAEhBI,eAAiBK,KAAKK,mBAAkB,WACzCD,KAAKX,QAAUW,KAAKX,QAAUW,KAAKb,UACnCa,KAAKV,aAAeU,KAAKV,aAAe,EACxCU,KAAKR,aACN,OAIPS,kBAAmB,SAAUC,KAAMC,UAC3BC,SAAWC,KAAKC,MAChBC,UAAYJ,KACZK,KAAO,UAaXA,KAAKC,GAAKC,qBAXDC,WACDL,IAAMD,KAAKC,MACXM,MAAQN,IAAMF,SAElBA,SAAWE,IACXC,UAAYJ,KAAOI,UAAYK,MAC/BJ,KAAKC,GAAKC,WAAWC,KAAMJ,WAC3BL,SAIuBC,MACpBK,MAGXK,QAAS,gBACApB,SAAU,GAGnBqB,OAAQ,gBACCrB,SAAU,GAGnBsB,mBAAoB,SAAUC,aACrBA,cACDA,YAAcpB,KAAKP,aAEnB4B,SAAW,KAAOnB,SAASkB,YAAc,MAC7CC,SAAWA,SAASC,OAAOD,SAASE,OAAS,EAAG,OAC5CC,WAAa,KAAOtB,SAASkB,YAAc,IAC/CI,WAAaA,WAAWF,OAAOE,WAAWD,OAAS,EAAG,OAClDE,WAAa,KAAOvB,SAASkB,YAAc,WAE5BC,SAAW,IAAMG,WAAa,KADjDC,WAAaA,WAAWH,OAAOG,WAAWF,OAAS,EAAG,KAK1DG,KAAM,WACFC,aAAa3B,KAAKL,eAAekB,KAGrCe,MAAO,gBACEnC,QAAUO,KAAKR,aAGxBqC,MAAO,gBACEtC,UAAY,GAErBuC,OAAQ,WACA9B,KAAKR,YAAc,OACdD,WAAa,OAEbA,UAAY"}