var message="";
var qKette = new Array();
var words=new Array(500);
var defs=new Array(500);
var tempArray = new Array(10);
var countQ=0;
var currentQ=0;
var bQuizDone = new Boolean(false);
var antwort ="";
var bQDone = new Boolean(true); //question done 
var numRight=0;
var answers = new Array();
var pics = new Array();
var bShow = new Boolean(false);
var bOwnWord = new Boolean(false)
var mright=0;
var mtries=0;
var timerID=null;
var defStyle0="<div class='fed' id='td";
var defStyle1="' style=\"cursor: pointer\" onmouseout=\"mausMatchOut(this.style)\" onmouseover=\"mausMatchOver(this.style)\" onclick=\"checkMatch(this.id)\">"
var defStyle2="</div>";
var qMode=0;
var currWord=0;
var matchAnswer="";
var countWords=0;

var extraDefs=new Array(19);

if (document.URL.indexOf("german") ==-1) {dots="../../"} else {dots="../../../../"}

extraDefs[0] = "the name for the first person to arrive at a party or meeting";
extraDefs[3] = "hot and cold at the same time";
extraDefs[1] = "a method of moving light objects from one place to another";
extraDefs[2] = "a thick kind of paper used for important homework";
extraDefs[18] = "a strong feeling of wanting to pull someone\'s hair";
extraDefs[4] = "to remain sitting when everyone else has left the room";
extraDefs[5] = "to move the arm quickly in a sport such as tennis or badminton";
extraDefs[6] = "able to understand easy problems very quickly";
extraDefs[7] = "a piece of work done quickly and carefully";
extraDefs[8] = "one of the first types of mobile phone";
extraDefs[9] = "a small piece of delicious hot sweet food";
extraDefs[10] = "to hit someone with a soft fruit";
extraDefs[11] = "unable to work because it\'s too cold";
extraDefs[12] = "using a knife to burst a bubble";
extraDefs[13] = "washing the car although it\s already clean";
extraDefs[14] = "she always ..... her lunch before eating it";
extraDefs[15] = "if you are lazy, you will never ..... a bird";
extraDefs[16] = "the next time you steal my planner I will bite a .....";
extraDefs[17] = "dogs, books, butterflies, ....., etc.";

//for (var c=0; c<10;c++){tempArray[c]=extraDefs[c]}


function formatQ(frage) {

var parts;
var temp;
var add="";

parts=frage.split("^")

if (parts[1].indexOf("~") != -1)
 {
  parts[1] = parts[1].substring(0,parts[1].indexOf("~"))
 }

switch (parts[0]) {

case "1":

antwort=parts[2];
add=" (Write True or False.)";
break;

case "2":

antwort=parts[2];
return parts[1].replace(parts[2],"............");
break;

case "3":

temp=parts[2].split(",");
antwort=temp[1];
return parts[1].replace("???",temp[0]);
break;

case "4":

temp=parts[2].split(",");
antwort=temp[0];
return getMulti(parts[1],parts[2]);
break;


case "5":

antwort=parts[2];
break;


default:
break;

}
return(parts[1] + add)



}


function getMulti(frage,distract) {

var ranNum=0;
var getan=new Array();
var jumbled=new Array();
var temp=frage + "<p>";
var parts;

parts=distract.split(",")

ranNum=0;

for (var c=0; c < parts.length; c++) {
 getan[c]=0;
 jumbled[c]="";
}

// allocate correct answer + comment to tempA


// randomize the answer + the correct answer pos 0
for (var c=0; c < parts.length; c++) {
  do
    {
     
    ranNum= Math.round(Math.random()*(parts.length-1));
  
   }
    while(getan[ranNum] > 0) 

     getan[ranNum] = 1;
     
     jumbled[ranNum]  += "- " + parts[c] + "<br>";
}

for (var c=0; c < parts.length; c++)
{
temp +=jumbled[c];
}

return (temp + "</p>")

}

function nextQ () {
if ((bQDone==false) && (currentQ > 0)) {
popAlert("You must do this question before going to the next. (Remember to press Enter to check your answer.)\n\n If you don\'t know the answer, type a ? and then press Enter")
document.getElementById("guess").focus();
}
else
{


if (bQuizDone==false)
{
document.getElementById("pic").src=dots + "images/blank.gif";
document.getElementById('guess').disabled=false;
//bQDone=false;
document.getElementById("feedback").innerHTML = "";

document.getElementById("guess").value="";

document.getElementById("guess").focus();
//popAlert(formatQ(qKette[currentQ]));
document.getElementById("question").innerHTML=formatQ(qKette[currentQ]);
removeJK();
if (pics[currentQ] != "") 
{
 document.getElementById("bild").src=dots + "images/blank.gif";
}
else
{
document.getElementById("bild").src=dots + "images/blank.gif";
}

currentQ++;

if (currentQ > countQ-1) {
 bQuizDone=true;
}
else if (currentQ > countQ) {
 document.getElementById('goodbye').innerHTML=getGoodbye();
 document.getElementById('goodbye').style.backgroundColor="#FFFFCE"
}
document.getElementById("qnum").innerHTML=currentQ + " / " + countQ;

}
}

}




