function in_ra(a, b, c) {
	var d = Math.abs(a);
	if (d >= (b - c) && d <= (b + c)) {
		return true
	} else {
		return false
	}
}

function time_unit_format(a, b, c, d) {
	if (a == 1) {
		return b + " temu"
	} else {
		var e = d;
		if (a < 20) {
			if (a >= 2 && a <= 4) {
				e = c
			}
		} else {
			var f = a % 10;
			if (f >= 2 && f <= 4) {
				e = c
			}
		}
		return a + " " + e + " temu"
	}
}

function f_seconds(a) {
	return time_unit_format(a, 'sekundę', 'sekundy', 'sekund')
}

function f_minutes(a) {
	return time_unit_format(a, 'minutę', 'minuty', 'minut')
}

function f_hours(a) {
	return time_unit_format(a, 'godzinę', 'godziny', 'godzin')
}

function f_days(a) {
	return time_unit_format(a, 'dzień', 'dni', 'dni')
}

function f_weeks(a) {
	return time_unit_format(a, 'tydzień', 'tygodnie', 'tygodni')
}

function f_time_ago(a) {
	var d = a;
	var b = 60;
	var c = 60 * b;
	var e = 24 * c;
	var f = Math.floor(d % 60);
	d /= 60;
	var g = Math.floor(d % 60);
	d /= 60;
	var h = Math.floor(d % 24);
	d /= 24;
	var i = Math.floor(d);
	d /= 7;
	var j = Math.round(d);

	if (a < 10) {
		return "przed chwilą"
	}

	if (in_ra(a, b / 2, 5)) {
		return "pół minuty temu"
	}
	if (in_ra(a, b, 10)) {
		return "minutę temu"
	}
	if (a < b) {
		return f_seconds(a)
	}
	if (in_ra(a, 15 * b, b)) {
		return "przed kwadransem"
	}
	if (in_ra(a, 30 * b, b)) {
		return "pół godziny temu"
	}
	if (in_ra(a, c, 10 * b)) {
		return "godzinę temu"
	}
	if (a < c) {
		return f_minutes(g)
	}
	if (a < e) {
		return f_hours(h)
	}
	if (a < 7 * e) {
		return f_days(i)
	}
	return f_weeks(j)
}

function f_abd(a) {
	var b = [ 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca',
			'lipca', 'sierpnia', 'września', 'października', 'listopada',
			'grudnia' ];
	return a.getDate() + " " + b[a.getMonth()] + " " + a.getFullYear()
}

function f_abw(a, b) {
	if (b) {
		var c = [ 'niedzielę', 'poniedziałek', 'wtorek', 'środę', 'czwartek',
				'piątek', 'sobotę' ]
	} else {
		var c = [ 'niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek',
				'piątek', 'sobota' ]
	}

	var d = a.getHours();
	var e;
	if (d < 10) {
		e = "rano"
	} else if (d <= 11) {
		e = "przed południem"
	} else if (d <= 13) {
		e = "w południe"
	} else if (d < 16) {
		e = "po południu"
	} else if (d < 20) {
		e = "wieczorem"
	} else {
		e = "w nocy"
	}
	return c[a.getDay()] + ", " + e
}

function refresh_rel_timing(k, l, m) {
	k.each( function(e) {
		var b = new Date();
		var c = (b.getTime() / 1000);
		c += l;

		var d = e.select("span.posted-agoC")[0];

		if (d) {
			var f = e.select("span.posted-ago")[0];
			var g = e.select("span.posted-epo")[0].innerHTML;
			var h = new Date(g * 1000);
			var i = true;
			var j = c - g;

			if (!d.empty()) {
				i = false
			}

			if (j > 86400 * 30) {
				d.innerHTML = f_abd(h);
				d.removeClassName('posted-agoC')
			} else if (j < 86400 * 7 && b.getDate() != h.getDate()) {
				d.innerHTML = f_abw(h, false);
				d.removeClassName('posted-agoC')
			} else {
				d.innerHTML = f_time_ago(Math.round(j))
			}

			if (i) {
				if (m) {
					Event.observe(f, 'mouseout', function(a) {
						f.hide();
						d.show()
					});
					Event.observe(d, 'mouseover', function(a) {
						d.hide();
						f.show()
					})
				}
				$(f).hide();
				$(d).show()
			}
		}
	})
}

function set_rel_timing(a, b, c, d) {
	var e = new Date();

	var f = b - (e.getTime() / 1000);
	refresh_rel_timing($$(a), f, d);
	var g = function() {
		refresh_rel_timing($$(a), f, d)
	};
	setInterval(g, c * 1000);
}
