function initRotatingMenus() {
	$$('.rotatingmenu').each(function(e) {
		initRotatingMenu(e);
	});
}

function initRotatingMenu(e) {
	e.select('li').each(function(li) {
		/*if(hsetter = li.down('.heightsetter')) {
			alert('before: ' + li.getHeight());
			li.setStyle({height: hsetter.getHeight().toString() + 'px'});
			alert('after: ' + li.getHeight());
		}*/
		li.select('.rm_item').each(function(item) {
			item.observe('mouseover',function(event) {
				rm_switchTo(li)
			});
		});
	});
	rm_switchTo(e.down('li'));
	rm_rotate(e);
	e.observe('mouseover',function() {rm_stop(e)});
	e.observe('mouseout',function() {rm_rotate(e)});
}

function rm_rotate(rm) {
	if(rm.rotatingTimer) {
		rm_switchTo(rm.activeItem.next('li') || rm.down('li'));
	}
	rm.rotatingTimer = rm_rotate.delay(6,rm);
}

function rm_stop(rm) {
	if(rm.rotatingTimer) {
		window.clearTimeout(rm.rotatingTimer);
		rm.rotatingTimer = undefined;
	}
}

function rm_switchTo(item) {
	rm = item.up('.rotatingmenu');
	if(rm.activeItem == item) {
		/* trying to switch to the current item, ignore it */
		return
	}
	rm.activeItem = item;
	rm.select('.rm_active').without(item).invoke('hide');
	rm.select('.rm_inactive').without(item).invoke('show');
	item.select('.rm_inactive').invoke('hide');
	item.select('.rm_active').invoke('show');
	to_display = item.select('.rm_display');
	rm.select('.rm_display').reject(function(e) {return to_display.member(e)}).each(function(d) {
		d.fade({ queue: { position: 'end', scope: d.identify() } });
		queue = Effect.Queues.get(d.identify()).toArray();
		queue.without(queue.last()).invoke('cancel');
	});
	item.select('.rm_display').each(function(d) {
		d.appear({ queue: { position: 'end', scope: d.identify() } });
		queue = Effect.Queues.get(d.identify()).toArray();
		queue.without(queue.last()).invoke('cancel');
	});
}

Event.observe(window, 'load', initRotatingMenus);

