var img = 0;
var demo = 0;
var visible = "";
var hidden = "";
var waitImg = null;
var checked = false;
var timerInt;
var loadedA = "";
var harakiriLoops = 0;
var postbackVal = "";
var homeMusicOn = true;
var hasSpecialFriends = false;
var sFriendsCount = 0;
var totalSFriends = 0;
var timerCount = 500;
var harakiriMsg = "<br><i><font color='#cc00000'>HARAKIRI. Time limit, no mistakes allowed.</font></i>";
var stayOnCurrent = false;
var lastSound = "";
var lastVoice = "";
var showAnswers = false;
var nextBonus = -1;
var prevBonus = -1;

function SubmitForm(changedValues, anchor, evnt)
{
    var changedValues = document.getElementById("sk");
    //var sessionAnchor = document.getElementById("SessionAnchor");
    var frm = document.getElementById("form1");
    
	if(EnterKey(evnt))
	{
		changedValues.value = changedValues;
		//sessionAnchor.value = anchor;
		PostBack(changedValues, anchor);
	}
	else
	{
		frm.sk.value = changedValues;
		//frm.SessionAnchor.value = anchor;
	}
}

function EnterKey(evnt)
{
  if (evnt)
  {
    var charCode = evnt.keyCode || evnt.which;
    if (charCode == 13)
    {
      if(evnt.preventDefault) e.preventDefault();
      return true;
    }
    else
    {
      return false;
    }
  }
  return false;
}

function PostBack(changedValues, anchor)
{		
	var frm = document.getElementById("form1");
	frm.action = "Default.aspx";
	frm.sk.value = changedValues;
	frm.submit();
}

function checkInput(target, isNumeric, msgNumericInputRequired, maxChar, msgTextTooLong)
{	
  var fld = document.getElementById(target);
  var n = fld.value.length;
  var a = fld.value.substring(n-1, n);
		
  if(isNumeric != 0)
  {
    if(a != 0 && a != 1 && a != 2 && a != 3 && a != 4 && a != 5 && a != 6 && a != 7 && a != 8 && a != 9 && a != ".")
    {
      alert(msgNumericInputRequired);
      fld.value = "";
      return false;
    }	
  }
  else
  {
    if(maxChar != 0)
    {
      if(n > maxChar)
      {
        alert(msgTextTooLong.replace("[MaxChar]", maxChar));
        return false;			
      }
    }
  }
}

function verifyNumericInput(target, minValue, maxValue, msgValueTooSmall, msgValueTooBig)
{	
  var fld = document.getElementById(target);
  var n = fld.value.length;
  var a = fld.value.substring(n-1, n);
		
  if(fld.value < minValue)
  {
    fld.value = minValue;
    alert(msgValueTooSmall.replace("[MinVal]", minValue));
    return false;
  }
	
  if(fld.value > maxValue)
  {
    fld.value = maxValue;
    alert(msgValueTooBig.replace("[MaxVal]", maxValue));
    return false;
  }
}

function OpenWindow(url)
{
  var newWindow = window.open(url, "", "width=800,height=500,status=0,scrollbars=1");
}

function GetWindowSize()
{
  if( typeof( window.innerWidth ) == 'number' )
  {
    //Non-IE
    docWidth = window.innerWidth;
    docHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    docWidth = document.documentElement.clientWidth;
    docHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    docWidth = document.body.clientWidth;
    docHeight = document.body.clientHeight;
  }  
}

function CompareInput(ctl)
{
  var ctl1 = document.getElementById(ctl);
  var ctl2 = document.getElementById(ctl + "Mirror");
 
  if(ctl1.value != ctl2.value)
  {
    ctl1.style.backgroundColor = "#ffff66";
  }
  else
  {
    ctl1.style.backgroundColor = "#ffffff";
  } 
}

function selectAll (ctl)
{
  var chk = document.getElementById('form1');

  if (checked == false)
  {
    checked = true
  }
  else
  {
    checked = false
  }

  for (var i = 0; i < chk.elements.length; i++) 
  {
    if(ctl == "") 
    {
      chk.elements[i].checked = checked;
    }
    else
    {
      if(chk.elements[i].name == ctl) chk.elements[i].checked = checked;
    }
  }
}

function UnselectAll (chk)
{
  var frm = document.getElementById('form1');

  for (var i = 0; i < frm.elements.length; i++) 
  {
   if(frm.elements[i].name == chk) frm.elements[i].checked = false;   
  }
}

function ReplaceAll(stringValue, replaceValue, newValue)
{
 var functionReturn = new String(stringValue);

 while ( true )
 {
  var currentValue = functionReturn;

  functionReturn = functionReturn.replace(replaceValue, newValue);
  if ( functionReturn == currentValue )
   break;
 }

 return functionReturn;
}

function HideDiv()
{
  var divEdit = document.getElementById("DivEdit");
  divEdit.style.visibility = "hidden";
}

function EvaluateTest()
{
  var yesCount = 0, totalCount = 0;
  for(var i=0; i<item.length; i++)
  {
    totalCount += items[i].testTot;
    yesCount += items[i].testYes;     
  }
}

function Previous()
{
  lastItem = lastItem - 2;
  if(lastItem < 0) lastItem = items.length - 2;  
  Next();
}

function Next()
{ 
  if(document.getElementById("btnNext") == null) return;
  stayOnCurrent = false;
  showNext = false;

  if(showStarted == false)
  {
    showStarted = true;      
    SetButtons(); 
    if(yTot != 0) ShowYesImage();
    PlayAudioLoop(soundLoop);    
  }
  
  document.getElementById("btnNext").value = "NEXT QUESTION";
  if(isTest)
  {
    document.getElementById("btnPrevious").style.visibility = "visible";
    document.getElementById("btnEvaluateTest").style.visibility = "visible";
  }
  
  var itemFound = false;  
  var isMatch  = false;
  var indexCount = 0;
  lastItem++;
  lastFailed = false;
                 
  for(var i=0; i<items.length; i++)
  {
    if(specialFriends)
    {
      if(items[i].sCount > 0)
      {
        indexCount++;
        isMatch = true;
      }
       
      if(isMatch && indexCount > lastIndex)
      { 
        lastIndex = indexCount;
        if((isTest == false && lastIndex >= maxItems) || lastIndex >= items.length || i >= items.length-1) lastIndex = 0; 
        itemFound = true;  
        lastItem = i;
        break;
      }
    }
    else
    {	    
      if((items[i].box == 0 && items[i].yCount < maxYes) || (items[i].box != 0 && items[i].yCount < 1))
      {     
        indexCount++;
        isMatch = true;
      }
      
      if(isMatch && indexCount > lastIndex)
      {
        lastIndex = indexCount;
        if((isTest == false && lastIndex >= maxItems) || lastIndex >= items.length || i >= items.length-1) lastIndex = 0;
        lastItem = i;
        itemFound = true;        
        break;
      }
    }
  }

  if(itemFound)
  {
    ShowQuestion();
    GetRewardImage(true);
    LoadRewardIcons();
  }
  else
  {    
    if(specialFriends && sFriendsCount == 0)
    {
      CompleteDrill();
      drillStopped = true;
      return;
    }
    else
    {
      if(hasSpecialFriends)
      {               
        lastItem = -1;
        specialFriends = true;
        document.getElementById("waitIcon").style.visibility = "hidden";
        SetFeedback("You are repeating special friends");
        if(sFriendsCount == 0) sFriendsCount = totalSFriends;
        drillStopped = false;
        document.getElementById("divNewCount").innerHTML = "Friends: <font color='#cc0000'>" + sFriendsCount + "</font> of <font color='#cc0000'>" + totalSFriends + "</font>";
        document.getElementById("divRepeatCount").innerHTML = "";
        Next();
        return;
      }
      else
      {
        SetFeedback("Processing you results - one moment please.");
        document.getElementById("waitIcon").style.visibility = "visible";
        CompleteDrill();
        drillStopped = true;
        return;    
      }      
    }
  }
}

