function setzeDefaultMatrix() {
	document.applets.fuzzy.defaultInit();
	var e=document.getElementById("matrix");
	var s=document.applets.fuzzy.liefereWerteFuer("nachricht");
	e.innerHTML=s;
}

function zeigFelder(formName) {
	var i;
	var text="";
	var elements=document[formName].elements;
	var f;
	for (i=0; i<elements.length; ++i) {
		f=elements[i];	// das Feld
		if (f.type=="submit") continue;
		if ((f.type=="checkbox" || f.type=="radio") && !f.checked) continue;
		if (i>0) text+="\n";
		text+=f.name+": \""+f.value+"\"";
	}
	alert(text);
}

/*
	Stellt den angegebenen Schwellwert in die geforderten
	Grenzen.
	Es wird der korrigierte Wert geliefert, gleichzeitig
	wird die Korrektur auch im Eingabefeld sichtbar gemacht.
*/
function korrigiereSchwellwert(feld,min,max) {
	var w=parseFloat(feld.value);
	if (w<min) return feld.value=min;
	if (w>max) return feld.value=max;
	return w;
}

function noenter() {
  return !(window.event && window.event.keyCode == 13);
}


/**
	Rechnet die Ähnlichkeiten zwischen 1 und 5 weiteren Strings nach
	einer Reihe von Vergleichsverfahren aus und stellt die Ergebnisse
	in einer Matrix dar
*/
function berechne() {
	// alert("in berechne()");
	var elements=document['uform'].elements;
	// document.applets.fuzzy.setzeAeGradStilAnalog(elements["analog"].checked);
	document.applets.fuzzy.setzeAeGradStilDiskret(elements["diskret"].checked);
	document.applets.fuzzy.setzeSchwellwert(korrigiereSchwellwert(elements["schwellwert"],0.0,1.0));

	var eingaben=gibEingabeStrings(elements,"ks");
	// alert(eingaben);
	document.applets.fuzzy.nimmStringListe(eingaben);

	var e=document.getElementById("matrix");
	var s=document.applets.fuzzy.liefereWerteFuer(elements["eingabe"].value);
	// alert(s);
	e.innerHTML=s;
	//e.innerHTML="<textarea>"+s+"</textarea>";
	// zeigFelder('uform');
	return false;
}

/*
	Ordnet eine Reihe von im Applet fest definierten Strings
	gemäß ihrer Ähnlichkeit mit einem hier eingegebenen String
	und nach dem gewählten Verfahren
*/
function ordneListe() {
	// zeigFelder('olform');
	var elements=document["olform"].elements;
	var eingaben=gibEingabeStrings(elements,"os");
	document.applets.fuzzy.nimmStringListe(eingaben);

	var e=document.getElementById("zuOrdnendeListe");
	var s=document.applets.fuzzy.ordneListeNachAehnlichkeitMit(elements["eingabe"].value,elements["verfahren"].value);
	//alert(s);
	e.innerHTML=s;
	//e.innerHTML="<textarea>"+s+"</textarea>";
}

function korrigiereEingabe() {
	var elements=document["korrform"].elements;
	var eingaben=gibEingabeStrings(elements,"os");
	document.applets.fuzzy.nimmStringListe(eingaben);
	var e=document.getElementById("korrigierteEingabe");
	var schwellwert=elements["ueberschwellig"].checked?korrigiereSchwellwert(elements["schwellwert"],0.0,1.0):0.0;	// der angegebene Schwellwert
	var s=document.applets.fuzzy.gibAehnlichstenMit(elements["eingabe"].value,schwellwert,elements["verfahren"].value);
	if (!s) s="&nbsp;";
	s="<table><tr><td>"+s+"</table>";
	e.innerHTML=s;
	// e.innerHTML="<textarea>"+s+"</textarea>";
}

function pruefeAufBadGuy() {
	var elements=document["badguyform"].elements;
	var eingaben=gibEingabeStrings(elements,"os");
	document.applets.fuzzy.nimmStringListe(eingaben);
	var e=document.getElementById("badguy");
	var schwellwert=elements["ueberschwellig"].checked?korrigiereSchwellwert(elements["schwellwert"],0.0,1.0):0.0;	// der angegebene Schwellwert
	var s=document.applets.fuzzy.gibAehnlichstenMit(elements["eingabe"].value,schwellwert,elements["verfahren"].value);
	if (s)
		s="<table><tr><td><span style='background-color:#ffb090'>"+s+"</span> !!!</table>";
	else
		s="<table><tr><td>&nbsp;</table>";
	// alert(s);
	e.innerHTML=s;
	///e.innerHTML="<textarea>"+s+"</textarea>";
}

