function checkFormFields(fname, formid, controlList){
	var resCheck = true;
	var emptyVals = new Object();
	var invalidVals = new Object();
	var formId = fname+formid;
	var cForm = document.getElementById(formId);
	for(var fid in controlList){
		var obj = cForm.elements["NewsLetters"+fid];
		if(controlList[fid][2]!=null && controlList[fid][2].length!=0){
			for(var i=0;i<controlList[fid][2].length;i++){
				try{
					var res = null;
					var cmd = "res = "+controlList[fid][2][i]+"(obj)";
					eval(cmd);
					if(res==false){	// invalid value
						resCheck = false;
						invalidVals[fid] = true;
					} else {	// value -Ok
						if(res==null) {
							emptyVals[fid] = true;	// value is empty
							}
					}
				} catch (exception){
					alert(exception);
					alert("Check function: "+controlList[fid][2][i]+" not defined");
				}
			}
		} else {	// not exists the control for field
			var val = new String(obj.value);
			val = val.trim();
			if(controlList[fid][1] && val.length==0) {
				emptyVals[fid] = true;	// value is empty
			}
		}
	}
	// lets check the results
	var msg = "";
	var invValMsg = "";
	for(var fid in invalidVals){
		invValMsg += "<li>"+controlList[fid][0]+"</li>";
	}
	if(invValMsg.length!=0)	msg += "The following values are invalid:<ul style=\"margin-top:0 px;margin-bottom:0 px;padding-top:0 px;padding-bottom:0 px;\">"+invValMsg+"</ul>";
	var absValMsg = "";
	for(var fid in emptyVals){
		resCheck = false;
		absValMsg += "<li>"+controlList[fid][0]+"</li>";
	}
	if(absValMsg.length!=0) msg += ((msg.length!=0)?"<br>":"")+"The following fields must be filled:<ul style=\"margin-top:0 px;margin-bottom:0 px;padding-top:0 px;padding-bottom:0 px;\">"+absValMsg+"</ul>";
	if(msg.length!=0) {
		document.getElementById("errorMsgs"+formid).innerHTML = msg;
		document.getElementById("errorMsgs"+formid).style.display = "block";
	} else
		document.getElementById("errorMsgs"+formid).style.display = "none";
	return resCheck;
}
