
function parseFields(oFormFields, oForm) {
	if(!oFormFields) {
		return;
	}
	for(var j = 0; j < oFormFields.length; j++) {
		var oFormFieldAttributes = oFormFields[j].attributes;
		for(var k = 0; k < oFormFieldAttributes.length; k++) {
			if(oFormFieldAttributes[k].nodeName == 'required' && oFormFieldAttributes[k].nodeValue == 'true') {
				oFormFields[j].required = true;
				oForm.required.push(oFormFields[j].name);
			}
		}
	}
}

var oForms = document.getElementsByTagName('form');
for(var i = 0; i < oForms.length; i++) {
	oForms[i].required = new Array();
	parseFields(oForms[i].getElementsByTagName('input'), oForms[i]);
	parseFields(oForms[i].getElementsByTagName('textarea'), oForms[i]);
	parseFields(oForms[i].getElementsByTagName('select'), oForms[i]);
	oForms[i].onsubmit = function() {
		return false;
	}
	var submitAction = function() {
		var bError = false;
		for(var j = 0; j < this.form.required.length; j++) {
			for(var k = 0; k < this.form.elements.length; k++) {
				var bErrorField = false;
				if(this.form.required[j] == this.form.elements[k].name) {
					if(this.form.elements[k].tagName == 'INPUT' && this.form.elements[k].value == '') {
						bErrorField = true;
					}
					else if(this.form.elements[k].tagName == 'INPUT' && (this.form.elements[k].type =='checkbox' || this.form.elements[k].type =='radio') && this.form.elements[k].checked == false) {
						bErrorField = true;
					}
					else if(this.form.elements[k].tagName == 'SELECT' && this.form.elements[k].selectedIndex == '0') {
						bErrorField = true;
					}
					else if(this.form.elements[k].tagName == 'TEXTAREA' && this.form.elements[k].innerHTML == '') {
						bErrorField = true;
					}
					if(bErrorField) {
						this.form.elements[k].className = this.form.elements[k].className + ' errorField';
						bError = true;
					}
				}
			}
		}
		if(bError) {
			return false;
		}
		else {
			this.form.submit();
		}
	}
	var oFields = oForms[i].getElementsByTagName('input');
	for( var j = 0; j < oFields.length; j++) {
		if(oFields[j].type == 'submit') {
			oFields[j].onclick = submitAction;
		}
	}
}