
/**
fontsize.js: Die eingestellte Schriftgröße wird mit Hilfe des Fensternamens übertragen
wobei folgendes Muster verwendet wird '100-100-%' oder '16-16-px'. Die erste Zahl ist 
die Basisgröße, die zweite die aktuelle Schriftgröße und als letztes die browserabhängige 
Einheit; für den IE in % und den Rest in px.
*/

var myFs = {
	init:function(config){
		istProzent = false;
		istPixel = false;
		var currFs = myFs.getBodyFontSize();
		var fensterName = myFs.pruefeWindowName(window.name);
		if(!fensterName){ 
			// Der erste Eintritt auf der Seite ermittelt die aktuelle Schriftgröße für body und 
			// die browserabhängige Einheit und speichert alles nach o.g. Muster in window.name
			var speichern = parseInt(currFs) + '-' + parseInt(currFs); // ergibt 100-100 oder 16-16
			var einheit = currFs.slice(currFs.length-1, currFs.length);
			if( einheit == 'x' ) einheit = 'px';
			speichern += '-'+einheit; // ergibt 100-100-% oder 16-16-px
			window.name = speichern;
			var basisFs = parseInt(currFs);
		}
		else {
			// Beim Eintritt auf einer Unterseite holt sich init() die aktuelle Schriftgröße 
			// und die Einheit aus window.name und wendet diese auf body an. Damit bleibt die 
			// gewählte Größe über den ganzen Auftrit erhalten.
			var temp = fensterName.split("-");
			document.getElementsByTagName('body')[0].style.fontSize = temp[1]+temp[2];
			var basisFs = parseInt(temp[0]);
			temp = '';
		}
		temp = currFs.substr(currFs.length-1);
		if(temp == '%') istProzent = true;
		if(temp == 'x') istPixel = true;

		maxClicks = config.max_clicks;
		swInPixel = config.sw;
		if(istPixel){
			// für alle Browser außer dem IE werden die Schrittweite, die maximale und 
			// die minimale Schriftgröße in Pixeln als globale Variable festgelegt
			schrittweite = swInPixel;
			maxFs = (swInPixel*maxClicks)+basisFs;
			minFs = basisFs;
		}

		if (istProzent){
			// für den IE werden die Schrittweite, die maximale und 
			// die minimale Schriftgröße in Prozent als globale Variable festgelegt
			swProzent = 100/16*swInPixel; // config.sw in Prozent auf der Basis von 16 Pixeln
			schrittweite = myFs.runden(swProzent);
			maxFs = (schrittweite*maxClicks)+basisFs;
			minFs = basisFs;
		}
	},

	getBodyFontSize:function(){
		var element = document.getElementsByTagName("body")[0];
		if (window.getComputedStyle) {
			//alert('Firefox, Chrome, Safari, Opera');
			return window.getComputedStyle(element, "").getPropertyValue("font-size");
		} else if (element.currentStyle) {
			//alert('MSIE');
			return element.currentStyle.fontSize;
		}
	},

	setBodyFontSize:function(r){
		var einheit;
		if(istProzent) einheit = '%';
		if(istPixel) einheit = 'px';

		var aktuellFs = myFs.getBodyFontSize();
		aktuellFs = parseFloat(aktuellFs);

		switch(r) {
			case '+': var neuFs = ( aktuellFs < maxFs ) ? aktuellFs+schrittweite : aktuellFs; break;
			case '-': var neuFs = ( aktuellFs > minFs ) ? aktuellFs-schrittweite : aktuellFs; break;
		}
		// body bekommt die neue Schriftgröße
		document.getElementsByTagName("body")[0].style.fontSize = neuFs+einheit;
		// window.name gesplittet in der Variable temp
		var temp = window.name.split("-");
		// bisherige aktuelle Schriftgröße wird durch die neue ersetzt
		temp[1] = neuFs;
		// der Fenstername wird mit der neuen Zeichenkette gesetzt
		window.name = temp.join("-");
	},

	resetBodyFontSize:function(){
		if(istProzent) {
			var resetFs = '100%';
			window.name = '100-100-%';
		}
		if(istPixel) {
			var resetFs = '16px';
			window.name = '16-16-px';
		}
		document.getElementsByTagName('body')[0].style.fontSize = resetFs;
	},

	pruefeWindowName:function(s){
		var RegExp = /^[0-9]{1,3}-[0-9\.]{1,7}-(px|%)$/;
		var erg = s.search(RegExp);
		if (erg != -1){
			return s;
		}
		else {
			return false;
		}
	},

	runden:function(zahl){
		return Math.round(zahl*100)/100;
	},

	ende:'ende'
}