function ChangeHelp(val)
{
  document.getElementById("txtHelpStatus").value = val;
  document.getElementById("form1").submit();
}

function CloseHelp()
{
  document.getElementById("divHelp").style.visibility = "hidden";
}

function ShowHelp()
{
  var w = 500, h = 400;
  var x = (640 - w)/2, y = (480 - h)/2;
  if(screen)
  {
    x = (screen.availWidth - w)/2;
    y = (screen.availHeight - h)/2;
  }
  document.getElementById("divHelp").style.left = x;
  document.getElementById("divHelp").style.top = y;
  document.getElementById("divHelp").style.width = w;
  document.getElementById("divHelp").style.height = h;
  document.getElementById("divHelp").style.visibility = "visible";
}

function HandleLoadEvent(loadAction, showHelp)
{
  if(showHelp) ShowHelp();

  var la = new LoadAction();
  if(loadAction == la.AddItem || loadAction == la.SaveItemPair)
  {  
    if(document.getElementById("txtPrefix1") != null)
    {
      SetFocus("txtPrefix1");
    }
    else if(document.getElementById("txtItem1") != null)
    {
      SetFocus("txtItem1");
    }    
  }
  else if(loadAction == la.DrillCompleted)
  {    
    if(document.getElementById("SoundDone") != null) setTimeout(function() { try{document.getElementById("SoundDone").play();}catch(e){} }, 1000);    
  }
  else if(loadAction == la.DrillCancelled)
  {    
  }
  else if(loadAction == la.NewDrill)
  {
    Next();
  }
}

function LoadAction()
{
  this.SaveItemPair = 1;
  this.DrillCompleted =	2;
  this.DrillCancelled = 3;
  this.AddItem = 4;
  this.NewDrill = 5;
}

function CompleteDrill()
{
  drillStopped = true;
  document.getElementById("txtLID").value = lid;
  document.getElementById("txtEndDrill").value = "done";
  document.getElementById("txtStats").value = newCount + "," + newLeft + "," + repeatCount + "," + repeatLeft + "," + yTot + "," + nTot;
  document.getElementById("form1").submit();
}

function CancelDrill()
{
  drillStopped = true;
  document.getElementById("txtEndDrill").value = "cancelled";
  document.getElementById("txtStats").value = newCount + "," + newLeft + "," + repeatCount + "," + repeatLeft + "," + yTot + "," + nTot;    
  document.getElementById("form1").submit();
}

function SetFeedback(text)
{
  if(document.getElementById("divFeedback") != null) document.getElementById("divFeedback").innerHTML = text;
}

function No()
{
  if(drillStopped) return;
  Fail("");
  Next();
}

function Yes()
{
  if(drillStopped) return;
  Win();
}

function Show()
{
  if(drillStopped) return;
  if(IsFillBlanks(lastItem))
  {
    showAnswers = true;
    ShowFillAnswers();
    showAnswers = false;     
  }
  else
  {  
    ShowAnswer(true, true, "");
  }
  
  if(IsWritten())
  {    
    Fail("[showing]"); 
    prevBonus = 0;
    nextBonus = 0;
  }
}

function ShowFillAnswers()
{
  var i = 0;
  var txt = document.getElementById("txtBlank" + i);    
  while(txt != null)
  {
    txt = document.getElementById("txtBlank" + i);  
    if(txt != null) txt.onkeydown();
    i = i + 1;
  }
}

function SoundQuestion()
{
  return "<a href='javascript:PlayVoice(" + (items[lastItem].sd1 ? "true" : "false") + ", " + items[lastItem].sid1 + ")'><img src='LImages/sound.jpg' width='50px' height='50px' border='0' align='left'>REPLAY</a>";
}

function ShowSoundQuestion()
{
  if(drillStopped) return;
  items[lastItem].qsnd = false;
  ShowQuestion();  
  items[lastItem].qsnd = true;
}

function ShowQuestion()
{
  if(drillStopped) return;
  var divQ = document.getElementById("divQ");
  if(items[lastItem].qsnd)
  {
    divQ.innerHTML = SoundQuestion();  
    PlayVoice(items[lastItem].sd1, items[lastItem].sid1);
  }
  else
  {  
    divQ.innerHTML = CleanHTML(BoxValue(true, -1)) + (items[lastItem].img ? "<br><img src='Pictures/" + items[lastItem].sid1 + ".jpg' width='300px' border=0>" : "");
  }
  
  ClearAnswers();  
   
  SetInputFields(); 
    
  if(isTest)
  {
    var n = lastIndex + 1;
    document.getElementById("divNewCount").innerHTML = "Question: <font color='#cc0000'>" + n + "</font> of <font color='#cc0000'>" + newCount + "</font>";
  }
  
  if(IsWritten())
  {    
    SetFocus("txtA0");
  }
  else
  {
    SetButtons();    
  }
  if(harakiri) StartTimer();
}

function SetButtons()
{
  if(drillStopped) return;
  if(isTest)
  {
    document.getElementById("divDrillMode").style.visibility = "hidden";
    document.getElementById("divPlayMode").style.visibility = "hidden";
    document.getElementById("btnShow").style.visibility = "hidden";
    document.getElementById("btnYes").style.visibility = "hidden";
    document.getElementById("btnNo").style.visibility = "hidden";
  }
  else
  {
    document.getElementById("btnShow").style.visibility = "visible";
    if(IsWritten())
    {
      document.getElementById("btnYes").style.visibility = "hidden";
      document.getElementById("btnNo").style.visibility = "hidden";
    }
    else
    {
      document.getElementById("btnYes").style.visibility = "visible";
      document.getElementById("btnNo").style.visibility = "visible";
    }
  }
}

function SetFocus(ctl)
{
  try
  {
    if(document.getElementById(ctl) != null
      && document.getElementById(ctl).focus())
    {
      setTimeout(function() { document.getElementById(ctl).focus(); }, 100);
    }
  }
  catch(e){}
}

function AnswerDiv()
{
  if(IsOptionsMultiSelect(lastItem) || IsOptionsSingleSelect(lastItem) || IsSortOrder(lastItem))
  {
    return "Answer&nbsp;<label id='lblAnswer' class='Answer'></label>"
      + "&nbsp;<input type='button' value=' OK ' onclick='javascript:CheckOption(0, false)'>";
  }
  else
  {
    return "Answer";
  }
}

