
var validators = new Array();

validators['onlyalpha'] = new RegExp('^([A-Za-záéíúõûüöóÁÉÍÚÕÛÜÖÓ]+\\s{0,1})+$');
validators['onlynumber'] = new RegExp('^[-]?[0-9]+$');
// eredeti IPv4 Regexp:
// validators['ipaddr'] = new RegExp('^(((\\d{1,3}\\.){3}\\d{1,3})|(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}))$');
// IPv4 es IPv6 egyutt
validators['ipaddr'] = new RegExp('(^(((\\d{1,3}\\.){3}\\d{1,3})|(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}))$)|(^([0-9a-fA-F]{4}|0)(\:([0-9a-fA-F]{4}|0)){7}$)');
validators['phonenum'] = new RegExp('^[+]?[\\d\(\) -]+$');
validators['domainname'] = new RegExp('^[\\w\\d._-]+\\.[\\w]+$');
validators['email'] = new RegExp('^[\\w\\d._-]+\\@[\\w\\d._-]+\\.[\\w]+$');
validators['url'] = new RegExp('^http://[\\w\\d_-]+\\.[\\w]+.*$');
validators['taxnum'] = new RegExp('^[0-9]{8}-[0-9]-[0-9]{2}$');
validators['traderegnum'] = new RegExp('^[0-9]{2}-[0-9]{2}-[0-9]{6}$');
validators['anything'] = new RegExp('.+');

 
function Validator() {
	this.fields = new Array();
} 

Validator.prototype.addField = function(name, field) {
	this.fields.push(field);
}

Validator.prototype.removeField = function(name) {
	var found = false;
	var ind = -1;
	for (var i=0; i<this.fields.length && !found; i++) {
		if (this.fields[i][0] == name) {
			found = true;
			ind = i;
		}
	}
	if (found) {
		delete this.fields[ind][1];
		for (var i=ind; i<this.fields.length; i++) {
			this.fields[i] = this.fields[i+1];
		}
		this.fields.pop();
	}
}

Validator.prototype.validate = function() {
	if (this.form == null) {
		alert('Form not found!');
		return true;
	} else {
		if (this.tabhandler != undefined) {
			this.tabhandler.hideWarning();
		}
		var allPassed = true;
		for (var i=0; i<this.fields.length; i++) {
			var el = document.getElementById(this.fields[i][0]);
			if (el) {
				passed = true;
				if (el._mandatory) {
					passed = this.fields[i][1].validate();
				} else {
					if (!this.fields[i][1].isEmpty()) {
						passed = this.fields[i][1].validate();
					}
				}
				allPassed = allPassed && passed;
				
				warnspan = document.getElementById("w_" + this.fields[i][0]);
				if (warnspan != null) {
					warnspan.style.visibility = passed ? 'hidden' : 'visible';
				}
				if (this.tabhandler != undefined && !passed) {
					this.tabhandler.showWarning(el);
				}
			}
		}
		return allPassed;
	}
}

function checksubmit(myform) {
	if (myform == null) {
	  myform = document.getElementById('form');
	}

	allpassed = validator.validate(myform);
	if (!allpassed) {
	  alert('Hibásan töltötte ki a formanyomtatványt! Kérem ellenõrizze!');
	  return false;
	} 
	return true;
}