function printAnswers () {

var temp="<br>";

answers.sort();
for (var i=0; i < answers.length; i++) 
{

if ((answers[i].toLowerCase() != "true") && (answers[i].toLowerCase() != "false"))
{temp+= answers[i] + "<br>"}

}


document.getElementById("answers").innerHTML=temp + "<br>true<br>false";
}

function show() {

if (bShow==false)
 {
document.getElementById("answers").style.visibility="visible";
document.getElementById("showhide").value="Hide answers";
bShow=true;
}
else
{
document.getElementById("answers").style.visibility="hidden";
document.getElementById("showhide").value="Show answers";
bShow=false;
}

if (document.getElementById("guess").disabled == false)
{document.getElementById("guess").focus();}

}


function stripJK(s,part2,countQ) {


var parts=part2.split(",")
var partsJK=parts[0].split("~")


jap[countQ]=partsJK[1];
kor[countQ]=partsJK[2];


return s.replace("~" +partsJK[1] + "~" + partsJK[2] , "")

}

function q(s) {

var parts=s.split(" ");
countWords+=parts.length;
qKette[countQ]=s;
countQ++;

}



function getGoodbye() {

var bye="";

if (bOwnWord == false) {
 bye="Click <i>Start again</i> to do the quiz again. Or click the <i>Exit</i> button to do a different quiz!<br><br>";
}

else
{
bye="Press F5 or click Refresh to do the quiz again."
}
return("<br>That was the last question. Your score is: " + parseInt(document.getElementById("score").innerHTML) +"%.<br><br>" + bye);
}


function trim(kette) {

var temp="";
temp=kette.toLowerCase();
temp=temp.replace(/ /g,"");
return temp

}


function updateScore(mode) {

var erg =0;

if (mode == 1) {
 numRight++;
} 
erg = (numRight / countQ) * 100
return (erg.toString() + " ");

}


function offneBAK(datei) {

checkFenster();


var printData='dependent=1,toolbar=0,locationbar=0,directories=0,status=0,menubar=0,scrollbars=1,width=800,height=600,resizable=no';

 fenster=window.open(datei,'tt',printData);
 fenster.moveTo(0,0);
 fenster.document.close();

}


function remove(){

document.getElementById('guess').value="";
if (bQDone==false) { 
  document.getElementById('guess').focus();
  }
}


function getShowAnswer(jk) {



var parts=jk.split("~")

if (jk.indexOf("~") != -1)
{


return("<span style='color: blue; cursor: pointer' onmouseout=removeJK() onmouseover=showJK('" + parts[1] + "~" + parts[2] + "')>"+ parts[0] + "</span>");

}
else
{
return (jk)
}

}

function removeJK () {

document.getElementById("japan").style.visibility="hidden";
document.getElementById("korea").style.visibility="hidden";


}

function showJK (jk) {


var parts=jk.split("~")
document.getElementById("japan").style.visibility="visible";
document.getElementById("japan").innerHTML=parts[0];

document.getElementById("korea").style.visibility="visible";
document.getElementById("korea").innerHTML=parts[1];

//return("***");
}


function zeig(){


//document.getElementById('guess').value=antwort;

document.getElementById("japan").style.visibility="visible";
document.getElementById("japan").innerHTML=jap[currentQ-1];

document.getElementById("korea").style.visibility="visible";
document.getElementById("korea").innerHTML=kor[currentQ-1];


}


function setUpMatch () {
var parts;
for (var c=0; c < countQ; c++)
{
 parts=qKette[c].split("#");
 words[c]=parts[0];
 defs[c] = parts[1];
}

//for (var c=0; c < countQ; c++) {popAlert(defs[c])}
if (document.URL.indexOf("_r.htm") !=-1) {randomize()}
nextMatchWord(0)

}

function randomize () {

var done = new Array(countQ);
var ran=0;
var tempWords=new Array(countQ);
var tempDefs=new Array(countQ);
var tempQKette=new Array(countQ);

for (var c=0; c < countQ; c++) {done[c]=0;}

for (var c=0; c < countQ; c++)
{
do {ran=Math.floor(Math.random()* countQ)} 
while(done[ran]==1)
done[ran]=1;
tempWords[c]=words[ran];
tempDefs[c]=defs[ran];
tempQKette[c]=qKette[ran];

}

words=tempWords; defs=tempDefs;qKette=tempQKette;


}