function SetInputFields()
{  
  if(drillStopped) return;
  var divA = document.getElementById("divAHeader");
  var manyA = (items[lastItem] == null || items[lastItem].A.indexOf("|") < 0 ? false : true);
  var result = "";
  
  if(divA != null)
  {    
    if(IsFillBlanks(lastItem))
    {
      divA.innerHTML = AnswerDiv();
      ShowAnswer(false, false, "");
      SetFocus("txtBlank0");
      return;
    }
    else if(IsOptionsMultiSelect(lastItem) || IsOptionsSingleSelect(lastItem) || IsSortOrder(lastItem))
    {
      divA.innerHTML = AnswerDiv()
      ShowAnswer(false, false, "");
      return;
    }
        
    result = SetDefaultInputField(manyA);

    if(lastItem >= 0)
    {
      var testAnswers = items[lastItem].testA.split("|");
      if(IsWritten())
      {
        if(manyA)
        {    
          var parts = items[lastItem].A.split("|");
          for(var i=1; i<parts.length; i++)
          {
            aCount++;
            var testAnswer = (testAnswers.length >= i+1 ? testAnswers[i] : "");
            var nextInd = (i == (parts.length-1) ? 0 : (i + 1));
            result += "<tr>"
            + "<td>&nbsp;</td>"
            + "<td class='DrillForm'><input type='text' id='txtA" + i + "' value='" + (isTest ? testAnswer : "") + "' size='60' onkeydown='CheckAnswer(\"txtA" + i + "\", \"txtA" + nextInd + "\", " + i + ", event)' onkeyup='javascript:CheckPowerplayAnswer(\"txtA" + i + "\", \"txtA" + nextInd + "\", " + i + ")'></td>"
            + "</tr>";
          }
        }       
      }    
    }
    
    result += "</table>"
    divA.innerHTML = result;
  }
}

function SetDefaultInputField(manyA)
{
  if(drillStopped) return;
  var nextFld = (manyA ? "txtA1" : "txtA0");
  var result = "";
  
  if(IsOral())
  {
    result = "Answer"; 
  }
  else
  {
    if(manyA)
    {
      result = "<table><tr>"
      + "<td class='QHeader'>Answer</td>"
      + "<td class='DrillForm'><input type='text' id='txtA0' value='' size='60' onkeydown='CheckAnswer(\"txtA0\", \"" + nextFld + "\", 0, event)' onkeyup='javascript:CheckPowerplayAnswer(\"txtA0\", \"" + nextFld + "\", 0)'></td>"
      + "</tr>"
    }
    else
    {
      result = "Answer&nbsp;<input type='text' id='txtA0' value='' size='60' onkeydown='CheckAnswer(\"txtA0\", \"" + nextFld + "\", 0, event)' onkeyup='javascript:CheckPowerplayAnswer(\"txtA0\", \"" + nextFld + "\", 0)'>";
    } 
  }
  
  aCount = 1;
  return result;
}

function ClearAnswers(fld)
{
  if(drillStopped) return;
  var divA = document.getElementById("divA");
  var divAHeader = document.getElementById("divAHeader");
  divA.innerHTML = "";
  divAHeader.innerHTML = SetDefaultInputField();
  loadedA = "";
}

function ShowAnswer(playVoice, showResults, fld)
{
  if(drillStopped) return;
  if(lastItem < 0) return;
  var divA = document.getElementById("divA");		  
  var val = BoxValue(false, -1);
  var result = "";    

  if(playVoice && items[lastItem].sd1 == false) PlayVoice(items[lastItem].sd2, items[lastItem].sid2);

  if(val.indexOf("|") < 0)
  {    
    result = val;
  }
  else
  {
    if(IsOptionsSingleSelect(lastItem) || IsOptionsMultiSelect(lastItem) || IsSortOrder(lastItem))
    {
      if(showResults)
      {
        Fail("");
        UnselectAll("chkOption");
        divA.innerHTML = ReplaceAll(divA.innerHTML, "isanswer", "checked");    
        return;
      }
      result = RandomOrder(val, showResults);
    }
    else if(IsFillBlanks(lastItem))
    {        
      result = RandomBlank(val);
    }
    else
    {
      var parts = val.split("|");    
      for(var i=0; i<parts.length; i++)
      {
        var count = i + 1;
        result += (result == "" ? "" : "<br>") + count + ". " + parts[i];
      }       
    }
  }   
    
  divA.innerHTML = ReplaceAll(result, "^", "\""); 
}

function PlayVoice(hasSound, sid)
{ 
  if(drillStopped) return;
  if(lastItem < 0) return;
  if(hasSound == false) return;
  sid += "";
  if(sid == "") return;
  
  if(sid.indexOf("|") >= 0)
  {
    var parts = sid.split("|");  
    for(var i=0; i<parts.length; i++)
    {
      if(document.getElementById(ctl) != null) setTimeout(function(){ PlayAudioVoice(parts[i]);}, 1000);       
    }
  }
  else
  {    
    PlayAudioVoice(sid);     
  }
}

function RandomOrder(val, showResult)
{
  var result = "";
  while(Trim(ReplaceAll(val, "|", "")) != "")
  {
    var rows = val.split("|");    
    var rnd = RandomInt(rows.length);
    if(rows[rnd] != "")
    {
      if(IsSortOrder(lastItem)) result += (result == "" ? "" : "<br>");
      result += rows[rnd];
    }
    rows[rnd] = "";
    val = rows.join("|");
  }
  if(IsSortOrder(lastItem))
  {
    return result;
  }
  else
  {
    return "<table>" + result + "</table>";  
  }
}

function RandomBlank(val)
{
  if(Trim(ReplaceAll(val, "|", "")) == "") return val;
  if(val.indexOf("|") < 0) return val;
  var result = "";
  var rows = val.split("|")
  {    
      var rnd = RandomInt(rows.length);
      result = rows[rnd];    
  }
  return (result == "" ? rows[0] : result);
}

function ClearAnswer()
{
  var txtA0 = document.getElementById("txtA0");
  txtA0.value = "";
}

function Trim (s)
{
  return s.replace(/^\s+/g,'').replace(/\s+$/g,'')
} 

function ShowSortOrder(count)
{
  for(var i=1; i<=count; i++)
  {
    document.getElementById("txtBlank" + i).value = i;
  }
  stayOnCurrent = true;
}

function CheckAnswerSortOrder(count)
{
  if(stayOnCurrent) return;
  if(count == 0) return;
  var success = false;
  var notComplete = false;
  var aCount = 0;
  for(var i=1; i<=count; i++)
  {    
    if(document.getElementById("txtBlank" + i).value == "")
    {
      notComplete = true;     
    }
    else if(document.getElementById("txtBlank" + i).value == i)
    {
      aCount++;
      success = true;
    }
    else if(isTest == false && document.getElementById("txtBlank" + i).value == "?")
    {
      ShowSortOrder(count);
      Fail("")      
      return;
    }
    else
    {
      success = false;
      if(harakiri || powerplay)
      {
        Fail("");
        return;
      }
    }
  }
  
  items[lastItem].testTot = count;
  if(notComplete)
  {
    items[lastItem].testYes = aCount/count;
    return;
  }
  
  if(success)
  {
    items[lastItem].testYes = 1;
    Win();
  }
  else
  {
    items[lastItem].testYes = aCount/count;
    Fail("");
  }
}

