// JavaScript-Funktionen zur Steuerung der Schriftgroesse in einem HTML-Dokument
// Copyright (C) 2005 Alexander Mueller, modified 2006 and 2011 by Florian Hurlbrink
// Autor: Alexander Mueller
// Web:   http://www.EvoComp.de/
// Datei: fontsize.js
// The copyright notice must stay intact for use!
// You can obtain this and other scripts at http://www.EvoComp.de/scripts/skripte.html
//
// This program is distributed in the hope that it will be useful,
// but without any warranty, expressed or implied.


// !!! Benutzerdefinierte Variablen !!!
// Folgende Variablen koennen vom Benutzer definiert werden
// (die Werte werden durch entsprechend uebergebene Parameter der Funktion
//  init_FontSize ueberschrieben):
// Standardschriftgroesse
var initial_font_size = 100;
// Einheit, in der die Schriftgroesse angegeben ist
var font_unity = '%';
// Schrittweite, mit der die Schrift erhoeht bzw. erniedrigt werden soll
var delta = 10;
// !!! Ende Benutzerdefinierte Variablen !!!

// zur Speicherung der aktuellen Schriftgroesse
var fontsize = initial_font_size;

// Initialisierung der Schriftgroesse auf in der URL uebergebene, die der Funktion
// uebergebene bzw. oben angegebene Standardgroesse (falls keine Parameter uebergeben
// wurden)
function init_FontSize(ifs, fu, del){
    if (!isNaN(ifs)) 
        initial_font_size = parseFloat(ifs);
    if ("pt,pc,in,mm,cm,px,em,ex,%".indexOf(fu) != -1) 
        font_unity = fu;
    if (!isNaN(del)) 
        delta = parseFloat(del);
    if (isNaN(parseFloat(document.getElementsByTagName('body')[0].style.fontSize)) || parseFloat(document.getElementsByTagName('body')[0].style.fontSize) == 0) 
        fontsize = getFontSize();
    else 
        fontsize = parseFloat(document.getElementsByTagName('body')[0].style.fontSize);
    //if (fontsize != initial_font_size)
    addFontSizeToLinks();//^
    //document.getElementsByTagName('body')[0].style.fontSize = fontsize + font_unity;
}

// Schriftgroesse um delta erhoehen
function incFontSize(){
    if (!isNaN(delta)) 
        setFontSize(Math.round((parseFloat(fontsize) + parseFloat(delta)) * 100) / 100);
}

// Schriftgroesse um delta verkleinern
function decFontSize(){
    if (!isNaN(delta)) 
        setFontSize(Math.round((parseFloat(fontsize) - parseFloat(delta)) * 100) / 100);
}

// Schriftgroesse um delta veraendern
function setFontSize(newsize){
    if (!isNaN(newsize)) {
        fontsize = Math.round((parseFloat(newsize)) * 100) / 100;
        document.getElementsByTagName('body')[0].style.fontSize = fontsize + font_unity;
        addFontSizeToLinks();
    }
}

// Eingestellte Schriftgroesse aus der URL auslesen bzw. Standardwert fuer die
// Schriftgroesse liefern
function getFontSize(){
    var fs;
    
    if (document.location.search != "" && (document.location.search).match(/fontsize=[0-9]+\.?[0-9]*/i)) 
        fs = ("" + (document.location.search).match(/fontsize=[0-9]+\.?[0-9]*/i)).replace(/fontsize=/i, '');
    else 
        fs = initial_font_size;
    return fs;
}

// Liefert die Domaenen-URL zu einer uebergebenen URL.
// Bei ungueltiger URL wird ein leeres String zurueckgegeben
function getDomainURL(URL){
    if (URL.match(/^((http:\/\/)?(www\.)?((([0-9a-z][0-9a-z-]+\.)+)([a-z]{2,3}))).*/)) 
        return URL.match(/^((http:\/\/)?(www\.)?((([0-9a-z][0-9a-z-]+\.)+)([a-z]{2,3}))).*/)[1];
    else 
        return "";
}

