function formval(f){
	var validators = new Array();
	validators['default'] = function(fld){return true};
	validators['email'] = function(fld){var expr = /^[a-z0-9\.\-_]+@[a-z0-9\.\-_]+\.[a-z]{2,}$/; return expr.test(fld.value)};
	validators['integer'] = function(fld){var expr = /^[0-9]+$/; return expr.test(fld.value)};
	validators['number'] = function(fld){var expr = /^-?[0-9]+([\.,][0-9]+)?$/; return expr.test(fld.value)};
	var fail = function(elm, msg){alert(msg); Field.activate(elm); return false;};
	var elms = f.elements;
	var radios = new Array();
	for(index=0;index<elms.length;index++){
		var elm = elms[index];
		if(elm.type != 'radio'){
			//if((elm.type != 'checkbox') && (elm.type != 'submit')){
			if(['checkbox','submit'].indexOf(elm.type) == -1){
				if(elm.name.indexOf(':') > -1){
					var parts = elm.name.split(':');
					elm.plainName = parts[0];
					elm.required = (parts[1]=='required');
					elm.validator = (['optional','required'].indexOf(parts[1]) > -1) ? ((parts.length > 2)? parts[2] : 'default') : parts[1];
					if(elm.type == 'select-one'){
						if(elm.required && (elm.selectedIndex == 0)) return fail(elm, 'Du skal vælge '+ elm.plainName);
					} else {
						if(elm.required && (elm.value == '')) return fail(elm, 'Du skal udfylde feltet '+ elm.plainName);
						if((elm.value!='') && (!validators[elm.validator](elm))) return fail(elm, elm.plainName + ' er ikke udfyldt korrekt');
					}
				}
			}
		} else {
			if(radios.indexOf(elm.name) == -1){
				radios[radios.length] = elm.name;
				var flds = Form.getInputs(f, 'radio', elm.name);
				if(flds.all(function(fld, indx){return !fld.checked})) return fail(elm, 'Du skal vælge ' + elm.name);
			}
		}
	}
	return true;
}

