//Initialisierung der globalen Variablen:
var firstLetterFirstPos;	//erstes Vorkommen des ersten Wortzeichens in allen Begriffen
var firstLetterLastPos;	//letztes Vorkommen des ersten Wortzeichens in allen Begriffen
var buchstabe;	//Erster Buchstabe des Suchbegriffes, keysenistiv
var firstLetterGB = false;	//ist der erste Buchstabe des Begriffes ein Großbuchstabe, dann ist firstLetterGB=true; 
var suchstring;	//Eingabe, (über Textfeld) nach der gesucht werden soll




			

function InitGlossar(){
	if (gebi){
		var glossarSuchfeld = document.getElementById("glossarsuchfeld");
		glossarSuchfeld.value = "";
		glossarSuchfeld.style.color = "#56636B";
		glossarSuchfeld.focus();
	}
	else{
		BrowserZuAlt();
		return;
	}
}




function BrowserZuAlt(){
	alert("Ihr Browser entspricht leider nicht den Anforderungen, die für die Suchfunktionalität nötig sind.");
}



//Funtkion toLowerCase() führt zu Fehlermeldungen, deswegen "manuelles" Umarbeiten:
var similarArray = new Array();
similarArray["A"] = "a";
similarArray["B"] = "b";
similarArray["C"] = "c";
similarArray["D"] = "d";
similarArray["E"] = "e";
similarArray["F"] = "f";
similarArray["G"] = "g";
similarArray["H"] = "h";
similarArray["I"] = "i";
similarArray["J"] = "j";
similarArray["K"] = "k";
similarArray["L"] = "l";
similarArray["M"] = "m";
similarArray["N"] = "n";
similarArray["O"] = "o";
similarArray["P"] = "p";
similarArray["Q"] = "q";
similarArray["R"] = "r";
similarArray["S"] = "s";
similarArray["T"] = "t";
similarArray["U"] = "u";
similarArray["V"] = "v";
similarArray["W"] = "w";
similarArray["X"] = "x";
similarArray["Y"] = "y";
similarArray["Z"] = "z";

//nächstes Zeichen im Alphabet:
var nextLetter = new Array("0", "1","2","3","4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");





//wenn das Wort nicht im begriffsArray vorhanden ist oder das Eingabefeld leer ist:
function SuchstringNichtGefunden(){
				//alert("(Funktion SuchstringNichtGefunden() )");
	
	var glossarSuchfeld = document.getElementById("glossarsuchfeld");
	var glossarErgebnis = document.getElementById("glossarergebnis");
	
	glossarErgebnis.style.visibility = "visible";
	
	//etwaige vorige Suchergebnisse löschen:
	glossarErgebnis.innerHTML = "";
	
		
	//wenn das Suchfeld leer ist:
	if (glossarSuchfeld.value.length == 0){
					//alert("Suchfeld ist leer\n(in Funtkion SuchstringNichtGefunden() )");		
		//Neue Ausgabe:
		glossarErgebnis.innerHTML = '<div class="suchergebnishg" style="padding-top:4px;padding-botton:4px;color:#000000;"><strong>Bitte geben Sie einen Suchbegriff ein.</strong></div>';	
						
	}
	//im Suchfeld steht zwar etwas drin, aber ein zugehöriger Begriff kann nicht gefunden werden.
	else{
		//Neue Ausgabe:
		glossarErgebnis.innerHTML = '<div class="suchergebnishg" style="padding-top:4px;padding-botton:4px;color:#000000;"><strong>Es konnte leider kein passender Begriff gefunden werden.</strong></div>';	
	}
	
}