function nextMatchWord(wNum) {

var teile;

document.getElementById("qnum").innerHTML=(wNum+1).toString() + "/" + (countQ).toString();
var temp="";

if (qType=="q21pic") {

 document.getElementById("picc").src=root+"vocab/images/" + getCaption(words[wNum],"pic");
 document.getElementById("picc").title=" "+defs[wNum]+" ";

 }
else
{ 
document.getElementById("mot").innerHTML=words[wNum];
 document.getElementById("mot").title=" "+defs[wNum]+" ";

}

// clear tempArray
for (var c=0; c < 10; c++){tempArray[c]=""}

// correct def is first element in array

matchAnswer=defs[wNum];

//get extradefs if necessay

if (countQ < 10) 

{
 // put put existing defs into temparray

//for (var c=0; c < countQ; c++) {done[c]=0;}

 for (var c = 0; c < countQ;c++)
  {
 if (c == wNum)
{  
 tempArray[c]=defs[wNum];
 }
 else
 {
  tempArray[c]=defs[c]; 
  }
   
  }

// now fill rest of tempArray
 getExtraDefs();
// countQ=10;
}

else 
{
//randomize defs if more than 10

var done = new Array(countQ);
var ran=0

for (var c=0; c < countQ; c++) {done[c]=0;}

//teile = defs[wNum].split("^");
//tempArray[c]=teile[0];

tempArray[0]=defs[wNum];

for (var c=1; c < 10; c++)
{
//if (c==wNum) 
//{
// do nothing
//tempArray[c]=defs[wNum];
//}
//else
//{
do {ran=Math.floor(Math.random()* countQ - 1 + 1)} 
while(ran==wNum || done[ran]==1)
done[ran]=1;
teile = defs[ran].split("^");
tempArray[c]=teile[0];

}
//
//
//}
}
//tempArray[0]=matchAnswer;
//for (var c=0; c < 10; c++) {popAlert(tempArray[c])}
// now wort temparray i.e. mix them
tempArray.sort();

for (var c=0; c < 10; c++)
{
temp+=defStyle0+c.toString() +  defStyle1  + tempArray[c] + defStyle2;


}

document.getElementById("defs").innerHTML=temp;

}

function getExtraDefs() {

var done = new Array(extraDefs.length);
var ran=0

for (var c=0; c < extraDefs.length; c++) {done[c]=0;}

for (var c=countQ; c < 11; c++)
{
do {ran=Math.floor(Math.random()* extraDefs.length - 1 + 1)+1} 
while(done[ran]==1)
//popAlert(c + " " + ran)
done[ran]=1;
tempArray[c]=extraDefs[ran];
//popAlert(c + " " + tempArray[c])
}

}

function showOwn() {

qMode=0;

var lines=document.getElementById("own").value;                                   
if (lines.indexOf("#") == -1) {

popAlert("Sorry, you have no words or you have not written them in the correct way! \n\nClick Instructions to find out how to make the quiz with your own words.")

}

else

{
var parts=lines.split("\n");
var parts2;

bOwnWord = true;
//popAlert("escpape apostrophes");
for (var c=0;c < parts.length; c++) {
 if (parts[c].indexOf("#") != -1)
  {
   parts2=parts[c].split("#");
   q('3^???^' + putinapost(parts2[1]) + "," + putinapost(parts2[0])); 
  }
}

document.getElementById("input").style.visibility="hidden";
document.getElementById("quiz").style.visibility="visible";
init();

}
}

function endMessage() {

var t="That was the last question. Your score is: " + document.getElementById("mscore").innerHTML + ".\n\n";
stoptime();

if (document.getElementById("zeit").value != " 0")
{
t+="And congratulations - you beat the clock!"; 
}
t+="\n\nClick Reset to start again. (Clicking Refresh-F5 may not reset the timer.)";
return (t);
}

function nextW () {
if (currWord ==countQ-1) {
popAlert(endMessage())
}
else
{
currWord++;
nextMatchWord(currWord);
}
}
function init()  {

 if (document.layers) 
  {document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
 else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}

if (document.URL.indexOf("q21") != -1 || document.URL.indexOf("games") != -1 || document.URL.indexOf("german") != -1) 
 {
 qType="q21pic";
 }
 else
 {
 qType="q12m";
 }

setUpMatch()
timerID=window.setTimeout('countdown()',1000);
document.getElementById("zeit").value=getCountTime();

}

function getCountTime () {

return(" " +(countQ*timefactor()).toString())

}

function timefactor() {


if (countWords / countQ < 3) {return 4}
if (countWords / countQ < 5) {return 5}
if (countWords / countQ < 7) {return 7}
if (countWords / countQ < 9) {return 9}

return 9;

}