function CheckAnswerBlank(index, allVal, fldCount, evnt)
{
  if(EnterKey(evnt) == false && showAnswers == false) return;

  if(drillStopped) return;
  var fld = "";  
  var nextFld = "";
  var inputValue = "";
  var nextFound = false;
  var allCorrect = true;
  var wrongAnswer = false;
  var aCount = 0;
  items[lastItem].testTot = fldCount;
  
  var all = allVal.split("[$]");
  
  if(items[lastItem].testA == "")
  {
    var blankTestA = "";
    for(var n=0; n<fldCount; n++)
    {
      blankTestA += "[$]";
    }
    items[lastItem].testA = blankTestA;
  }
  
  var testA =  items[lastItem].testA.split("[$]");
  
  fld = "txtBlank" + index;
  
  inputValue = Trim(CleanHTML(document.getElementById(fld).value));
  
  if(isTest == false)
  {
    if(inputValue != CleanHTML(all[index]))
    {
      document.getElementById(fld).value = CleanHTML(all[index]);
      if(showAnswers == false)
      {
        Fail(inputValue);
        showNext = true;      
        allCorrect = false;          
        wrongAnswer = true;
      }
    }    
  }
  else
  {
    testA[index] = inputValue;
  }
  
  items[lastItem].testA = testA.join("[$]");
  
  if(showAnswers) return;
  
  for(var i=0; i<fldCount; i++)
  {
    fld = "txtBlank" + i;
    if(i != index)
    {      
      inputValue = Trim(CleanHTML(document.getElementById(fld).value));
      if(inputValue == "")
      {
        nextFld = "txtBlank" + i;
        allCorrect = false;
        if(isTest == false && document.getElementById(nextFld) != null && nextFound == false)
        {
          SetFocus(nextFld);
          nextFound = true;
        }
      }
    }
    
    //check test answer values
    var val = CleanHTML(all[i]);
    inputValue = Trim(CleanHTML(document.getElementById(fld).value));
    if(inputValue == val)
    {
      aCount++;
    }
    else
    {
      wrongAnswer = true;
      allCorrect = false; 
    }    
  }
  
  if(allCorrect)
  {
    items[lastItem].testYes = 1;
    Win();
  }
  else
  {
    items[lastItem].testYes = aCount/fldCount;    
    if(wrongAnswer)
    {
      if(harakiri) StopTimer(true);
      if(powerplay) document.getElementById(fld).value = "";      
    }
  }
}

function CheckOption(val, isCheckBox)
{
  if(drillStopped) return;
  if(isCheckBox && (harakiri == false || powerplay == false)) return;
  var answer = document.getElementById("txtOptionAnswer").value;  
  var fld = "chkOption";
  var frm = document.getElementById('form1');
  var allCorrect = true;
  var isCorrect = (answer.indexOf("," + val + ",") < 0 ? false : true);
  var aCount = 0;
  var totalA = 0;
  
  for(var i=0; i<frm.elements.length; i++) 
  {
    if(frm.elements[i].name == fld)
    {   
      var isAnswer = (answer.indexOf("," + frm.elements[i].value + ",") < 0 ? false : true);
      if(isAnswer) totalA++;
      
      if((frm.elements[i].checked && isAnswer == false)
      ||(frm.elements[i].checked == false && isAnswer)) 
      {        
        aCount--;
        allCorrect = false;
      } 
      else
      {
        aCount++;
      }
    }    
  }
  
  items[lastItem].testTot = totalA;
  if(aCount < 0) aCount = 0;
  if(allCorrect)
  {
    items[lastItem].testYes = 1;
    Win();
  }
  else
  {
    Fail("");
    if(IsOptionsMultiSelect())
    {
      items[lastItem].testYes = aCount/totalA;      
    }
    else if(IsOptionsSingleSelect())
    {
      items[lastItem].testYes = 0;      
    }
    
    if(harakiri)
    {
      if(isCorrect == false)
      {
        StopTimer(true);
      }
      return;
    }
    else if(powerplay)
    {
      if(isCorrect == false && IsOptionsMultiSelect(lastItem)) ResetOptions(fld);
    } 
    else
    {
      ShowAnswer(true, true, "");
    }         
  }
}

function ResetOptions(fld)
{
  if(drillStopped) return;
  var frm = document.getElementById('form1');
  for(var i=0; i<frm.elements.length; i++) 
  {
    if(frm.elements[i].name == fld)
    {
      frm.elements[i].checked = false;
    }
  }
}

function CheckAnswer(fld, nextFld, aIndex, evnt)
{
  if(EnterKey(evnt) == false) return;
  
  if(showNext)
  {
    Next();
    return;
  }
  
  showNext = true;
  if(drillStopped) return;
  if(lastItem < 0) return;    
  var txtA = document.getElementById(fld);
  if(Trim(txtA.value) == "") return;
  var isMatch = false, isLastField = false;
  var foundItems = 0, newItems = 0;;
  var val = items[lastItem].A;
  var parts = [1];
  var allMatch = false; 
  loadedA = "";
  var testAnswerCount = 0;
  
  if(val.indexOf("|") >= 0)
  {
    parts = val.split("|");   
    if(aIndex + 1 >= parts.length) isLastField = true;
  }
  else
  {
    isLastField = true;
    parts[0] = val;    
  }

  for(var i=0; i<parts.length; i++)
  {    
    for(var j=0; j<= aIndex; j++)
    {
      var input = Trim(CleanHTML(document.getElementById("txtA" + j).value));
            
      if(Trim(CleanHTML(parts[i])) == input)
      {                
        if(loadedA.indexOf("££" + input + "££") < 0)
        {
          foundItems++;
          testAnswerCount++;
          newItems++;
          loadedA += "££" +  input + "££";
          if(j == aIndex)
          {
            SetFocus(nextFld);
            showNext = false;
          }
        }        
      } 
    }
     
    if(foundItems >= parts.length && newItems != 0) allMatch = true;
  }
  
  //test statistics
  items[lastItem].testTot = parts.length;
  items[lastItem].testYes = testAnswerCount/parts.length;

  if(isLastField)
  {
    if(allMatch)
    {     
      items[lastItem].testYes += 1;      
      Win();
    }  
    else
    { 
      Fail(txtA.value);
      ShowAnswer(false, true, fld);     
      SetFocus("btnNext");
    }
  }
  else
  {
    SetFocus(nextFld);
    showNext = false;
  }
}

function CheckPowerplayAnswer(fld, nextFld, aIndex)
{
  if(powerplay == false && harakiri == false) return;
  if(drillStopped) return;
  if(lastItem < 0) return;    
  var txtA = document.getElementById(fld);  
  if(Trim(txtA.value) == "") return;
  var isMatch = false, isLastField = false;
  var foundItems = 0, newItems = 0;;
  var val = items[lastItem].A;
  var parts = [1];
  var found = false; 
  if(aIndex == 0) loadedA = "";
  var testAnswerCount = 0;
  var isMatch = false;
  
  if(val.indexOf("|") >= 0)
  {
    parts = val.split("|");
    if(aIndex + 1 >= parts.length) isLastField = true;
  }
  else
  {
    isLastField = true;
    parts[0] = val;    
  }
    
  for(var i=0; i<parts.length; i++)
  {    
    for(var j=0; j<= aIndex; j++)
    {
      var input = Trim(CleanHTML(document.getElementById("txtA" + j).value));

      if(fld == "txtA" + j)
      {    
        if(Trim(CleanHTML(parts[i])).indexOf(input) == 0)
        {
          isMatch = true;
          break;
        }
      }
    }
  }    
  
  if(isMatch == false)
  {
    Fail(txtA.value);
    txtA.value = "";  
    showNext = true;   
  }
}