//Ermitteln wieviele Begriffe es mit diesem Anfangsbuchstaben gibt:
function GetFirstLetterPos(firstLetterFirstPos){
	//alert("Buchstabe (keysensitiv): "+buchstabe +"\nfirstLetterFirstPos (erstes Vorkommen des Begriffes - NICHT keysensitiv): " +firstLetterFirstPos+ "\n(in Funktion GetFirstLetterPos() )");


	//Position des Buchstabens/der Zahl im nextLetter-Array (nextletter-Array enthält nur Kleinbuchstaben - bei Großbuchstaben entsprechende Anpassung)
	var pos; 
	//Kleinbuchstabe oder Zahl:
	if (!firstLetterGB){
		for (var i=0;i<nextLetter.length;i++){
			if (nextLetter[i] == buchstabe){
				pos = i;
						//alert("Vorkommen des ersten Buchstabens im nextLetter-Array (nicht keysensitiv \n pos (temporäre Variabel) = " +pos +"\n(in Funktion GetFirstLetterPos() )");
			}
		}
	
	}
	//Großbuchstabe:
	else{
		for (var i=0;i<nextLetter.length;i++){
			if (nextLetter[i] == similarArray[buchstabe]){
				pos = i;
						//alert("Vorkommen des ersten Buchstabens im nextLetter-Array (nicht keysensitiv \n pos (temporäre Variabel) = " +pos +"\n(in Funktion GetFirstLetterPos() )");
			}
		}
	}


//Ermitteln des letzten Vorkommens eines Befgriffes mit diesem Anfangsbuchstaben (NICHT keysensitiv):
	//Anfangsbuchstaben des allerletzen Begriffes herausfinden:
	var anfangsbuchstabeLetzterBegriff = keysForBegriffsArray[keysForBegriffsArray.length -1];
	anfangsbuchstabeLetzterBegriff = anfangsbuchstabeLetzterBegriff.substring(0, 1);
	//Ermitteln der Arraynummer (entspricht var pos) des Anfangsbuchstaben des allerletzen Begriffes im nextLetter-Array:
	var posAnfangsbuchstabeLetzterBegriff;
	for (var i=0;i<nextLetter.length;i++){
		if (nextLetter[i] == anfangsbuchstabeLetzterBegriff){
			posAnfangsbuchstabeLetzterBegriff = i;
		}
	}
				//alert("anfangsbuchstabeLetzterBegriff: " +anfangsbuchstabeLetzterBegriff +"posAnfangsbuchstabeLetzterBegriff: " +posAnfangsbuchstabeLetzterBegriff+ "\n(in Funktion GetFirstLetterPos() )");

		
	//wenn es nicht z bzw. der Anfangsbuchstabe des letzen Begriffes ist:
	if (pos < posAnfangsbuchstabeLetzterBegriff){		
			//alert("IF\npos vorher: " +pos +"\n(in Funktion GetFirstLetterPos() )");
		do{
			pos++;
		}while( (pos != (nextLetter.length-1)) && (alphabetArray[nextLetter[pos]] == ""))
			//bleibt auch auf z liegen, wenn z keinen Eintrag hat??
			//alert("pos nachher: " +pos +"\n(in Funktion GetFirstLetterPos() )");
		
		//alert("Nächster Buchstabe, mit dem ein Begriff beginnt (nextLetter[pos]): " +nextLetter[pos] +"\n(in Funktion GetFirstLetterPos() )");
		//alert("Position des nächsten Buchstabens, mit dem ein Begriff beginnt im alphabetArray \nalphabetArray[nextLetter[pos]]: " +alphabetArray[nextLetter[pos]]);
		firstLetterLastPos = parseInt(alphabetArray[nextLetter[pos]]);
		firstLetterLastPos = firstLetterLastPos-1;		
		
	}
	//wenn es z bzw. der Anfangsbuchstabe des letzen Begriffes ist:
	else{
		firstLetterLastPos = keysForBegriffsArray.length-1;
				//alert("ELSE\nfirstLetterLastPos: " +firstLetterLastPos +"\n(in Funktion GetFirstLetterPos() )");	
	}
	
			//alert("Letzter Begriff mit diesem Buchstaben:\nkeysForBegriffsArray[firstLetterLastPos]: "+keysForBegriffsArray[firstLetterLastPos] +"\n\nDazugehöriger Anker:\nbegriffsArray[keysForBegriffsArray[firstLetterLastPos]]: " +begriffsArray[keysForBegriffsArray[firstLetterLastPos]] +"\n(in Funktion GetFirstLetterPos() )");
			
			
	//Ebene und Wörter einblenden:
	ShowLinks();

}



