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

/* hc */

var fields = 'i_name i_vorname i_email i_street i_plz i_age i_ort'.split(" ");

var fieldres = new Object();
fieldres.i_name             = mkprops(/^[A-Za-z]+/, false);
fieldres.i_vorname          = mkprops(/^[A-Za-z]+/, false);
fieldres.i_street           = mkprops(/^.+/, false);
fieldres.i_email            = mkprops(/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Za-z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b$/, true);
fieldres.i_plz              = mkprops(/^[0-9]+/, false);
fieldres.i_age              = mkprops(/^[0-9]+/, false);
fieldres.i_ort              = mkprops(/^.+/, false);

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

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

            field = document.getElementById(fieldname);
            if (c_ok) {
                field.style.border = "";
            } else {
                field.style.border = "thin solid red";
                ok = false;
            }
            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) {
        document.getElementById('form').submit();
    } else {
        alert("Bitte fuellen Sie alle rot markierten Felder korrekt aus.");
    }
}


