var isIE6 = false;
var isIE7 = false;
var artCount = 0;
var currentWkPos = 0;
var lieferdauer = 40;
var artArr = new Array();
var anzArr = new Array();
var preisArr = new Array();
var zusArr = new Array();
var bemArr = new Array();
var pfZusArr = new Array();
var pfArr = new Array();
var mnuArtArr = new Array();
var mnuArr = new Array();
var mnuZusArr = new Array();
var mnuZusClArr = new Array();
var mnuBemArr = new Array();
var mnuPfZusArr = new Array();
var mnuPfArr = new Array();
var openTimeArr = new Array();
var openTimeFtagArr = new Array();
var submitted = false;

function __DoSubmit(GroupID, Page) {
    var wk_art = document.forms['theForm'].WK_Artikel;
    wk_art.value = '';

    for (var i = 0; i < artArr.length; i++) {
        if (artArr[i] != '') {
            if (wk_art.value != '') {
                wk_art.value += '|';
            }
            wk_art.value += artArr[i] + ';' + anzArr[i] + ';' + preisArr[i] + ';';

            // Zutaten
            if (zusArr[i]) {
                for (var j = 0; j < zusArr[i].length; j++) {
                    if (zusArr[i][j] != '') {
                        if (j > 0 && zusArr[i][j - 1] != '') {
                            wk_art.value += ',';
                        }
                        wk_art.value += zusArr[i][j];
                    }
                }
            }

            // Bemerkung
            wk_art.value += ';';
            if (bemArr[i])
                wk_art.value += bemArr[i];

            // Pflicht Zutaten
            wk_art.value += ';';
            if (pfZusArr[i]) {
                for (var j = 0; j < 6; j++) {
                    if (j > 0) {
                        wk_art.value += ',';
                    }
                    if (pfZusArr[i][j]) {
                        wk_art.value += pfZusArr[i][j];
                    }
                }
            }

            wk_art.value += ';';
            if (pfArr[i])
                wk_art.value += pfArr[i];

            // Menue Artikel
            wk_art.value += ';';
            if (mnuArtArr[i]) {
                for (var j = 0; j < 8; j++) {
                    if (j > 0) {
                        wk_art.value += ',';
                    }
                    if (mnuArtArr[i][j]) {
                        wk_art.value += mnuArtArr[i][j];
                    }

                    // Zutaten
                    wk_art.value += '/';
                    if (mnuZusArr[i]) {
                        if (mnuZusArr[i][j]) {
                            for (var k = 0; k < mnuZusArr[i][j].length; k++) {
                                if (mnuZusArr[i][j][k] != '') {
                                    if (k > 0 && mnuZusArr[i][j][k - 1] != '') {
                                        wk_art.value += '!';
                                    }
                                    if (mnuZusArr[i][j][k]) {
                                        wk_art.value += mnuZusArr[i][j][k];
                                    }
                                }
                            }
                        }
                    }

                    // Zusatz Window Closed
                    wk_art.value += '/';
                    if (mnuZusClArr[i]) {
                        if (mnuZusClArr[i][j]) {
                            wk_art.value += mnuZusClArr[i][j];
                        }
                    }

                    // Bemerkung
                    wk_art.value += '/';
                    if (mnuBemArr[i]) {
                        if (mnuBemArr[i][j]) {
                            wk_art.value += mnuBemArr[i][j];
                        }
                    }

                    // Pflicht Zutaten
                    wk_art.value += '/';
                    if (mnuPfZusArr[i]) {
                        if (mnuPfZusArr[i][j]) {
                            for (var k = 0; k < 6; k++) {
                                if (k > 0) {
                                    wk_art.value += '!';
                                }
                                if (mnuPfZusArr[i][j][k]) {
                                    wk_art.value += mnuPfZusArr[i][j][k];
                                }
                            }
                        }
                    }

                    wk_art.value += '/';
                    if (mnuPfArr[i]) {
                        if (mnuPfArr[i][j]) {
                            wk_art.value += mnuPfArr[i][j];
                        }
                    }
                }
            }

            wk_art.value += ';';
            if (mnuArr[i])
                wk_art.value += mnuArr[i];
        }
    }

    document.forms['theForm'].GroupID.value = GroupID;
    document.forms['theForm'].ArtCount.value = artCount;
    document.forms['theForm'].CurrentWkPos.value = currentWkPos;

    var currPage = location.href.substring(location.href.lastIndexOf('/') + 1);

    if (Page == '04') { // Bestellseite aufrufen
        document.forms['theForm'].action = '04_bestellung-1.php';
        if (currPage == '04_bestellung-1.php') { // nur submit ohne Page-Wechsel
            setScrollDist();
        }
    }
    else if (Page == '05') { // Adresseingabe aufrufen
        if (currPage == '04_bestellung-1.php' && wk_art.value == '') {
            document.forms['theForm'].action = '04_bestellung-1.php';
            alert('Bitte wählen Sie zuerst eine Speise aus.');
        }
        else if (currPage == '05_bestellung-adresse.php' && wk_art.value == '') {
            document.forms['theForm'].action = '04_bestellung-1.php';
        }
        else {
            document.forms['theForm'].action = '05_bestellung-adresse.php';
        }
    }
    else if (Page == '06') { // Bestätigungsseite aufrufen
        if (currPage == '05_bestellung-adresse.php' && wk_art.value == '') {
            document.forms['theForm'].action = '04_bestellung-1.php';
        }
        else if (document.forms['theForm'].name.value == '') {
            alert('Das Feld \'Nachname\' darf nicht leer sein.');
            document.forms['theForm'].name.focus();
            return;
        }
        else if (document.forms['theForm'].strasse.value == '') {
            alert('Das Feld \'Strasse\' darf nicht leer sein.');
            document.forms['theForm'].strasse.focus();
            return;
        }
        else if (document.forms['theForm'].nr.value == '') {
            alert('Das Feld \'Nr.\' darf nicht leer sein.');
            document.forms['theForm'].nr.focus();
            return;
        }
        else if (document.forms['theForm'].plz.value == '') {
            alert('Das Feld \'PLZ\' darf nicht leer sein.');
            document.forms['theForm'].plz.focus();
            return;
        }
        else if (document.forms['theForm'].ort.value == '') {
            alert('Das Feld \'Ort\' darf nicht leer sein.');
            document.forms['theForm'].ort.focus();
            return;
        }
        else if (document.forms['theForm'].telefon.value == '') {
            alert('Bitte geben Sie für Rückfragen Ihre Telefonnummer an.');
            document.forms['theForm'].telefon.focus();
            return;
        }
        else if (document.forms['theForm'].email.value != '' && !emailValidator(document.forms['theForm'].email.value)) {
            alert('Die angegebene E-Mail Adresse ist ungültig.');
            document.forms['theForm'].email.focus();
            return;
        }
        else {
            if (submitted) {
                return;
            }
            submitted = true;
            ppFound = false;
            if (document.forms['theForm'].Zahlart.value == 'PP') {
                ppFound = true;
            } else {
                for (i = 0; i < document.forms['theForm'].Zahlart.length && !ppFound; i++) {
                    if (document.forms['theForm'].Zahlart[i].checked && document.forms['theForm'].Zahlart[i].value == 'PP') {
                        ppFound = true;
                    }
                }
            }
            if (ppFound) {
                document.forms['theForm'].action = 'paypal.php';
            } else {
                document.forms['theForm'].action = 'createOrder.php';
            }
        }
    }
    else {
        document.forms['theForm'].action = Page;
    }

    document.forms['theForm'].submit();
    return false;
}

