function FormValidator(sForm) {
	if (!document.forms[sForm]) {
		alert('couldn\'t create the form validator: No such form name: ' + sForm);
		return false;
	}
	this.oForm = document.forms[sForm];
};

FormValidator.prototype.sanitize = function(sName) {
	var sValue = this.oForm.sName.value;
	sValue = sValue.replace(/\'/gi,'\\\'');
	sValue = sValue.replace(/\//gi,'\\/');
	sValue = sValue.replace(/;/gi,'');
	this.oForm.sName.value = sValue;
};

FormValidator.prototype.isValidPassword = function(sName) {
	var sValue = this.oForm[sName].value;
	var regX = /^[a-zA-Z0-9]{6,15}$/;
	return regX.test(sValue);
};

FormValidator.prototype.validateMail = function(sName) {
	var sValue = this.oForm[sName].value;
	var regX = /^[a-zA-Z0-9\.\+\-\_]*@[a-z0-9\.\+\-\_]*\.[a-z\.]{2,10}$/i;
	return regX.test(sValue);
};

FormValidator.prototype.validatePhone = function(sName) {
	var sValue = this.oForm[sName].value;
	var regX = /^[0-9]{1,2}(\-|\s)?[0-9\s\-]{7,15}$/;
	return regX.test(sValue);
};

FormValidator.prototype.isValidTaz = function(sName) {
	var sValue = this.oForm[sName].value;
	if ((sValue.length != 9) || (isNaN(sValue))) {
		return false;
	}
	var counter = 0;
	var incNum;
	for (var i = 0; i < 9; i++) {
		incNum = 1*(sValue.charAt(i));
		incNum *= (i % 2) + 1;
		if (incNum > 9) {
			incNum -= 9;
		}
		counter += incNum;
	}
	return (counter % 10 == 0);
}

FormValidator.prototype.isFigures = function(sName) {
	var sValue = this.oForm[sName].value;
	var regX = /^\d*$/;
	return regX.test(sValue);
};

FormValidator.prototype.isTooShort = function(sName) {
	var sValue = this.oForm[sName].value;
	return (sValue.length <= 1);
};

FormValidator.prototype.isEmpty = function(sName) {
	var sValue = this.oForm[sName].value;
	return (sValue == '');
};

FormValidator.prototype.isBot = function (sName) {
	var sValue = this.oForm[sName].value;
	return (sValue != '');
};

FormValidator.prototype.isCurrency = function (sName) {
	var sValue = this.oForm[sName].value;
	var regX = /^\d*(\.\d\d)?$/;
	return regX.test(sValue);
};

FormValidator.prototype.isValidFilename = function(sName) {
	var sValue = this.oForm[sName].value;
	var regX = /^[a-zA-Z0-9_\s\.\-]*$/;
	return regX.test(sValue);
}

FormValidator.prototype.isValidUsername = function(sName) {
	var sValue = this.oForm[sName].value;
	var regX = /^[a-zA-Z0-9_\s]{4,15}$/;
	return regX.test(sValue);
}

FormValidator.prototype.displayError = function (sName, errMessage) {
	var sValue = this.oForm[sName].value;
	var oElement = this.oForm[sName];
	oElement.className += ' error';
	var errBox = document.createElement('span');
	errBox.className = 'error';
	errBox.innerHTML = errMessage;
	errBox.id = sName + '_error';
	oElement.parentNode.appendChild(errBox);
	oElement.onclick = function () {
		oElement.className = oElement.className.replace(/\s?error/gi,'');
		oElement.parentNode.removeChild(errBox);
	}
};