function BoxValue(isQ, aIndex)
{
  if(lastItem < 0) return;
  var result = "";
  if(isQ)
  {
    result = ReplaceAll(items[lastItem].Q, "&#39;", "'");
  }
  else
  {
    result = ReplaceAll(AValue(aIndex), "&#39;", "'");
  }
  return result;
}

function AValue(aIndex)
{
  if(aIndex == -1)
  {
    return items[lastItem].A; //return all answers
  }
  else
  {
    if(items[lastItem].A.indexOf("|") < 0)
    {
      return items[lastItem].A;
    }
    else
    {
      var parts = items[lastItem].A.split("|");
      return parts[aIndex];
    }
  }    
}

function SetValue()
{
  if(drillStopped) return;
  if(items[lastItem] == null) return;
    
  if(specialFriends)
  {
    sFriendsCount--;
    items[lastItem].sCount = 0;        
    TransmitValue();
  }
  else
  {
    items[lastItem].yCount++;
    if((items[lastItem].box == 0 && items[lastItem].yCount >= maxYes) || (items[lastItem].box > 0 && items[lastItem].yCount >= 1))
    {
      TransmitValue();
    }
  }
}

function GetBonus()
{
  
  //extra reward wehn learning new items
  
  var box = items[lastItem].box;
  
  if(box == 0)
  {
    nextBonus = 5;
  }
  else if(box == 1)
  {
    nextBonus = 1;
  }
  else if(box == 2)
  {
    nextBonus = 2;
  }
   else if(box == 3)
  {
    nextBonus = 3;
  }
  else if(box == 4)
  {
    nextBonus = 4;
  }
  else if(box == 5)
  {
    nextBonus = 5;
  }
  else
  {
    nextBonus = 1;  
  }

  if(powerplay) nextBonus = nextBonus*2;
  if(harakiri) nextBonus = nextBonus*3;  
}

function TransmitValue()
{
  if(drillStopped) return;
  lastIndex--;
  
  if(specialFriends)
  {    
    //document.getElementById("divNewCount").innerHTML = "Friends: <font color='#cc0000'>" + sFriendsCount + "</font> of <font color='#cc0000'>" + totalSFriends + "</font>";
    //document.getElementById("divRepeatCount").innerHTML = "";
  }
  else
  {
    if(items[lastItem].box == 0)
    {
      newLeft--;    
      document.getElementById("divNewCount").innerHTML = "New: <font color='#cc0000'>" + newLeft + "</font> of <font color='#cc0000'>" + newCount + "</font>";
    }
    else
    {
      repeatLeft--;
      document.getElementById("divRepeatCount").innerHTML = "Repeat: <font color='#cc0000'>" + repeatLeft + "</font> of <font color='#cc0000'>" + repeatCount + "</font>";
    }
  }
  try
  { 
    postbackVal = (postbackVal == "" ? "" : "|") + uid + "," + items[lastItem].id + "," + items[lastItem].box + "," + items[lastItem].yCount + "," + items[lastItem].nCount + "," + yTot + ", " + nTot;
    var frame = document.getElementById("frame");
    var frmPostback = frame.contentWindow.document.getElementById("frmPostback");
    var txtPostback = frame.contentWindow.document.getElementById("txtPostback");
    txtPostback.value = postbackVal;
    frmPostback.submit();
    postbackVal = "";  
  }
  catch(e)
  {
    //do nothing for now
  }
}

function Evaluate(evnt)
{
  if(EnterKey(evnt))
  {
    if(showNext)
    {
      Next();
    }
    else
    {
      Fail("");
      showNext = true;
      allCorrect = false;          
      wrongAnswer = true;
    }  
  }
}

function Fail(input)
{ 
  if(isTest) return;
  if(lastItem < 0) return;
  if(drillStopped) return;
  if(items[lastItem].sd)
  {
    PlayVoice(items[lastItem].sd2, items[lastItem].sid2); 
  }
  else
  {
    PlaySound(false, false);
  }
  items[lastItem].nCount++;
  if(items[lastItem].sCount == 0) totalSFriends++;
  items[lastItem].sCount++;
  hasSpecialFriends = true;
  if(IsOptionsMultiSelect(lastItem) == false  
  || IsOptionsSingleSelect(lastItem) == false 
  || IsFillBlanks(lastItem) == false 
  || IsSortOrder(lastItem) == false)
  {
    if(input != "[showing]") document.getElementById("divAHeader").innerHTML = "<font color='#ffcc33'>WRONG ANSWER: '" + input + "'</font>";
    SetFocus("btnNext");
  }  
  nextBonus = 0;
  GetRewardImage(false);
  nRow++;  
  nTot++;  
  lastFailed = true;    
}

function Win()
{ 
  if(isTest) return;
  if(lastItem < 0) return;
  if(drillStopped) return;
  PlayVoice(items[lastItem].sd2, items[lastItem].sid2); 
 
  if(lastFailed == false)
  {
    SetValue(true);
    yRow++;
    yTot += nextBonus;    
    nRow = 0;
    if(items[lastItem].sd2 == false) PlaySound(true, false);
  }
  harakiriLoops = 0;
  if(IsOptionsMultiSelect(lastItem) == false  
  || IsOptionsSingleSelect(lastItem) == false 
  || IsFillBlanks(lastItem) == false 
  || IsSortOrder(lastItem) == false)
  {
    document.getElementById("divAHeader").innerHTML = AnswerDiv() + "&nbsp;<font color='green'>REGISTERED AS CORRECT ANSWER</font>";
  }  
  Next();    
}

function ShowYesImage()
{
  if(isTest)
  {
    document.getElementById("divIconsYes").innerHTML = "";
    document.getElementById("divImage").innerHTML = "";
    document.getElementById("divReward").innerHTML = "";
  }
  else
  {
    LoadRewardIcons();        
    if(yTot != 0) document.getElementById("divReward").innerHTML = "Score: <font color='#cc0000'>" + yTot + "</font>";
  }
}

function GetRewardImage(nextItem)
{
  if(nextItem) GetBonus(); 
  if(nextBonus == -1) return "";   
  var box = items[lastItem].box;
  document.getElementById("divImage").innerHTML = "<br><center><label class='Box" + (box == 0 ? "5" : "0") + "'>+5</label>"
  + "<label class='Box" + (box == 1 ? "5" : "0") + "'>+1</label>"
  + "<label class='Box" + (box == 2 ? "5" : "0") + "'>+2</label>"
  + "<label class='Box" + (box == 3 ? "5" : "0") + "'>+3</label>"
  + "<label class='Box" + (box == 4 ? "5" : "0") + "'>+4</label>"
  + "<label class='Box" + (box == 5 ? "5" : "0") + "'>+5</label>"  
  + "<br><br><img src='LImages/bonus" + nextBonus + ".gif' height='100px' width='100px' style='border:solid 1px #660000'></center>";
}

