var StoreNumbers = new Array();
var backtwo = 0;
var memory = 0;
var checkingvalue = "";
var togglevalue = "";
var changer = "";
var steady = "";
var focussedelem = "";
function sayalert() {
alert ("You clicked me!");
}

function changecolour(row,cell) {

var theactivecell =  document.getElementById("cell"+row+cell);
//alert ("selected cell"+row+cell);
StoreNumbers[StoreNumbers.length] = theactivecell.style.background;
theactivecell.style.background = "#9f9";
//NEW
document.getElementById("table"+row+cell).style.background = "#9f9";
}

function losecolour(row,cell) {

memory = 0;
var theactivecell =  document.getElementById("cell"+row+cell);
//alert ("selected cell"+row+cell);
//alert (StoreNumbers[StoreNumbers.length-1]);
//rgb(255, 255, 153) none repeat scroll 0% 0%
if (backtwo == 1) {
// e.g. two moves back then do nothing
//alert ("was placed before");
backtwo = 0;
}
else {
if (StoreNumbers[StoreNumbers.length-1] == "undefined" || StoreNumbers[StoreNumbers.length-1] == "#ff9" || StoreNumbers[StoreNumbers.length-1] == "rgb(255, 255, 153) none repeat scroll 0% 0%" || StoreNumbers[StoreNumbers.length-1] == "") {
theactivecell.style.background = "#ff9";
document.getElementById("table"+row+cell).style.background = "#ff9";
}

else {
if (StoreNumbers[StoreNumbers.length-1] == "#f00" || StoreNumbers[StoreNumbers.length-1] == "rgb(255, 0, 0) none repeat scroll 0% 0%") {
theactivecell.style.background = "#f00";
document.getElementById("table"+row+cell).style.background = "#f00";
}
else {

theactivecell.style.background = "#000";
document.getElementById("table"+row+cell).style.background = "#000";
}
}

}
}


function capturekey(evt) {

evt = (evt) ? evt : ((window.event) ? event : null);
if (evt) {
var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if (elem) {

var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);

//alert (charCode + " and " + elem.id);
// test for up 38; 40 down; 37 left; 39 right; 16 shift; 8 tab

if (charCode == 38) {
// elem.id = cellxy
focussedelem = elem.id;
changer = focussedelem.substring(4,5);
steady = focussedelem.substring(5,6);
//alert (focussedelem + "and " + changer);
if (changer > 0) { --changer; } else { changer = 8; }
// set focus
document.getElementById("cell"+changer+steady).focus();
}
// end up test
// down test
if (charCode == 40) {
// elem.id = cellxy
focussedelem = elem.id;
changer = focussedelem.substring(4,5);
steady = focussedelem.substring(5,6);
//alert (focussedelem + "and " + changer);
if (changer < 8) { ++changer; } else { changer = 0; }
// set focus
document.getElementById("cell"+changer+steady).focus();
}
// end down test

// left test
if (charCode == 37) {
// elem.id = cellxy
focussedelem = elem.id;
steady = focussedelem.substring(4,5);
changer = focussedelem.substring(5,6);
//alert (focussedelem + "and " + changer);
if (changer > 0) { --changer; } else { changer = 8; }
// set focus
document.getElementById("cell"+steady+changer).focus();
}
// end left test

// right test
if (charCode == 39) {
// elem.id = cellxy
focussedelem = elem.id;
steady = focussedelem.substring(4,5);
changer = focussedelem.substring(5,6);
//alert (focussedelem + "and " + changer);
if (changer < 8) { ++changer; } else { changer = 0; }
// set focus
document.getElementById("cell"+steady+changer).focus();
}
// end right test

if (charCode == 90) {
// space, so set to black
// memory check!
if (memory == 1) {
//alert ("memory!");
togglevalue = document.getElementById(elem.id).style.background;
//alert (togglevalue);
if (togglevalue == "#000" || togglevalue == "rgb(0, 0, 0) none repeat scroll 0% 0%") {
document.getElementById(elem.id).style.background = "#ff9";
document.getElementById(elem.id).value = "";
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#ff9";
StoreNumbers[StoreNumbers.length] = "#ff9";
backtwo = 1;
}
else {
document.getElementById(elem.id).style.background = "#000";
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#000";
document.getElementById(elem.id).value = "";
StoreNumbers[StoreNumbers.length] = "#000";
backtwo = 1;
}

} // memory
else { // not memory
// first need to check if is already black, and if is set back to yellow!
checkingvalue = StoreNumbers[StoreNumbers.length-1];
if (checkingvalue == "#000" || checkingvalue == "rgb(0, 0, 0) none repeat scroll 0% 0%") {
document.getElementById(elem.id).style.background = "#ff9";
document.getElementById(elem.id).value = "";
//alert(elem.id); eg cell00
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#ff9";
StoreNumbers[StoreNumbers.length] = "#ff9";
backtwo = 1;
memory = 1;
} // already selected - back to yellow
else {
document.getElementById(elem.id).style.background = "#000";
document.getElementById(elem.id).value = "";
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#000";
StoreNumbers[StoreNumbers.length] = "#000";
//document.getElementById(elem.id).style.background;
backtwo = 1;
memory = 1;
}
} // not already selected
} // space
if (charCode == 88) {
// red for now
// memory check
if (memory == 1) {

togglevalue = document.getElementById(elem.id).style.background;
document.getElementById(elem.id).value = "";
//alert (togglevalue);
if (togglevalue == "#f00" || togglevalue == "rgb(255, 0, 0) none repeat scroll 0% 0%") {
document.getElementById(elem.id).style.background = "#ff9";
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#ff9";
StoreNumbers[StoreNumbers.length] = "#ff9";
backtwo = 1;
}
else {
document.getElementById(elem.id).style.background = "#f00";
document.getElementById(elem.id).value = "";
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#f00";
StoreNumbers[StoreNumbers.length] = "#f00";
backtwo = 1;
}

} // memory 1
else { // not memory
// first check if already red!
checkingvalue = StoreNumbers[StoreNumbers.length-1];
if (checkingvalue == "#f00" || checkingvalue == "rgb(255, 0, 0) none repeat scroll 0% 0%") {
document.getElementById(elem.id).style.background = "#ff9";
document.getElementById(elem.id).value = "";
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#ff9";
StoreNumbers[StoreNumbers.length] = "#ff9";
backtwo = 1;
memory = 1;
}
else {
document.getElementById(elem.id).style.background = "#f00";
document.getElementById(elem.id).value = "";
str2 = elem.id.replace("cell","table");
document.getElementById(str2).style.background = "#f00";
StoreNumbers[StoreNumbers.length] = "#f00";
backtwo = 1;
memory = 1;
}
}
}
}

}

}

