		window.validators = new Array();
		window.presences = new Array();

			function initValidatorFor(input,ainput)
			{
				if (ainput == undefined) { ainput = input; }
				if (ainput == '') { ainput = input; }
				window.validators[input] =  new LiveValidation(input, 
					{insertAfterWhatNode: ainput+'_after', 
			 		onValid: function(){ window.validators[input].insertMessage(window.validators[input].createMessageSpan());  },
			 		onInvalid: function(){ window.validators[input].insertMessage(window.validators[input].createMessageSpan()); },
			 		validMessage: '', 
			 		wait: 500
				});
			}
			
			var presence_failure = 'To pole musi zostać wypełnione!'; 
			var numericality_notANumber = 'To musi być numer!'; 
			var acceptance_failure = 'To pole musi zostać zaznaczone!';
			function length_tooLong(len)
			{
				if (len == 1) { zn = 'znak!'; }
				if ((len > 1)&&(len < 5)) { zn = 'znaki!'; }
				if (len > 4) { zn = 'znaków!'; }
				return 'To pole nie może mieć więcej niż ' + len + ' ' + zn;
			}
			function length_tooShort(len)
			{
				if (len == 1) { zn = 'znak!'; }
				if ((len > 1)&&(len < 5)) { zn = 'znaki!'; }
				if (len > 4) { zn = 'znaków!'; }
				return 'To pole musi mieć przynajmniej ' + len + ' ' + zn;
			}

			
			function addPredefined(input,type,args,init,ainput)
			{
				if (init)
				{ initValidatorFor(input,ainput);} 
				
			    var ai = 0;
				var types = type.split('|');
				jQuery.each(types, function(id)
				{
					//alert(this);
					if (this == 'a')
					{
						window.validators[input].add(Validate.Acceptance, {failureMessage: acceptance_failure});
					}
					if (this == 'p')
					{
						window.presences[input] = input;
						window.validators[input].add(Validate.Presence, {failureMessage: presence_failure});
					}
					if (this == 'n')
					{
						window.validators[input].add(Validate.Numericality, {notANumberMessage: numericality_notANumber});
					}
					if (this == 'l')
					{
						ai = ai + 2;
						window.validators[input].add(Validate.Length, { minimum: args[ai-2], maximum: args[ai-1], tooLongMessage: length_tooLong(args[ai-1]) , tooShortMessage: length_tooShort(args[ai-2]) } );
					}
					if (this == 'ls')
					{
						ai = ai + 1;
						window.validators[input].add(Validate.Length, { minimum: args[ai-1], tooShortMessage: length_tooShort(args[ai-1]) } );
					}					
					if (this == 'll')
					{
						ai = ai + 2;
						window.validators[input].add(Validate.Length, { maximum: args[ai-1], tooLongMessage: length_tooLong(args[ai-2]) } );
					}
				});

			}
			
			

(function ($) {
	$.browserTest = function (a, z) {
		var u = 'unknown', x = 'X', m = function (r, h) {
			for (var i = 0; i < h.length; i = i + 1) {
				r = r.replace(h[i][0], h[i][1]);
			}

			return r;
		}, c = function (i, a, b, c) {
			var r = {
				name: m((a.exec(i) || [u, u])[1], b)
			};

			r[r.name] = true;

			r.version = (c.exec(i) || [x, x, x, x])[3];

			if (r.name.match(/safari/) && r.version > 400) {
				r.version = '2.0';
			}

			if (r.name === 'presto') {
				r.version = ($.browser.version > 9.27) ? 'futhark' : 'linear_b';
			}
			r.versionNumber = parseFloat(r.version, 10) || 0;
			r.versionX = (r.version !== x) ? (r.version + '').substr(0, 1) : x;
			r.className = r.name + r.versionX;

			return r;
		};

		a = (a.match(/Opera|Navigator|Minefield|KHTML|Chrome/) ? m(a, [
			[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''],
			['Chrome Safari', 'Chrome'],
			['KHTML', 'Konqueror'],
			['Minefield', 'Firefox'],
			['Navigator', 'Netscape']
		]) : a).toLowerCase();

		$.browser = $.extend((!z) ? $.browser : {}, c(a, /(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/, [], /(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/));

		$.layout = c(a, /(gecko|konqueror|msie|opera|webkit)/, [
			['konqueror', 'khtml'],
			['msie', 'trident'],
			['opera', 'presto']
		], /(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/);

		$.os = {
			name: (/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase()) || [u])[0].replace('sunos', 'solaris')
		};

		if (!z) {
			$('html').addClass([$.os.name, $.browser.name, $.browser.className, $.layout.name, $.layout.className].join(' '));
		}
	};

	$.browserTest(navigator.userAgent);
})(jQuery);
		
