// zeitest.js
// Copyright H-P Postel

var anz;
var anzbearb;
var anzrichtig;
var anzfalsch;
var abfragetyp;
var testing;
var aktuell;
var set;

function NewWindow(page)
{
	var scr = 'yes';
	var rsz = 'yes';
	var br = screen.availWidth;
	var ho = screen.availHeight;
	var neufenster = window.open(page,'',
	'resizable=yes,scrollbars=yes,top=0,left=0,screenX=0,screenY=0,width='+br+',height='+ho+',fullscreen=yes');
	neufenster.focus();
	return false;
}

function ZeiData(z,p,d)
{
	this.zeichen=z;
	this.pinyin=p;
	this.deutsch=d;
	this.bearbeitet=false;
	this.gewusst=false;
}

function Init()
{
	anz = zeidatatab.length;
	ResetStatus();
	document.getElementById('content').innerHTML = '<p><b>Bitte wählen Sie:</b><br /><br /><b>Test</b><br />' +
	'<br /><input type="button" name="typ1" value="Zeichen" onclick="TypWahl(1,true);" /> ' +
	'<input type="button" name="typ2" value="Pinyin" onclick="TypWahl(2,true);" /><br /><br />' +
	'<b>Superlearning</b><br /><br /><input type="button" name="typ3" value="Zeichen" onclick="TypWahl(1,false);" /> ' +
	'<input type="button" name="typ4" value="Pinyin" onclick="TypWahl(2,false);" /></p>';
	document.getElementById('footer').innerHTML = '<p>Anzahl: ' + anz + ', bearbeitet: ' + anzbearb + 
	', richtig: ' + anzrichtig + ', falsch: ' + anzfalsch + 
	'&nbsp;&nbsp;&nbsp;<input type="button" name="Close" value="Beenden" onclick="window.close();" /></p>';
}

function TypWahl(typ,istest)
{
	ResetStatus();
	aktuell = Next();
	set = GetSolutionSet(aktuell);
	abfragetyp = typ;
	testing = istest;
	document.getElementById('content').innerHTML = '<p>' + GetHTMLSolutionSet() + '</p>';
	document.getElementById('footer').innerHTML = '<p>Anzahl: ' + anz + ', bearbeitet: ' + anzbearb + ', richtig: ' + 
	anzrichtig + ', falsch: ' + anzfalsch + 
	'&nbsp;&nbsp;&nbsp;<input type="button" name="Close" value="Beenden" onclick="window.close();" /></p>';
	if ( ! testing ) 
	{
		setTimeout('SolClick(0)',3000);
	}
}

function Weiter()
{
	aktuell = Next();
	if ( aktuell == -1 ) 
	{
		document.getElementById('content').innerHTML = '<b>Bitte wählen Sie:</b><br /><br /><b>Test</b><br />' +
		'<br /><input type="button" name="typ1" value="Zeichen" onclick="TypWahl(1,true);" /> ' +
		'<input type="button" name="typ2" value="Pinyin" onclick="TypWahl(2,true);" /><br /><br />' +
		'<b>Superlearning</b><br /><br /><input type="button" name="typ3" value="Zeichen" onclick="TypWahl(1,false);" /> ' +
		'<input type="button" name="typ4" value="Pinyin" onclick="TypWahl(2,false);" /></p>';
	}
	else
	{
	  set = GetSolutionSet(aktuell);
		document.getElementById('content').innerHTML = '<p>' + GetHTMLSolutionSet() + '</p>';
	}
	document.getElementById('footer').innerHTML = '<p>Anzahl: ' + anz + ', bearbeitet: ' + anzbearb + 
	', richtig: ' + anzrichtig + ', falsch: ' + anzfalsch + 
	'&nbsp;&nbsp;&nbsp;<input type="button" name="Close" value="Beenden" onclick="window.close();" /></p>';
	if ( aktuell == -1 ) return;
	if ( ! testing ) 
	{
		setTimeout('SolClick(0)',3000);
	}
}

function Next()
{
	var i;
	if ( anzbearb == anz )
	{
		return -1;
	}
	if ( anzbearb > (anz-3) )
	{
		for (i=0; i<anz; i++)
		{
			if ( zeidatatab[i].bearbeitet == false ) 
			{
				return i;
			}
		}
	}
	else
	{
		do
		{
			i = Zufallszahl(anz);
		}
		while ( zeidatatab[i].bearbeitet == true )
		return i;
	}
}

function SetStatus(nr,status)
{
	zeidatatab[nr].bearbeitet = true;
	anzbearb++;
	if (testing) {
		zeidatatab[nr].gewusst = status;
		if ( status ) 
		{
			anzrichtig++;
		}
		else
		{
			anzfalsch++;
		}
	}
}

function ResetStatus()
{
  var i;
	anzbearb = 0;
	anzrichtig = 0;
	anzfalsch = 0;
	for (i=0; i<anz; i++)
	{
		zeidatatab[i].bearbeitet = false;
		zeidatatab[i].gewusst = false;
	}
}

function GetSolutionSet(nr)
{
	var arr=new Array(5);
	// 0=Lösungsposition
	// 1-4=Lösungsvorschläge
	arr[0] = Zufallszahl(4) + 1;
	arr[arr[0]] = nr;
	for (i=1; i<=4; i++)
	{
		if (i != arr[0]) 
		{
			do
			{
				arr[i] = Zufallszahl(anz);
				ok = true;
				if ((arr[i] == nr) || (zeidatatab[arr[i]].zeichen == zeidatatab[nr].zeichen) || 
				                      (zeidatatab[arr[i]].pinyin == zeidatatab[nr].pinyin))  
				{
					ok = false;
				}
				for (j=1; (j < i) && ok; j++)
				{
					if ((arr[i] == arr[j]) || (zeidatatab[arr[i]].zeichen == zeidatatab[arr[j]].zeichen) ||
					                          (zeidatatab[arr[i]].pinyin == zeidatatab[arr[j]].pinyin)) 
					{
						ok = false;
					}
				}
			}
			while (! ok);
		}
	}
	return arr;
}

