var x=14;
var y=50;
var z=0;
var overthetop="LightGrey";
var multiplierrow="WhiteSmoke";
var tweener="WhiteSmoke";
var clicker=1;
var tablesize=9;
var sizeit;
var updown;
var xrule;
var lastselectedcell;
var whencorrect="blue";
var whenincorrect="red";
var startcolor="black";
var macadjust=1;
var colon=9;
var cellfocus;
var closecheck=0;
document.onkeydown=keyitup;
function initProblem(){
var coll = document.getElementsByTagName("SPAN");
for (i=0; i<coll.length; i++) 
coll[i].onmouseout = makeClear;
for (i=0; i<coll.length; i++) 
coll[i].onmouseover = makeShade;
for (i=0; i<coll.length; i++) 
coll[i].onclick = makeMark;
document.getElementById("selecttable").value=9;
}
function makeMark() {
var thing=document.getElementById(this.id);
lastselectedcell=thing;
var rownum=(this.id).substr(1,2);
var colnum=(this.id).substr(3,2);
if (rownum!="00" && colnum!="00") {
var colortext = thing.style.backgroundColor;
if (clicker==1 && colortext!="white") {
clicker=0;
}
else if (clicker==0) {
clicker=1;
for (i=1; i<21; i++) {
var istring=i.toString();
if (istring.length<2) {
var colcount= "0" + i;
}
else {
var colcount=i.toString();
}
for (x=0; x<21; x++) {
var xstring=x.toString();
if (xstring.length<2) {
var rowcount= "0" + x;
}
else {
var rowcount=x.toString();
}
var cellback= "c" + rowcount + colcount;	
document.getElementById(cellback).style.backgroundColor = "white";
}
}
for (i=0; i<21; i++) {
var istring=i.toString();
if (istring.length<2) {
var colcount= "0" + i;
}
else {
var colcount=i.toString();
}
var cellback= "c00" + colcount;	
document.getElementById(cellback).style.backgroundColor = "WhiteSmoke";
}
for (x=0; x<21; x++) {
var xstring=x.toString();
if (xstring.length<2) {
var rowcount= "0" + x;
}
else {
var rowcount=x.toString();
}
var cellback= "c" + rowcount + "00";	
document.getElementById(cellback).style.backgroundColor = "WhiteSmoke";
}
thing.style.backgroundColor = overthetop;
var rownum=(this.id).substr(1,2);
var colnum=(this.id).substr(3,2);
var topcol="c00" + colnum;
var toprow="c" + rownum + "00";
document.getElementById(topcol).style.backgroundColor = overthetop;
document.getElementById(toprow).style.backgroundColor = overthetop;
rownumi=parseInt(rownum, 10);
colnumi=parseInt(colnum, 10);
var stoprow = rownumi;
var stopcol = colnumi;
for (i=1; i<stopcol; i++) {
var istring=i.toString();
if (istring.length<2) {
var colcount= "0" + i;
}
else {
var colcount=i.toString();
}
var cellback= "c" + rownum + colcount;	
document.getElementById(cellback).style.backgroundColor = tweener;
}
for (x=1; x<stoprow; x++) {
var xstring=x.toString();
if (xstring.length<2) {
var rowcount= "0" + x;
}
else {
var rowcount=x.toString();
}
var cellback= "c" + rowcount + colnum;	
document.getElementById(cellback).style.backgroundColor = tweener;
}
}
}
}
function makeClear() {
if (clicker==1) {	
var thing=document.getElementById(this.id);
var rownum=(this.id).substr(1,2);
var colnum=(this.id).substr(3,2);
if (rownum!="00" && colnum!="00") {
thing.style.backgroundColor = "white";
var topcol="c00" + colnum;
var toprow="c" + rownum + "00";
document.getElementById(topcol).style.backgroundColor = multiplierrow;
document.getElementById(toprow).style.backgroundColor = multiplierrow;
rownumi=parseInt(rownum, 10);
colnumi=parseInt(colnum, 10);
var stoprow = rownumi;
var stopcol = colnumi;
for (i=1; i<stopcol; i++) {
var istring=i.toString();
if (istring.length<2) {
var colcount= "0" + i;
}
else {
var colcount=i.toString();
}
var cellback= "c" + rownum + colcount;	
document.getElementById(cellback).style.backgroundColor = "white";
}
for (x=1; x<stoprow; x++) {
var xstring=x.toString();
if (xstring.length<2) {
var rowcount= "0" + x;
}
else {
var rowcount=x.toString();
}
var cellback= "c" + rowcount + colnum;	
document.getElementById(cellback).style.backgroundColor = "white";
}
}
}
}
function makeShade() {
if (clicker==1) {
if (cellfocus) {
var rownum=(cellfocus.id).substr(1,2);
var colnum=(cellfocus.id).substr(3,2);
if (rownum!="00" && colnum!="00") {
cellfocus.style.backgroundColor = "white";
var topcol="c00" + colnum;
var toprow="c" + rownum + "00";
document.getElementById(topcol).style.backgroundColor = multiplierrow;
document.getElementById(toprow).style.backgroundColor = multiplierrow;
rownumi=parseInt(rownum, 10);
colnumi=parseInt(colnum, 10);
var stoprow = rownumi;
var stopcol = colnumi;
for (i=1; i<stopcol; i++) {
var istring=i.toString();
if (istring.length<2) {
var colcount= "0" + i;
}
else {
var colcount=i.toString();
}
var cellback= "c" + rownum + colcount;	
document.getElementById(cellback).style.backgroundColor = "white";
}
for (x=1; x<stoprow; x++) {
var xstring=x.toString();
if (xstring.length<2) {
var rowcount= "0" + x;
}
else {
var rowcount=x.toString();
}
var cellback= "c" + rowcount + colnum;	
document.getElementById(cellback).style.backgroundColor = "white";
}
}
}
if (document.getElementById(this.id)){
var thing=document.getElementById(this.id);
lastselectedcell=thing;
var rownum=(this.id).substr(1,2);
var colnum=(this.id).substr(3,2);
if (rownum!="00" && colnum!="00") {
thing.style.backgroundColor = overthetop;
var topcol="c00" + colnum;
var toprow="c" + rownum + "00";
document.getElementById(topcol).style.backgroundColor = overthetop;
document.getElementById(toprow).style.backgroundColor = overthetop;
rownumi=parseInt(rownum, 10);
colnumi=parseInt(colnum, 10);
var stoprow = rownumi;
var stopcol = colnumi;
for (i=1; i<stopcol; i++) {
var istring=i.toString();
if (istring.length<2) {
var colcount= "0" + i;
}
else {
var colcount=i.toString();
}
var cellback= "c" + rownum + colcount;	
document.getElementById(cellback).style.backgroundColor = tweener;
}
for (x=1; x<stoprow; x++) {
var xstring=x.toString();
if (xstring.length<2) {
var rowcount= "0" + x;
}
else {
var rowcount=x.toString();
}
var cellback= "c" + rowcount + colnum;	
document.getElementById(cellback).style.backgroundColor = tweener;
}
}
}
}
}
function resize(sizeit, updown){
colon=parseInt(sizeit);
if (document.styleSheets[0].cssRules) {
xrule=document.styleSheets[0].cssRules
}
else if (document.styleSheets[0].rules) {
xrule=document.styleSheets[0].rules
}
switch (sizeit)	  {
case 3:
for (x=1; x<5; x++) {
changethestyle ("94px", "94px", "92px", "56px", xrule[x]);
}
if (updown!="1") {
xrule[5].style.display="none";
document.getElementById("r04").style.display="none";
}
break;
case 4:
for (x=1; x<6; x++) {
changethestyle ("76px", "76px", "74px", "40px", xrule[x]);
}
if (updown=="1") {
xrule[5].style.display="inline";
document.getElementById("r04").style.display="block";
}
else {
xrule[6].style.display="none";
document.getElementById("r05").style.display="none";
}
break;
case 5:
for (x=1; x<7; x++) {
changethestyle ("63px", "63px", "61px", "30px", xrule[x]);
}	
if (updown=="1") {
xrule[6].style.display="inline";
document.getElementById("r05").style.display="block";
}
else {
xrule[7].style.display="none";
document.getElementById("r06").style.display="none";
}
break;
case 6:
for (x=1; x<8; x++) {
changethestyle ("54px", "54px", "52px", "24px", xrule[x]);
}
if (updown=="1") {
xrule[7].style.display="inline";
document.getElementById("r06").style.display="block";
}
else {
xrule[8].style.display="none";
document.getElementById("r07").style.display="none";
}
break;
case 7:
for (x=1; x<9; x++) {
changethestyle ("47px", "45px", "43px", "21px", xrule[x]);
}
if (updown=="1") {
xrule[8].style.display="inline";
document.getElementById("r07").style.display="block";
}
else {
xrule[9].style.display="none";
document.getElementById("r08").style.display="none";
}
break;
case 8:
for (x=1; x<10; x++) {
changethestyle ("41px", "39px", "38px", "19px", xrule[x]);
}
if (updown=="1") {
xrule[9].style.display="inline";
document.getElementById("r08").style.display="block";
}
else {
xrule[10].style.display="none";
document.getElementById("r09").style.display="none";
}
break;
case 9:
for (x=1; x<11; x++) {
changethestyle ("37px", "35px", "33px", "16px", xrule[x]);
}
if (updown=="1") {
xrule[10].style.display="inline";
document.getElementById("r09").style.display="block";
}
else {
xrule[11].style.display="none";
document.getElementById("r10").style.display="none";
}
break;
case 10:
for (x=1; x<12; x++) {
changethestyle ("33px", "31px", "29px", "15px", xrule[x]);
}
if (updown=="1") {
xrule[11].style.display="inline";
document.getElementById("r10").style.display="block";
}
else {
xrule[12].style.display="none";
document.getElementById("r11").style.display="none";
}
break;
case 11:
for (x=1; x<13; x++) {
changethestyle ("30px", "28px", "26px", "14px", xrule[x]);
}
if (updown=="1") {
xrule[12].style.display="inline";
document.getElementById("r11").style.display="block";
}
else {
xrule[13].style.display="none";
document.getElementById("r12").style.display="none";
}
break;
case 12:
for (x=1; x<14; x++) {
changethestyle ("28px", "26px", "24px", "14px", xrule[x]);
}
if (updown=="1") {
xrule[13].style.display="inline";
document.getElementById("r12").style.display="block";
}
else {
xrule[14].style.display="none";
document.getElementById("r13").style.display="none";
}
break;
case 13:
for (x=1; x<15; x++) {
changethestyle ("26px", "24px", "22px", "12px", xrule[x]);
}
if (updown=="1") {
xrule[14].style.display="inline";
document.getElementById("r13").style.display="block";
}
else {
xrule[15].style.display="none";
document.getElementById("r14").style.display="none";
}
break;
case 14:
for (x=1; x<16; x++) {
changethestyle ("24px", "22px", "20px", "11px", xrule[x]);
}
if (updown=="1") {
xrule[15].style.display="inline";
document.getElementById("r14").style.display="block";
}
else {
xrule[16].style.display="none";
document.getElementById("r15").style.display="none";
}
break;
case 15:
for (x=1; x<17; x++) {
changethestyle ("22px", "20px", "18px", "9px", xrule[x]);
}
if (updown=="1") {
xrule[16].style.display="inline";
document.getElementById("r15").style.display="block";
}
else {
xrule[17].style.display="none";
document.getElementById("r16").style.display="none";
}
break;
case 16:
for (x=1; x<18; x++) {
changethestyle ("21px", "19px", "17px", "9px", xrule[x]);
}
if (updown=="1") {
xrule[17].style.display="inline";
document.getElementById("r16").style.display="block";
}
else {
xrule[18].style.display="none";
document.getElementById("r17").style.display="none";
}
break;
case 17:
for (x=1; x<19; x++) {
changethestyle ("19px", "17px", "16px", "8px", xrule[x]);
}
if (updown=="1") {
xrule[18].style.display="inline";
document.getElementById("r17").style.display="block";
}
else {
xrule[19].style.display="none";
document.getElementById("r18").style.display="none";
}
break;
case 18:
for (x=1; x<20; x++) {
changethestyle ("18px", "16px", "16px", "8px", xrule[x]);
}
if (updown=="1") {
xrule[19].style.display="inline";
document.getElementById("r18").style.display="block";
}
else {
xrule[20].style.display="none";
document.getElementById("r19").style.display="none";
}
break;
case 19:
for (x=1; x<21; x++) {
changethestyle ("17px", "15px", "15px", "8px", xrule[x]);
}
if (updown=="1") {
xrule[20].style.display="inline";
document.getElementById("r19").style.display="block";
}
else {
xrule[21].style.display="none";
document.getElementById("r20").style.display="none";
}
break;
case 20:
for (x=1; x<22; x++) {
changethestyle ("16px", "15px", "15px", "8px", xrule[x]);
}
if (updown=="1") {
xrule[21].style.display="inline";
document.getElementById("r20").style.display="block";
}
break;
}
}
function changethestyle (wid, hei, lin, fon, rul) {
rul.style.width=wid;
rul.style.height=hei;
rul.style.lineHeight=lin;
rul.style.fontSize=fon;
}
function add() {
if (tablesize!=20) {
tablesize++;
var thang=document.getElementById("selecttable");
thang.value=tablesize;
resize(tablesize, "1");
}
}
function sub() {
if (tablesize!=3) {
tablesize--;
var thang=document.getElementById("selecttable");
thang.value=tablesize;
resize(tablesize, "0");
}
}
function setthetest (picker) {
setthetable();
var countem=0;
if (picker=="5") {
var numberblank = Math.pow(tablesize, 2);
}
else if (picker=="4") {
var numberblank = Math.pow(tablesize, 2)*.88;
}
else if (picker=="3") {
var numberblank = Math.pow(tablesize, 2)/2;
}
else if (picker=="2") {
var numberblank = Math.pow(tablesize, 2)/5;
}
else {
var numberblank = Math.pow(tablesize, 2)/10;
}
do {
var picked = Math.ceil(Math.random() * tablesize); 
var pickedstring=picked.toString();
if (pickedstring.length<2) {
var colpick= "0" + picked;
}
else {
var colpick=pickedstring
}
var picked = Math.ceil(Math.random() * tablesize) 
var pickedstring=picked.toString();
if (pickedstring.length<2) {
var rowpick= "0" + picked;
}
else {
var rowpick=pickedstring
}
var cellpick= "c" + rowpick + colpick;
var thang=document.getElementById(cellpick);	
if (thang.childNodes[0].nodeValue!="") {
thang.childNodes[0].nodeValue="";
countem++;
}
}
while (countem<numberblank);
}
function setthetable () {
for (i=1; i<21; i++) {
var istring=i.toString();
if (istring.length<2) {
var colcount= "0" + i;
}
else {
var colcount=i.toString();
}
for (x=1; x<21; x++) {
var xstring=x.toString();
if (xstring.length<2) {
var rowcount= "0" + x;
}
else {
var rowcount=x.toString();
}
var cellback= "c" + rowcount + colcount;	
var valuepacket = parseInt(parseInt(rowcount, 10)*parseInt(colcount,10));
document.getElementById(cellback).childNodes[0].nodeValue=valuepacket;
document.getElementById(cellback).style.color=startcolor;
}
}
blockreset=1;
}
function keyitup (evt) {
if (evt) {
var lastKeyPress = evt.which
}
else {
var lastKeyPress = window.event.keyCode
}
var lastKeyPressValue = String.fromCharCode(lastKeyPress);
var rownumber=(lastselectedcell.id).substr(1,2);
var colnumber=(lastselectedcell.id).substr(3,2);
var sumvalue=parseInt(parseInt(rownumber, 10)*parseInt(colnumber,10));
var currentvalue = parseInt(lastselectedcell.innerHTML);
if (isNaN(currentvalue)) currentvalue=0;
if (currentvalue!=sumvalue) {
if (lastKeyPress>47 &&lastKeyPress<58){
if ((sumvalue<100 && currentvalue.toString().length<2) || (sumvalue>99 && currentvalue.toString().length<3)) {
lastselectedcell.innerHTML="";
if (currentvalue.toString()!="0") {
var newvalue= currentvalue + lastKeyPressValue;
}
else {
var newvalue = lastKeyPressValue;
}
lastselectedcell.innerHTML=newvalue;
currentvalue = lastselectedcell.innerHTML;
if (parseInt(currentvalue)==parseInt(sumvalue)) {
lastselectedcell.style.color=whencorrect;
}
else {
lastselectedcell.style.color=whenincorrect;
}
} 
}
if (lastKeyPress==46) {
lastselectedcell.innerHTML="";
}
}
switch (lastKeyPress) {
case 37:
if (parseInt(colnumber,10)>1) {
document.getElementById("c" + rownumber + colnumber).onmouseout();
var holder=parseInt(colnumber, 10);
holder--;
if (holder.toString().length<2) {
var thecell= "c" + rownumber + "0" + holder;
}
else {					
var thecell= "c" + rownumber + holder;
}
document.getElementById(thecell).onmouseover();
cellfocus=document.getElementById(thecell);
}
break;
case 38:
if (parseInt(rownumber,10)>1) {
document.getElementById("c" + rownumber + colnumber).onmouseout();
var holder=parseInt(rownumber, 10);
holder--;
if (holder.toString().length<2) {
var thecell= "c" + "0" + holder + colnumber;
}
else {					
var thecell= "c" + holder + colnumber;
}
document.getElementById(thecell).onmouseover();
cellfocus=document.getElementById(thecell);
}
break;
case 39:
if (parseInt(colnumber, 10)<parseInt(colon)){
var holder=parseInt(colnumber, 10);
holder++;
if (holder.toString().length<2) {
var thecell= "c" + rownumber+ "0" + holder;
}
else {					
var thecell= "c" + rownumber + holder;
}
document.getElementById("c" + rownumber + colnumber).onmouseout();
document.getElementById(thecell).onmouseover();
cellfocus=document.getElementById(thecell);
}
break;
case 40:
if (parseInt(rownumber, 10)<parseInt(colon)){
var holder=parseInt(rownumber, 10);
holder++;
if (holder.toString().length<2) {
var thecell= "c" + "0" + holder + colnumber;
}
else {					
var thecell= "c" + holder + colnumber;
}
document.getElementById("c" + rownumber + colnumber).onmouseout();
document.getElementById(thecell).onmouseover();
cellfocus=document.getElementById(thecell);
}
break;
case 8:
if (window.event) {
event.returnValue = false;
}
else {
evt.preventDefault();
}
break;
}
}
function closer() {
if (closecheck==0){
document.getElementById('tohide').style.visibility='hidden';
closecheck=1;
document.getElementById('hidecon').innerHTML='+ Show Controls';
} else {
document.getElementById('tohide').style.visibility='visible';
closecheck=0;
document.getElementById('hidecon').innerHTML='+ Hide Controls';
}
}