function __AddArt(ArtID, ArtPreis, GroupID, Page) {
    artArr[artCount] = ArtID;
    anzArr[artCount] = 1;
    preisArr[artCount] = ArtPreis;

    currentWkPos = artCount;
    artCount++;

    document.forms['theForm'].OpenArt.value = ArtID;
    document.forms['theForm'].OpenPreis.value = 'Preis_' + ArtPreis;

    __DoSubmit(GroupID, Page);
}

function __AddMnuArt(ArtID, GroupID, Page, Counter) {
    if (!mnuArtArr[currentWkPos])
        mnuArtArr[currentWkPos] = new Array();

    if (Counter != 0) {
        mnuArtArr[currentWkPos][Math.log(Counter) / Math.log(2)] = ArtID;
        mnuArr[currentWkPos] |= Counter;
    }

    __DoSubmit(GroupID, Page);
}

function __AddZus(ZusID, GroupID, Page) {
    if (!zusArr[currentWkPos])
        zusArr[currentWkPos] = new Array();

    zusArr[currentWkPos][zusArr[currentWkPos].length] = ZusID;

    __DoSubmit(GroupID, Page);
}

function __AddMnuZus(MnuArtCount, ZusID, GroupID, Page) {
    if (!mnuZusArr[currentWkPos])
        mnuZusArr[currentWkPos] = new Array();

    if (!mnuZusArr[currentWkPos][MnuArtCount])
        mnuZusArr[currentWkPos][MnuArtCount] = new Array();

    mnuZusArr[currentWkPos][MnuArtCount][mnuZusArr[currentWkPos][MnuArtCount].length] = ZusID;

    __DoSubmit(GroupID, Page);
}

