// Disclaimer - Kostenloser JavaScript nur mit diesem Disclaimer
// zur dynamischen Änderung von title- und target-
// Attributen eines Links, der in einem neuen Fenster
// geöffnet werden soll.
// Kompatibel mit XHTML 1.0 strict und WCAG1/BITV
// Gecoded von Jörn Hofer: jhATgrassi.de (2004-04-04)
// Scheinbar funktioniert dies nicht auf dem IE5 für Mac
// Ende Disclaimer
// Verschiedene Sprachen in einem Array
// [x][0] ist der Identifier für einen externen Link
// [x][1] ist der zusätzliche Text zur Ankündigung eine neuen Fensters
// var sprachen = new Array(x), x definiert die Anzahl der verfügbaren Sprachen
var sprachen = new Array(5);
// und jetzt erzeugen wir einen Array mit zwei Dimensionen
for (i = 0; i < sprachen . length; i++) {
    sprachen[i] = new Array(2);
}
sprachen[0][0] = "externer Link";
sprachen[0][1] = " - neues Fenster";
sprachen[1][0] = "interner Link";
sprachen[1][1] = " - neues Fenster";
sprachen[2][0] = "external link";
sprachen[2][1] = " - new window";
sprachen[3][0] = "internal link";
sprachen[3][1] = " - new window";
sprachen[4][0] = "PDF-Download";
sprachen[4][1] = " - neues Fenster";


function titelUndTargetAendern()
{
    // Prüfen, ob der Browser das neue DOM kennt; wenn nicht, hier stoppen
    // (title kann nicht angepasst werden, also dürfen wir kein neues Fenster aufmachen für WCAG1/BITV-Konformität)
    if (!document . getElementsByTagName) return;
    // Array mit allen Links auf der Seite füllen
    var links = document . getElementsByTagName("a");
    // Schleife, um jeden einzelnen Link anzusprechen
    for (i = 0; i < links . length; i++) {
        // Variable für einzelnen Link
        var einzelLink = links[i];
        // title des einzelnen Links holen
        titelAlt = einzelLink . getAttribute("title");
        // Wenn ein title vorhanden ist
        if (titelAlt) {
            // und hier gehen wir die verschiedenen Sprachen durch
            for (j = 0; j < sprachen . length; j++) {
                // Prüfen, ob der Indentifier für eine Sprache im title vorkommt
                if (titelAlt . indexOf(sprachen[j][0]) != -1) {
                    // title aufsplitten, um den Text hinter dem Indentifier zu kriegen
                    titelZusatz = titelAlt . substring((titelAlt . indexOf(sprachen[j][0])) + sprachen[j][0] . length, titelAlt . length);
                    // schreibe das neue title-Attribut
                    einzelLink . setAttribute("title", sprachen[j][0] + " " + sprachen[j][1] + titelZusatz);
                    // Und jetzt sagen wir, dass der Link in einem neuen Fenster aufgehen soll (ein anderer Name kann verwendet
                    // werden, um alle Links im gleichen Fenster aufgehen zu lassen, aber es ist ein zusätzliches .focus für das
                    // Fenster erforderlich)
                    einzelLink . target = "_blank";
                    // da wir soweit sind, kann die Schleife unterbrochen werden
                    break;
                }
            }
        }
    }
}



var counter = 0;
tempExternal = window . onload;
window . onload = function()
{
    if (counter == 0) {
        //alert ("onLoad") ;
        if (typeof tempExternal == "function") tempExternal();
        titelUndTargetAendern();
        checkTN();
        checkNewsletter();
        checkKontakt();
        counter++;
    }
}

function janein (url)
{
    zeigen = confirm("Wollen Sie diesen Datensatz tatsächlich und endgültig löschen?");
    if (zeigen == true) {
        location = url;
    } else {
        return true;
    }
}


function popup(str)
{
    tipWin = window . open(str, 'tipWin', 'width=600,height=500,resizeable=yes,scrollbars=yes,left=100,top=100');
    window . open(str, 'tipWin', 'width=400,height=400');
    tipWin . opener = self;
}

window.onerror = stopError;
function stopError (){
    return true;
}

