function checkForm(formName) {
	var form = __forms[formName];
	var domform = document[formName];
	hideErrors(formName);
	var errorCount = 0;
	for (i in form) {
		// check if passwords require matching
		if (form[i].confirm) {
			if (domform[i].value != domform[form[i].confirm].value) {
				showError(formName,i,'Passwords do not match');
				errorCount++;
				continue;
			}
			continue;
		}
		// check that required fields are filled out
		if (form[i].required && domform[i].value == '') {
			showError(formName,i,form[i].label+' is a required field');
			errorCount++;
			continue;
		}
		// check required length
		if (form[i].minLength && domform[i].value.length > 0 && domform[i].value.length < form[i].minLength) {
			showError(formName,i,form[i].label+' is not the required length ('+form[i].minLength+')');
			errorCount++;
			continue;
		}
		// check regular expression
		if (form[i].regExps && domform[i].value.length != 0) {
			for (var j=0; j< form[i].regExps.length; j++) {
				regex = form[i].regExps[j];
				if (!regex['regex'].test(domform[i].value)) {
					showError(formName,i,regex['msg']);
					errorCount++;
				}
			}
		}
	}
	// submit form
	if (errorCount == 0)
		domform.submit();
	else {
		if (domError = document.getElementById('form-errors')) {
			domError.innerHTML = errorCount+' errors found. Please check the form and try again';
			domError.style.display = 'block';
		}
	}
	return (errorCount == 0);
}

function showError(formName,i,msg) {
	elm = document.getElementById(formName+'-'+i);
	elm.innerHTML = msg;
}

function hideErrors(formName) {
	var form = __forms[formName];
	for (i in form) {
		if (elm = document.getElementById(formName+'-'+i))
			elm.innerHTML = '';
	}
}