function __AddPfZus(ZusID, GroupID, Page, pflicht) {
    if (!pfZusArr[currentWkPos])
        pfZusArr[currentWkPos] = new Array();

    if (pflicht != 0) {
        pfZusArr[currentWkPos][Math.log(pflicht) / Math.log(2)] = ZusID;
        pfArr[currentWkPos] |= pflicht;
    }

    __DoSubmit(GroupID, Page);
}

function __AddMnuPfZus(MnuArtCount, ZusID, GroupID, Page, pflicht) {
    if (!mnuPfZusArr[currentWkPos])
        mnuPfZusArr[currentWkPos] = new Array();

    if (!mnuPfZusArr[currentWkPos][MnuArtCount])
        mnuPfZusArr[currentWkPos][MnuArtCount] = new Array();

    if (!mnuPfArr[currentWkPos])
        mnuPfArr[currentWkPos] = new Array();

    if (pflicht != 0) {
        mnuPfZusArr[currentWkPos][MnuArtCount][Math.log(pflicht) / Math.log(2)] = ZusID;
        mnuPfArr[currentWkPos][MnuArtCount] |= pflicht;
    }

    __DoSubmit(GroupID, Page);
}

function __AddBem(GroupID, Page) {
    var value = document.forms['theForm'].ArtBemerkung.value;
    bemArr[currentWkPos] = value;

    __DoSubmit(GroupID, Page);
}

function __RemArt(ArtCount, GroupID, Page) {
    artArr[ArtCount] = '';

    document.forms['theForm'].OpenArt.value = '';
    document.forms['theForm'].OpenPreis.value = '';
    artCount--;
    currentWkPos = 0;

    __DoSubmit(GroupID, Page);
}

function __RemMnuArt(ArtCount, MnuArtCount, GroupID, Page, Counter) {
    mnuArtArr[ArtCount][MnuArtCount] = '';
    mnuArr[ArtCount] &= ~Counter;
    if (mnuPfZusArr[ArtCount]) {
        mnuPfZusArr[ArtCount][MnuArtCount] = '';
    }
    if (mnuPfArr[ArtCount]) {
        mnuPfArr[ArtCount][MnuArtCount] = '';
    }
    if (mnuZusArr[ArtCount]) {
        mnuZusArr[ArtCount][MnuArtCount] = '';
    }
    if (mnuZusClArr[ArtCount]) {
        mnuZusClArr[ArtCount][MnuArtCount] = '';
    }
    if (mnuBemArr[ArtCount]) {
        mnuBemArr[ArtCount][MnuArtCount] = '';
    }

    Page = '04';

    document.forms['theForm'].OpenArt.value = artArr[ArtCount];
    document.forms['theForm'].OpenPreis.value = 'Preis_' + preisArr[ArtCount];
    currentWkPos = ArtCount;

    __DoSubmit(GroupID, Page);
}

function __ChngZus(ArtCount, GroupID, Page) {
    var value = eval('document.forms[\'theForm\'].WKartAnz_' + ArtCount + '.value');
    var pattern = /^[0-9]{1}$/;
    if (!value.match(pattern)) {
        return;
    }
    if (value == 0) {
        __RemArt(ArtCount, GroupID, Page);
        return;
    }
    anzArr[ArtCount] = value;
    
    document.forms['theForm'].OpenArt.value = artArr[ArtCount];
    document.forms['theForm'].OpenPreis.value = 'Preis_' + preisArr[ArtCount];
    currentWkPos = ArtCount;

    __DoSubmit(GroupID, Page);
}

function __ChngGrp(GroupID, Page) {
    document.forms['theForm'].OpenArt.value = '';
    document.forms['theForm'].OpenPreis.value = '';
    
    __DoSubmit(GroupID, Page);
}

function __UpdOrder(GroupID, Page) {
    for (var i = 0; i < anzArr.length; i++) {
        var value = eval('document.forms[\'theForm\'].WKartAnz_' + i + '.value');
        anzArr[i] = value;
    }

    __DoSubmit(GroupID, Page);
}

function __RemZus(ArtCount, ZusCount, GroupID, Page) {
    var tmpZusArr = new Array();
    tmpZusArr = zusArr[ArtCount];
    zusArr[ArtCount] = new Array();

    var j = 0;
    for (var i = 0; i < tmpZusArr.length; i++) {
        if (i != ZusCount) {
            zusArr[ArtCount][j++] = tmpZusArr[i];
        }
    }

    Page = '04';
        
    document.forms['theForm'].OpenArt.value = artArr[ArtCount];
    document.forms['theForm'].OpenPreis.value = 'Preis_' + preisArr[ArtCount];
    currentWkPos = ArtCount;

    __DoSubmit(GroupID, Page);
}

