$(window).addEvent('domready', function() {
	var params = globalParams["form/fieldChecker.js"];
	var putMessage = function(place, clazz, text) {
		var message = place.getElement('li.message');
		if (message != null && message.className == 'success-message message') {
			message.dispose();
			message = null;
		}
		if (message == null) {
			message = new Element('li', {'class': clazz + ' message', 'text': text});
			place.grab(message);
		}
	};
	var checker = function() {
		if (this.value && new RegExp(this.validatorInfo.pattern)
				.test(this.value)) {
			var val = this.value;
			var ijd = this.id;
			new Request.JSON( {url: '/services/field-check', onSuccess: function(responseJSON, responseText) {
				var errors = $('message-list-' + ijd);
				if (errors == null) return;
				if (responseJSON === null) {
					putMessage(errors, 'error-message', 'Nie można sprawdzić pola');
				} else if (responseJSON) {
					putMessage(errors, 'error-message', val + ' jest zajęte');
				} else {
					putMessage(errors, 'success-message', '');
			}
			}}).get( {'type': this.subtype, 'value': encodeURIComponent(val)});
		}
	};
	var buffer = function() {
		$clear(this.lastId);
		this.lastId = checker.delay(1200, this);
	};
	for (var key in params) {
		var el = $(key);
		el.subtype = params[key];
		el.addEvent('keyup', buffer);
		el.addEvent('blur', buffer);
		el.lastId = 0;
	}
});
