glow.ready(function() {
	
	var messages = glow.dom.get("#flash_messages").get('.message');
	
	function showMessage(message) {
		glow.anim.css(message, 0.5, {"opacity" : {from:0, to :1}}).start();
	}
	
	function destroyMessage(message) {
		
		var lastMessage = (message.parent().get('.message').length == 1);
				
		var fadeOut = glow.anim.css(message, 0.5, {"opacity" : {from:1, to :0}});
			
		if (!lastMessage) {
			glow.events.addListener(fadeOut, 'complete', function() {showMessage(message.next())});
		} else {
			var shrink = glow.anim.css(message.parent(), 0.5, {"height" : {from:'32px', to : '0px'}});
			glow.events.addListener(fadeOut, 'complete', function() {shrink.start()});
			glow.events.addListener(shrink, 'complete', function() {glow.dom.get("#flash_messages").remove()});
		}
		
		// Add this one last, order seems important (FF3 Mac)
		glow.events.addListener(fadeOut, 'complete', function() {message.remove()});
		
		fadeOut.start();

	}
	
	messages.each(function() {

		var message = glow.dom.get(this);
		
		glow.events.addListener(message, 'mouseover', function() {message.addClass('hovered')});
		glow.events.addListener(message, 'mouseout', function() {message.removeClass('hovered')});
		glow.events.addListener(message, 'click', function() {destroyMessage(message)});
		
	});
	
	showMessage(messages.slice(0,1));
	
});