function __RemMnuZus(ArtCount, MnuArtCount, ZusCount, GroupID, Page) {
    var tmpMnuZusArr = new Array();
    tmpMnuZusArr = mnuZusArr[ArtCount][MnuArtCount];
    mnuZusArr[ArtCount][MnuArtCount] = new Array();

    var j = 0;
    for (var i = 0; i < tmpMnuZusArr.length; i++) {
        if (i != ZusCount) {
            mnuZusArr[ArtCount][MnuArtCount][j++] = tmpMnuZusArr[i];
        }
    }
    mnuZusClArr[ArtCount][MnuArtCount] = '';

    Page = '04';

    document.forms['theForm'].OpenArt.value = artArr[ArtCount];
    document.forms['theForm'].OpenPreis.value = 'Preis_' + preisArr[ArtCount];
    currentWkPos = ArtCount;

    __DoSubmit(GroupID, Page);
}

function __CloseMnuZus(MnuArtCount, GroupID, Page) {
    if (!mnuZusClArr[currentWkPos])
        mnuZusClArr[currentWkPos] = new Array();
    mnuZusClArr[currentWkPos][MnuArtCount] = '1';

    __DoSubmit(GroupID, Page);
}

function __RemPfZus(ArtCount, ZusCount, GroupID, Page, pflicht) {
    if (pflicht > 0) {
        pfZusArr[ArtCount][Math.log(pflicht) / Math.log(2)] = '';
        pfArr[ArtCount] &= ~pflicht;
    }

    Page = '04';

    document.forms['theForm'].OpenArt.value = artArr[ArtCount];
    document.forms['theForm'].OpenPreis.value = 'Preis_' + preisArr[ArtCount];
    currentWkPos = ArtCount;

    __DoSubmit(GroupID, Page);
}

function __RemMnuPfZus(ArtCount, MnuArtCount, GroupID, Page, pflicht) {
    if (pflicht > 0) {
        mnuPfZusArr[ArtCount][MnuArtCount][Math.log(pflicht) / Math.log(2)] = '';
        mnuPfArr[ArtCount][MnuArtCount] &= ~pflicht;
    }

    Page = '04';

    document.forms['theForm'].OpenArt.value = artArr[ArtCount];
    document.forms['theForm'].OpenPreis.value = 'Preis_' + preisArr[ArtCount];
    currentWkPos = ArtCount;

    __DoSubmit(GroupID, Page);
}

function __RemBem(ArtCount, GroupID, Page) {
    bemArr[ArtCount] = '';

    __DoSubmit(GroupID, Page);
}

function __SetVisible(ID) {
    div = document.getElementById(ID);
    div.style.display = 'block';
}

function __InitVars(ArtCount, CurrentWkPos) {
    // init WK
    var wkArt = document.forms['theForm'].WK_Artikel.value;

    if (wkArt != '') {
        var wkContent = wkArt.split('|');
        for (var i = 0; i < wkContent.length; i++) {
            contArr = wkContent[i].split(';');
            artArr[i] = contArr[0];
            anzArr[i] = contArr[1];
            preisArr[i] = contArr[2];

            // Zutaten
            if (contArr[3]) {
                var contZus = contArr[3].split(',');
                for (var j = 0; j < contZus.length; j++) {
                    if (!zusArr[i])
                        zusArr[i] = new Array();
                    zusArr[i][j] = contZus[j];
                }
            }

            // Bemerkung
            if (contArr[4])
                bemArr[i] = contArr[4];

            // Pflicht Zutaten
            if (contArr[5]) {
                var contPfZus = contArr[5].split(',');
                for (var j = 0; j < contPfZus.length; j++) {
                    if (!pfZusArr[i])
                        pfZusArr[i] = new Array();
                    pfZusArr[i][j] = contPfZus[j];
                }
            }

            if (contArr[6])
                pfArr[i] = contArr[6];


            // Menue Artikel
            if (contArr[7]) {
                var contMnuArt = contArr[7].split(',');
                for (var j = 0; j < contMnuArt.length; j++) {
                    // Artikel
                    if (!mnuArtArr[i]) {
                        mnuArtArr[i] = new Array();
                    }
                    
                    var contMnuCont = contMnuArt[j].split('/');
                    mnuArtArr[i][j] = contMnuCont[0];

                    // Zutaten
                    var contMnuZus = contMnuCont[1].split('!');
                    for (var k = 0; k < contMnuZus.length; k++) {
                        if (!mnuZusArr[i]) {
                            mnuZusArr[i] = new Array();
                        }
                        if (!mnuZusArr[i][j]) {
                            mnuZusArr[i][j] = new Array();
                        }
                        mnuZusArr[i][j][k] = contMnuZus[k];
                    }

                    // Zusatz Window closed
                    if (contMnuCont[2]) {
                        if (!mnuZusClArr[i]) {
                            mnuZusClArr[i] = new Array();
                        }
                        mnuZusClArr[i][j] = contMnuCont[2];
                    }

                    // Bemerkung
                    if (contMnuCont[3]) {
                        if (!mnuBemArr[i]) {
                            mnuBemArr[i] = new Array();
                        }
                        mnuBemArr[i][j] = contMnuCont[3];
                    }

                    // Plicht Zutaten
                    var contMnuPfZus = contMnuCont[4].split('!');
                    for (var k = 0; k < contMnuPfZus.length; k++) {
                        if (!mnuPfZusArr[i]) {
                            mnuPfZusArr[i] = new Array();
                        }
                        if (!mnuPfZusArr[i][j]) {
                            mnuPfZusArr[i][j] = new Array();
                        }
                        mnuPfZusArr[i][j][k] = contMnuPfZus[k];
                    }

                    // Pflicht
                    if (contMnuCont[5]) {
                        if (!mnuPfArr[i]) {
                            mnuPfArr[i] = new Array();
                        }
                        mnuPfArr[i][j] = contMnuCont[5];
                    }
                }
            }

            if (contArr[8])
                mnuArr[i] = contArr[8];
        }
        artCount = ArtCount;
        currentWkPos = CurrentWkPos;
    }
}