function Zufallszahl(max)  // 0..max-1
{
	var i;
	do
	{
		i = Math.floor(max * Math.random());
	}
	while (i < 0 || i >= max);
	return i;
}

function GetHTMLSolutionSet()
{
	var text;
	if (abfragetyp==1) 
	{
		if ( testing ) 
		{
			text = '<span class="bigger">' + zeidatatab[aktuell].pinyin + '<br /><br />' + 
			zeidatatab[aktuell].deutsch + '<br /><br /><b>Zeichen auswählen:</b></span><br /><br />';
			text += '<input type="radio" name="sol" value="' + ((set[0]==1)?1:0) + 
			'" onclick="SolClick((set[0]==1)?1:0);" /><span class="chinchar" onclick="SolClick((set[0]==1)?1:0);">' +
			zeidatatab[set[1]].zeichen + '</span>&nbsp;&nbsp;&nbsp;';
			text += '<input type="radio" name="sol" value="' + ((set[0]==2)?1:0) + 
			'" onclick="SolClick((set[0]==2)?1:0);" /><span class="chinchar" onclick="SolClick((set[0]==2)?1:0);">' +
			zeidatatab[set[2]].zeichen + '</span>&nbsp;&nbsp;&nbsp;';
			text += '<input type="radio" name="sol" value="' + ((set[0]==3)?1:0) + 
			'" onclick="SolClick((set[0]==3)?1:0);" /><span class="chinchar" onclick="SolClick((set[0]==3)?1:0);">' +
			zeidatatab[set[3]].zeichen + '</span>&nbsp;&nbsp;&nbsp;';
			text += '<input type="radio" name="sol" value="' + ((set[0]==4)?1:0) + 
			'" onclick="SolClick((set[0]==4)?1:0);" /><span class="chinchar" onclick="SolClick((set[0]==4)?1:0);">' + 
			zeidatatab[set[4]].zeichen + '</span>';
		}
		else
		{
			text = '<span class="bigger">' + zeidatatab[aktuell].pinyin + '<br /><br />' + 
			zeidatatab[aktuell].deutsch + '</span><br /><br /><span class="chinchar">?</span>';
		}
	}
	else
	{
		if ( testing ) 
		{
			text = '<span class="bigger">' + zeidatatab[aktuell].deutsch + '<br /><br /></span><span class="chinchar">' +
			zeidatatab[aktuell].zeichen + '</span><br /><br /><span class="bigger"><b>Pinyin auswählen:</b></span><br /><br />';
			text += '<input type="radio" name="sol" value="' + ((set[0]==1)?1:0) + 
			'" onclick="SolClick((set[0]==1)?1:0);" /><span class="bigger" onclick="SolClick((set[0]==1)?1:0);">' +
			zeidatatab[set[1]].pinyin + '</span>&nbsp;&nbsp;&nbsp;';
			text += '<input type="radio" name="sol" value="' + ((set[0]==2)?1:0) + 
			'" onclick="SolClick((set[0]==2)?1:0);" /><span class="bigger" onclick="SolClick((set[0]==2)?1:0);">' + 
			zeidatatab[set[2]].pinyin + '</span>&nbsp;&nbsp;&nbsp;';
			text += '<input type="radio" name="sol" value="' + ((set[0]==3)?1:0) + 
			'" onclick="SolClick((set[0]==3)?1:0);" /><span class="bigger" onclick="SolClick((set[0]==3)?1:0);">' + 
			zeidatatab[set[3]].pinyin + '</span>&nbsp;&nbsp;&nbsp;';
			text += '<input type="radio" name="sol" value="' + ((set[0]==4)?1:0) + 
			'" onclick="SolClick((set[0]==4)?1:0);" /><span class="bigger" onclick="SolClick((set[0]==4)?1:0);">' + 
			zeidatatab[set[4]].pinyin + '</span>';
		}
		else
		{
			text = '<span class="bigger">' + zeidatatab[aktuell].deutsch + '<br /><br /></span><span class="chinchar">' +
			zeidatatab[aktuell].zeichen + '</span><br /><br /><span class="bigger"><b>?</b></span>';
		}
	}
	return text; 
}

function SolClick(res)
{
	var text, t;
	if (res == 1)
	{
		SetStatus(aktuell,true);
		text = '<p><span class="bigger"><b>RICHTIG!</b><br /><br />';
		t = 750;
	}
	else
	{
		SetStatus(aktuell,false);
		if ( testing ) {
			text = '<p><span class="bigger"><b>FALSCH - richtig ist:</b><br /><br />';
			t = 3000;
		}
		else
		{
			text = '<p><span class="bigger">';
			t = 3000;
		}
	}
	if ( abfragetyp == 1 )
	{
		text = text + zeidatatab[aktuell].pinyin + '<br /><br />' + 
		zeidatatab[aktuell].deutsch + '</span><br /><br /><span class="chinchar">' + 
		zeidatatab[aktuell].zeichen + '</span></p>';
	}
	else
	{
		text = text + zeidatatab[aktuell].deutsch + '</span><br /><br /><span class="chinchar">' +
		zeidatatab[aktuell].zeichen + '</span><br /><br /><span class="bigger"><b>' + zeidatatab[aktuell].pinyin +
		'</b></span></p>';
	}
	document.getElementById('content').innerHTML = text;
	setTimeout('Weiter()',t);
}
