document.observe('dom:loaded', function() {
	$$('.fade').each(function(e, i) {
		e.childElements().each(function(c){
			Event.observe(c, 'mouseover', function() {
				fade_over(c, 'queue_' + i);
			});
			
			Event.observe(c, 'mouseout', function() {
				fade_out(c, 'queue_' + i);
			});
		});
	});
});

function fade_over(element, queue_scope) {
	Effect.Queues.get(queue_scope).invoke('cancel');
	new Effect.Opacity(element, { from: 1, to: 0, duration: 0.3, queue: { position: 'end', scope: queue_scope, limit: 1 } });
}

function fade_out(element, queue_scope) {
	Effect.Queues.get(queue_scope).invoke('cancel');
	new Effect.Opacity(element, { from: 0, to: 1, duration: 0.3, queue: { position: 'end', scope: queue_scope, limit: 1 } });
}