function yOffset() {
    var yOffs;

    if (document.all && document.documentElement) //Microsoft IE 6+
    {
        yOffs = document.documentElement.scrollTop;
    }
    else if (document.all) //Microsoft IE 4
    {
        yOffs = document.body.scrollTop;
    }
    else // Netscape
    {
        yOffs = window.pageYOffset;
    }
    return yOffs;
}

function setScrollDist() {
    document.forms['theForm'].ScrollDistance.value = yOffset();
}

function NoDeliveryPLZ(PLZ) {
    if (PLZ) {
        alert('Die Postleitzahl ' + PLZ + ' wird von uns bisher leider nicht beliefert.');
    }
}

function __GoTo(Page) {
    document.forms['theForm'].action = Page;
    document.theForm.submit();
}

function __switch(Ort) {
    if (Ort != "") {
        document.theForm.Ort.value = Ort;
    }
    document.theForm.submit();
}

function __OrderErr(Status, Msg) {
    if (Status != 'Error') {
        alert(Msg);
    } else {
        alert('Es ist ein Fehler aufgetreten:\n' + Msg);
    }
}

function setIEVers(Version) {
    if (Version == 6)
        isIE6 = true;
    if (Version == 7)
        isIE7 = true;
}

// faq-switcher

function switchDisplay(id) {
    doc=document.getElementById(id);
    if (doc.style.display == 'none') {
        DivCount = document.forms['theForm'].DivCount.value;
        for (i = 1; i <= DivCount; i++){
            CloseID = 'Zusatz' + i + '_XS';
            CloseDoc = document.getElementById(CloseID);
            CloseDoc.style.display = 'none';
            CloseID = 'Zusatz' + i + '_S';
            CloseDoc=document.getElementById(CloseID);
            CloseDoc.style.display = 'none';
            CloseID = 'Zusatz' + i + '_N';
            CloseDoc=document.getElementById(CloseID);
            CloseDoc.style.display = 'none';
            CloseID = 'Zusatz' + i + '_L';
            CloseDoc=document.getElementById(CloseID);
            CloseDoc.style.display = 'none';
            CloseID = 'Zusatz' + i + '_XL';
            CloseDoc=document.getElementById(CloseID);
            CloseDoc.style.display = 'none';
        }
        doc.style.display = 'block';
        if (doc.scrollIntoView)
            doc.scrollIntoView(false);
        //scrollBy(0, 200);
    } else {
        doc.style.display = 'none';
    }
}

function setOpenTime(OpenTime, OpenTimeFtag) {

    var otDay = OpenTime.split(';');
    for (var i = 0; i < otDay.length; i++) {
        var otItem = otDay[i].split(',');
        for (var j = 1; j < otItem.length; j++) {
            if (j == 1)
                openTimeArr[otItem[0]] = new Array();
            openTimeArr[otItem[0]][j-1] = otItem[j];
        }
    }

    var otFtDay = OpenTimeFtag.split(';');
    for (var i = 0; i < otFtDay.length; i++) {
        var otFtItem = otFtDay[i].split(',');
        for (var j = 1; j < otFtItem.length; j++) {
            if (j == 1)
                openTimeFtagArr[otFtItem[0]] = new Array();
            openTimeFtagArr[otFtItem[0]][j - 1] = otFtItem[j];
        }
    }
    setHourOption();

    if (!isShopOpen()) {
        switchCB_liefertermin(true, true);
    }
}

function switchCB_sofort_liefern() {
    if (document.forms['theForm'].CB_sofort_liefern.checked) {
        document.forms['theForm'].CB_liefertermin.checked = false;
    } else {
        document.forms['theForm'].CB_liefertermin.checked = true;
    }
}

