//really horrible coding by daniel@etheory.co.nz
var menu;
var selected;
Event.observe(window, 'load', function(){
	selected = $('current')
	menuLinks = $A($('nav').getElementsByClassName('menuItem'));
	menuLinks.each(function(menuLink){
		if($('nav').hasClassName('home')) {
			$(menuLink).setStyle({width: "106px"});
		} else if (menuLink != selected) {
			$(menuLink).setStyle({width: "35px"});
		} else {
			$(menuLink).setStyle({width: "532px"});
		}
		$(menuLink).observe('mouseover', function(hover){
			var element = $(Event.element(hover))
			selected = element.hasClassName('menuItem') ? element : element.up('.menuItem');
		});
	});
	$('nav').observe('mouseout', function(m){
		selected = $('current');
	});
	new PeriodicalExecuter(function(n) {
		var effects = [];
		if (selected == null) {
			menuLinks.each(function(menuLink) {
				//the last block is 14 pixels wider to account for rounding differences. 
				if ($(menuLink).hasClassName('last')){
					effects.push(
						new Effect.Morph(menuLink, {
							style: 'width:120px', 
							sync:  true
						})
					);
				} else {
					effects.push(
						new Effect.Morph(menuLink, {
							style: 'width:106px', 
							sync:  true
						})
					);
				}
			});
		} else {
			if (selected.hasClassName('last')){	 
				effects.push(
					new Effect.Morph(selected, {
						style: 'width:546px', 
						sync:  true
					})
				);
			} else {
				effects.push(
					new Effect.Morph(selected, {
						style: 'width:532px', 
						sync:  true
					})
				);
			}
			menuLinks.each(function(menuLink) {
				if(menuLink != selected) {
					if ($(menuLink).hasClassName('last')){
						effects.push(
							new Effect.Morph(menuLink, {
								style: 'width:49px',
								sync:  true
							})
						);
					} else {
						effects.push(
							new Effect.Morph(menuLink, {
								style: 'width:35px',
								sync:  true
							})
						);
					}
				}
			});
		}
		new Effect.Parallel(effects, {
			delay:0,
			duration:0.2,
			transition: Effect.Transitions.linear
		});
	}, 0.2);
});
