function fader(element) {
	var is_active = false;
	var timers;
	var ms = [40, 80, 120, 160, 200, 240, 280, 320, 360, 400, 440];
	var ms = [20, 40, 60, 80, 100, 120, 140, 180, 200, 220, 240];

	var background = document.getElementById("overlay-background");

	function opacity(value) {
		background.style.opacity = value /2;
		background.style.filter = "alpha(opacity=" + ((value /2) *100) + ")";

		element.style.opacity = value;
		element.style.filter = "alpha(opacity=" + (value *100) + ")";
	}
	function direct(direction) {
		if (is_active)
			return false;

		is_active = true;
		timers = [];

		if (direction == "out") {
			timers[0] = setTimeout(function() {opacity(0.9)}, ms[0]);
			timers[1] = setTimeout(function() {opacity(0.8)}, ms[1]);
			timers[2] = setTimeout(function() {opacity(0.7)}, ms[2]);
			timers[3] = setTimeout(function() {opacity(0.6)}, ms[3]);
			timers[4] = setTimeout(function() {opacity(0.5)}, ms[4]);
			timers[5] = setTimeout(function() {opacity(0.4)}, ms[5]);
			timers[6] = setTimeout(function() {opacity(0.3)}, ms[6]);
			timers[7] = setTimeout(function() {opacity(0.2)}, ms[7]);
			timers[8] = setTimeout(function() {opacity(0.1)}, ms[8]);
			timers[9] = setTimeout(function() {opacity(0  )}, ms[9]);
		}
		else if (direction == "in") {
			element.style.display = "block";
			background.style.display = "block";

			timers[0] = setTimeout(function() {opacity(0.1)}, ms[0]);
			timers[1] = setTimeout(function() {opacity(0.2)}, ms[1]);
			timers[2] = setTimeout(function() {opacity(0.3)}, ms[2]);
			timers[3] = setTimeout(function() {opacity(0.4)}, ms[3]);
			timers[4] = setTimeout(function() {opacity(0.5)}, ms[4]);
			timers[5] = setTimeout(function() {opacity(0.6)}, ms[5]);
			timers[6] = setTimeout(function() {opacity(0.7)}, ms[6]);
			timers[7] = setTimeout(function() {opacity(0.8)}, ms[7]);
			timers[8] = setTimeout(function() {opacity(0.9)}, ms[8]);
			timers[9] = setTimeout(function() {opacity(1  )}, ms[9]);
		}

		timers[10] = setTimeout(function() {
			for (var i = 0; i < timers.length; i++)
				clearTimeout(timers[i]);

			if (direction == "out") {
				element.style.display = "none";
				background.style.display = "none";
			}

			is_active = false;
		}, ms[ms.length -1]);
	}
	return { direct: direct }
}