function switchCB_liefertermin(check, disable) {
    if (check) {
        document.forms['theForm'].CB_liefertermin.checked = true;
        document.forms['theForm'].CB_sofort_liefern.checked = false;
        if (disable) {
            document.forms['theForm'].CB_sofort_liefern.disabled = true;
        }
    } else {
        if (!document.forms['theForm'].CB_sofort_liefern.disabled) {
            if (document.forms['theForm'].CB_liefertermin.checked) {
                document.forms['theForm'].CB_sofort_liefern.checked = false;
            } else {
                document.forms['theForm'].CB_sofort_liefern.checked = true;
            }
        } else {
            document.forms['theForm'].CB_liefertermin.checked = true;
        }
    }
}

function __SwitchSelbstabholer(GroupID) {
    document.forms['theForm'].action = '05_bestellung-adresse.php';
    document.forms['theForm'].GroupID.value = GroupID;
    document.forms['theForm'].ArtCount.value = artCount;
    document.forms['theForm'].CurrentWkPos.value = currentWkPos;
    if (document.forms['theForm'].Zahlart) {
        if (document.forms['theForm'].Zahlart.value) {
            document.forms['theForm'].Zahlart.value = 'Bar'
        }
        else if (document.forms['theForm'].Zahlart[0]) {
            document.forms['theForm'].Zahlart[0].checked = true;
        }
    }
    setScrollDist();
    document.forms['theForm'].submit();
    return false;
}

function __SwitchZahlung(GroupID) {
    document.forms['theForm'].action = '05_bestellung-adresse.php';
    document.forms['theForm'].GroupID.value = GroupID;
    document.forms['theForm'].ArtCount.value = artCount;
    document.forms['theForm'].CurrentWkPos.value = currentWkPos;
    setScrollDist();
    document.forms['theForm'].submit();
    return false;
}

function isShopOpen() {
    var now = new Date();
    var dayOfWeek = now.getDay();
    var currDate = padout(now.getDate()) + "." + padout(now.getMonth() + 1) + "." + padout(now.getFullYear()); 
    var nowMin = now.getHours() * 60 + now.getMinutes();

    var fTag = getFeiertag(currDate);

    var von = "";
    var bis = "";

    if (fTag != "" && openTimeFtagArr[fTag]) {
        von = openTimeFtagArr[fTag][0];
        bis = openTimeFtagArr[fTag][1];
    } else {
        von = openTimeArr[dayOfWeek][0];
        bis = openTimeArr[dayOfWeek][1];
    }
    
    var openVon = von.substr(0, 2) * 60 + von.substr(3, 2) * 1;
    var openBis = bis.substr(0, 2) * 60 + bis.substr(3, 2) * 1;

    if (von == '00:00:00' && bis == '00:00:00') {
        return false;
    }
    if (openVon <= nowMin && nowMin <= openBis) {
        return true;
    }

    var von2 = "";
    var bis2 = "";
    if (fTag != "" && openTimeFtagArr[fTag]) {
        von2 = openTimeFtagArr[fTag][2];
        bis2 = openTimeFtagArr[fTag][3];
    } else {
        von2 = openTimeArr[dayOfWeek][2];
        bis2 = openTimeArr[dayOfWeek][3];
    }
    if (von2 != '' && bis2 != '') {
        var openVon2 = von2.substr(0, 2) * 60 + von2.substr(3, 2) * 1;
        var openBis2 = bis2.substr(0, 2) * 60 + bis2.substr(3, 2) * 1;

        if (openVon2 <= nowMin && nowMin <= openBis2) {
            return true;
        }
    }

    return false;
}

function deleteHourOption() {
    for (var i = 0; i < 24; i++) {
        if (document.forms['theForm'].LieferterminHour && document.forms['theForm'].LieferterminHour[0])
            document.forms['theForm'].LieferterminHour[0] = null;
    }
}

function deleteMinOption() {
    for (var i = 0; i < 4; i++) {
        if (document.forms['theForm'].LieferTerminMinute && document.forms['theForm'].LieferTerminMinute[0])
            document.forms['theForm'].LieferTerminMinute[0] = null;
    }
}

