﻿function schriftgroesseShowUI() {
	//Legende
	//
	//Abkuerzung = Bedeutung
	//-------------------------------------
	//sg         = Schriftgroesse
	//Desc       = Description
	//Dec        = Decrease
	//Nom        = auf Normalgroesse setzen
	//Inc        = Increase
	
	//Beschreibung einfuegen
	var sgDesc = document.createElement("p");
	var sgDescText = "Schriftgröße ändern:";
	var sgDescText = document.createTextNode(sgDescText);
	sgDesc.style.fontSize = "0.85em";
	sgDesc.style.fontWeight = "bold";
	sgDesc.style.lineHeight = "1.11em";
	sgDesc.style.verticalAlign = "middle";
	sgDesc.appendChild(sgDescText);
	document.getElementById("rectur").appendChild(sgDesc);
	
	//vertikale Textausrichtung zentrieren
	document.getElementById("rectur").style.verticalAlign = "middle";
	
	//Link-Elemente erzeugen
	var sgDec = document.createElement("a");
	var sgNom = document.createElement("a");
	var sgInc = document.createElement("a");
	
	//Schriftgroesse setzen
	sgDec.style.fontSize = "0.85em";
	sgInc.style.fontSize = "1.11em";
	
	//Texte einfuegen
	var sgDecText = document.createTextNode("A-");
	sgDec.appendChild(sgDecText);
	var sgNomText = document.createTextNode("A");
	sgNom.appendChild(sgNomText);
	var sgIncText = document.createTextNode("A+");
	sgInc.appendChild(sgIncText);
	
	//Ziel-Attribute erzeugen
	var sgDecHref = document.createAttribute("href");
	var sgNomHref = document.createAttribute("href");
	var sgIncHref = document.createAttribute("href");
	
	//JavaScript-Funktionen einfuegen
	sgDecHref.nodeValue = "javascript:schriftgroesseChange('Dec');";
	sgDec.setAttributeNode(sgDecHref);
	sgNomHref.nodeValue = "javascript:schriftgroesseChange('Nom');";
	sgNom.setAttributeNode(sgNomHref);
	sgIncHref.nodeValue = "javascript:schriftgroesseChange('Inc');";
	sgInc.setAttributeNode(sgIncHref);
	
	//Titel-Attribute erzeugen
	var sgDecTitle = document.createAttribute("title");
	var sgNomTitle = document.createAttribute("title");
	var sgIncTitle = document.createAttribute("title");
	
	//Titel einfuegen
	sgDecTitle.nodeValue = "Schrift verkleinern";
	sgDec.setAttributeNode(sgDecTitle);
	sgNomTitle.nodeValue = "Schriftgröße zurücksetzen";
	sgNom.setAttributeNode(sgNomTitle);
	sgIncTitle.nodeValue = "Schrift vergrößern";
	sgInc.setAttributeNode(sgIncTitle);
	
	//Abstandshalter erzeugen
	var sgAbstand = document.createElement("span");
	var sgAbstand2 = document.createElement("span");
	var sgAbstandText = document.createTextNode(" / ");
	var sgAbstandText2 = document.createTextNode(" / ");
	sgAbstand.appendChild(sgAbstandText);
	sgAbstand2.appendChild(sgAbstandText2);
	
	//Knoten einhaengen
	document.getElementById("rectur").appendChild(sgDec);
	document.getElementById("rectur").appendChild(sgAbstand);
	document.getElementById("rectur").appendChild(sgNom);
	document.getElementById("rectur").appendChild(sgAbstand2);
	document.getElementById("rectur").appendChild(sgInc);
}

function schriftgroesseChange (mode) {
	//allen Text im Inhalt ansprechen
	var sgPNodes = document.getElementsByTagName("p");
	var sgH4Nodes = document.getElementsByTagName("h4");
	var sgH5Nodes = document.getElementsByTagName("h5");
	var sgLiNodes = document.getElementsByTagName("li");
	var sgInputNodes = document.getElementsByTagName("input");
	var sgTdNodes = document.getElementsByTagName("td");
	var sgLabelNodes = document.getElementsByTagName("label");
	
	//Funktion zum aendern der Schriftgroesse
	function sgChange(mode, Knoten){
		
		//Startwerte setzen, falls keine vorhanden sind
		if (Knoten.style.fontSize == "") {
			if (Knoten.nodeName == "P" || Knoten.nodeName == "LABEL") {
				Knoten.style.fontSize = 1 + "em";
			} else {
				Knoten.style.fontSize = 1.2 + "em";
			}
		}
		
		//Startwerte für Font-Height setzen, falls keine vorhanden sind
		if (Knoten.style.lineHeight == "") {
			if (Knoten.nodeName == "LI" || Knoten.nodeName == "TD" ) {
				Knoten.style.lineHeight = 1.3 + "em";
			}
		}		
		
		//Art der Aenderung auswaehlen und entsprechend aendern
		switch (mode) {
			case "Dec":
				Knoten.style.fontSize = Knoten.style.fontSize.slice(0,Knoten.style.fontSize.length-2)*0.8+"em";
				//Font-Height
				if (Knoten.nodeName == "LI" || Knoten.nodeName == "TD" ) {
					Knoten.style.lineHeight = Knoten.style.lineHeight.slice(0,Knoten.style.fontSize.length-2)*0.8+"em";
				}
				break;
			case "Nom":
				if (Knoten.nodeName == "P") {
					Knoten.style.fontSize = 1 + "em";
				} else {
					Knoten.style.fontSize = 1.2 + "em";
				}
				//Font-Height
				if (Knoten.nodeName == "LI" || Knoten.nodeName == "TD" ) {
					Knoten.style.lineHeight = 1.3+"em";
				}
				break;
			case "Inc":
				Knoten.style.fontSize = Knoten.style.fontSize.slice(0,Knoten.style.fontSize.length-2)*1.25+"em";
				//Font-Height
				if (Knoten.nodeName == "li" || Knoten.nodeName == "td" ) {
					Knoten.style.lineHeight = Knoten.style.lineHeight.slice(0,Knoten.style.fontSize.length-2)*1.25+"em";
				}
				break;
			default:
				alert("Falscher Modus bei Schriftgroessenaenderung!");
		}
	}
	
	//alle Textabsätze bearbeiten ausser dem Skript
	for (var i = 0; i < sgPNodes.length; i++) {
		if (sgPNodes[i].firstChild.data != "Schriftgröße ändern:") {
			sgChange(mode, sgPNodes[i]);
		}
	}
	
	//alle kleinen Ueberschriften aendern
	for (var i = 0; i < sgH4Nodes.length; i++) {
		sgChange(mode, sgH4Nodes[i]);
	}
	for (var i = 0; i < sgH5Nodes.length; i++) {
		sgChange(mode, sgH5Nodes[i]);
	}
	
	//alle ungeordneten Listen aendern
	for (var i = 0; i < sgLiNodes.length; i++) {
		if (sgLiNodes[i].getElementsByTagName("a").length == 0) {
			sgChange(mode, sgLiNodes[i]);
		}
	}
	
	//alle Tabellen aendern
	for (var i = 0; i < sgTdNodes.length; i++) {
		sgChange(mode, sgTdNodes[i]);
	}
	
	//alle Labels aendern
	for (var i = 0; i < sgLabelNodes.length; i++) {
		sgChange(mode, sgLabelNodes[i]);
		sgInputNodes
	}
	
	//alle Input-Felder aendern
	for (var i = 0; i < sgInputNodes.length; i++) {
		sgChange(mode, sgInputNodes[i]);
	}
}