function PlaySound(success, finish)
{
  if(items[lastItem] == null) return;
  var ctl = "";
  var yCount = 0;
  var nCount = 0;
    
  if(finish)
  {
    PlayAudioSound("gFinal.mp3")    
  }
  else
  {
    yCount = items[lastItem].yCount;
    nCount = items[lastItem].nCount;   
       
    if(success)
    {
      if(yRow >= 1)
      {
        if(yRow >= stepsYes)
        {         
          ctl = "SoundGFinal";         
          ShowYesImage()          
          //yRow = stepsYes%yRow;
        }
        else
        {
          try{document.getElementById("SoundG0").play(); }
          catch(e){}
          ShowYesImage();
        }
      }
      else
      {
        document.getElementById("divImage").innerHtml = "";
      }
      
      if(yRow == 2)
      {
        ctl = RandomSound(1, success);        
      }
      else if(yRow == 3)
      {
        ctl = RandomSound(2, success);
      } 
      else if(yRow == 4)
      {
        ctl = RandomSound(3, success);
      }
      else if(yRow == 5)
      {
        ctl = RandomSound(4, success);
      }
      else if(yRow > 6)
      {
        ctl = RandomSound(5, success);
      }      
    }
    else
    {    
      /*if(nRow >= 1)
      {        
        if(nRow >= stepsNo)
        {          
          ctl = "SoundBFinal";
          document.getElementById("divImage").innerHTML = "<img src='lImages/no" + nRow + ".gif' height='150px' width='150px'>";                              
          ReloadFailIcons();          
          nRow = 0;
        }
        else
        {
          try{document.getElementById("SoundB0").play();}catch(e){}
          document.getElementById("divImage").innerHTML = "<img src='LImages/no" + nRow + ".gif' height='150px' width='150px'>";          
        }
      }
      else
      {*/
        document.getElementById("divImage").innerHtml = "";
      //}
             
      if(nRow == 2)
      {
        ctl = RandomSound(1, success);
      }
      else if(nRow == 3)
      {
        ctl = RandomSound(2, success);
      }
      else if(nRow == 4)
      {
        ctl = RandomSound(3, success);
      }
      else if(nRow == 5)
      {
        ctl = RandomSound(4, success);
      }
      else if(nRow == 6)
      {
        ctl = RandomSound(5, success);
      }      
    }  
  }
  try{document.getElementById(ctl).play();}
  catch(e){}
}

function ReloadFailIcons()
{
  return; //don't be negative
  if(nTot >= stepsNo)
  { 
    var breakCount = 0;
    var nIcons = nTot%stepsNo;
    document.getElementById("divIconsNo").style.visibility = "visible";    
    document.getElementById("divIconsNo").innerHTML = "";
    nRow = 0;
        
    for(var n=0; n<nIcons; n++)
    {
      breakCount++;
      document.getElementById("divIconsNo").innerHTML += "<img src='LImages/no_th.gif' height='30px' width='30px' border='0'>&nbsp;";
      if(breakCount >= 15)
      {
        document.getElementById("divIconsNo").innerHTML += "<br>";
        breakCount = 0;          
      }
    }
  }       
}

function LoadRewardIcons()
{
  if(isTest) return;
  var steps = yTot;
  var r = [10], img = [10];
  
  img[9] = "uni";
  img[8] = "gal";
  img[7] = "sol";
  img[6] = "wor";
  img[5] = "con";
  img[4] = "reg";
  img[3] = "cou";
  img[2] = "cyt";
  img[1] = "cas";
  img[0] = "cro";
  
  for (var n=9; n>=1; n--)
  {
	var nn = n + 1;
	r[n] = (steps >= Math.pow(stepsYes, nn) ? Math.floor(steps/Math.pow(stepsYes, nn)) : 0);  
    steps = steps%(Math.pow(stepsYes, nn));
  }
  
  r[0] = (steps >= stepsYes ? Math.floor(steps/stepsYes) : 0);
  steps = steps%stepsYes;
  yRow = (steps == 0 ? stepsYes : steps);

  document.getElementById("divIconsYes").innerHTML = (prevBonus == -1 ? "" : "<img src='LImages/bonus" + prevBonus + "g.gif' height='30px' width='30px' style='border:solid 1px #ffcc33'>&nbsp;");
  prevBonus = nextBonus;
  
  for(var i=0; i<10; i++)
  {
    if(r[i] != 0)
    {
      if(i != 0 && document.getElementById("divIconsYes").innerHTML != "") document.getElementById("divIconsYes").innerHTML += "<br>";
      for(var j=0; j<r[i]; j++)
      {
        document.getElementById("divIconsYes").innerHTML += "<img src='LImages/" + img[i] + "_th.jpg' height='30px' width='30px' border='0' style='border:solid 1px #660000'>&nbsp;";
      }
    }
  }
}

function RandomSound(level, success)
{
  var ctl = "";
  var rnd = RandomInt(11);
  if(level == 5)
  {
    if(rnd == 3) ctl = (success ? "SoundG1" : "SoundB1");
  }
  else if(level == 4)
  {
    if(rnd == 3) ctl = (success ? "SoundG1" : "SoundB1");  
  }
  else if(level == 3)
  {
    //if(rnd == 3) ctl = (success ? "SoundG1" : "SoundB1");      
  }
  else if(level == 2)
  {
    //if(rnd == 3) ctl = (success ? "SoundG1" : "SoundB1");  
  }
  else if(level == 1)
  {
    //if(rnd == 3) ctl = (success ? "SoundG1" : "SoundB1");  
  }  
  return ctl;
}

function RandomInt(n)
{
  return Math.floor(Math.random()*n);
}

function RevisionMode()
{
  this.Written = 1;
  this.Oral = 2;
}


function IsFillBlanks(index)
{
  if(items[index] == null) return false;
  dm = new DrillMode();
  return (items[index].drillMode == dm.FillBlanks ? true : false);
}

function IsOptionsSingleSelect(index)
{
  if(items[index] == null) return false;
  dm = new DrillMode();
  return (items[index].drillMode == dm.OptionsSingleSelect ? true : false);
}

function IsOptionsMultiSelect(index)
{
  if(items[index] == null) return false;
  dm = new DrillMode();
  return (items[index].drillMode == dm.OptionsMultiSelect ? true : false);
}

function IsSortOrder(index)
{
  if(items[index] == null) return false;
  dm = new DrillMode();
  return (items[index].drillMode == dm.SortOrder ? true : false);
}


function DrillMode()
{
  this.SwapTextWithPrefix = 1;
  this.SwapText = 2;
  this.Text = 3;
  this.FillBlanks = 4;
  this.SortOrder = 5;
  this.OptionsSingleSelect = 6;
  this.OptionsMultiSelect = 7;
}

function SetDrillMode(newRevisionMode)
{
  revisionMode = newRevisionMode;
  if(IsWritten())
  {
    document.getElementById("imgWritten").src = "LImages/written.gif"; 
    document.getElementById("imgWritten").style.border = "1px solid #cc0000"; 
    document.getElementById("imgOral").src = "LImages/oral0.gif";
    document.getElementById("imgOral").style.border = ""; 
  }
  else if(IsOral())
  {
    document.getElementById("imgWritten").src = "LImages/written0.gif"; 
    document.getElementById("imgWritten").style.border = ""; 
    document.getElementById("imgOral").src = "LImages/oral.gif";
    document.getElementById("imgOral").style.border = "1px solid #cc0000"; 
  }
  SetButtons();
  if(IsOral() == false)
  {
    document.getElementById("divAHeader").innerHTML = "Answer";
  }
  SetInputFields();
}

function Sleep(milliseconds)
{
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++)
  {
    if ((new Date().getTime() - start) > milliseconds)
    {
      break;
    }
  }
}

function IsWritten()
{
  var rm = new RevisionMode();
  if(revisionMode == rm.Written)
  {
    return true;
  }
  else
  {
    return false;
  }
}

function IsOral()
{
  var rm = new RevisionMode();
  if(revisionMode == rm.Oral)
  {
    return true;
  }
  else
  {
    return false;
  }
}

