var initialSize = 16;
var currentSize = initialSize;
var minSize = 10;
var stepSize = 1;

var cfg = new Object;
cfg.caption = 'Schriftgröße: ';
cfg.base = 'A';
cfg.decrease = {
	id: 'decrease',
	symbol: '-',
	title: 'Schriftgröße verkleinern',
	accesskey: '-',
	tabindex: '9'
}
cfg.normal = {
	id: 'normal',
	symbol: ' ',
	title: 'Normale Schriftgröße',
	accesskey: '0',
	tabindex: '10'
}
cfg.increase = {
	id: 'increase',
	symbol: '+',
	title: 'Schriftgröße vergrößern',
	accesskey: '+',
	tabindex: '11'
}

/**
 * Event Handling by John Resig
 */
function addEvent( obj, type, fn )
{
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

function removeEvent( obj, type, fn )
{
   if (obj.removeEventListener) {
      obj.removeEventListener( type, fn, false );
   } else if (obj.detachEvent) {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}

function init() {
	getCookie();

	var p = document.getElementById('fontsize');
	p.appendChild(createText(cfg.caption));
	p.appendChild(createLink(cfg.decrease));
	p.appendChild(createLink(cfg.normal));
	p.appendChild(createLink(cfg.increase));
}

function createLink(conf) {
	var a = document.createElement('a');
	a.id = conf.id;
	a.href = '#' + conf.id;
	a.title = conf.title;
	a.accessKey = conf.accesskey;
	a.tabIndex = conf.tabindex;

	a.appendChild(createText(cfg.base));
	var sup = document.createElement('sup');
	sup.appendChild(createText(conf.symbol));
	a.appendChild(sup);

	addEvent(a, 'click', function (e) {
		e = e || event;
    	e.preventDefault? e.preventDefault() : e.returnValue = false;
		changeSize(conf.id, e);
	});
	return a;
}

function createText(content) {
	var t = document.createTextNode(content);
	return t;
}

function createContent() {
	var decrease = createLink()
}

function changeSize(id, e) {
	switch (id) {
		case 'decrease':
			currentSize = currentSize-stepSize;
			break;
		case 'normal':
			currentSize = initialSize;
			break;
		case 'increase':
			currentSize = currentSize+stepSize;
			break;
	}
	updateSize();
}

function updateSize() {
	var calcPerc = currentSize/initialSize*100.01;
	document.getElementsByTagName('body')[0].style.fontSize=calcPerc+'%';

	setCookie();
}

function getCookie() {
	if (document.cookie) {
		var cookie_split = document.cookie.split(';');
		for (i=0; i<cookie_split.length; i++) {
			if (cookie_split[i].indexOf('fontSize=') > -1) {
				currentSize = parseInt(cookie_split[i].split('=')[1]);
				updateSize();
			}
		}
	}
}

function setCookie() {
    var cookie = 'fontSize=' + escape(currentSize) + ";";

	var time = new Date();
	time.setTime(time.getTime()+(240*3600*1000));
	cookie += " expires=" + time.toGMTString() + ";";

	cookie += " path=/";

    document.cookie = cookie;
}

addEvent(window, 'load', init);