<!--

function onPageLoaded() {
	if (loginname=="eslvuser"){
		var pd = document.getElementById("perfdisplay1");
		pd.style.display="none";
		var colbspan = document.getElementById("wdlk");
		colbspan.innerHTML='<a href="http://esl-voices.com/students/vocabulary/idioms/wordaday/" target="_parent">Wørd-A-Day</a>';
        }
	WordMemoryBeanFactory.getInitialWordMemoryBean(initialMemoryBeanCallback); 
}

var initialMemoryBeanCallback = function(data) { 
    inputentries=data.currentWords;
}

//-------------------------------------------------------------
containerName = 'word_memory_container';
msgDivName = "word_memory_user_messages";
boxName = 'wordBox';
activeBoxName = 'activeWordBox';
entry_kind = 'words';
keydownFunction = writeLetter;
workoutName = "Work Memory Workout";

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

function showInstructions()
{
    var ipath=  'word-memory-instructions';
    var entry_win=window.open(
                     ipath,
                     'Word_Memory_Instructions',
                     'height=400,width=650');
    return false;
}

function writeLetter(e)
{
if(document.all){ e = event; }
  if(!activeItem)return; 
  if (e.keyCode){ 
    code = e.keyCode; 
  } else if (e.which) {
    code = e.which;
  }
  /*
  var shiftPressed=e.shiftKey;
  var altPressed  =e.altKey;
  var ctrlPressed =e.ctrlKey;
  var cmdPressed =e.metaKey;
  alert("code="+code+" sp="+shiftPressed+" ap="+altPressed+" cp="+ctrlPressed+" mp="+cmdPressed);
    */
  if (e.metaKey || e.ctrlKey || e.altKey){
  	return true;
  } else 
  if (code==8 || code==46)  // backspace || delete
  {
  	if (inputString.length > 0) {
    	inputString = inputString.substring(0, inputString.length-1);
    	activeItem.innerHTML = inputString;
    }
  } else if (code==9) // tab
  {
        answers[activeNum] = inputString;
        activeItem.className='wordBox';
        nextNum = (activeNum < 4 ? activeNum + 1 : 0);
        var nextId = nextNum.toString();
        activeItem = document.getElementById(nextId);
        activeItem.className='activeWordBox';
        activeNum = nextNum;
        if (answers[activeNum] && answers[activeNum].length > 0){
          inputString=answers[activeNum];
          // need to try to place the cursor at the end....
        } else {
          inputString = "";
        }
        activeItem.focus();  // <<=====
        calculateScore();
  } else if ((65 <= code && code <= 90) || code == 32) {
    var theChar = String.fromCharCode(code);
    inputString += theChar;
    activeItem.innerHTML = inputString;
  } else if (97 <= code && code <= 122) {
    var theChar = String.fromCharCode(code-32);
    inputString += theChar;
    activeItem.innerHTML = inputString;
  } else {  // any other key:
  	return true;
  }
  /* e.cancelBubble = true;
  if (e.stopPropagation) e.stopPropagation(); */
  return false; 
}

/* =============== COMMON word_number_memory.js ============ */


    // ------ GLOBAL VARIABLES --------
 /*  
time_display_type = 0;

var taskId;
*/
var playing = false;

var activeItem = false;
var activeNum = false;
var inputString;
var answers;

var curscore = 0;
var nummoves = 0;

var correctItemFactor = 1;
var allCorrectBonus = 0;
var totalPossibleScore = 5 * correctItemFactor + allCorrectBonus;

var flatentries;
var inputentries;
var entries;
var answerentries;

var statisticsdiv;
var primaryParent;
var containerdiv;
var msgsdiv;

var flashOnTimer = true;
var flashMode = 1;  //0 = off; 1 = on
var flashTime;
var flashOnTimeLimit = 3;  //clockticks
var clocktick = 1000;       //millisecs

//-------------------------------------------------------------

var msgDivName ="word_memory_user_messages";
var boxName;
var activeBoxName;
var entry_kind;
var keydownFunction;
var workoutName;



// called from common.js: hideAndSetInitStopStart
function initialStartGame()
{
  var textdiv = document.getElementById('intro_text');
  textdiv.style.display="none";

  statisticsdiv = document.getElementById('memory_statistics');
  statisticsdiv.style.display="block";
  
  msgsdiv = document.getElementById("word_memory_user_messages");
  msgsdiv.style.display="block";
  
  containerdiv = document.getElementById("word_memory_container");
  containerdiv.style.display="block";
  
  setupStartStop();
  startGame();
}

var newWordsCallback = function(data) { 
    inputentries=data.currentWords;
}

function startGame()
{ 
  if ((inputentries == undefined) || (inputentries[0] == undefined))
  {
      waitForCallbackToComplete = true;
      msgsdiv.innerHTML='Please wait: Fetching words from server...';
      return;
  }
  
  entries = new Array(5);
  for (var k=0; k<inputentries.length; k++){
    entries[k] = inputentries[k]; 
  }
  
  WordMemoryBeanFactory.nextWordMemoryBeanWords(entries, newWordsCallback);
  
  var numcorrectdiv = document.getElementById('numcorrect_div');
  numcorrectdiv.innerHTML = "0";
  activeItem = false;
  initGame();
  playing = true;
  setStopStartBtns(false, false);

  msgsdiv.innerHTML='Memorize this list for ' + flashOnTimeLimit + ' seconds:';
  flashOn();
  start_timer();
}

