var Blink = {
	list: [],
	timer: false,
	fade: function(alpha) {
		alpha = Math.max(0.0, Math.min(1.0, alpha));
		if (Blink.timer) clearTimeout(Blink.timer);
		var r = Math.round(255.0 - 102.0 * alpha); // 153 => 255
		var g = Math.round(255.0 - 255.0 * alpha); // 0 => 255
		var b = Math.round(255.0 - 51.0 * alpha); // 204 => 255
		var color = "rgb(" + r + "," + g + "," + b + ")";
		$A(Blink.list).each(function(elt) { elt.style.backgroundColor = color; });
		if (alpha < 0.05) {
			Blink.list = [];
			Blink.timer = false;
		} else {
			Blink.timer = setTimeout("Blink.fade(" + (alpha - 0.1) + ")", 100);
		}
	},
	reset: function() { Blink.fade(0.0); },
	start: function(activate) {
		Blink.list = $A(Blink.list).collect(function(field) {
			return $(field);
		} ).compact();
		if (activate) {
			Blink.list.each(function(field) {
				if (field.activate) {
					field.activate();
					throw $break;
				}
			});
		}
		Blink.list = Blink.list.uniq();
		Blink.fade(1.0);
	},
	add: function(add) { Blink.list = Blink.list.concat(add); }
};

