function FormValidator(vForm)
	{
		this.vForm = vForm;
		this.faultMessages = 
			{
				required: 
					{
						message: 
							"Povinné pole - vyplňte prosím.",
						test: 
							function(obj,nacitani)
								{
									var val = (obj.value == "") ? null : obj.value;
									return val || nacitani || val == obj.defaultValue;
								}
					}
			};
	}
FormValidator.prototype.validateForm = function(iniLoad)
	{
		var valid = true;
		for(var i = 0; i < this.vForm.elements.length; i++)
			{
				this.hideFaults(this.vForm.elements[i]);
				if(this.validateField(this.vForm.elements[i],iniLoad))
					{
						valid = false;
					}
			}
		return valid;
	};
FormValidator.prototype.validateField = function(elem,iniLoad)
	{
		var faults = [];
		for(var name in this.faultMessages)
			{
				var re = new RegExp("^" + name + "([_]|$)");
				if(re.test(elem.className) && !this.faultMessages[name].test(elem,iniLoad))
					{
						faults.push(this.faultMessages[name].message);
					}
			}
		if(faults.length)
			{
				this.viewFaults(elem,faults);
			}
		return faults.length > 0;
	};
FormValidator.prototype.hideFaults = function(elem)
	{
		var next = nextS(elem);; // jump over text
		if(next && next.nodeName == "UL" && next.className == "faults")
			{
				elem.parentNode.removeChild(next);
			}
	};
FormValidator.prototype.viewFaults = function(elem,faults)
	{
		var next = nextS(elem);
		if(next && (next.nodeName != "UL" || next.className != "faults"))
			{
				next = document.createElement("ul");
				next.className = "faults";
				elem.parentNode.insertBefore(next,elem.nextSibling);
			}
		for(var i = 0; i < faults.length; i++)
			{
				var li = document.createElement("li");
				li.innerHTML = faults[i];
				next.appendChild(li);
			}
	};