function setHourOption() {

    if (!document.forms['theForm'].SelectLiefertermin)
        return;
        
    deleteHourOption();
    
    var selIdx = document.forms['theForm'].SelectLiefertermin.selectedIndex;
    var selDate = document.forms['theForm'].SelectLiefertermin[selIdx].text;
    var currDate = selDate.substr(0, 10);
    var date = new Date(currDate.substr(6, 4), currDate.substr(3, 2) - 1, currDate.substr(0, 2));

    var now = new Date();
    now.setTime(now.getTime() + (lieferdauer * 60 * 1000));

    var hours = 0;
    if (now.getDate() == date.getDate()) {
        hours = now.getHours();
        if (now.getMinutes() > 45)
            hours++;
    }

    var fTag = getFeiertag(currDate);

    if (fTag != "" && openTimeFtagArr[fTag]) {
        for (var i = hours; i < 25; i++) {
            if ((openTimeFtagArr[fTag][0].substr(0, 2) <= i && openTimeFtagArr[fTag][1].substr(0, 2) >= i)
                || (openTimeFtagArr[fTag][2].substr(0, 2) != '' && openTimeFtagArr[fTag][3].substr(0, 2) != '' && openTimeFtagArr[fTag][2].substr(0, 2) <= i && openTimeFtagArr[fTag][3].substr(0, 2) >= i)) {
                var s;
                if (i < 10)
                    s = '0' + i;
                else
                    s = '' + i;
                addOption(document.forms['theForm'].LieferterminHour, s, s);
            }
        }
    } else {
        for (var i = hours; i < 25; i++) {
            if ((openTimeArr[date.getDay()][0].substr(0, 2) <= i && openTimeArr[date.getDay()][1].substr(0, 2) >= i)
                || (openTimeArr[date.getDay()][2].substr(0, 2) != '' && openTimeArr[date.getDay()][3].substr(0, 2) != '' && openTimeArr[date.getDay()][2].substr(0, 2) <= i && openTimeArr[date.getDay()][3].substr(0, 2) >= i)) {
                var s;
                if (i < 10)
                    s = '0' + i;
                else
                    s = '' + i;
                addOption(document.forms['theForm'].LieferterminHour, s, s);
            }
        }
    }

    setMinuteOption();
}

function setMinuteOption() {

    deleteMinOption();

    var selIdx = document.forms['theForm'].LieferterminHour.selectedIndex;
    var currHour = document.forms['theForm'].LieferterminHour[selIdx].text;

    var selIdx = document.forms['theForm'].SelectLiefertermin.selectedIndex;
    var selDate = document.forms['theForm'].SelectLiefertermin[selIdx].text;
    var currDate = selDate.substr(0, 10);
    var date = new Date(currDate.substr(6, 4), currDate.substr(3, 2) - 1, currDate.substr(0, 2));

    var now = new Date();
    isToday = false;
    if (now.toDateString() == date.toDateString()) {
        isToday = true;
    }
    now.setTime(now.getTime() + (lieferdauer * 60 * 1000));

    var fTag = getFeiertag(currDate);
    
    if (fTag != "" && openTimeFtagArr[fTag]) {
        for (var i = 0; i < 4; i++) {
            var min = i * 15;
            // bis
            if (currHour == openTimeFtagArr[fTag][0].substr(0, 2)) {
                if (min < openTimeFtagArr[fTag][0].substr(3, 2)) {
                    continue;
                }
            }
            // bis2
            if (openTimeFtagArr[fTag][2] != '' && currHour == openTimeFtagArr[fTag][2].substr(0, 2)) {
                if (min < openTimeFtagArr[fTag][2].substr(3, 2)) {
                    continue;
                }
            }
            // von
            if (currHour == openTimeFtagArr[fTag][1].substr(0, 2)) {
                if (min > openTimeFtagArr[fTag][1].substr(3, 2)) {
                    continue;
                }
            }
            // von2
            if (openTimeFtagArr[fTag][3] != '' && currHour == openTimeFtagArr[fTag][3].substr(0, 2)) {
                if (min > openTimeFtagArr[fTag][3].substr(3, 2)) {
                    continue;
                }
            }
            // now
            if (isToday && currHour == now.getHours()) {
                if (min < now.getMinutes()) {
                    continue;
                }
            }
            var s;
            if (min < 10)
                s = '0' + min;
            else
                s = '' + min;
            addOption(document.forms['theForm'].LieferTerminMinute, s, s);
        }
    } else {
        for (var i = 0; i < 4; i++) {
            var min = i * 15;
            // bis
            if (currHour == openTimeArr[date.getDay()][0].substr(0, 2)) {
                if (min < openTimeArr[date.getDay()][0].substr(3, 2)) {
                    continue;
                }
            }
            // bis2
            if (openTimeArr[date.getDay()][2] != '' && currHour == openTimeArr[date.getDay()][2].substr(0, 2)) {
                if (min < openTimeArr[date.getDay()][2].substr(3, 2)) {
                    continue;
                }
            }
            // von
            if (currHour == openTimeArr[date.getDay()][1].substr(0, 2)) {
                if (min > openTimeArr[date.getDay()][1].substr(3, 2)) {
                    continue;
                }
            }
            // von2
            if (openTimeArr[date.getDay()][3] != '' && currHour == openTimeArr[date.getDay()][3].substr(0, 2)) {
                if (min > openTimeArr[date.getDay()][3].substr(3, 2)) {
                    continue;
                }
            }
            // now
            if (isToday && currHour == now.getHours()) {
                if (min < now.getMinutes()) {
                    continue;
                }
            }
            var s;
            if (min < 10)
                s = '0' + min;
            else
                s = '' + min;
            addOption(document.forms['theForm'].LieferTerminMinute, s, s);
        }
    }
}