var mail_message = '' ;
var focus_feld = false;
function checkKontakt()
{
    if (document.getElementById('kontaktformular')) {
        document.getElementById("kontaktformular").onsubmit = function()
        {
            if (document.getElementById('email')) {
                document.getElementById('email').className = '';;
            }
            if (document.getElementById('nachricht')) {
                document.getElementById('nachricht').className = '';;
            }
            if (document.getElementById('email')) {
                //                var trimmed_mail = document.getElementById('email').value.replace(/^\s+|\s+$/g, '') ;
                var trimmed_mail = document.getElementById('email').value.replace(/^\s+|\s+$/g, '') ;
                if (trimmed_mail != '') {
                    mail_res = isRFC822ValidEmail (trimmed_mail);
                    if (!mail_res) {
                        mail_message += 'Fehler in der E-Mail-Adresse.' + "\n" + 'Bitte korrigieren Sie die E-Mail-Adresse.' + "\n\n";
                        document.getElementById('email').className = 'felderror';
                        if (!focus_feld) {
                            focus_feld = 'email';
                        }
                    }
                }
            }
            if (document.getElementById('nachricht')) {
                var trimmed_message = document.getElementById('nachricht').value.replace(/^\s+|\s+$/g, '') ;
                if (trimmed_message == '') {
                    mail_message += 'Das Feld "Ihre Nachricht" ist ein Pflichtfeld.' + "\n" + 'Bitte schreiben Sie eine Nachricht, bevor Sie das Formular abschicken.' + "\n\n";
                    document.getElementById('nachricht').className = 'felderror';
                    ;
                    if (!focus_feld) {
                        focus_feld = 'nachricht';
                    }
                }
            }
            if (mail_message) {
                alert (mail_message);
                document.getElementById(focus_feld).focus();
                mail_message = '';
                focus_feld = false;
                return false;
            }
            return true;
        }
        document.getElementById("email").onchange = function()
        {
            document.getElementById('email').className = '';;
        }
        document.getElementById("nachricht").onchange = function()
        {
            document.getElementById('nachricht').className = '';;
        }

    }
}
function checkNewsletter()
{
    if (document.getElementById('newsletterformular')) {
        document.getElementById("newsletterformular").onsubmit = function()
        {
            if (document.getElementById('newsletter-email')) {
                document.getElementById('newsletter-email').className = '';;
            }
            if (document.getElementById('newsletter-email')) {
                //                var trimmed_mail = document.getElementById('newsletter-email').value.replace(/^\s+|\s+$/g, '') ;
                var trimmed_mail = document.getElementById('newsletter-email').value.replace(/^\s+|\s+$/g, '') ;
                if (trimmed_mail != '') {
                    mail_res = isRFC822ValidEmail (trimmed_mail);
                    if (!mail_res) {
                        mail_message += 'Fehler in der E-Mail-Adresse.' + "\n" + 'Bitte korrigieren Sie die E-Mail-Adresse.' + "\n\n";
                        document.getElementById('newsletter-email').className = 'felderror';
                    }
                } else {
                    mail_message += 'Bitte geben Sie Ihre E-Mail-Adresse ein.' + "\n\n";
                    document.getElementById('newsletter-email').className = 'felderror';
                }
            }
            if (mail_message) {
                alert (mail_message);
                document.getElementById('newsletter-email').focus();
                mail_message = '';
                focus_feld = false;
                return false;
            }
            return true;
        }
        document.getElementById("newsletter-email").onchange = function()
        {
            document.getElementById('newsletter-email').className = '';;
        }

    }
}
function checkTN()
{
    if (document.getElementById('red-form')) {
        document.getElementById("tn_alle").onchange = function()
        {
            dealBoxen(this);
        }
        document.getElementById("tn_freitag").onchange = function()
        {
            dealBoxen(this);
        }
        document.getElementById("tn_samstag").onchange = function()
        {
            dealBoxen(this);
        }
        document.getElementById("tn_sonntag").onchange = function()
        {
            dealBoxen(this);
        }
    }
}
function dealBoxen (elem){
            //alert ('klick '+elem.id);
            if (elem.id =='tn_alle'){
            if (elem.checked == true){
               document.getElementById("tn_freitag").checked = true;
               document.getElementById("tn_samstag").checked = true;
               document.getElementById("tn_sonntag").checked = true;
            } else {
               document.getElementById("tn_freitag").checked = false;
               document.getElementById("tn_samstag").checked = false;
               document.getElementById("tn_sonntag").checked = false;
            }
            }   else {
               if (document.getElementById("tn_freitag").checked == false || document.getElementById("tn_samstag").checked == false || document.getElementById("tn_sonntag").checked == false ){
               document.getElementById("tn_alle").checked = false;
               }
               if (document.getElementById("tn_freitag").checked == true && document.getElementById("tn_samstag").checked == true && document.getElementById("tn_sonntag").checked == true ){
               document.getElementById("tn_alle").checked = true;
               }
            }


}

