var score;
var startTime;
var seconds;
var timerID;
var gameTimerID;
var gameTimerID2;
var timerRunning;
var level;
var playing = false;

window.onload = init;

function init() {
  startTime = 0;
  timerID = null;
  gameTimerID = null;
  gameTimerID2 = null;
  timerRunning = false;
  document.getElementById("h5").style.background = "url(mole.png)";
  document.getElementById("h6").style.background = "url(hit.png)";
  setTimeout(hideAddress, 500);
}

function hideAddress() {
  window.scroll(0, 1);
}

function play() {
  hideAddress();
  score = 0;
  document.getElementById("score").innerHTML = score;
  seconds = 60;
  level = 1;
  startWatch();
  document.getElementById("ready").style.display = "none";
  document.getElementById("h5").style.background = "url(hole.png)";
  document.getElementById("h6").style.background = "url(hole.png)";
  startGameTimer();
  playing = true;
}

function showResult() {
  playing = false;
  document.getElementById("result").style.display = "block";
  document.getElementById("result_score").innerHTML = score;
}

function restart() {
  document.getElementById("result").style.display = "none";
  document.getElementById("ready").style.display = "block";
  document.getElementById("score").innerHTML = "0";
  document.getElementById("time").innerHTML = "60";
  document.getElementById("h5").style.background = "url(mole.png)";
  document.getElementById("h6").style.background = "url(hit.png)";
}

function hit(hole_id) {
  var el;
  el = document.getElementById(hole_id);
  if(playing) {
    if(el.style.background.match(/mole.png/)) {
      el.style.background = "url(hit.png)";
      score += (100-seconds);
      el = document.getElementById("score");
      el.innerHTML = score;
    }
  } else {
    if(el.style.background.match(/mole.png/)) {
      el.style.background = "url(hit.png)";
    } else if(el.style.background.match(/hit.png/)) {
      el.style.background = "url(mole.png)";
    }
  }
}

function startWatch() {
  var initial = new Date();
  startTime = initial.getTime();
  timerID = setInterval(updateWatch, 500);
}

function stopWatch() {
  if(timerRunning) clearInterval(timerID);
  timerRunning = false;
}

function updateWatch() {
  timerRunning = true;
  
  var current = new Date();
  var curTime = current.getTime();
  seconds = parseInt((curTime - startTime)/1000);
  seconds = 60 - seconds;
  if(seconds<=0) {
    seconds = 0;
    stopWatch();
    stopGameTimer();
    setTimeout(showResult, 2000);
  }
  if((seconds<=40 && level==1) || (seconds<=20 && level==2)) {
    level++;
    stopGameTimer();
    startGameTimer();
  }
  
  seconds = seconds.toString();
  
  document.getElementById("time").innerHTML = seconds;
}

function startGameTimer() {
  var delay = 2000;
  switch(level) {
    case 1: delay = 2000; break;
    case 2: delay = 1500; break;
    case 3: delay = 1500; break;
  }
  gameTimerID = setInterval(showMole, delay);
  if(level == 3) {
    gameTimerID2 = setInterval(showMole, delay);
  }
}

function stopGameTimer() {
  clearInterval(gameTimerID);
  if(gameTimerID2) clearInterval(gameTimerID2);
}

function showMole() {
  var num,el,delay;
  while(true) {
    num = Math.ceil(Math.random()*6);
    el = document.getElementById("h"+num);
    if(!el.style.background || el.style.background.match(/hole.png/)) break;
  }
  el.style.background = "url(mole.png)";
  delay = 1000 + seconds*30;
  setTimeout(function() {
    document.getElementById("h"+num).style.background = "url(hole.png)";
  }, delay);
}