function addOption(selectObject, optionText, optionValue) {
    var optionObject = new Option(optionText, optionValue);
    var optionRank = selectObject.options.length;
    selectObject.options[optionRank] = optionObject;
}

function emailValidator(email) {
    var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
    if (email.match(emailExp)) {
        return true;
    } else {
        return false;
    }
}

function easter_date(Y) {
    a = Y % 19;
    b = Math.floor(Y / 100);
    c = Y % 100;
    d = Math.floor(b / 4);
    e = b % 4;
    f = Math.floor((b + 8) / 25);
    g = Math.floor((b - f + 1) / 3);
    h = (19 * a + b - d - g + 15) % 30;
    i = Math.floor(c / 4);
    k = c % 4;
    l = (32 + 2 * e + 2 * i - h - k) % 7;
    m = Math.floor((a + 11 * h + 22 * l) / 451);
    n = Math.floor((h + l - 7 * m + 114) / 31);
    p = (h + l - 7 * m + 114) % 31 + 1;

    return new Date(Y, n - 1, p);
}

function padout(number) { return (number < 10) ? '0' + number : number; }

function getFeiertag(currDate) {
    var ftag = new Array();
    ftag[0] = new Object();
    var year = currDate.substr(6, 4);
    var nextYear = year;
    nextYear++;
    var date = new Date(currDate.substr(6, 4), currDate.substr(3, 2) - 1, currDate.substr(0, 2));
    var easter = easter_date(year);
    var nextEaster = easter_date(nextYear);

    ftag[0][(date > new Date(year,  0,  1)) ? "01.01." + nextYear : "01.01." + year] = "Neujahr";
    ftag[0][(date > new Date(year,  0,  6)) ? "06.01." + nextYear : "06.01." + year] = "3Koenige";
    ftag[0][(date > new Date(year,  4,  1)) ? "01.05." + nextYear : "01.05." + year] = "1Mai";
    ftag[0][(date > new Date(year,  7, 15)) ? "15.08." + nextYear : "15.08." + year] = "MariaHimmelfahrt";
    ftag[0][(date > new Date(year,  9,  3)) ? "03.10." + nextYear : "03.10." + year] = "Nationalfeiertag";
    ftag[0][(date > new Date(year,  9, 31)) ? "31.10." + nextYear : "31.10." + year] = "Reformationstag";
    ftag[0][(date > new Date(year, 10,  1)) ? "01.11." + nextYear : "01.11." + year] = "Allerheiligen";
    ftag[0][(date > new Date(year, 11, 24)) ? "24.12." + nextYear : "24.12." + year] = "Heiligabend";
    ftag[0][(date > new Date(year, 11, 25)) ? "25.12." + nextYear : "25.12." + year] = "1Weihnachtstag";
    ftag[0][(date > new Date(year, 11, 26)) ? "26.12." + nextYear : "26.12." + year] = "2Weihnachtstag";
    ftag[0][(date > new Date(year, 11, 31)) ? "31.12." + nextYear : "31.12." + year] = "Sylvester";

    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() - 48)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() - 48))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() - 48)))] = "Rosenmontag";
    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() - 46)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() - 46))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() - 46)))] = "Aschermittwoch";
    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() -  2)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() -  2))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() -  2)))] = "Karfreitag";
    ftag[0][date > new Date(easter                                         ) ? dateFormat(new Date(nextEaster                                             )) : dateFormat(new Date(easter                                         ))] = "Ostersonntag";
    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() +  1)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() +  1))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() +  1)))] = "Ostermontag";
    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() + 39)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() + 39))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() + 39)))] = "ChristiHimmelfahrt";
    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() + 49)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() + 49))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() + 49)))] = "Pfingstsonntag";
    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() + 50)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() + 50))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() + 50)))] = "Pfingstmontag";
    ftag[0][date > new Date(new Date(easter).setDate(easter.getDate() + 60)) ? dateFormat(new Date(new Date(nextEaster).setDate(nextEaster.getDate() + 60))) : dateFormat(new Date(new Date(easter).setDate(easter.getDate() + 60)))] = "Fronleichnam";

    if (ftag[0][currDate])
        return ftag[0][currDate];
    else
        return "";
}

function dateFormat(date) {
    return padout(date.getDate()) + "." + padout(date.getMonth()+1) + "." + date.getFullYear();
}
