
// Eenvoudige validatie, velden die met 'required-' beginnen zijn verplicht (of velden die in het veld Required staan, gescheiden door ; of ,)
// aanroep in form definitie => onsubmit="return form_valid(this)"
function form_valid(form, pClassname, pSubmit) {
var tel;
var objfield;
var strfieldname;
var strerror='';
var blnFirst=true;
var blnCheckField;
var flds_arr;
var req_fld = form["required"];

if (pSubmit == null)     pSubmit    = 'Verstuur';
if (pClassname == null)  pClassname = 'forgotten';

if (form){
	if (req_fld) flds_arr=lib_array_split( req_fld.value );

	for (tel=0;tel<form.length;tel++) {
		objfield = form.elements[tel];
		blnCheckField = false;
		if (objfield.name) {
			strfieldname=objfield.name;
			if (strfieldname.substring(0,8).toLowerCase()=='required') {
				blnCheckField = true;
			} else {
				if (flds_arr) blnCheckField = ( lib_array_find(flds_arr, strfieldname) != -1 )
			} 
			if ( blnCheckField) {
				var sNiceField = '';
				var lbl_elt = form[strfieldname+'__label'];
				if (lbl_elt) {
					sNiceField = lbl_elt.value;
				} 
				if (sNiceField=='') {
					var sNiceField = strfieldname;
					if (strfieldname.substring(0,8).toLowerCase()=='required') {
						sNiceField = sNiceField.substring(8);
					}
					sNiceField=sNiceField.replace(/_/gi, " ");
					sNiceField=sNiceField.replace(/-/gi, "");
				}
				sNiceField = sNiceField.substring(0,1).toUpperCase() + sNiceField.substring(1);
				switch (objfield.type) {
					case 'checkbox':
						if (!check_required_radio_checkbox(form,strfieldname)) {
							strerror+=(' - <strong>'+sNiceField+'</strong> is niet aangevinkt.\n');
							form_field_set_forgotten( form[tel], true, pClassname );
						} else {
							form_field_set_forgotten( form[tel], false, pClassname );
						}
						// skip all other instances of this checkbox
						if (tel+1<form.length) 
							while (form[tel].name.toLowerCase()==strfieldname.toLowerCase() && tel+1<form.length) tel++;
						break;
						
					case 'radio':
						if (!check_required_radio_checkbox(form,strfieldname)) { 
							strerror+=(' - <strong>'+sNiceField+'</strong> is niet geselecteerd.\n')
							form_field_set_forgotten( form[tel], true, pClassname );
						} else {
							form_field_set_forgotten( form[tel], false, pClassname );
						}
						// skip all other instances of this radiobutton
						if (tel+1<form.length) 
							while (form[tel].name.toLowerCase()==strfieldname.toLowerCase() && tel+1<form.length) tel++;
						break;
						
					default:
						if (objfield.type!='hidden') {
							if (objfield.value=='') {
								if (blnFirst) {
									try { 
										objfield.focus();
										blnFirst=false;
									}
									catch(e){}
								}
								strerror+=(' - <strong>'+sNiceField+'</strong> is niet ingevuld.\n');
							}
							form_field_set_forgotten( form[tel], (objfield.value==''), pClassname );
						}
						break;
				}
			}
		}
	}

	if (strerror=='') {
		if (document.all){
			for (tel=0;tel<form.length;tel++) {
				objfield=form[tel];
				if (objfield.type=="submit"||objfield.type=="button")  
					objfield.disabled = true;
			} 
		}
		return true;
	} else {
		strerror='De volgende gegevens ontbreken of zijn niet correct\n\n'+strerror+'\nHerstel de fout(en) en druk opnieuw op '+pSubmit+'.';
		lib_alertbox(strerror, "Het formulier is niet correct of niet volledig ingevuld", "error");
		return false;
	}
}
}

function form_field_set_forgotten (item, bForgotten, pClassname) {

	if (pClassname!='') {
		if (bForgotten) {
			// new: change style of input field
			if (!item.validation_className_saved) {
				item.saved_validation_className = item.className;
				item.validation_className_saved = true;
			}	
			item.className = item.className + ' ' + pClassname;
		} else {
			// new: change style of input field, reset (2nd validation request)
			if (item.validation_className_saved) {
				item.className = item.saved_validation_className;
			}
		}
	}
}

function form_init() {}

function check_required_radio_checkbox( frm, rad_name ) {
	var bRet=false;

	for (var t=0;t<frm.length;t++) {
		if (frm[t].name) {
		    if (frm[t].name.toLowerCase()==rad_name.toLowerCase()) {
			    if (frm[t].checked) bRet=true;
			}
		}
	}
	return bRet; 
}