function ChangePowerplay()
{
  harakiri = false;
  StopTimer(false);
  powerplay = (powerplay ? false : true);
  if(powerplay)
  { 
    document.getElementById("imgPowerplay").style.border = "1px solid #cc0000";    
    document.getElementById("imgHarakiri").style.border = "";
    document.getElementById("divInstruction").innerHTML = "<i><font color='#ffcc33'>POWERPLAY. No mistakes allowed</font></i>";
    document.getElementById("imgHarakiri").src = "LImages/harakiri0.gif"; 
    document.getElementById("imgPowerplay").src = "LImages/powerplay.gif";
  }
  else
  {
    document.getElementById("imgPowerplay").style.border = "";    
    document.getElementById("imgHarakiri").style.border = "";    
    document.getElementById("divInstruction").innerHTML = "";
    document.getElementById("imgHarakiri").src = "LImages/harakiri0.gif"; 
    document.getElementById("imgPowerplay").src = "LImages/powerplay0.gif";
  }
  if(IsWritten()) SetAnswerFocus();
}

function ChangeHarakiri()
{
  powerplay = false;
  harakiri = (harakiri ? false : true);
  if(harakiri == false) StopTimer(false);
  
  if(harakiri)
  {     
     document.getElementById("imgHarakiri").style.border = "1px solid #cc0000";    
     document.getElementById("imgPowerplay").style.border = ""; 
     document.getElementById("imgHarakiri").src = "LImages/harakiri.gif"; 
     document.getElementById("imgPowerplay").src = "LImages/powerplay0.gif";   
     document.getElementById("divInstruction").innerHTML = "<img src='LImages/bar.jpg' width='" + timerCount + "px' height='15px'>" + harakiriMsg;
     Next();
  }
  else
  {    
    document.getElementById("imgPowerplay").style.border = "";    
    document.getElementById("imgHarakiri").style.border = "";
    document.getElementById("divInstruction").innerHTML = "";
    document.getElementById("imgHarakiri").src = "LImages/harakiri0.gif"; 
    document.getElementById("imgPowerplay").src = "LImages/powerplay0.gif";
  }
  if(IsWritten()) SetAnswerFocus();
}

function SetAnswerFocus()
{
  try{if(document.getElementById("txtA0") != null) SetFocus("txtA0");}
  catch(e){}
}

function StartTimer()
{
  StopTimer(false);
  var counter = timerCount; 

  var msg = document.getElementById("divInstruction").innerHTML; 
  timerInt = window.setInterval(function() 
  {
    counter--;         
    document.getElementById("divInstruction").innerHTML = "<img src='LImages/bar.jpg' width='" + counter + "px' height='15px'>" + harakiriMsg;
    if(counter <= 0)
    {
      if(harakiriLoops >= 3)
      {
       document.getElementById("divInstruction").innerHTML = "<font color='red'>This seems too difficult for you. Try POWERPLAY instead</font>";
       StopTimer(false);        
      }
      else
      { 
       document.getElementById("divInstruction").innerHTML = msg; 
       harakiriLoops++; 
       StopTimer(true); 
      }
    }    
  },30);
}

function StopTimer(hasFailed)
{
  clearInterval(timerInt);
  if(hasFailed)
  {
    Fail();
    Next();
  }
}

function CleanHTML(input)
{
  input = ReplaceAll(input, "&#39;", "'");
  input = ReplaceAll(input, "&#34;", "\"");
  input = ReplaceAll(input, "&nbsp;", " ");
  return input;
}

function ReplaceAll(val, replaceValue, newValue)
{
 var result = new String(val);

 while ( true )
 {
  var currentValue = result;

  result = result.replace(replaceValue, newValue);
  if ( result == currentValue )
   break;
 }

 return result;
}

function GetWords(ctl, lang1ID, lang2ID, isItem1, key)
{
  if(document.getElementById(ctl).value == "") return;
  var frame = document.getElementById("frameWords");
  var frm = frame.contentWindow.document.getElementById("frmPostback");  
  frame.contentWindow.document.getElementById("txtWord").value = document.getElementById((isItem1 ? "txtItem1" : "txtItem2")).value;
  frame.contentWindow.document.getElementById("txtSessionKey").value = key;
  frame.contentWindow.document.getElementById("txtLang1ID").value = lang1ID;
  frame.contentWindow.document.getElementById("txtLang2ID").value = lang2ID;
  frame.contentWindow.document.getElementById("txtIsItem1").value = (isItem1 ? 1 : 0);
  frm.submit();
}

function ShowWords()
{
  if(document.getElementById("divResult").innerHTML == "") return;
  parent.document.getElementById("divWords").style.visibility = "hidden";  
  parent.document.getElementById("divWords").innerHTML = document.getElementById("divResult").innerHTML;
  parent.document.getElementById("divWords").style.visibility = "visible";  
}
/*function GetWords()
{
  var words = document.getElementById("divWords");
  var foundWords = document.getElementById("divFoundWords");
  var input = document.getElementById("txtItem1");
  document.getElementById("txtWordID1").value = "";    
  document.getElementById("btnSavePair").style.visibility = "visible";
  if(words == null || Trim(input.value) == "")
  {
    foundWords.style.visibility = "hidden";
    foundWords.innerHTML = "<b>Existing Words</b>";
    return;
  }
  var found = 0;
  foundWords.style.visibility = "hidden";
  foundWords.innerHTML = "<b>Existing Words</b>";
  
  var elements = words.getElementsByTagName("div");
  for(var i=0; i<elements.length; i++)
  {      
    if(elements[i].name == "word1")
    {
      if(elements[i].id.toLowerCase().indexOf(ReplaceAll(input.value, " ", "").toLowerCase()) == 0)
      {
        found++;      
        foundWords.innerHTML += elements[i].outerHTML;
      }
      else
      {
        if(found) break; //run beyond matches
      }
    }
  }
  
  if(found != 0)
  {
    foundWords.style.visibility = "visible";
  } 
  else
  {
    foundWords.style.visibility = "hidden";    
  }
}*/

function GetItems2()
{
  var words = document.getElementById("divWords");
  var foundWords = document.getElementById("divFoundWords");
  var input = document.getElementById("txtItem2");
  document.getElementById("txtWordID2").value = "";    
  
  if(words == null || Trim(input.value) == "")
  {
    foundWords.style.visibility = "hidden";
    foundWords.innerHTML = "<b>Existing Words</b>";
    return;
  }
  var found = 0;
  foundWords.style.visibility = "hidden";
  foundWords.innerHTML = "<b>Existing Words</b>";
  
  var elements = words.getElementsByTagName("div");
  for(var i=0; i<elements.length; i++)
  {    
    if(elements[i].name == "word2")
    {
      if(elements[i].id.toLowerCase().indexOf("item" + ReplaceAll(input.value, " ", "").toLowerCase()) == 0)
      {
        found++;      
        foundWords.innerHTML += elements[i].outerHTML;
      }
      else
      {
        if(found) break; //run beyond matches
      }
    }
  }
  
  if(found != 0)
  {
    foundWords.style.visibility = "visible";    
  }  
  else
  {
    foundWords.style.visibility = "hidden";    
  }
}

