window.onload = function initialSetup() {
	setup();
}

function setup() {
	
	// Clear the board
	var chessPuzzle = document.getElementById("chesspuzzle");
	var allSquares = chessPuzzle.getElementsByTagName("div");
	 
	for (var i = 0; i < allSquares.length; i++) {    	allSquares[i].className = "empty";
}
	// Setup the pieces for the puzzle
	puzzleSetup();
	//Determine whose move it is
	document.getElementById("to_move").innerHTML = toMove;
}

function select(square) {
	if (selectCounter == 0) {
		square.style.border = "1px solid #F00";
		sqOne = square;
		newClass = square.className;
		sqOneId = square.getAttribute("id");
		document.getElementById("announcement").innerHTML = "";
		selectCounter += 1;
	}
	else if (selectCounter == 1) {
		sqTwo = square;
		sqTwoId = square.getAttribute("id");
		
		// Load chess puzzle
		puzzleMoves();
		
		// Test to see if they have chosen the correct move
		if ((sqOneId == move) && (sqTwoId == target)) {
			movePiece(sqOne,sqTwo);
			if(toMove == "Black to move, and checkmate&ndash;in&ndash;three moves!") {
				document.getElementById("notation").innerHTML += notation;
			}
			else {
				document.getElementById("notation").innerHTML += "<br />" + notation;
			}
			
			if (lastMove == true) {
				document.getElementById("to_move").innerHTML = "";
				document.getElementById("click").innerHTML = "";
announcement = "Congratulations! You solved the problem. Please fill out the form below to enter our Weekly Contest drawing."
				document.getElementById("contest_form").style.display = "block";	
			}
			else {
				respond(response1,response2,response3);	
			}
			document.getElementById("announcement").innerHTML = announcement;
			puzzleCounter += 1;
		}
		else {
			document.getElementById("announcement").innerHTML = "That move is incorrect. Please try again.";	
			setup();
			puzzleCounter = 0;
			lastMove = false;
			document.getElementById("notation").innerHTML = "";
		}
		sqOne.style.border = "none";
		selectCounter = 0;
	}
	else {
		alert("false");	
	}
}

function movePiece(squareOne,squareTwo) {
	squareOne.className = "empty";
	squareTwo.className = newClass;
}

function respond(respondSqOne,respondSqTwo,respondNotation) {
	sqThree = document.getElementById(respondSqOne);
	sqFour = document.getElementById(respondSqTwo);
	newClass = sqThree.className;
	movePiece(sqThree,sqFour);
	if(toMove == "Black to move, and checkmate&ndash;in&ndash;three moves!") {
		document.getElementById("notation").innerHTML += "<br />" + respondNotation;
	}
	else {
		document.getElementById("notation").innerHTML += respondNotation;
	}
}
var puzzleCounter = 0;
var selectCounter = 0;
var move, target, notation, response = "";
var announcement = "That move is correct!";
var lastMove = false;
var newClass;
var sqOneId;
var sqTwoId;
var sqOne;
var sqTwo;
//White to move first unless otherwise specified
var toMove = "White to move, and checkmate&ndash;in&ndash;three moves!";


//Unique to the individual puzzle
function puzzleMoves() {
		// Check to see which move the person is on
		if (puzzleCounter == 0) {
			move = "hseven"; //Initial click
			target = "geight"; //Target square
			notation = "1. Bg8+"; //White to move - 1. Qd3+    Black to move - 1. ... Qd3+ 
			response1 = "eeight"; //Black's initial square
			response2 = "fseven"; //Black's target square
			response3 = " Bf7"; //Notation: White to move - " Kc5"    Black to move - "2. Kc5"
		}
		else if (puzzleCounter == 1) {
			move = "geight";
			target = "fseven";
			notation = "2. Bxf7+"; //White to move - 2. Qd4+    Black to move - 2. ... Qd4+
			response1 = "esix";
			response2 = "dseven";
			response3 = " Kd7"; //White to move - " Kb5"    Black to move - 3. Kb5
		}
		else if (puzzleCounter == 2) {
			move = "gsix";
			target = "ffive";
			notation = "3. Qf5#, Checkmate!"; //White to move - 3. Qb4#, Checkmate!    Black to move - 3. ... Qb4#, Checkmate!
			lastMove =  true;
			
		}

		else {
			move = "";
			target = "";
		}	
}

function puzzleSetup() {
	
	document.getElementById("aeight").className = "brook";
	document.getElementById("deight").className = "brook";
	document.getElementById("eeight").className = "bbishop";

	document.getElementById("aseven").className = "bpawn";
	document.getElementById("bseven").className = "bpawn";
	document.getElementById("eseven").className = "bbishop";
	document.getElementById("gseven").className = "bpawn";
	document.getElementById("hseven").className = "wbishop";

	document.getElementById("bsix").className = "bqueen";
	document.getElementById("csix").className = "bknight";
	document.getElementById("esix").className = "bking";
	document.getElementById("fsix").className = "bknight";
	document.getElementById("gsix").className = "wqueen";
	document.getElementById("hsix").className = "bpawn";

	document.getElementById("cfive").className = "bpawn";
	document.getElementById("dfive").className = "bpawn";

	document.getElementById("dfour").className = "wpawn";
	document.getElementById("ffour").className = "wbishop";

	document.getElementById("cthree").className = "wpawn";
	document.getElementById("ethree").className = "wpawn";

	document.getElementById("atwo").className = "wpawn";
	document.getElementById("btwo").className = "wpawn";
	document.getElementById("ftwo").className = "wpawn";
	document.getElementById("gtwo").className = "wpawn";
	document.getElementById("htwo").className = "wpawn";

	document.getElementById("aone").className = "wrook";
	document.getElementById("fone").className = "wrook";
	document.getElementById("gone").className = "wking";
}