﻿var upmultiplied = 1;
var upmultiplier = 1;
var multipliedselector = 2;
var multiplierselector = 2;
var row1 = new Array();
var row2 = new Array();
var row3 = new Array();
var row4 = new Array();
var row5 = new Array();
var row6 = new Array();
var multipliedrow = new Array();
var multiplierrow = new Array();
var multiplied;
var multiplier;
var answer;
var multipliedstring;
var multiplierstring;
var targetid;
var lastfocus;
var correctcheck = 0;
var textinput;
var ismacsaf;
var macadjust=1;

function initCard() {
 window.status="We love Math!";

generateProblem();
}

function changeMultipliedSelector() {
 if (multipliedselector==5) {
  multipliedselector=4;
  upmultiplied=0;
 }
 else if (multipliedselector==1) {
  multipliedselector=2;
  upmultiplied=1;
 }
 else if (upmultiplied==0) {
  multipliedselector--;
 }
 else if(upmultiplied==1) {
  multipliedselector++;
 }
 if (multipliedselector<multiplierselector) {
  multiplierselector=multipliedselector;
  insertx("multiplierx",multiplierselector);		
 }
 insertx("multipliedx",multipliedselector);		
}

function changeMultiplierSelector() {
 if (multipliedselector==1) {
  multiplierselector=1;
  upmultiplier=1;
 }
 if (multipliedselector>1) {
  if (multipliedselector==multiplierselector) {
   multiplierselector--;
   upmultiplier=0;
  }			
  else if (multiplierselector==1) {
   multiplierselector=2;
   upmultiplier=1;
  }
  else if (upmultiplier==1) {
   multiplierselector++;
  }
  else if (upmultiplier==0) {
   multiplierselector--;
  }
 }		
 insertx("multiplierx", multiplierselector);
}

function insertx(textID, numberx) {
 var object;
 object=document.getElementById(textID);
 switch (numberx) {
 case 1:
  object.childNodes[0].nodeValue="x";
  break;
 case 2:
  object.childNodes[0].nodeValue="xx";
  break;
 case 3:
  object.childNodes[0].nodeValue="xxx";
  break;
 case 4:
  object.childNodes[0].nodeValue="xxxx";
  break;
 case 5:
  object.childNodes[0].nodeValue="xxxxx";
  break;
 }
}

function generateProblem() {
var object = document.getElementById("secondline");
object.style.top = "159px";
var object = document.getElementById("asecondline");
object.style.top = "119px";
for (var k=0; k<5; k++) {
 var boxname = "textmultiplied" + k;
 var object = document.getElementById(boxname);
 object.value="";
 boxname = "multiplied" + k;
 object = document.getElementById(boxname);
 object.childNodes[0].nodeValue=" ";
 boxname = "amultiplied" + k;
 object = document.getElementById(boxname);
 object.childNodes[0].nodeValue=" ";
 var boxname = "textmultiplier" + k;
 var object = document.getElementById(boxname);
 object.value="";
 boxname = "multiplier" + k;
 object = document.getElementById(boxname);
 object.childNodes[0].nodeValue=" ";
 boxname = "amultiplier" + k;
 object = document.getElementById(boxname);
 object.childNodes[0].nodeValue=" ";
 multipliedrow[k]="";
 multiplierrow[k]="";
}
  for (var k=1; k<7; k++) {
   for (var l=0; l<10; l++) {
    var boxname = "block" + k + l;
    var object = document.getElementById(boxname);
    object.childNodes[0].nodeValue=" ";
    object.visibility="hidden";
    var boxname = "ablock" + k + l;
    var object = document.getElementById(boxname);
    object.childNodes[0].nodeValue=" ";
var boxname = "text" + k + l;
var object = document.getElementById(boxname);
object.value="";
rowname = eval("row" + k);
rowname[l] = "";
}
}
do {
multipliermax=pickDifficulty(multiplierselector);
multiplier = Math.floor(Math.random() * multipliermax) + 1					
multipliedmax=pickDifficulty(multipliedselector);
multiplied = Math.floor(Math.random() * multipliedmax) + 1					
}
while (parseInt(multiplied.toString().length)<parseInt(multiplier.toString().length));
answer=Math.floor(multiplied*multiplier);
fillMultipliers();
prepareAnswer();
}
function pickDifficulty(level) {
switch (level){
case 1:
max=9;
break;
case 2:
max=99;
break;
case 3:
max=999;
break;
case 4:
max=9999;
break;
case 5:
max=99999;
break;
}		
return max;
}
function fillMultipliers() {
multipliedstring = multiplied.toString();
multiplierstring = multiplier.toString();
var x = multipliedstring.length;
var y = multiplierstring.length;
for (var k=0; k<5; k++) {
multipliedrow[k]="";
multiplierrow[k]="";
}
for (var i=4; i>4-multipliedstring.length; i--) {
x--;			
var digitbucket = multipliedstring.charAt(x);
var boxname = "multiplied" + i;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
multipliedrow[i] = digitbucket;
object.childNodes[0].nodeValue=digitbucket;
var boxname = "amultiplied" + i;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
}
for (var i=4; i>4-multipliedstring.length; i--) {
y--;
var digitbucket = multiplierstring.charAt(y);
var boxname = "multiplier" + i;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
object.childNodes[0].nodeValue=digitbucket;
multiplierrow[i] = digitbucket;						
var boxname = "amultiplier" + i;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
}
for (var j=4-multipliedstring.length; j>=0; j--) {
var boxname = "multiplied" + j;
var object = document.getElementById(boxname);
object.style.visibility="hidden";
multipliedrow[j] = "";						
}
for (var j=4-multiplierstring.length; j>=0; j--) {
var boxname = "multiplier" + j;
var object = document.getElementById(boxname);
object.style.visibility="hidden";
multiplierrow[j] = "";						
}
return
}

