function regExpPatternValidator() {}
var formValidator = {}//= Class.create();

regExpPatternValidator.isValid = function(string, pattern) {
	return new RegExp(pattern).test(string);
}


formValidator.imgSuccess = new Image(); // if new Image() then preloading
formValidator.imgFail = new Image();

formValidator.imgSuccess.src = "http://forad.pl/images/agt_action_success.gif";
formValidator.imgFail.src = "http://forad.pl/images/agt_action_fail.gif";

formValidator.fncValidating = function(that) {
	//if (!event) event = window.event; // IE fix
	//if (!that.parentNode) that = event.srcElement; // IE fix
	//if (event.target) that = event.target; // from: http://concepts.waetech.com/css_header_effects/headers.js
	
	var oImg; // <img>
	
	if (that.parentNode.lastChild.tagName != "IMG") {
		oImg=document.createElement("IMG");
		that.parentNode.appendChild(oImg);
	}
	if (!oImg) oImg = that.parentNode.lastChild;
	
	if (that.getAttribute('beforeValidation')) that.beforeValidation = eval(that.getAttribute('beforeValidation'));
	
	var valueToParse = that.beforeValidation ? that.beforeValidation(that.value) : that.value;
	
	if (!valueToParse && !that.getAttribute('required') || regExpPatternValidator.isValid(valueToParse, that.getAttribute('regExpPattern'))) {
		oImg.src = formValidator.imgSuccess.src;
		oImg.alt = "success";
	} else {
		oImg.src = formValidator.imgFail.src;
		oImg.alt = "fail";
	}
	
	// if, bo mozemy wywolac funkcje sztucznie a nie zdarzeniem, a wtedy event==null
	//if (event) this['genuineon' + event.type]();
};

	
formValidator.perform = function() {
	for (var iInputs = 0, inputs = document.getElementsByTagName('input'), nInputs = inputs.length; iInputs < nInputs; iInputs++) {
		if ((input = inputs[iInputs]).getAttribute('regExpPattern')) {
			formValidator.fncValidating(input);
		}
	}
}


Event.observe(window, 'load', function() {
	// iterates on input tags and override onclick with validate function
	for (var iInputs = 0, inputs = document.getElementsByTagName('input'), nInputs = inputs.length; iInputs < nInputs; iInputs++) {
		if ((input = inputs[iInputs]).getAttribute('regExpPattern')) {
			for (var iEvents in events = ["change", "blur", "paste", "keyup"]) {
				Event.observe(input, events[iEvents], function(event) {
					formValidator.fncValidating(Event.element(event));
				});
			}
		}
	}
});