//Ebene und Wörter einblenden:
function ShowLinks(){
						//alert("buchstabe: "+buchstabe+ "\nfirstLetterFirstPos: " +firstLetterFirstPos+ "\nfirstLetterLastPos: " +firstLetterLastPos);						
						
	var glossarErgebnis = document.getElementById("glossarergebnis");
	glossarErgebnis.style.visibility = "visible";
	
	//etwaige vorige Suchergebnisse löschen:
	glossarErgebnis.innerHTML = "";
	
	//Neue Ausgabe:
	glossarErgebnis.innerHTML = '<div class="suchergebnishg" style="padding-top:4px;padding-botton:4px;color:#000000;"><strong>Folgende Begriffe konnten in dieser Seite gefunden werden:</strong></div>';

	
	var ergebnis = new Array();		//"sammelt" die anzuzeigenden Links
	//wenn nur ein Buchstabe im Textfeld steht, alle Begriffe mit diesem Anfangsbuchstaben einblenden:
	if (suchstring.length == 1){
					//alert("if / Anzahl der Begriffe mit diesem Anfangsbuchstaben: "+(firstLetterLastPos-firstLetterFirstPos) +"\n(in Funktion ShowLinks() )");
		for (var i=0;i<(firstLetterLastPos-firstLetterFirstPos);i++){
			var hyperlink = document.createElement("a");
			var wohin = document.createAttribute("href");
			var tmp = parseInt(firstLetterFirstPos) + i;
			wohin.nodeValue = "#" + begriffsArray[keysForBegriffsArray[tmp]];
			hyperlink.setAttributeNode(wohin);
					
			var textString = keysForBegriffsArray[tmp];
			//wenn der erste Buchstabe ein Großbustabe ist, Link-Text mit Großbuchstaben anzeigen:
			if (firstLetterGB) textString = buchstabe + textString.substring(1, textString.length);
			var linkText = document.createTextNode(textString);
		
			hyperlink.appendChild(linkText);
			glossarErgebnis.appendChild(hyperlink);
		}
		
	}
	//mehr als 1 Buchstabe im Textfeld:
	else{
					//alert('else / suchstring: ' +suchstring +"\n(in Funktion ShowLinks() )");
		
		//Begriffe und Suchstring vergleichen:
		var j=0;
		for (var i=0;i<(firstLetterLastPos-firstLetterFirstPos);i++){
			var tmp = parseInt(firstLetterFirstPos)+i;
						//alert("Begriff " +(i+1)+ ": " +keysForBegriffsArray[tmp] +"\nAnker: " +begriffsArray[keysForBegriffsArray[tmp]] +"\n(in Funktion ShowLinks() )");
			
			var begriff = keysForBegriffsArray[tmp];
			begriff = begriff.substr(0, suchstring.length);
			
			begriff = begriff.toLowerCase();
			suchstring = suchstring.toLowerCase();
						//alert("begriff: "+begriff+ "\nsuchstring: "+suchstring +"\n(in Funktion ShowLinks() )");			

			if (begriff == suchstring){
				ergebnis[j] = keysForBegriffsArray[tmp];
							//alert("keysForBegriffsArray[tmp]: "+keysForBegriffsArray[tmp]);
							//alert("Suchstring und (Anfang des) Begriff(es) stimmen überein\nBegriff: " +ergebnis[j] +"\n(in Funktion ShowLinks() )");
				j++;
			}
		
		}
		
	}
	
				//alert("(NUR wenn mehr als 1 Buchstabe im Textfeld steht!) Anzahl der übereinstimmenden Begriffe: "+ergebnis.length);
	
	//anzuzeigende Links für die Ausgabe vorbereiten:
	for (var i=0;i<(ergebnis.length);i++){
			var hyperlink = document.createElement("a");
			var wohin = document.createAttribute("href");
			wohin.nodeValue = "#" + begriffsArray[ergebnis[i]];
			hyperlink.setAttributeNode(wohin);
					
			var textString = ergebnis[i];
			//wenn der erste Buchstabe ein Großbustabe ist, Link-Text mit Großbuchstaben anzeigen:
			if (firstLetterGB) textString = buchstabe + textString.substring(1, textString.length);
			var linkText = document.createTextNode(textString);
		
			hyperlink.appendChild(linkText);
			glossarErgebnis.appendChild(hyperlink);	
	}
	
	//wenn keine Links anzuzeigen sind, aber mehr als 1 Buchstabe im Suchfeld steht:
	if ((ergebnis.length == 0)&&(suchstring.length > 1)){
					//alert("keine Links anzuzeigen , aber mehr als 1 Buchstabe im Suchfeld");
		SuchstringNichtGefunden();		
	}
	
	
	//Aussehen der Ausgabe anpassen:
	if (firstLetterLastPos-firstLetterFirstPos > 5){
		glossarErgebnis.style.height="300px";
		glossarErgebnis.style.overflow="auto";
	}
	
	//alert("Quelltext:\n\n" +glossarErgebnis.innerHTML);
		
		
}







