<!--

function onPageLoaded() { }

var playing = false;

var activeItem = false;
var activeNumbers;

var curscore = 0;
var nummoves = 0;
var totalPossibleScore = 15;

var statisticsdiv;
var magicSquarediv;

function initialStartGame()
{
  var textdiv = document.getElementById('intro_text');
  textdiv.style.display='none';
  var statisticsdiv = document.getElementById('tried_correct_statistics');
  statisticsdiv.style.display='block';
  magicSquarediv = document.getElementById('magicSquare_container');
  var msgdiv = document.getElementById('user_messages');
  msgdiv.style.display='none';

  setupStartStop();
  startGame();
}

function startGame()
{
  activeNumbers = new Array();
  activeItem = false;
  clearBoard();
  initGame();
  playing = true;
  setStopStartBtns(false, true);
  start_timer();
}

function stopGame()
{
  stop_play();
}

function stop_play()
{
    var cur_time = new Date();
    elapsed_time = cur_time.getTime() - start_time.getTime();
    stop_timer();
    setStopStartBtns(true, false);
    playing = false;
    if (curscore == 8){
      var msgdiv = document.getElementById('user_messages');
      curscore += 7;
      numcorrectdiv = document.getElementById('numcorrect_div');
      numcorrectdiv.innerHTML = curscore;
      msgdiv.innerHTML='Magic Square Solved!  Bonus = 7 points!';
      msgdiv.style.display='block';
    }
//    buildXmlHttpStopMsg();    
//    xmlhttpPost(tgtStopUrl, xmlHttpMsg, processStop);
	var userNum = sbCookieData.usernum;
    Record.recordNumCorrect(taskId, curscore, elapsed_time, userNum);
}

function setActiveItem(inputEvent, inputItem)
{
  if (!playing){
    alert("Please press the Start button to begin.");
    return;
  }
  if(!inputItem)inputItem = this;
  if(activeItem){
//    activeItem.className='smallSquare';
    activeItem.style.backgroundColor='white';
  }
//  inputItem.className='activeSquare';
  inputItem.style.backgroundColor = 'yellow';
  activeItem = inputItem;  
}

function clearBoard()
{
  for (var col=0; col<3; col++)
  {
    document.getElementById('sum_0_4').innerHTML = "0";
    for (var row=0;row<3;row++)
    {
        var rc = document.getElementById('square_' + col + '_' + row);
        rc.innerHTML = "";
        rc.className = 'smallSquare';
        rc.style.backgroundColor='white';
        
        document.getElementById('sum_'+(col+1)+'_4').innerHTML = "0";
    }
    document.getElementById('sum_4_'+(col+1)).innerHTML = "0";
  }
  document.getElementById('sum_4_4').innerHTML = "0";
}

function calculateSum()
{
  var sumRows = new Array();
  var sumCols = new Array();
  curscore = 0;
  for (var col=0; col<3; col++)
  {
    if (!sumRows[col]){
      sumRows[col]=0;
    }
    for (var row=0;row<3;row++)
    {
      if (!sumCols[row]){
        sumCols[row]=0;
      }
      if (document.getElementById('square_' + col + '_' + row).innerHTML.length>0){
        sumRows[col] = sumRows[col]/1 + document.getElementById('square_' + col + '_' + row).innerHTML/1;
        if (sumRows[col] == 15){
          curscore += 1;
        }
      }
      if (document.getElementById('square_' + col + '_' + row).innerHTML.length>0){
        sumCols[row] = sumCols[row]/1 + document.getElementById('square_' + col + '_' + row).innerHTML/1;
        if (sumCols[row] == 15){
          curscore += 1;
        }
      }
    }
    document.getElementById('sum_'+(col+1)+'_4').innerHTML = sumRows[col];
  }
  
  document.getElementById('sum_4_1').innerHTML = sumCols[0];
  document.getElementById('sum_4_2').innerHTML = sumCols[1];
  document.getElementById('sum_4_3').innerHTML = sumCols[2];
  
  var sumDiag1 = 0;
  if (document.getElementById('square_0_0').innerHTML.length>0){
    sumDiag1 = sumDiag1/1 + document.getElementById('square_0_0').innerHTML/1;
  }
  if (document.getElementById('square_1_1').innerHTML.length>0){
    sumDiag1 = sumDiag1/1 + document.getElementById('square_1_1').innerHTML/1;
  }
  if (document.getElementById('square_2_2').innerHTML.length>0){
    sumDiag1 = sumDiag1/1 + document.getElementById('square_2_2').innerHTML/1;
  }
  document.getElementById('sum_4_4').innerHTML = sumDiag1;
  if (sumDiag1 == 15){
    curscore += 1;
  }
  
  var sumDiag2 = 0;
  if (document.getElementById('square_0_2').innerHTML.length>0){
    sumDiag2 = sumDiag2/1 + document.getElementById('square_0_2').innerHTML/1;
  }
  if (document.getElementById('square_1_1').innerHTML.length>0){
    sumDiag2 = sumDiag2/1 + document.getElementById('square_1_1').innerHTML/1;
  }
  if (document.getElementById('square_2_0').innerHTML.length>0){
    sumDiag2 = sumDiag2/1 + document.getElementById('square_2_0').innerHTML/1;
  }
  document.getElementById('sum_0_4').innerHTML = sumDiag2;
  if (sumDiag2 == 15){
    curscore += 1;
  }
}

