Simple Javascript Countdown

JS Countdown

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js"></script>
<div class="timer">
  <div id="header">
    <h3>COUNTDOWN</h3>
  </div>
  <div class="timer--clock">
    <div class="minutes-group clock-display-grp">
      <div class="first number-grp">
        <div class="number-grp-wrp">
          <div class="num num-0">
            <p>0</p>
          </div>
          <div class="num num-1">
            <p>1</p>
          </div>
          <div class="num num-2">
            <p>2</p>
          </div>
          <div class="num num-3">
            <p>3</p>
          </div>
          <div class="num num-4">
            <p>4</p>
          </div>
          <div class="num num-5">
            <p>5</p>
          </div>
          <div class="num num-6">
            <p>6</p>
          </div>
          <div class="num num-7">
            <p>7</p>
          </div>
          <div class="num num-8">
            <p>8</p>
          </div>
          <div class="num num-9">
            <p>9</p>
          </div>
        </div>
      </div>
      <div class="second number-grp">
        <div class="number-grp-wrp">
          <div class="num num-0">
            <p>0</p>
          </div>
          <div class="num num-1">
            <p>1</p>
          </div>
          <div class="num num-2">
            <p>2</p>
          </div>
          <div class="num num-3">
            <p>3</p>
          </div>
          <div class="num num-4">
            <p>4</p>
          </div>
          <div class="num num-5">
            <p>5</p>
          </div>
          <div class="num num-6">
            <p>6</p>
          </div>
          <div class="num num-7">
            <p>7</p>
          </div>
          <div class="num num-8">
            <p>8</p>
          </div>
          <div class="num num-9">
            <p>9</p>
          </div>
        </div>
      </div>
    </div>
    <div class="clock-separator">
      <p>:</p>
    </div>
    <div class="seconds-group...

SCSS

* {
  margin: 0;
  padding: 0;
  font-family: 'Arimo', sans-serif;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

body {
  background: #acacac;
  color: white;
}


/*=================
* TIMER
*=================*/

.timer {
  width: 550px;
  height: 248px;
  display: block;
  position: absolute;
  top: 45%;
  left: 50%;
  margin-left: -(550px / 2);
  margin-top: -(248px / 2);
  color: white;
  * {
    cursor: default;
  }
  h3 {
    width: 100%;
    font-size: 30px;
    letter-spacing: 4px;
    text-align: center;
    margin-bottom: 20px;
  }
  &--clock {
    width: 100%;
    position: relative;
    padding-left: 6px;
    margin-top: 22px;
    ;
    overflow: hidden;
    .clock-display-grp {
      width: 100%;
      position: relative;
      .number-grp {
        width: auto;
        display: block;
        height: 156px;
        float: left;
        overflow: hidden;
        .number-grp-wrp {
          width: 100%;
          position: relative;
          .num {
            width: 100%;
            position: relative;
            height: 160px;
            p {
              width: auto;
              display: table;
              font-size: 205px;
              line-height: 150px; //180
              font-weight: bold;
            }
          }
        }
      }
    }
    .clock-separator {
      width: auto;
      float: left;
      top: 10%;
      transform: translateY(-10%);
      -ms-transform: translateY(-10%);
      -webkit-transform: translateY(-10%);
      display: block;
      height: 156px;
      p {
        width: auto;
        display: table;
        font-size: 205px;
        line-height: 150px; //180
        font-weight: bold;
      }
    }
  }
  h4 {
    width: 100%;
    font-size: 12px;
    letter-spacing: 4px;
    text-align: center;
    padding-top: 25px;
    float: left;
    line-height: 2.5em;
    margin-bottom: 15px;
 ...

JavaScript

// Something lags here. No idea what. Timer count or animations?

TweenLite.defaultEase = Expo.easeOut;

initTimer("10:00"); // Set the time here

var reloadBtn = document.querySelector('.reload');
var timerEl = document.querySelector('.timer');

var audio = new Audio('http://soundbible.com/grab.php?id=1531&type=mp3');

function initTimer(t) {

  var self = this,
    timerEl = document.querySelector('.timer'),
    minutesGroupEl = timerEl.querySelector('.minutes-group'),
    secondsGroupEl = timerEl.querySelector('.seconds-group'),

    minutesGroup = {
      firstNum: minutesGroupEl.querySelector('.first'),
      secondNum: minutesGroupEl.querySelector('.second')
    },

    secondsGroup = {
      firstNum: secondsGroupEl.querySelector('.first'),
      secondNum: secondsGroupEl.querySelector('.second')
    };

  var time = {
    min: t.split(':')[0],
    sec: t.split(':')[1]
  };

  var timeNumbers;

  function updateTimer() {

    var timestr;
    var date = new Date();

    date.setHours(0);
    date.setMinutes(time.min);
    date.setSeconds(time.sec);

    var newDate = new Date(date.valueOf() - 1000);
    var temp = newDate.toTimeString().split(" ");
    var tempsplit = temp[0].split(':');

    time.min = tempsplit[1];
    time.sec = tempsplit[2];

    timestr = time.min + time.sec;
    timeNumbers = timestr.split('');
    updateTimerDisplay(timeNumbers);

    if (timestr === '0000')
      countdownFinished();

    if (timestr != '0000')
      setTimeout(updateTimer, 1000);

  }

  function updateTimerDisplay(arr) {

    animateNum(minutesGroup.firstNum, arr[0]);
    animateNum(minutesGroup.secondNum, arr[1]);
    animateNum(secondsGroup.firstNum, arr[2]);
    animateNum(secondsGroup.secondNum, arr[3]);

  }

  function animateNum(group, arrayValue) {

    TweenMax.killTweensOf(group.querySelector('.number-grp-wrp'));
    TweenMax.to(group.querySelector('.number-grp-wrp'), 1, {
      y: -group.querySelector('.num-' + arrayValue).offsetTop
    });

  }

 ...