function SelectWord(index, wordID, word)
{
  var fldID = "", fldTxt = "";
  if(index == 1)
  {
    fldID = "txtWordID1";
    fldTxt = "txtItem1";
  }
  else
  {
    fldID = "txtWordID2";
    fldTxt = "txtItem2";
  }
  document.getElementById(fldID).value = wordID;
  document.getElementById(fldTxt).value = word;  
}

function SubmitToPayPal(action, notAgreed)
{
    var frm = document.getElementById("form1");	
    frm.action = action;
	frm.submit();
}

function CloseMessageLink(ctl)
{
  return "<div class='CloseMessage'><label onclick='javascript:document.getElementById(\"" + ctl + "\").style.visibility = \"hidden\";'>Close</label></div>";
}

function VerifyUserInput()
{
  var result = "";
  document.getElementById("divAlert").style.visibility = "hidden";
  if(document.getElementById("txtUserName").value == "") result = "User name missing";
  if(document.getElementById("txtPassword").value == "") result += (result == "" ? "" : "<br>") + "Password missing";
  if(document.getElementById("txtEmail").value == "") result += (result == "" ? "" : "<br>") + "Email missing";
  if(document.getElementById("chkAgreed") != null && document.getElementById("chkAgreed").checked == false) result += (result == "" ? "" : "<br>") + "You have not agreed the Terms os Service";
  if(result != "")
  {
    document.getElementById("divAlert").innerHTML = CloseMessageLink("divAlert") + "<div class='Header'>Inout errors</div>" + result;    
    document.getElementById("divAlert").style.visibility = "visible";
    return false;
  }
  else
  {
    return true;
  }
}

function ShowWaitIcon(changedValues, anchor)
{
  if(document.getElementById("waitIcon") != null) document.getElementById("waitIcon").style.visibility = "visible";
}

function FlashTag(tag)
{
  //document.getElementById(tag).style.opacity = 1;
  //document.getElementById(tag).style.filter = "alpha(opacity=100)";
  //document.getElementById(tag).style.left = x + "px";
  //document.getElementById(tag).style.top = y + "px";
  document.getElementById(tag).style.zIndex = 50;
}

function DimTag(tag, z)
{
  //document.getElementById(tag).style.opacity = 0.4;
  //document.getElementById(tag).style.filter = "alpha(opacity=60)";
  //document.getElementById(tag).style.left = x;
  //document.getElementById(tag).style.top = y;
  document.getElementById(tag).style.zIndex = z;
}

function SetHomeMusic(mp3)
{
  if(homeMusicOn)
  {
    StopAudio("divLoop");
    document.getElementById("lblMusic").innerHTML = "MUSIC";
    homeMusicOn = false;
  }
  else
  {
    PlayAudioLoop(mp3);
    document.getElementById("lblMusic").innerHTML = "NO MUSIC";
    homeMusicOn = true;
  }  
}

function CloseHomeInfo()
{
  document.getElementById("divHelp").style.visibility = "hidden";
}

function ShowHomeInfo(tag)
{
  var w = 500, h = 400;
  var x = (640 - w)/2, y = (480 - h)/2;
  if(screen)
  {
    x = (screen.availWidth - w)/2;
    y = (screen.availHeight - h)/2;
  }
  var txt = ReplaceAll(document.getElementById("txtHomeInfo" + tag).value, "~~", "\"");
  txt = ReplaceAll(txt, "~", "'");
  document.getElementById("divHelp").style.left = x;
  document.getElementById("divHelp").style.top = y;
  document.getElementById("divHelp").style.width = w;
  document.getElementById("divHelp").style.height = h;
  document.getElementById("divHelp").innerHTML = txt;
  document.getElementById("divHelp").style.zIndex = "1000";
  document.getElementById("divHelp").style.visibility = "visible";
}

function CloseAlert()
{
  document.getElementById("divAlert").style.visibility = "hidden";
}

function ShowAlert(msg)
{
  var w = 500, y = 100;
  var x = (640 - w)/2;
  if(screen)
  {
    x = (screen.availWidth - w)/2;    
  }
  msg = ReplaceAll(msg, "~~", "\"");
  msg = ReplaceAll(msg, "~", "'");
  if(document.all)
  {
    document.getElementById("divAlert").style.position = "absolute";
    document.getElementById("divAlert").style.top = document.body.scrollTop + y;
  }
  else
  {
    document.getElementById("divAlert").style.position = "fixed";
    document.getElementById("divAlert").style.top = y;
  }
  document.getElementById("divAlert").style.left = x;  
  document.getElementById("divAlert").style.width = w;
  document.getElementById("divAlert").innerHTML = msg;
  document.getElementById("divAlert").style.zIndex = "1000";
  document.getElementById("divAlert").style.visibility = "visible";    
}

function ChangeInputType(oldObject, newType)
{
  var newObject = document.createElement('input');
  newObject.type = newType;
  if(oldObject.size) newObject.size = oldObject.size;
  if(oldObject.value) newObject.value = oldObject.value;
  if(oldObject.name) newObject.name = oldObject.name;
  if(oldObject.id) newObject.id = oldObject.id;
  if(oldObject.className) newObject.className = oldObject.className;
  oldObject.parentNode.replaceChild(newObject,oldObject);
  newObject.focus();
  return newObject;
}

function GetOffset(el)
 { 
    var x = 0; 
    var y = 0; 
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) { 
        x += el.offsetLeft - el.scrollLeft; 
        y += el.offsetTop - el.scrollTop; 
        el = el.parentNode; 
    } 
    return { top: y, left: x }; 
} 

function LoadHomeDeco(file)
{
  var x = GetOffset(document.getElementById("tblMain")).left;    
  document.getElementById("div0").style.left = x;  
  
  x += 30;  
  document.getElementById("div1").style.left = x;
  x += 50;
  document.getElementById("div2").style.left = x;
  x += 50;
  document.getElementById("div3").style.left = x;
  x += 50;
  document.getElementById("div4").style.left = x;
  
  x += 100;
  document.getElementById("div5").style.left = x;
  x += 50;
  document.getElementById("div6").style.left = x;
  x += 50;
  document.getElementById("div7").style.left = x;
  x += 50;
  document.getElementById("div8").style.left = x;
  
  PlayAudioLoop(file);
}

function LanguagesFromCourse()
{
  var valIn = document.getElementById("cboCourseID").value;
  var parts = valIn.split("-");
  document.getElementById("txtCourseID").value = parts[0];
  document.getElementById("cboLanguage1ID").value = parts[1];
  document.getElementById("cboLanguage2ID").value = parts[2];
}

function StopAudio(target)
{
  document.getElementById(target).innerHTML = "";
}

function PlayAudioVoice(file) 
{
  try{document.getElementById("divVoice").innerHTML = "<embed hidden='true' type='audio/mpeg' id='newVoice' src='Voice/" + file + ".mp3' volume='50' loop='false' autoplay='true'>";}
  catch(e){}
}

function PlayAudioSound(file) 
{
  try{document.getElementById("divSound").innerHTML = "<embed hidden='true' type='audio/mpeg' id='newSound' src='Sound/" + file + "' volume='50' loop='false' autoplay='true'>";}
  catch(e){}
}

function PlayAudioLoop(file) 
{
  try{document.getElementById("divLoop").innerHTML = "<embed hidden='true' type='audio/mpeg' id='newSound' src='Sound/" + file + "' volume='50' loop='true' autoplay='true'>";}
  catch(e){}
}

function GetStarted()
{
  prevBonus = -1;
  Next();
}