function initGame()
{
  var el = document.getElementById(containerName);
  var subs = el.getElementsByTagName('DIV');
  for(var k=0; k<subs.length; k++){
      subs[k].className = boxName;
      subs[k].innerHTML = entries[k];  
  }
}

function stopGame()
{
  stop_play();
}

function stop_play()
{
	keydownFunction='';
	if(document.all){
      document.body.onkeydown = keydownFunction;
    }else{
      document.documentElement.onkeydown = keydownFunction;
    }
    msgsdiv.innerHTML='';
    toggleStopStartBtns();
    activeItem.className=boxName;
    if (activeNum || activeNum == 0){
       answers[activeNum] = inputString;
    }
    var cur_time = new Date();
    elapsed_time = cur_time.getTime() - start_time.getTime();
    stop_timer();
    playing = false;
    finalCalculateScore();
    recordStatus();
}

function recordStatus(){
	var userNum = sbCookieData.usernum;
	Record.recordNumCorrectPlusMovesWithMax(taskId, nummoves, curscore, elapsed_time, totalPossibleScore, userNum);
}

function hideEntries()
{
  var el = document.getElementById(containerName);
  var subs = el.getElementsByTagName('DIV');
  for(var k=0; k<subs.length; k++){
    if(subs[k].className==boxName){
      subs[k].innerHTML = "";  
      subs[k].onclick = setActiveItem;  
    }
  }
  keydownFunction = writeLetter;
  if(document.all){
    document.body.onkeydown = keydownFunction;
  }else{
    document.documentElement.onkeydown = keydownFunction;
  }

  inputString = "";
  activeNum = 0;
  inputItem = subs[0];
  inputItem.className=activeBoxName;
  activeItem = inputItem;  

//  startForm.blur();
  subs[0].focus();

  answers = new Array();
  for (var i=0; i<5; i++) {
    answers[i] = null;
  }
  curscore = 0;
  msgsdiv.innerHTML='Now type the list of ' + entry_kind + ' in the boxes in order:';

  var numcorrectdiv = document.getElementById('numcorrect_div');
  numcorrectdiv.innerHTML = curscore;
}

function trimString (str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function setActiveItem()
{
  if (activeNum || activeNum >= 0){
     answers[activeNum] = trimString(inputString);
  }
  inputItem = this;
  if(activeItem){
    activeItem.className=boxName;
  }

  var id = inputItem.id;
  activeNum = parseInt(id);
  inputItem.className=activeBoxName;
  activeItem = inputItem;  
  if (answers[activeNum] != null && answers[activeNum] && answers[activeNum].length > 0){
    inputString=answers[activeNum];
    // need to try to place the cursor at the end....
  } else {
    inputString = "";
  }
  calculateScore();
}

function calculateScore()
{
  nummoves = 0;
  curscore = 0;
  for (var i=0; i<5; i++){
    var trimmedString = trimString(answers[i]);
    if (trimmedString==entries[i]){
      curscore++;
    }
    if (answers[i] != null && answers[i] && answers[i].length > 0){
        nummoves++;
    }
  }
  //alert("calc: cS="+curscore+"  nm="+nummoves);
  var numcorrectdiv = document.getElementById('numcorrect_div');
  numcorrectdiv.innerHTML = curscore;
  if (nummoves > 4){
    stop_play();
  }
}


function finalCalculateScore()
{
  answerentries = new Array();
  curscore = 0;
  for (var i=0; i<5; i++)
  {
    if (answers[i] == null || answers[i].length == 0 )
    {
        answerentries[i] = "<font color='red'>"+"? </font><font color=green> / " + entries[i]+"</font>";
    } else {
        var trimmedAnswer = trimString(answers[i]);
        if (trimmedAnswer==entries[i])
        {  
            curscore++;
            answerentries[i] = "<font color='green'>"+answers[i] + "/" + entries[i]+"</font>";
        } else if (answers[i] != null && answers[i].length > 0 ){
            answerentries[i] = "<font color='red'>"+answers[i] + "</font> / <font color='green'>"+entries[i]+"</font>";
        }
    }
  }
  var el = document.getElementById(containerName);
  var subs = el.getElementsByTagName('DIV');
  for(var j=0; j<subs.length; j++){
      subs[j].innerHTML = answerentries[j];  
  }
  if (curscore > 4){
    curscore +=5;
    msgsdiv.innerHTML='Congratulations!  All 5 correct!  Bonus = +5 points.';
  }
  var numcorrectdiv = document.getElementById('numcorrect_div');
  numcorrectdiv.innerHTML = curscore;
}

	//--------Elapsed time code -------------

function doFlash()
{
   if (flashTime == 0)
   {
      var lastFlashMode = flashMode;
      flashMode = 1 - flashMode;
      if (flashMode == 0){
         hideEntries();
         setStopStartBtns(false, true);
         flashTime = 1000000;
      } 
   } else {
     flashTime--;
   }
}

function  flashOn()
{
  flashMode = 1;
  flashTime = flashOnTimeLimit;
}

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

function displayPerfData(response)
{
    var maxTotalNote = "Maximum Total Correct = 5 * NumTrials."
    genericDisplayPerfData(workoutName, response, maxTotalNote);
    return false;
}


// -->

