var mkprops = function(re, mandatory) {
    var x = new Object();
    x.re = re;
    x.mandatory = mandatory;
    return x;
}

var fields = 'o_anrede i_name i_vorname i_bday i_street i_zip i_place i_staat i_tel i_cell i_email i_school i_jed i_fjed x_futherremarks i_emz i_ibma i_imifra c_bes i_gapw i_wssanag f_bewerbung f_foto f_lebenslauf f_sonstiges m_accept'.split(" ");

var fieldres = new Object();
fieldres.i_name             = mkprops(/^[A-Za-z]+/, true);
fieldres.i_vorname          = mkprops(/^[A-Za-z]+/, true);
fieldres.i_bday             = mkprops(/^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$/, true);
fieldres.i_street           = mkprops(/^[A-Za-z]+.*[0-9]+/, true);
fieldres.i_zip              = mkprops(/^[0-9]{5}$/, true);
fieldres.i_place            = mkprops(/^[A-Za-z]+/, true);
fieldres.i_staat            = mkprops(/^[^ ]+/, true);
fieldres.i_tel              = mkprops(/^\+?[0-9 \(\)]+$/, false);
fieldres.i_cell             = mkprops(/^\+?[0-9 \(\)]+$/, false);
fieldres.i_email            = mkprops(/^[^ @]+@[^ \.]+\.[^ ]+$/, true);
fieldres.i_school           = mkprops(/.*/, false);
fieldres.i_jed              = mkprops(/.*/, false);
fieldres.i_fjed             = mkprops(/.*/, false);
fieldres.i_emz              = mkprops(/^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$/, true);
fieldres.i_gapw             = mkprops(/^[0-9]+$/, false);
fieldres.i_ibma             = mkprops(/.+/, true);
fieldres.i_imifra           = mkprops(/.+/, true);
fieldres.i_wssanag          = mkprops(/.*/, true);
fieldres.f_bewerbung        = mkprops(/\.(pdf|zip)$/i, true);
fieldres.f_foto             = mkprops(/\.(jpe?g|zip)$/i, false);
fieldres.f_lebenslauf       = mkprops(/\.(pdf|zip)$/i, false);
fieldres.f_sonstiges        = mkprops(/\.(pdf|zip)$/i, false);

var checkFields = function() {
    ok = true;
    for (var i = 0; i < fields.length; i++) {
        var fieldname = fields[i];
        var c;
        var ok;
        var field;
        var fieldre;

        c = 1;
        switch(fieldname[0]) {
        case 'o':
        case 'c':
            ok = false;
            while(true) {
                field = document.getElementById(fieldname + c);
                if (field == null) {
                    break;
                }
                if (field.checked) {
                    ok = true;
                }
                c++;
            }

            field = document.getElementById(fieldname);
            if (ok) {
                field.style.border = "";
            } else {
                field.style.border = "thin solid red";
            }
            break;

        case 'i':
            field = document.getElementById(fieldname);
            // If field doesn't exist, we ignore it
            if (field == null) {
                break;
            }
            fieldre = fieldres[fieldname];
            if ((field.value.length == 0) && (!fieldre.mandatory)) {
                field.style.border = "";
                break;
            }
            if (fieldre.re.exec(field.value) == null) {
                field.style.border = "thin solid red";
                ok = false;
                break;
            }
            field.style.border = "";
            break;
            
        case 'm':
            field = document.getElementById(fieldname + "1");
            if (field.checked) {
                field = document.getElementById(fieldname);
                field.style.border = "";
            } else {
                field = document.getElementById(fieldname);
                field.style.border = "thin solid red";
                ok = false;
            }
            break;

        case 'f':
            field = document.getElementById(fieldname + "1");
            fieldre = fieldres[fieldname];
            if ((field.value.length == 0) && (!fieldre.mandatory)) {
                field = document.getElementById(fieldname);
                field.style.border = "";
                break;
            }
            if (fieldre.re.exec(field.value) == null) {
                field = document.getElementById(fieldname);
                field.style.border = "thin solid red";
                ok = false;
            } else {
                field = document.getElementById(fieldname);
                field.style.border = "";
            }
            break;
        }
    }
    if (ok) {
        var progressdiv = document.getElementById("progressdiv");
        var formdiv = document.getElementById("formdiv");
        if (progressdiv) progressdiv.style.display = "";
        if (formdiv) formdiv.style.display = "none";
        document.getElementById('form').submit();
    } else {
        alert("Bitte fuellen Sie alle rot markierten Felder korrekt aus.");
    }
}



