goofy timer

goofy timer

by thomas_david88

HTML

<div id=time></div>
<div id=milli></div>

JavaScript

$(function() {
  var timer, idle = false
  $(window).on({
    blur: pause,
    focus: somethingHappened
  })

  $(document).on({
    mousemove: somethingHappened,
    click: somethingHappened,
    touchstart: somethingHappened
  })

  var start = new Date,
    bad = 0
  adjust('80:00:00')

  somethingHappened()
  setInterval(function() {
    $("#time").text(formatMilli(new Date - start - bad))
    $("#milli").text(seconds($("#time").text()))
    if (idle) bad += 1000
  }, 1000)

  function seconds(s) {
    const t = s.split(":").map(Number)
    return (t[0] * 60 + t[1]) * 60 + t[2]
  }

  function adjust(time) {
    const t = time.split(/:/).map(Number).reverse()
    if (t[0]) start.setSeconds(start.getSeconds() - t[0]);
    if (t[1]) start.setMinutes(start.getMinutes() - t[1]);
    if (t[2]) start.setHours(start.getHours() - t[2]);
    console.log(t)
  }

  function pause() {
    idle = true
  }

  function somethingHappened() {
    idle = false
    clearTimeout(timer)
    timer = setTimeout(function() {
      idle = true
    }, 50000000)
  }

})
 function formatSeconds (seconds) {
    const t = [seconds / 3600, seconds / 60 % 60, seconds % 60].map(Math.trunc)
    t[1] = t[1].toString().padStart(2, "0")
    t[2] = t[2].toString().padStart(2, "0")
    return t.join(":")
  };



function formatMilli(milli) { //0:00:05 
  return formatSeconds(milli / 1000 )
}