function formSubmit(pFormId, pNode) {
	var fForm;
	if (pFormId == null && pNode != null) {
		fForm = getParentForm(pNode);
	} else fForm = document.getElementById(pFormId);
	var fElems = fForm.elements;
	for (var i=0;i < fElems.length; i++) {
		var lElem = fElems[i];
		if (lElem == null || lElem.nodeType != 1) continue;
		var lNodename = lElem.nodeName.toLowerCase();
		var lType = lElem.getAttribute("type");
		var lClassError = "ErrorForm";
		if (lNodename == "input") {
			lType = lType.toLowerCase();
			lClassError = lType + lClassError;
		} else {
			lClassError = lNodename + lClassError;
		}
		
		var isRequired = false;
		if (lElem['classInputError'] != null) {
			lElem.className = lElem['classInputError'];
			lElem['classInputError'] = null;
		}
		var fClass = lElem.className;
		
		if (fClass) isRequired = (fClass.indexOf("tbs_form_required") >= 0);
		if (isRequired) {
			if (lType == "radio" || lType == "checkbox") {
				var lChecked = false;
				var lName = lElem.getAttribute("name");
				for (var j=0; j < fElems.length; j++) {
					var jNode = fElems[j];
					if (jNode.getAttribute("name") == lName && jNode.checked == true) {
						lChecked = true;
						break;
					}
				}
				if (lChecked == false) {
					if (lElem['classInputError'] == null) {
						lElem['classInputError'] = fClass;
						lElem.className += " " + lClassError;
					}
					lElem.focus();
					return false;
				}
			} else {
				if (lElem.value == null || lElem.value.toString().length == 0) {
					if (lElem['classInputError'] == null) {
						lElem['classInputError'] = fClass;
						lElem.className += " " + lClassError;
					}
					lElem.focus();
					return false;
				}
			}
		}
		
		if (lType == "password") {
			var fSes = document.getElementById("session");
			if (fSes != null && fSes.value && fSes.value.length == 33) {
				var fEnc = hex_md5(fSes.value + lElem.value);
				lElem.value = fEnc;
			}
			var fCheck = fClass.indexOf('tbs_form_isequal_');
			if (fCheck >= 0) {
				var fEnd = fClass.indexOf(' ', fCheck);
				if (fEnd <= fCheck) fEnd = fClass.length;
				var fName = fClass.substring(fCheck+17, fEnd);
				var fDest = document.getElementsByName(fName)[0];
				if (fDest.value != lElem.value) {
					if (lElem['classInputError'] == null) {
						lElem['classInputError'] = fClass;
						lElem.className += " " + lClassError;
					}
					lElem.focus();
					return false;
				}
			}
		}
	}
	if (pNode != null && pNode.getAttribute("type") != null && pNode.getAttribute("type").toLowerCase() == "submit") return true;
	fForm.submit();
}

function getParentForm(pNode) {
	var fForm = null;
	var fParent = pNode;
	while ((fParent = fParent.parentNode) != null) {
		if (fParent.nodeName.toLowerCase() == "form") {
			fForm = fParent;
			break;
		}
	}
	return fForm;
}

function captureEnter(pFormId) {
	document.onkeydown = function(e) {
		var fCode;
		if (!e) var e = window.event;
		if (e.keyCode) fCode = e.keyCode;
		else if (e.which) fCode = e.which;
		if (fCode == 13) {
			formSubmit(pFormId);
			return false;
		}
	}
}