
var FS = {
	init : function(config){
		fs = this.getBodyFontSize();
		if(!fs) return false;
		einheit = this.getEinheit(fs);
		if(!einheit) return false;
		diff = this.getDiff(config.sw, einheit);
		fs = parseInt(fs);
		maxClicks = config.max_clicks;

		var fn = this.pruefeWindowName(window.name);
		if(!fn){
			window.name = fs + "-" + fs + "-" + einheit + "-1"
		} else {
			var temp = fn.split("-");
			document.getElementsByTagName('body')[0].style.fontSize = temp[1]+temp[2];
		}
	},

	setBodyFontSize : function(r){
		temp = window.name.split("-");
		var currFs = parseFloat(temp[1]);
		var clicks = parseFloat(temp[3]);
		switch(r) {
			case '+': 
			if( clicks < maxClicks+1 ){
				var newFs = this.runden(currFs+diff);
				clicks++;
			} else {
				var newFs = currFs;
			}
			break;

			case '-': 
			if( clicks > 1 ){
				var newFs = this.runden(currFs-diff);
				clicks--;
			} else {
				var newFs = currFs;
			}
			break;
		}
		document.getElementsByTagName("body")[0].style.fontSize = newFs+einheit;
		temp[1] = newFs;
		temp[3] = clicks;
		window.name = temp.join("-");
	},

	getBodyFontSize	:	function(){
		var element = document.getElementsByTagName("body")[0];
		if (window.getComputedStyle) {
			// Gibt in Firefox, Chrome, Safari und Opera die berechnete FS in px zurück
			return window.getComputedStyle(element, "").getPropertyValue("font-size");
		} else if (element.currentStyle) {
			// Gibt im IE die in der CSS-Datei hinterlegte FS exakt so zurück
			return element.currentStyle.fontSize;
		}
		return false;
	},

	getEinheit : function(w){
		temp = w.split("");
		var einheit = "";
		for(var i=0; i<temp.length; i++){
			if(isNaN(temp[i]) && temp[i] != "."){
				einheit += temp[i];
			}
		}
		if(einheit) return einheit; else return false;
	},

	getDiff : function(wert, einheit){
		//alert(wert + einheit);
		var einheiten = new Array("%","em","px","pt");
		var currEinheit = "";
		var diff = 0;
		for(var i=0; i<einheiten.length; i++){
			if(einheit == einheiten[i]){
				currEinheit = einheit;
				break;
			}
		}
		if(currEinheit){
			switch(currEinheit){
				case "%": diff = this.runden(100/16*wert); return diff;
				case "em": diff = this.runden(1/16*wert); return diff;
				case "px": return wert;
				case "pt": return wert;
				default: return false;
			}
		} else {
			return false;
		}
	},

	pruefeWindowName : function(s){
		var RegExp = /^[0-9]{1,3}-[0-9\.]{1,7}-(px|%|em|pt)-[0-9]{1}$/;
		var erg = s.search(RegExp);
		if (erg != -1){
			return s;
		}
		else {
			return false;
		}
	},

	del : function(){
		window.name = "";
	},

	runden : function(zahl){
		return Math.round(zahl*100)/100;
	}
};

