if (!required) {
	var required = new Array() ;
}
if (!check) {
	var check = new Array() ;
}

//if (!check_form) {

check_form = function(formname) {
    fehler = new Array() ;

        //opera.postError(formname) ;
        //opera.postError(required[formname].length) ;
    for (i = 0; i < required[formname].length; i++) {
        //opera.postError(required[formname][i][0]) ;
        if (required[formname][i][2] == '/check/') {
            ch = false ;
            
            var checks = eval('document.'+formname+'.'+required[formname][i][0]) ;
            if (typeof checks == 'object' && !checks.length) {
            	checks = new Array(checks) ;
            }
            
            for (j = 0; j < checks.length; j++) {
                if (checks[j].checked) {
                    ch = true ;
                }
            }

            f = !ch ;
        }
        else {
            wert = eval('document.'+formname+'.'+required[formname][i][0]+'.value') ;
            f = (!wert.match(required[formname][i][2]) || (wert == eval('document.'+formname+'.'+required[formname][i][0]+'.defaultValue'))) ;
        }

        if (f) {
            fehler[fehler.length] = i ;
        }
    }
    
    fehler_check = new Array() ;
    for (i = 0; i < check[formname].length; i++) {
        if (check[formname][i][2] != '/check/') {
            wert = eval('document.'+formname+'.'+check[formname][i][0]+'.value') ;
            f = (wert && !wert.match(check[formname][i][2])) ;
        }

        if (f) {
            fehler_check[fehler_check.length] = i ;
        }
    }

    if (fehler.length + fehler_check.length == 0) {
        return true ;
    }

    text = "Bitte füllen Sie folgende Felder korrekt aus:" ;

    first = true ;
    for (i = 0; i < fehler.length; i++) {
        if (first) {
            if (required[formname][fehler[i]][2] == '/check/') {
                feld = required[formname][fehler[i]][0] ;
                feld = eval('document.'+formname+'.'+feld) ;
	            if (typeof feld == 'object' && feld.length) {
	            	feld = feld[0] ;
	            }
            }
            else {
                feld = required[formname][fehler[i]][0] ;
                feld = eval('document.'+formname+'.'+feld) ;
            }
            feld.focus() ;
            first = false ;
        }

        text += "\n- "+required[formname][fehler[i]][1] ;
    }

    for (i = 0; i < fehler_check.length; i++) {
        if (first) {
            if (check[formname][fehler_check[i]][2] == '/check/') {
                feld = check[formname][fehler_check[i]][0]+'[0]' ;
            }
            else {
                feld = check[formname][fehler_check[i]][0] ;
            }
            eval('document.'+formname+'.'+feld+'.focus()') ;
            first = false ;
        }

        text += "\n- "+check[formname][fehler_check[i]][1] ;
    }

    alert(text) ;

    return false ;
}

//} // if