function prepareAnswer() {
var x = multiplierstring.length;
var y = 0;
var t = 10;
for (var i=4; i>4-multiplierstring.length; i--) {
x--;
y++;			
var multiplydigit = multiplierstring.charAt(x);
var rowanswer = parseInt(multiplydigit)*parseInt(multiplied);
var rowanswerstring = rowanswer.toString();
var z = rowanswerstring.length;
t--;
if (rowanswer.toString().length>=multipliedstring.length) {
for (var j = t; j>t-parseInt(rowanswer.toString().length); j--) {
z--;
var digitbucket = rowanswerstring.charAt(z);
var boxname = "block" + y + j;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
var boxname = "ablock" + y + j;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
var rowname = eval("row" + y);
rowname[j] = digitbucket;
}							
for (var k = t-parseInt(rowanswer.toString().length); k>=0; k--) {
var boxname = "block" + y + k;
var object = document.getElementById(boxname);
object.style.visibility = "hidden";
}
}
else {
for (var j = t; j>t-parseInt(multipliedstring.length); j--) {
var digitbucket = "0";
var boxname = "block" + y + j;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
var boxname = "ablock" + y + j;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
var rowname = eval("row" + y);
rowname[j] = digitbucket;
}							
for (var k = t-parseInt(multipliedstring.length); k>=0; k--) {
var boxname = "block" + y + k;
var object = document.getElementById(boxname);
object.style.visibility = "hidden";
}
}	
for (var l = t+1; l<10; l++) {
var boxname = "block" + y + l;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
var boxname = "ablock" + y + l;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue="0";
var rowname = eval("row" + y);
rowname[l] = "0";
}
}		
for (var i= multiplierstring.length+1; i<7; i++) {
for (var m=0; m<10; m++) {
var boxname = "block" + i + m;
var object = document.getElementById(boxname);
object.style.visibility = "hidden";
}							
}
var answerstring = answer.toString();
var z = answerstring.length;
var o = z;
if (multiplierstring.length>1) {
var n = multiplierstring.length+1;
for (var j=9; j>9-o; j--) {
z--;
var digitbucket = answerstring.charAt(z);
var boxname = "block" + n + j;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
var boxname = "ablock" + n + j;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
var rowname = eval("row" + n);
rowname[j] = digitbucket;
}							
var object = document.getElementById("secondline");
var topdistance = 129;
topdistance = topdistance + (parseInt(multiplierstring.length)*40);
object.style.top = topdistance + "px";
var startspot = 458 - (parseInt(answerstring.length,10) * 33);
var linelength = parseInt(answerstring.length, 10) * 33;
object.style.left = startspot + "px";
object.style.width = linelength + "px";
var object = document.getElementById("asecondline");
var topdistance = parseInt(object.style.top);
topdistance = topdistance + (parseInt(multiplierstring.length)*20);
object.style.top = topdistance + "px";
var startspot = 424 - (parseInt(answerstring.length,10) * 20);
var linelength = parseInt(answerstring.length, 10) * 20;
object.style.left = startspot + "px";
object.style.width = linelength + "px";
}
else {
var object = document.getElementById("secondline");
object.style.width = "0px";
var object = document.getElementById("asecondline");
object.style.width = "0px";
}
var object = document.getElementById("text19");
object.focus();
object.select();
}

function clickselect(textinputblock) {
targetid = textinputblock;
setTimeout("clickdo()",0);
}

function clickdo() {
var target = document.getElementById(targetid);
target.focus();
target.select();
}

function shade(plug) {
var object = document.getElementById(plug);
object.style.backgroundColor = "lightGrey";
lastshade = object;
}

function clearborder(inputthing) {
var object = document.getElementById(inputthing);
object.style.backgroundColor = "#fbfbfb";
}

