$(window).addEvent('domready', function() {
	var params = globalParams["form/regExpValidator.js"];
	var checker = function(e, first) {
		var regexp = new RegExp(this.validatorInfo.pattern);
		var val;
		if (this.type != 'password')
			val = this.value.trim();
		else
			val = this.value;

		var errors = $('message-list-' + this.id);
		if (errors == null)
			return;

		var error = errors.getElement('li.message');
		if (error != null) {
			if (first)
				return;
			error.dispose();
		}
		if (!val) return;
		
		if (regexp.test(val)) {
			if (this.validFunction()) {
				error = new Element('li', {
					'class' : 'success-message message',
					'text' : '   '
					//,'title' : this.validatorInfo.description
				});
				errors.grab(error);
			}
		} else  {
			if (this.invalidFunction()) {
				error = new Element('li', {
					'class' : 'error-message message',
					'text' : this.validatorInfo.error
					//,'title' : this.validatorInfo.description
				});
				errors.grab(error);
			}
		}
	};
	var op = function() {
		return true;
	};
	for ( var key in params) {
		var el = $(key);
		el.validatorInfo = params[key];
		el.addEvent('keyup', checker);
		el.addEvent('blur', checker);
		if (!el.invalidFunction)
			el.invalidFunction = op;
		if (!el.validFunction)
			el.validFunction = op;
		checker.call(el, null, true);
	}
});
