var fontsize_factor;
var fontsize_elements = '#content *'; // jQuery Notation!
var fontsize_value = 0.1;
var fontsize_limit_min = 0.9;
var fontsize_limit_max = 1.4;

// Initial Font-Resize
window.onload = function(){
	// Cookie.del('fontsize');
	if(Cookie.get('fontsize')){
		fontsize_factor = Number(Cookie.get('fontsize'));
	}else{
		fontsize_factor = 1;
	} // if
	initFontsizeBtns('#resize_minus', '#resize_plus', '#resize_normal', fontsize_elements, fontsize_value, fontsize_limit_min, fontsize_limit_max);
	changeFontsize(fontsize_elements, fontsize_factor, true);
} // function

/**
 * Initialisiert die Font-Buttons
 *
 * @param String btn_decrease Name des Vergroessern-Buttons
 * @param String btn_increase Name des Verkleinern-Buttons
 * @param Mixed targets Selektor(en) fuer die zu veraendernden Elemente
 * @param Number value Wert fuer die Veraenderung
 * @param Number limit_min Minimaler Gesamtfaktor
 * @param Number limit_max Maximaler Gesamtfaktor
 */
function initFontsizeBtns(btn_decrease, btn_increase, btn_reset, targets, value, limit_min, limit_max){
	$(btn_decrease).click(function(){
		// Minimun erreicht
		if(fontsize_factor == limit_min){
			return false;
		// Neuer Schriftgrad unterschreitet Minimum
		}else if(fontsize_factor - value < limit_min){
			changeFontsize(targets, limit_min, true);
		// Neuer Schriftgrad akzeptabel
		}else{
			changeFontsize(targets, -value, null);
		} // if
	}) // function

	$(btn_increase).click(function(){
		if(fontsize_factor == limit_max){
			return false;
		}else if(fontsize_factor + value > limit_max){
			changeFontsize(targets, limit_max, true);
		}else{
			changeFontsize(targets, value, null);
		} // if
	}); // function

	$(btn_reset).click(function(){
		changeFontsize(targets, 1, true);
	}) // function
} // function

/**
 * Passt den Schriftgrad fuer die definierten Elemente an
 *
 * @param Mixed targets Selektor(en) fuer die zu veraendernden Elemente
 * @param Number factor Wert fuer die Veraenderung
 * @param Boolean initial Wert nicht aendern, sondern setzen
 */
function changeFontsize(targets, factor, initial){
	if(initial){
		fontsize_factor = factor;
	}else{
		fontsize_factor += factor;
	}  // if

	Cookie.set('fontsize', fontsize_factor);

	$(targets).each(
		function(fn, element){
			changeFontsizeElement(element, factor);
		}
	);
} // function

/**
 * Passt den Schriftgrad fuer die definierten Elemente an
 *
 * @param Object element Zu veraenderndes Element
 * @param Number factor Wert fuer die Veraenderung
 */
function changeFontsizeElement(element, factor){
	// Aktuelle Groesse in Wert und Einheit zerlegen
	var size = $(element).css('fontSize');
	var size_value = size.match(/([0-9\.])+/g);
	var size_unit = size.match(/(px|em|%)+/g);

	// Abbrechen, falls keine Groesse angegeben
	if(!size_value){
		return false;
	} // if

	// Urspruengliche Groesse merken
	if(!element.fontsize_original){
		element.fontsize_original = size_value;
	} // if

	// Neue Groesse zuweisen
	fontsize_new = element.fontsize_original * fontsize_factor;
	$(element).css('fontSize', fontsize_new + size_unit);
} // function

