function checkRequired(form, required, names, _setClassName) {
	var t = this;
	var __requiredAry = required.split(",");
	var __namesAry = names.split(",");
	var __setClassName = _setClassName;
	var __isOk = true;
	var __message;

	t.ok = function() { return __isOk; }
	t.message = function() { return __message; }
	
	function init() {
		__message = "";
		for(var i = 0; i < __requiredAry.length; i++) {
			if(form[__requiredAry[i]]) {
				if(form[__requiredAry[i]].type == 'radio') { // radio
					var flag = false;
					for(var j=0;j<form[__requiredAry[i]].length;j++)
						if(form[__requiredAry[i]][j].checked) flag=true;
					if(!flag) {
						__message += "- " + __namesAry[i] + "<br>\n";
						if(__setClassName) form[__requiredAry[i]].className = __setClassName;
						__isOk = false;
					}else{
						if(__setClassName) form[__requiredAry[i]].className = "";
					}
				}
				else if (form[__requiredAry[i]].value=="") {
					__message += "- " + __namesAry[i] + "<br>\n"; // empty field
					if(__setClassName) form[__requiredAry[i]].className = __setClassName;
					__isOk = false;
				}
				else if(__requiredAry[i] == 'quiz' && form[__requiredAry[i]].value != 'yes') {
					__message += "- You are not a human! What gives?<br>\n"; // quiz question
					if(__setClassName) form[__requiredAry[i]].className = __setClassName;
					__isOk = false;
				}else if(form[__requiredAry[i]].value) { // email
					if(__requiredAry[i].toLowerCase().indexOf("email") != -1) {
						if (!isEmail(form[__requiredAry[i]].value)) {
							__message += "- " + __namesAry[i] + " is invalid<br>\n";
							if(__setClassName) form[__requiredAry[i]].className = __setClassName;
							__isOk = false;
						}
					}else if(__setClassName) form[__requiredAry[i]].className = "";
				}
			}
		}
	}
	
	function isEmail(entry) {
		var rex= /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,5})(\]?)$/;
		return rex.test(entry);
	}
	
	init();

}