function congratulate(){
  alert("That's it\nYou solved it.!!")
  
}

function writeNumber(e)
{
  if(!activeItem)return;
  if(document.all)e = event;
  e.preventDefault();
  e.stopPropagation();
  if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which;
  var numbers = activeItem.id.split('_');
  var row = numbers[1];
  var col = numbers[2];  
  
  if (e.metaKey || e.ctrlKey || e.altKey){
        return true;
  } else
  if(code==39 || code==9){ // Right arrow or tab
    if(col<2){
      setActiveItem(false,document.getElementById('square_'+row+'_'+(col/1+1)));
    } else if (row < 2){
      setActiveItem(false,document.getElementById('square_'+(row/1+1)+'_0'));
    }
    return false;
  }
  if(code==37){ // Left arrow
    if(col>0){
      setActiveItem(false,document.getElementById('square_'+row+'_'+(col-1)));
    } else if (row > 0){
      setActiveItem(false,document.getElementById('square_'+(row/1-1)+'_2'));
    }
    return false;
  }
  if(code==38){  // Up arrow
    if(row>0){
      setActiveItem(false,document.getElementById('square_'+(row-1)+'_'+col));
    } else if (col > 0){
      setActiveItem(false,document.getElementById('square_'+'2_'+(col/1-1)));
    }
    return false;
  }    
  if(code==40){ // Down arrow
    if(row<2){
      setActiveItem(false,document.getElementById('square_'+(row/1+1)+'_'+col));
    } else if (col < 2) {
      setActiveItem(false,document.getElementById('square_'+'0_'+(col/1+1)));
    }
    return false;
  }
  	// Delete
  if(code==46 || code==8){
    activeNumbers[activeItem.innerHTML] = false;
    activeItem.innerHTML = '';
    if(code==8){
      calculateSum();
      return false;
    }
  }
  if(code>96 && code<=105){
  	code-=48;
  }
  if(code>48 && code<=57){        
    var theChar = String.fromCharCode(code);
    if(activeNumbers[theChar])return;
    activeNumbers[activeItem.innerHTML] = false;
    activeItem.innerHTML = theChar;  
    activeNumbers[theChar] = true;
  }

  calculateSum();
  nummoves++;
  if (curscore == 8){
    stop_play();
  } else {
    nummovesdiv = document.getElementById('numtried_div');
    nummovesdiv.innerHTML = nummoves;
    numcorrectdiv = document.getElementById('numcorrect_div');
    numcorrectdiv.innerHTML = curscore;
  }
}

function initGame()
{
  var el = magicSquarediv;
  var subs = el.getElementsByTagName('DIV');
  for(var no=0; no<subs.length; no++){
    if(subs[no].className=='smallSquare'){
      subs[no].onclick = setActiveItem;  
      subs[no].value = "";  
    }
  }
  document.body.onkeydown = writeNumber;
  if(!document.all)document.documentElement.onkeydown = writeNumber;

  nummoves = 0;
  curscore = 0;
  nummovesdiv = document.getElementById('numtried_div');
  if (nummovesdiv != null){
    nummovesdiv.innerHTML = nummoves;
  }
  numcorrectdiv = document.getElementById('numcorrect_div');
  if (numcorrectdiv != null){
    numcorrectdiv.innerHTML = curscore;
  }
}

	// -------------- INSTRUCTIONS ------------

function showInstructions()
{
    var ipath= "sumto-fifteen-instructions";
    var entry_win=window.open(
                     ipath,
                     'Magic_Square_Instructions',
                     'height=400,width=650');
}

	//-------- Performance Display code -------------

function displayPerfData(response)
{
    var note = "Perfect score for any attempt = 8.";
    genericDisplayPerfData('Sum to 15', response, note);
    return false;
}

// -->
