
// Variable setup
var numColors = 8;

var colors = new Array("darkblue.gif", "red.gif", "yellow.gif", "cyan.gif", "green.gif",
		       "black.gif", "orange.gif", "purple.gif");
var board = new Array(numColors * 2);
var blankImage = "blank.gif";
var matchImage = "match.gif";
var numClicks = 0;
var firstCard = -1;
var secondCard = -1;
var numMatches = 0;
var justNoMatch = false;
var firstClick = true;
var gameOver = false;

function errprintln(message) {
  document.debug.debugger.value = document.debug.debugger.value + "\n" + message;
}
function clearDebugger() {
  document.debug.debugger.value = "";
}

function getUniqueRandom() {
  var foundUnique = false;
  var random = Math.floor(Math.random() * (numColors * 2 - 1.01));
  while (! foundUnique) {
    if (board[random] == blankImage) {
      foundUnique = true;
    }
    else {
      random = (random + 1) % (numColors * 2);
    }
  }
  return random;
}

function boardSetup() {
  numClicks = 0;
  firstCard = -1;
  secondCard = -1;
  numMatches = 0;
  justNoMatch = false;
  gameOver = false;

  for (var i=0; i < board.length; i++) {
    document.images[i].src = blankImage;
    board[i] = blankImage;
  }

  for (var j=0; j < colors.length; j++) {
    var first = getUniqueRandom();
    board[first] = colors[j];
    var second = getUniqueRandom();
    board[second] = colors[j];
  }

  /**
  board[0] = "darkblue.gif";
  board[1] = "black.gif";
  board[2] = "yellow.gif";
  board[3] = "cyan.gif";
  board[4] = "green.gif";
  board[5] = "black.gif";
  board[6] = "purple.gif";
  board[7] = "red.gif";
  board[8] = "green.gif";
  board[9] = "yellow.gif";
  board[10] = "cyan.gif";
  board[11] = "darkblue.gif";
  board[12] = "orange.gif";
  board[13] = "red.gif";
  board[14] = "purple.gif";
  board[15] = "orange.gif";
  */
}

function pickCard(cardNum) {
  if (firstClick) {
    boardSetup();
    firstClick = false;
  }

  if (justNoMatch) {
    document.images[firstCard].src = blankImage;
    document.images[secondCard].src = blankImage;
    resetClicks();
  }

  else {
    if (gameOver) { boardSetup(); } else {
    if (cardNum == firstCard) {
      alert("Sorry, you've already turned over that card. Please select a different card.");
    }
    else {
      if (board[cardNum] == matchImage) {
	alert("Sorry, that card has already been matched. Please select a different card.");
      }
      else {
	document.images[cardNum].src = board[cardNum];
	
	if (numClicks == 0) {
	  firstCard = cardNum;
	  numClicks++;
	}
	
	else {
	  secondCard = cardNum;
	  if (board[firstCard] == board[secondCard]) {
	    match();
	  }
	  else {
	    noMatch();
	  }
	}
      }
    }
    }
  }
}

function match() {
  numMatches++;
  document.images[firstCard].src = matchImage;
  document.images[secondCard].src = matchImage;
  board[firstCard] = matchImage;
  board[secondCard] = matchImage;

  if (numMatches == colors.length) {
    alert("Congratulations! You won! Click on the board to start a new game.");
    gameOver = true;
  }

  else {
    alert("You got a match!");
    resetClicks();
  }
}

function noMatch() {
  alert("Sorry, those cards don't match. Click on any card to guess again.");
  justNoMatch = true;
  numClicks = 0;
}

function resetClicks() {
    firstCard = -1;
    secondCard = -1;
    numClicks = 0;
    justNoMatch = false;
}