function pruefeNichtInListe() {
	var elements=document["nichtinlisteform"].elements;
	var eingaben=gibEingabeStrings(elements,"os");
	document.applets.fuzzy.nimmStringListe(eingaben);
	var e=document.getElementById("nichtinliste");
	var schwellwert=elements["ueberschwellig"].checked?korrigiereSchwellwert(elements["schwellwert"],0.0,1.0):0.0;	// der angegebene Schwellwert
	var s=document.applets.fuzzy.gibAehnlichstenMit(elements["eingabe"].value,schwellwert,elements["verfahren"].value);
	// alert(s);
	if (!s)
		s="<table><tr><td><span style='background-color:#ffb090'>"+elements["eingabe"].value+"</span> ???</table>";
		// s="<table><tr><td>Achtung, unbekanntes oder Nicht-Gemüse: <span style='background-color:#ffb090'>"+elements["eingabe"].value+"</span> !!!</table>";
	else
		s="<table><tr><td>&nbsp;</table>";
	e.innerHTML=s;
	///e.innerHTML="<textarea>"+s+"</textarea>";

}

/**
	Wird aufgerufen, wenn eine Suche im Text ausgeführt wird.
	Im Ergebnis wird jeder char entsprechend der Matchqualität
	an seiner Position gefärbt.

	(Der Text ist vorläufig nicht in der Oberfläche zu ändern, sondern im Applet fest kodiert.)
*/
function zeigeSuchErgebnis() {
	var elements=document['suchform'].elements;
	var ueberschwellig=elements["diskret"].checked;	// nur überschwellige Ähnlichkeiten hervorheben?
	var schwellwert=korrigiereSchwellwert(elements["schwellwert"],0.0,1.0);	// der angegebene Schwellwert
	var e=document.getElementById("basistext");	// HTML-Element, das den markierten Text anzeigt
	var s=document.applets.fuzzy.liefereTextMatchQualitaetHTML(elements["eingabe"].value,elements["verfahren"].value,ueberschwellig?schwellwert:0.0);
	// alert(s);
	e.innerHTML=s;
	// e.innerHTML="<textarea>"+s+"</textarea>";
	zeigeSuchErgebnisAuchKWIC(elements["eingabe"].value,elements["verfahren"].value,ueberschwellig?schwellwert:0.0);
}

/**
	Wird aufgerufen, wenn eine Suche im Text ausgeführt wird.
	Das Ergebnis wird als KWIC-Liste gezeigt.
*/
/*function zeigeSuchErgebnisKWIC() {
	var elements=document['suchkwicform'].elements;
	var ueberschwellig=elements["diskret"].checked;	// nur überschwellige Ähnlichkeiten hervorheben?
	var schwellwert=ueberschwellig
		? korrigiereSchwellwert(elements["schwellwert"],0.5,1.0)
		: 0.5;
	var e=document.getElementById("kwicliste");	// HTML-Element, das den markierten Text anzeigt
	var s=document.applets.fuzzy.liefereTextSucheKWIC(elements["eingabe"].value,elements["verfahren"].value,ueberschwellig?schwellwert:0.0);
	// alert(s);
	e.innerHTML=s;
	// e.innerHTML="<textarea>"+s+"</textarea>";
}*/

/**
	Wird aufgerufen, wenn eine Suche im Text ausgeführt wird.
	Das Ergebnis wird als KWIC-Liste gezeigt.
*/
function zeigeSuchErgebnisAuchKWIC(eingabe,verfahren,schwellwert) {
	if (schwellwert<0.5) schwellwert=0.5;
	var e=document.getElementById("kwicliste");	// HTML-Element, das den markierten Text anzeigt
	var s=document.applets.fuzzy.liefereTextSucheKWIC(eingabe,verfahren,schwellwert);
	// alert(s);
	e.innerHTML=s;
	// e.innerHTML="<textarea>"+s+"</textarea>";
}

/*
	Holt die Wert aller Felder in Elements, die mit praefix beginnen
	und eine mit 0 beginnende und fortlaufende Nummer haben,
	z.B. "feld0", "feld1" ...
*/
function gibEingabeStrings(elements,praefix) {
	var arr = new Array();
	var i=0;
	var f;
	while (true) {
		f=elements[praefix+i];
		if (!f) break;	// Feld gibt's nicht mehr? Abbruch
		arr[i++]=f.value;
	}
	return arr.join("\n");	// macht einen String aus den Eingaben und setzt \n als Trenner ein
}