// Schriftgroesse an interne URLs anhaengen, damit die eingestellte Schriftgroesse
// auch in Folgeseiten beibehalten wird
function addFontSizeToLinks(){
    // Alle Links im aktuellen HTML-Dokument bearbeiten
    for (i = 0; i < document.links.length; i++) {
        if ((document.links[i].href).match(/javascript=incfontsize/)) {
            document.links[i].href = 'javascript:incFontSize ();';
        }
        
        if ((document.links[i].href).match(/javascript=decfontsize/)) {
            document.links[i].href = 'javascript:decFontSize ();';
        }
        
        // Links, die dem Verschicken von E-Mails dienen und URLs, die
        // mit dem Domainnamen enden (Probleme bei IE, der die Parameter
        // in den Links anzeigt) sollen nicht parametrisiert werden.
        if (!(document.links[i].href).match(/^mailto:/) &&
        !(document.links[i].href).match(/^(http:\/\/)?(www\.)?((([0-9a-z][0-9a-z-]+\.)+)([a-z]{2,3}))[\/]+$/)        // nur URLs, die auf die eigene Domain zeigen sollen
        // Parameter erhalten (keine externen Links)
        &&
        (document.links[i].href).indexOf(getDomainURL(self.location.href)) != -1        // Parameter sollen zusaetzlich noch die in 'pardomains'
        // enthaltenen Domains erhalten.
        //&& !(document.links[i].href).match (/ausnahmedomains/)
        &&
        (document.links[i].href).match(/fontsize=/)) {
            // gewaehlte Schriftgroesse an den Link anhaengen bzw.
            // bisher gespeicherte Werte durch die aktuellen ersetzen
            if ((document.links[i].href).match(/fontsize=[0-9]+\.?[0-9]{0,2}/i)) 
                document.links[i].href = (document.links[i].href).replace(/fontsize=[0-9]+\.?[0-9]{0,2}/i, ("fontsize=" + fontsize));
            else 
                if ((document.links[i].href).indexOf('?') != -1) 
                    document.links[i].href = document.links[i].href + "&fontsize=" + fontsize;
                else 
                    document.links[i].href = document.links[i].href + "?fontsize=" + fontsize;
        }
    }
    
    // Alle Links im aktuellen HTML-Dokument bearbeiten
    for (i = 0; i < document.forms.length; i++) {
        // Links, die dem Verschicken von E-Mails dienen und URLs, die
        // mit dem Domainnamen enden (Probleme bei IE, der die Parameter
        // in den Links anzeigt) sollen nicht parametrisiert werden.
        if (!(document.forms[i].action).match(/^mailto:/) &&
        !(document.forms[i].action).match(/^(http:\/\/)?(www\.)?((([0-9a-z][0-9a-z-]+\.)+)([a-z]{2,3}))[\/]+$/)        // nur URLs, die auf die eigene Domain zeigen sollen
        // Parameter erhalten (keine externen Links)
        &&
        (document.forms[i].action).indexOf(getDomainURL(self.location.href)) != -1        // Parameter sollen zusaetzlich noch die in 'pardomains'
        // enthaltenen Domains erhalten.
        //&& !(document.forms[i].action).match (/ausnahmedomains/)
        &&
        (document.forms[i].action).match(/fontsize=/)) {
            // gewaehlte Schriftgroesse an den Link anhaengen bzw.
            // bisher gespeicherte Werte durch die aktuellen ersetzen
            if ((document.forms[i].action).match(/fontsize=[0-9]+\.?[0-9]{0,2}/i)) 
                document.forms[i].action = (document.forms[i].action).replace(/fontsize=[0-9]+\.?[0-9]{0,2}/i, ("fontsize=" + fontsize));
            else 
                if ((document.forms[i].action).indexOf('?') != -1) 
                    document.forms[i].action = document.forms[i].action + "&fontsize=" + fontsize;
                else 
                    document.forms[i].action = document.forms[i].action + "?fontsize=" + fontsize;
        }
    }
}

jQuery.noConflict();

jQuery(document).ready(function(){
    init_FontSize(100, '%', 10);
});