function auf () {

checkFenster();

var fensterData='dependent=1,toolbar=0,locationbar=0,directories=0,status=0,menubar=0,scrollbars=1,width=600,height=500,resizable=no';

 fenster=window.open('instruct.htm','tt',fensterData);
 fenster.moveTo(0,0);
 fenster.document.close();
 
}

function putinapost(kette) {

return(kette.replace(/'/g,"\'"));

}


function checkMatch (defNum) {

// only respond if not already clicked)
if (document.getElementById(defNum).innerHTML.indexOf("images") == -1) {

document.getElementById("mscore").innerHTML="";
mtries++;
//popAlert(removeHTML(matchAnswer))
//popAlert(removeHTML(document.getElementById(defNum).innerHTML))
if (removeHTML(matchAnswer).toLowerCase() == removeHTML(document.getElementById(defNum).innerHTML).toLowerCase())
{
if (bPlaySound==true) {sound(0)}
document.getElementById(defNum).innerHTML="<img src='" + dots + "images/yes.gif'>&nbsp;&nbsp;&nbsp;" + document.getElementById(defNum).innerHTML 
mright++;
// see q12Ex-r.txt

if (document.getElementById("mot"))
 {
 if (document.getElementById("mot").innerHTML.indexOf("..........") != -1)
 {
 document.getElementById("dots").innerHTML="<span style='color: black'>" + matchAnswer + "</span>"
 }
}

checkifLastQ();

}
else 
{
if (bPlaySound==true) {sound(1)}
document.getElementById(defNum).innerHTML="<img src='" + dots + "images/no.gif'>&nbsp;&nbsp;&nbsp;" + document.getElementById(defNum).innerHTML 

}
document.getElementById("mscore").innerHTML=parseInt((mright / mtries)*100) + " %";

}
}

function checkifLastQ() {

var parts=document.getElementById("qnum").innerHTML.split("/");



if (parts[0]==parts[1])
{
if (qType=="q21pic") {
 document.getElementById("picc").src=root+"vocab/images/stop.gif";
}
else
{
}
}

}
function random () {

var done = new Array(10);
var random = new Array(10)
var ran=0

for (var c=1; c< 10; c++) {done[c]=0;}

for (var c=1; c < 10; c++)
{
do {ran=Math.floor(Math.random()* 10 - 1 + 1)+1} 
while(done[ran]==1)
done[ran]=1;
random[c]=ran;
}



var temp=""
for (var c=1; c< 10; c++)
{
temp+=random[c]+ " ";
}

//popAlert(temp)





for (var c=1; c < 10; c++)
{
tempArray[c]=defs[Math.floor(Math.random()*9- 1 + 1)+1]
}


}


function mausMatchOut (def) {

def.color="#000000";
}
function mausMatchOver (def) {

def.color="red";
}


function countdown() 
   { 
  var noch=Number(document.getElementById('zeit').value); 
  var absSekunden = Math.round(ZeitBerechnen()); 
  
  if (noch == 0) {
   popAlert("Sorry, Time's up! You can keep playing, or click Reset to start again.");
   clearTimeout(timerID);
   if (bPlaySound==true) {sound(1)}
   }
   else  
    {
    document.getElementById('zeit').value =  " " + (noch - 1);
    timerID=window.setTimeout('countdown()',1000); 
    }
  }  

  function ZeitBerechnen()
   { 
    var Immernoch = new Date(); 
    return((Immernoch.getTime() - Start)/1000); 
   }

 function clickIE() {if (document.all) {(message);return false;}}
 function clickNS(e) {if 
 (document.layers||(document.getElementById&&!document.all)) {
 if (e.which==2||e.which==3) {(message);return false;}}}
 
 
function getCaption(kette,mode) {

if (kette.indexOf('^') == -1)
{
return(kette)
} 
else
{
var parts=kette.split("^");

 document.getElementById("caption").innerHTML=parts[1];
 return(parts[0]);
}
 
}


function removeHTML (kette) {

var teile =kette.split("^");

kette=teile[0];
kette=kette.replace(/\s/g,"");
kette=kette.replace(/<i>/ig,"");
kette=kette.replace(/<\/i>/ig,"");
kette=kette.replace(/<b>/ig,"");
kette=kette.replace(/<\/b>/ig,"");
kette=kette.replace(/<span>/ig,"");
kette=kette.replace(/<\/span>/ig,"");
kette=kette.replace(/<\/sub>/ig,"");
kette=kette.replace(/<\/sup>/ig,"");
kette=kette.replace(/<sub>/ig,"");
kette=kette.replace(/<sup>/ig,"");
return(kette);

}

