var pairsFound;
var time;
var playing;

var tilesNum;
var tilesState;
var prevPos;

var startTime;
var timerID;
var timerRunning;

var fadeOpacity = "0.5";

window.onload = init;

function init() {
  preloadImages();
  setTimeout(hideAddress, 2000);
  tilesNum = new Array(20);
  tilesState = new Array(20);
  prepare();
}

function preloadImages() {
  var i;
  var img = new Image();
  img.src = "t.png";
  for(i=1;i<=10;i++) {
    img.src = "t"+i+".png";
  }
}

function hideAddress() {
  window.scroll(0, 1);
}

function prepare() {
  pairsFound = 0;
  time = "0:00";
  playing = false;
  
  var buf = [2,2,2,2,2,2,2,2,2,2];
  var el,i,num,prevNum=0;
  for(i=0;i<20;i++) {
    while(true) {
      num = Math.ceil(Math.random()*10);
      if(buf[num-1]==0) continue;
      if(i<19 && num==prevNum) continue;
      buf[num-1]--;
	    tilesNum[i] = num;
	    prevNum = num;
      break;
    }
    el = document.getElementById('t'+(i+1));
	  el.style.background = "url(t.png)";
	  tilesState[i] = 0;
  }
  prevPos = -1;
  
  document.getElementById("result").style.display = "none";
  document.getElementById("ready").style.display = "block";
  document.getElementById("pairs").innerHTML = pairsFound;
  document.getElementById("time").innerHTML = time;
}

function play() {
  startWatch();
  setTimeout(hideAddress, 100);
  document.getElementById("ready").style.display = "none";
  playing = true;
}

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();
  var seconds = parseInt((curTime - startTime)/1000);
  var min = 0;
  while(seconds>=60) {
    min++;
    seconds -= 60;
  }
  if(seconds<10) seconds = "0"+seconds;
  time = min+":"+seconds;
  document.getElementById("time").innerHTML = time;
}

function hit(tile_id) {  
  if(!playing) return;
  
  var el,el2,pos,num,prevNum;
  
  for(i=0;i<20;i++) {
    if(tile_id == "t"+(i+1)) {
      pos = i;
      break;
    }
  }

  el = document.getElementById(tile_id);
  if(tilesState[pos]>0) return;
  num = tilesNum[pos];

  if(prevPos>=0) {
    prevNum = tilesNum[prevPos];
    if(num == prevNum) {
      tilesState[pos] = tilesState[prevPos] = 2;
      el2 = document.getElementById("t"+(prevPos+1));
      el.style.background = el2.style.background = "url(t"+num+".png)";
      el.style.opacity = el2.style.opacity = "1";
      prevPos = -1;
      pairsFound++;
      document.getElementById("pairs").innerHTML = pairsFound;
      if(pairsFound >= 10) {
        stopWatch();
        setTimeout(showResult, 1000);
      }
    } else {
      el2 = document.getElementById("t"+(prevPos+1));
      el2.style.background = "url(t.png)";
      el2.style.opacity = "1";
      tilesState[prevPos] = 0;
      prevPos = pos;
      el.style.background = "url(t"+num+".png)";
      el.style.opacity = fadeOpacity;
      tilesState[pos] = 1;
    }
  } else {
    prevPos = pos;
    tilesState[pos] = 1;
    el.style.background = "url(t"+num+".png)";
    el.style.opacity = fadeOpacity;
  }
}

function showResult() {
  playing = false;
  document.getElementById("result").style.display = "block";
  document.getElementById("result_time").innerHTML = time;
}
