fdef = new Array();
fdef['_re'] = new Array();
fdef['_re']['email'] = /^\w+(\.\w+)*@\w+(\.\w+)+$/;

function checkForm(fname) {
    if ((fdef[fname] != undefined) && (document.forms[fname] != undefined)) {
        f = fdef[fname];
        frm = document.forms[fname];
        result = true;

        msg = '';

        // Walk through all the fields ...
        for (e=0, el=f['fields'].length; e<el; e++) {
            fldn = f['fields'][e];
            fldt = f['types'][fldn];
            fldr = f['require'][fldn];
            fldv = f['validate'][fldn];
            fld = frm.elements[fldn];

            switch (fldt) {
                case 'text':
                        if (fldr || fld.value != '') {
                            if (fldr && (fld.value == '')) {
                                msg += "Field "+fldn+": Value required\n";
                            } else if (fldr && fldv.value != '') {
                                if (fldv != undefined) {
                                    switch (fldv) {
                                        case 'email':
                                            if (!(fdef['_re']['email'].test(fld.value))) {
                                                msg += "Field "+fldn+": Wrong value\n";
                                                result = false;
                                            }
                                            break;
                                    }
                                }
                            }
                        }
                    break;
            }
        }

        if (!result) alert(msg);
        return result;
    }
    return true;
}