function isRFC822ValidEmail(sEmail)
{
    var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
    var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
    var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
    var sQuotedPair = '\\x5c[\\x00-\\x7f]';
    var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
    var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
    var sDomain_ref = sAtom;
    var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
    var sWord = '(' + sAtom + '|' + sQuotedString + ')';
    var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
    var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
    var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
    var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
    var reValidEmail = new RegExp(sValidEmail);
    if (reValidEmail.test(sEmail)) {
        return true;
    }
    return false;
}
function checkForm ()
{
    var set_focus = false;
    var nl_alert = '';
    document.getElementById('gender').className = '';
    document.getElementById('first_name').className = '';
    document.getElementById('last_name').className = '';
    document.getElementById('street').className = '';
    document.getElementById('zip').className = '';
    document.getElementById('city').className = '';
    document.getElementById('email').className = '';
    document.getElementById('first_name').value = trim (document.getElementById('first_name').value);
    document.getElementById('last_name').value = trim (document.getElementById('last_name').value);
    document.getElementById('street').value = trim (document.getElementById('street').value);
    document.getElementById('zip').value = trim (document.getElementById('zip').value);
    document.getElementById('city').value = trim (document.getElementById('city').value);
    document.getElementById('email').value = trim (document.getElementById('email').value);

    //    if (document.getElementById('gender').selectedIndex == 0) {
    //      nl_alert += err_anr + "\n";
    //    document.getElementById('gender').className = 'advice';
    //    }

    if (trim(document.getElementById('first_name').value) == '') {
        nl_alert = err_vn + "\n";
        document.getElementById('first_name').className = 'advice';
        if (set_focus == false){
            set_focus = 'first_name';
        }
    } else {
        document.getElementById('first_name').className = '';
    }
    if (trim(document.getElementById('last_name').value) == '') {
        nl_alert += err_nn + "\n";
        document.getElementById('last_name').className = 'advice';
        if (set_focus == false){
            set_focus = 'last_name';
        }
    } else {
        document.getElementById('last_name').className = '';
    }
    if (trim(document.getElementById('street').value) == '') {
        nl_alert += err_str + "\n";
        document.getElementById('street').className = 'advice';
        if (set_focus == false){
            set_focus = 'street';
        }
    }
    if (trim(document.getElementById('zip').value) == '') {
        nl_alert += err_zip + "\n";
        document.getElementById('zip').className = 'advice';
        if (set_focus == false){
            set_focus = 'zip';
        }
    } else {
        document.getElementById('zip').className = '';
    }
    if (trim(document.getElementById('city').value) == '') {
        nl_alert += err_ort + "\n";
        document.getElementById('city').className = 'advice';
        if (set_focus == false){
            set_focus = 'city';
        }
    } else {
        document.getElementById('city').className = '';
    }

    if (trim(document.getElementById('email').value) == '') {
        nl_alert += err_nomail + "\n";
        document.getElementById('email').className = 'advice';
        if (set_focus == false){
            set_focus = 'email';
        }
    } else {
        document.getElementById('email').className = '';
    }

    if (trim(document.getElementById('email').value) != '') {
        if (!isRFC822ValidEmail(document.getElementById('email').value)) {
            nl_alert += err_mailerr + "\n";
            document.getElementById('email').className = 'advice';
        }
        if (set_focus == false){
            set_focus = 'email';
        }
    } else {
        document.getElementById('email').className = 'advice';

    }
    if (document.getElementById('tn_freitag').checked == false && document.getElementById('tn_samstag').checked == false && document.getElementById('tn_sonntag').checked == false ) {
        nl_alert += err_tage + "\n";
        document.getElementById('label_fr').className = 'advice';
        document.getElementById('label_sa').className = 'advice';
        document.getElementById('label_so').className = 'advice';
    } else {
        document.getElementById('label_fr').className = '';
        document.getElementById('label_sa').className = '';
        document.getElementById('label_so').className = '';
    }
    if (document.getElementById('agb').checked == false) {
        nl_alert += err_agb + "\n";
        document.getElementById('label_agb').className = 'advice';
    } else {
        document.getElementById('label_agb').className = '';
    }

    if (nl_alert != '') {
        alert (nl_alert);
        if (set_focus != false){
            document.getElementById(set_focus).focus();
            set_focus = false;
        }
        return false;
    }
    return true;
}
function trim (zeichenkette)
{
    // Erst führende, dann Abschließende Whitespaces entfernen
    // und das Ergebnis dieser Operationen zurückliefern
    // return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
    return zeichenkette.replace (/^\s+/, '').replace (/\s+$/, '');
}




