﻿var upaddto = 1;
var upadded = 1;
var upadded2 = 1;
var addtoselector = 2;
var addedselector = 2;
var added2selector = 2;
var row1 = new Array();
var addtorow = new Array();
var addedrow = new Array();
var added2row = new Array();
var addto;
var added;
var added2;
var answer;
var addtostring;
var addedstring;
var added2string;
var targetid;
var lastfocus;
var correctcheck = 0;
var macadjust=1;

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

function changeAddToSelector() {
if (addtoselector==5) {
addtoselector=4;
upaddto=0;
}
else if (addtoselector==1) {
addtoselector=2;
upaddto=1;
}
else if (upaddto==0) {
addtoselector--;
}
else if(upaddto==1) {
addtoselector++;
}
if (addtoselector<addedselector) {
addedselector=addtoselector;
insertx("addedx",addedselector);		
}
if (addtoselector<added2selector) {
added2selector=addtoselector;
insertx("added2x",added2selector);		
}
insertx("addtox",addtoselector);		
}

function changeAddedSelector() {
if (addtoselector==1) {
addedselector=1;
upadded=1;
}
if (addtoselector>1) {
if (addtoselector==addedselector) {
addedselector--;
upadded=0;
}			
else if (addedselector==1) {
addedselector=2;
upadded=1;
}
else if (upadded==1) {
addedselector++;
}
else if (upadded==0) {
addedselector--;
}
}		
insertx("addedx", addedselector);
}

function changeAdded2Selector() {
if (addtoselector==1) {
added2selector=1;
upadded2=1;
}
if (addtoselector>1) {
if (addtoselector==added2selector) {
added2selector--;
upadded2=0;
}			
else if (added2selector==1) {
added2selector=2;
upadded2=1;
}
else if (upadded2==1) {
added2selector++;
}
else if (upadded2==0) {
added2selector--;
}
}		
insertx("added2x", added2selector);
}

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() {
for (var k=0; k<5; k++) {
var boxname = "textaddto" + k;
var object = document.getElementById(boxname);
object.value="";
boxname = "addto" + k;
object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
boxname = "aaddto" + k;
object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
var boxname = "textadded" + k;
var object = document.getElementById(boxname);
object.value="";
boxname = "added" + k;
object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
boxname = "aadded" + k;
object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
var boxname = "textadded2" + k;
var object = document.getElementById(boxname);
object.value="";
boxname = "added2" + k;
object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
boxname = "aadded2" + k;
object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
addtorow[k]="";
addedrow[k]="";
added2row[k]="";
}
for (var l=0; l<6; l++) {
var boxname = "block1" + l;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
object.visibility="hidden";
var boxname = "ablock1" + l;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=" ";
var boxname = "text1" + l;
var object = document.getElementById(boxname);
object.value="";
row1[l] = "";
}
do {
addedmax=pickDifficulty(addedselector);
added = Math.floor(Math.random() * addedmax) + 1					
added2max=pickDifficulty(added2selector);
added2 = Math.floor(Math.random() * added2max) + 1					
addtomax=pickDifficulty(addtoselector);
addto = Math.floor(Math.random() * addtomax) + 1					
}
while (parseInt(addto.toString().length)<parseInt(added.toString().length));
answer=Math.floor(addto+added+added2);
fillAdders();
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 fillAdders() {
addtostring = addto.toString();
addedstring = added.toString();
added2string = added2.toString();
var x = addtostring.length;
var y = addedstring.length;
var z = added2string.length;
for (var k=0; k<5; k++) {
addtorow[k]="";
addedrow[k]="";
added2row[k]="";
}
for (var i=4; i>4-addtostring.length; i--) {
x--;			
var digitbucket = addtostring.charAt(x);
var boxname = "addto" + i;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
addtorow[i] = digitbucket;
object.childNodes[0].nodeValue=digitbucket;
var boxname = "aaddto" + i;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
}
for (var i=4; i>4-addtostring.length; i--) {
y--;
var digitbucket = addedstring.charAt(y);
var boxname = "added" + i;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
object.childNodes[0].nodeValue=digitbucket;
addedrow[i] = digitbucket;						
var boxname = "aadded" + i;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
}
for (var i=4; i>4-addtostring.length; i--) {
z--;
var digitbucket = added2string.charAt(z);
var boxname = "added2" + i;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
object.childNodes[0].nodeValue=digitbucket;
added2row[i] = digitbucket;						
var boxname = "aadded2" + i;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
}
for (var j=4-addtostring.length; j>=0; j--) {
var boxname = "addto" + j;
var object = document.getElementById(boxname);
object.style.visibility="hidden";
addtorow[j] = "";						
}
for (var j=4-addedstring.length; j>=0; j--) {
var boxname = "added" + j;
var object = document.getElementById(boxname);
object.style.visibility="hidden";
addedrow[j] = "";						
}
for (var j=4-added2string.length; j>=0; j--) {
var boxname = "added2" + j;
var object = document.getElementById(boxname);
object.style.visibility="hidden";
added2row[j] = "";						
}
return
}

function prepareAnswer() {
var rowanswer = parseInt(addto)+parseInt(added)+parseInt(added2);
var rowanswerstring = rowanswer.toString();
var z = rowanswerstring.length;
for (var j = 5; j>5-parseInt(rowanswerstring.length); j--) {
z--;
var digitbucket = rowanswerstring.charAt(z);
var boxname = "block1" + j;
var object = document.getElementById(boxname);
object.style.visibility = "visible";
var boxname = "ablock1" + j;
var object = document.getElementById(boxname);
object.childNodes[0].nodeValue=digitbucket;
row1[j] = digitbucket;
}							
for (var k = 5-parseInt(rowanswerstring.length); k>=0; k--) {
var boxname = "block1" + k;
var object = document.getElementById(boxname);
object.style.visibility = "hidden";
}
var object = document.getElementById("text15");
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==39) {
movearound (pressedkey, textinput);
}
else {
var textinputname = textinput.id;
var textinputname = textinputname.substring(5);
var answername = "block1" + 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(5);
if (macadjust==1) {
		switch (direction) {

			case 37:

				if (textinputname!=0) {

					var nextnumber = parseInt(textinputname)-1;
					var blockname = "block1" + nextnumber;
					var newinputname = "text1" + nextnumber;
					var object = document.getElementById(blockname);
					var inputobject = document.getElementById(newinputname);

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

					}

				}

				break;

			case 39:


				if (textinputname!=5) {
					
					var nextnumber = parseInt(textinputname)+1;
					var blockname = "block1" + nextnumber;
					var newinputname = "text1" + nextnumber;

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

					if (object.style.visibility=="visible") {
						inputobject.focus();
						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 l=0; l<6; l++) {
var boxname = "block1" + l;
var textanswer = "text1" + l;
textanswer = document.getElementById(textanswer);
textanswer = textanswer.value;
var boxvalue = row1[l];
var object = document.getElementById(boxname);
if (parseInt(boxvalue, 10)!=parseInt(textanswer, 10)) {
object.style.color = "red";
}
else {
object.style.color = "blue";
}
}
correctcheck = 1;
}

function changeitback(){
for (var l=0; l<6; l++) {
var boxname = "block1" + l;
var object = document.getElementById(boxname);
object.style.color = "black";
}
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";
}