function insertTextDigita (evt, textinput) {



var inputValue = parseInt(textinput.value);
if (evt.which) {pressedkey=evt.which}
else {pressedkey=evt.keyCode};

if (isNaN(inputValue) && textinput.value) {
alert (textinput.value  + "  This is not a number.");
textinput.select();
}
else if (pressedkey==37 ||pressedkey==38 ||pressedkey==39 ||pressedkey==40) {
movearound (pressedkey, textinput);
}
else {
var textinputname = textinput.id;
var textinputname = textinputname.substring(4);
var answername = "block" + textinputname;
var object = document.getElementById(answername);
object.childNodes[0].nodeValue=textinput.value;
textinput.select();
if (correctcheck==1) changethefont();
}
}
function movearound (direction , blocknumber){
var textinputnamet = blocknumber.id.toString();
textinputname = textinputnamet.substring(4);
var fifthletter = textinputnamet.charAt(4);
var firstnumber = textinputname.charAt(0);
var secondnumber = textinputname.charAt(1);
if (macadjust==1) {
		switch (direction) {
			case 37:

				if (secondnumber!=0) {

					var nextnumber = parseInt(secondnumber)-1;
					var blockname = "block" + firstnumber + nextnumber;
					var newinputname = "text" + firstnumber + nextnumber;
					var object = document.getElementById(blockname);
					var inputobject = document.getElementById(newinputname);

					if (object.style.visibility=="visible") {
						inputobject.select();

					}

					else {
			
						var nextrownumber = parseInt(firstnumber) + 1;
						var nextblockname = "block" + nextrownumber + "9";
						var nextinputname = "text" + nextrownumber + "9";
						var object = document.getElementById(nextblockname);
						var inputobject = document.getElementById(nextinputname);
	
						if (object.style.visibility=="visible") {
							inputobject.select();
						}					


					}


				}

				else if (parseInt(firstnumber)<6) {
			
					var nextrownumber = parseInt(firstnumber) + 1;
					var nextblockname = "block" + nextrownumber + "9";
					var nextinputname = "text" + firstnumber + "9";
					var object = document.getElementById(nextblockname);
					var inputobject = document.getElementById(nextinputname);

					if (object.style.visibility=="visible") {
						inputobject.select();
					}					

				}

				break;

			case 38:

				if (firstnumber!=1) {

					var nextnumber = parseInt(firstnumber)-1;
					var blockname = "block" + nextnumber + secondnumber;
					var newinputname = "text" + nextnumber + secondnumber;
					var object = document.getElementById(blockname);
					var inputobject = document.getElementById(newinputname);

					if (object.style.visibility=="visible") {
						
						inputobject.select();

					}

				}

				break;


			case 39:



				if (secondnumber!=9) {
					
					var nextnumber = parseInt(secondnumber)+1;
					var blockname = "block" + firstnumber + nextnumber;
					var newinputname = "text" + firstnumber + nextnumber;

					var object = document.getElementById(blockname);
					var inputobject = document.getElementById(newinputname);

					if (object.style.visibility=="visible") {
							
						inputobject.select();

					}

				}

				break;

			case 40:

				if (firstnumber!=6) {
				
					var nextnumber = parseInt(firstnumber)+1;
					var blockname = "block" + nextnumber + secondnumber;
					var newinputname = "text" + nextnumber + secondnumber;

					var object = document.getElementById(blockname);
					var inputobject = document.getElementById(newinputname);

					if (object.style.visibility=="visible") {
						
						inputobject.select();

					}

				}

				break;

			}

	}

if (window.navigator.vendor) {
	if (window.navigator.vendor.indexOf('Apple')!= -1) {
		if (window.navigator.appName.indexOf('Netscape')!= -1) {
			if (macadjust==1) {
				macadjust=2;
			}
			else {
				macadjust=1;
			}
		}
	}
}

}


function changethefont(){
for (var k=1; k<7; k++) {
for (var l=0; l<10; l++) {
var boxname = "block" + k + l;
var textanswer = "text" + k + l;
textanswer = document.getElementById(textanswer);
textanswer = textanswer.value;
var rowname = eval("row" + k);
var boxvalue = rowname[l];
var object = document.getElementById(boxname);
if (parseInt(boxvalue, 10)!=parseInt(textanswer, 10)) {
object.style.color = "red";
//					if (object.style.backgroundColor != "#eaeaea") object.style.backgroundColor = "#eeeeee";
}
else {
object.style.color = "blue";
}
}
}
correctcheck = 1;
}
function changeitback(){
for (var k=1; k<7; k++) {
for (var l=0; l<10; l++) {
var boxname = "block" + k + l;
var object = document.getElementById(boxname);
object.style.color = "black";
	
//				if (object.style.backgroundColor=="#eeeeee"|| object.style.backgroundColor=="rgb(238, 238, 238)") {

//					object.style.backgroundColor = "#fbfbfb";

//				}

}
}
correctcheck = 0;
lastshade.style.backgroundColor = "lightGrey";
}
function answerkeyon() {
var object = document.getElementById("answerkey");
object.style.visibility = "visible";
}
function answerkeyoff() {
var object = document.getElementById("answerkey");
object.style.visibility = "hidden";
}



