
function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

function containsForbidden(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c == ' ') || (c == '\n') || (c == '\t')) return true;
    }
    return false;
}


function verify(f)
{
    var msg;
    var empty_fields = "";
    var errors = "";
		var lastchecked = "";
		var valid = false;

for(var i = 0; i < f.length; i++) {
       var e = f.elements[i];

//alert(e.name + ": " + e.required);
       if (e.type == "radio") {
           if ((lastchecked != e.name) && (f[e.name][0].required)) {
               valid = false
               for(var j = 0; j < f[e.name].length; j++) {
                   if (f[e.name][j].checked) {
                       valid = true
                       j = f[e.name].length
                   }
               }
               if (!valid) {
                   empty_fields += "\n          " + e.name;
               }
           }
           lastchecked = e.name
       }
       if (((e.type == "text") ||
           (e.type == "textarea")) &&
           e.required == true) { 

            if ((e.value == null) || (e.value == "") || isblank(e.value)) {
                empty_fields += "\n          " + e.name;
                continue;
            }

            if (e.mail != null) {
                var firstAt = e.value.indexOf("@");
                var lastAt = e.value.lastIndexOf("@");
                var dot = e.value.length - e.value.lastIndexOf(".") - 1;
                var at =  e.value.length - e.value.lastIndexOf("@") - dot - 2;
                if ( firstAt != lastAt || 
                     dot > 3 || 
                     dot < 2 || 
                     at < 2 ||
                     e.value.indexOf("@") < 1 ||
                     containsForbidden(e.value)) {
//                    alert(e.value.indexOf("@") + " =  " + e.value.lastIndexOf("@")+"\n" + dot+"\n" + at);
                     errors += "Die E-Mail Adresse ist nicht korrekt.";
                }



            }


            if (e.numeric == true || (e.min != null) || (e.max != null)) { 
                var v = parseFloat(e.value);
                if (isNaN(v) || 
                    ((e.min != null) && (v < e.min)) || 
                    ((e.max != null) && (v > e.max))) {
                    errors += "- Das Feld " + e.name + " erwartet eine numerische Angabe";
                    if (e.min != null) 
                        errors += ": > " + e.min;
                    if (e.max != null && e.min != null) 
                        errors += " und < " + e.max;
                    else if (e.max != null)
                        errors += ": < " + e.max;
                    errors += ".\n";
                }
            }
        }
    }


    if (!empty_fields && !errors) return true;

    msg  = "______________________________________________________\n\n"
    msg += "Das Formular konnte nicht verschickt werden.\n";
    msg += "Bitte korrigieren Sie den/die angezeigten Fehler.\n";
    msg += "und versuchen Sie es erneut.\n";
    msg += "______________________________________________________\n\n"

    if (empty_fields) {
        msg += "- Die folgenden Pflichtfelder sind leer:" 
                + empty_fields + "\n";
        if (errors) msg += "\n";
    }
    msg += errors;
    alert(msg);
    return false;
}


