// -----------------------------------------------------------------------------------
// FORM HANDLING -  GENERAL USE
// -----------------------------------------------------------------------------------
function checkFormNL(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory) {
	try {	var jValue, jType, jMsg="", jRegExp, jCount=0, jFormObj, jGotError, jMaxError = 5;

			for (var y=0; y<jFields.length; y++) { 
				if (checkFormObject(jFields[y], jFormName)) {	
						jFormObj = document.forms[jFormName].elements[jFields[y]];
						jValue	 = ""; jGotError = false;

						try { jType = jFormObj.type;  } catch (excp) {  }
						try { jType = jType.toUpperCase(); } catch (excp) { jType = ''; }

						if  (jType=='SELECT') { jValue = jFormObj.options[jFormObj.selectedIndex].value; } 
						else if (jType=='SELECT-ONE') { jValue = jFormObj.options[jFormObj.selectedIndex].value; } 
						else if (jType=='RADIO') { jValue = checkRadioButton(jFormObj); }
						else if (jType=='TEXT') { jValue = jFormObj.value; }
						else if (jType=='CHECKBOX') { jValue = jFormObj.checked.toString(); if ((jValue=='0') || (jValue=='false')) { jValue=''; } }
						else if (jType=='TEXTAREA') { jValue = jFormObj.value; }
						else if (jType=='FILE') { jValue = jFormObj.value; }
						else if (jType=='HIDDEN') { jValue = jFormObj.value; }
						else if (jType=='PASSWORD') { jValue = jFormObj.value; }
						else if (checkIsArray(jFormObj)) { jType='RADIO'; jValue = checkRadioButton(jFormObj); } 

						// only validate input if it is required or when it is filled.
						if ((jValue.length>0) || (jMandatory[y].toLowerCase()=="true")) {
							jValue = jValue.replace(/^\s+|\s+$/g,"gi"); jRegExp = new RegExp(jChecks[y],"gi"); 
							if (jRegExp.test(jValue) == false) { jGotError = true; }
						
							if (jGotError == true) { 
								if (checkObject(jFields[y]+'ID')) { document.getElementById(jFields[y]+'ID').innerHTML = jFieldMsg[y]; } jCount+=1;
								if (jCount<jMaxError) { jMsg += "- " + jFields[y] + ': '+ jFieldMsg[y] + "\n"; }  
							} else { if (checkObject(jFields[y]+'ID')) { document.getElementById(jFields[y]+'ID').innerHTML = ''; } }
						}
				}
			}

		// normal handling
		if (jCount>=jMaxError) { jMsg += "...\n";  }
		if (jMsg.length> 0) { alert("Niet alle velden zijn correct ingevuld.\n \n"+jMsg+"\n Controleer de ingevulde gegevens en probeer het opnieuw."); return false; }
		if (jMsg.length==0) { 
				if (checkObject(jFormName+"SentButton")) { document.getElementById(jFormName+"SentButton").disabled = true;  }
				if (checkFormObject("SentButton", jFormName)) { document.forms[jFormName].elements["SentButton"].disabled = true;  }
				if (checkFormObject("sendingformallowed", jFormName)) { document.forms[jFormName].elements['sendingformallowed'].value = '556d699968986a989a9869986e989a986c709d98989898989b996c986a9869'; }
				document.forms[jFormName].action = jAction.toLowerCase();
		}

	} catch (excp) { alert('Current webbrowser is not supported.\nError: '+excp); return false; }
}

// check value of raiobuttons
function checkRadioButton(jObj) {
    var cnt = -1;
    for (var i=jObj.length-1; i > -1; i--) { if (jObj[i].checked) {cnt = i; i = -1;} }
    if (cnt > -1) return jObj[cnt].value;
    else return '';
}

// checks if an object is an array
function checkIsArray(jObj) {
	try {    if (jObj.length>0) { return true; } else { return false };
	} catch (excp) { return false }
}

// checks if an object exists
function checkObject(jID) { 
	try { var o = document.getElementById(jID); if (o) { return true } else { return false }
	} catch (excp) { return false }
}

// checks if an form object exists
function checkFormObject(jName, jFormName) { 
	try { var o = document.forms[jFormName].elements[jName]; if (o) { return true } else { return false }
	} catch (excp) { return false }
}

// -----------------------------------------------------------------------------------
function checkForm5684(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory) {
	var jFields = Array("Naam","Emailadres");
	var jFieldMsg = Array("3-100 karakters","naam@domein.nl");
	var jChecks = Array(".{3,100}","^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
	var jMandatory = Array("true","true");
	return checkFormNL(jAction, jFormName, jFields, jFieldMsg, jChecks, jMandatory);
}