//Haupt-Funktion, die aufgerufen wird, wenn der Submit-button beim Schuchfeld gedrückt wird:
function SearchWord(){
	//Überprüfen, ob der Browser document.getElementById kann:
	if (!gebi){
		BrowserZuAlt();
		return;
	}
		
	
	suchstring = document.getElementById("glossarsuchfeld").value;
			
	//erster Buchstabe:
	buchstabe = suchstring.substring(0,1);

	
//wenn der erster Buchstabe ein Großbuchstabe ist: ////////////////////
	//und ein Begriff mit diesem Anfangsbuchstaben (egal ob groß oder klein) exisitiert
	if (alphabetArray[similarArray[buchstabe]]){
		firstLetterFirstPos = alphabetArray[similarArray[buchstabe]];	
		firstLetterGB = true;
							//alert("erster Buchstabe ist ein Großbuchstabe\nd.h.firstLetterGB = "+firstLetterGB +"\n\nfirstLetterFirstPos: " +firstLetterFirstPos +"\n(in Funktion SearchWord() )");	
		
		//Ermitteln wieviele Begriffe es mit diesem Anfangsbuchstaben gibt:
		GetFirstLetterPos(firstLetterFirstPos);

	}
// wenn der erste Buchstabe ein Großbuchstabe ist - Ende
// wenn der erste Buchstabe ist ein Kleinbuchstabe oder eine Zahl ist:
		//und ein Begriff mit diesem Anfangsbuchstaben (egal ob groß oder klein) exisitiert
	else if ((alphabetArray[buchstabe]) && (alphabetArray[buchstabe] != "")){
		firstLetterFirstPos = alphabetArray[buchstabe];
		
								//alert("erster Buchstabe ist ein Kleinbuchstabe oder eine Zahl \nd.h.firstLetterGB = "+ firstLetterGB +"\n\nfirstLetterFirstPos: " +firstLetterFirstPos+ "\n(in Funktion SearchWord() )");
			
		//Ermitteln wieviele Begriffe es mit diesem Anfangsbuchstaben gibt:
		GetFirstLetterPos(firstLetterFirstPos);	
		
			
	}
//wenn der erste Buchstabe ist ein Kleinbuchstabe oder eine Zahl ist - Ende
//wenn der erste Buchstabe ein Zeichen ist oder es existiert kein Begriff, der mit diesem Buchstaben beginnt
	else{
						//alert('erster Buchstabe ist keine Zahl oder kein Buchstabe,\nkommt also nicht im alphabetArray vor.\n ODER es existiert kein Begriff, der mit diesem Buchstaben beginnt\n(in Funktion SearchWord() )');
			SuchstringNichtGefunden();	
	}
//wenn der erste Buchstabe ein Zeichen ist oder es existiert kein Begriff, der mit diesem Buchstaben beginnt - Ende
	
}