var storepastmoves = "";
function showmoves() {
for (var i =0; i < StoreNumbers.length; i++) {
storepastmoves = storepastmoves + StoreNumbers[i];
storepastmoves += "\n";
}
alert ("Past moves" + storepastmoves);
storepastmoves = "";
}

function resetgrid() {
var allcells = document.getElementsByTagName("td");
for (var i =0; i < allcells.length; i++) {
if (allcells[i].id.indexOf("table") == 0) {
allcells[i].style.background = "#ff9";
}
}


var allcells = document.getElementsByTagName("input");
for (var i =0; i < allcells.length; i++) {
if (allcells[i].id.indexOf("cell") == 0) {
allcells[i].style.background = "#ff9";
}
}



}

function showsolution() {
for (var i =0; i < 9; i++) {
	for (var j = 0; j < 9; j++) {
if (solution[i][j] == 1)
{
document.getElementById("cell"+i+j).style.background = "#000";
document.getElementById("table"+i+j).style.background = "#000";
} // sol = 1
else {
document.getElementById("cell"+i+j).style.background = "#f00";
document.getElementById("table"+i+j).style.background = "#f00";
}
	} // j

} // i


} // show sol

var checkthisval = "";
var checkthatval = "";
var errorlog = 0;
function checksolution() {

for (var i =0; i < 9; i++) {
	for (var j = 0; j < 9; j++) {
if (solution[i][j] == 1)
{
checkthisval = document.getElementById("cell"+i+j).style.background;
if (checkthisval != "#000"  && checkthisval != "rgb(0, 0, 0) none repeat scroll 0% 0%") {
++errorlog;
} // is value right
} // sol = 1
else { // it should NOT be black!
checkthatval = document.getElementById("cell"+i+j).style.background;
if (checkthatval == "#000" || checkthatval == "rgb(0, 0, 0) none repeat scroll 0% 0%") {
++errorlog;
} // is value right
}
	} // j

} // i
if (errorlog) {
alert ("Sorry, " + errorlog + " cells do not contain the correct mark");

}
else {
alert ("Congratulations!  Your answer is correct!");
}
errorlog = 0;
} //check sol