var menu = function(el) {
	
	var _item, flagged;
	var _h = 30;
	
	var init = function() {
		
		flagged = [];
		
		CSS.getRule('#nav #menu .item:hover').style['height'] = "";
		
		_item = Dom.batch($$('#nav #menu .item'), function(o) {
			
			var expandHeight = (o.getElementsByTagName('ul')[0].getElementsByTagName('li').length + 1) * _h;
			
			// ie 6 fix
			Event.on(o, 'mouseover', function(){
				Dom.addClass( $$('span', this, true) , 'hover');
			});
			Event.on( $$('ul>li', o), 'mouseover', function(){
				Dom.addClass( this, 'hover');
			});
			
			// ie 6 fix
			Event.on(o, 'mouseout', function(){
				Dom.removeClass( $$('span', this, true) , 'hover');
			});
			Event.on( $$('ul>li', o), 'mouseout', function(){
				Dom.removeClass( this, 'hover');
			});
			
			Dom.generateId(o);
			
			o.isOpen = function() {
				return (Dom.getStyle(this, 'height') != _h+'px');
			};
			
			var el = o.getElementsByTagName('span')[0];
			
			o.action = function() {
				expand({o: o, h : expandHeight});
			};
			
			Event.on(el, 'click', o.action);
			
			if(Dom.hasClass(o, 'open')) {
				flagged.push(o);
			}
			
			return o;
		});
		
		Dom.batch(flagged, function(o) {
			o.action();
		});

	};
	
	var expand = function(obj) {
		
		if(obj.o.isOpen()) {
			close(obj.o);
			return;
		}
		
		var slideOpen = new YAHOO.util.Anim(obj.o,{
			height: {
				to: obj.h
			}
		}, 0.23);
		closeOthers(obj.o);
		slideOpen.animate();
	};
	
	var close = function(o) {
		
		var slideClose = new YAHOO.util.Anim(o,{
			height: {
				to: _h
			}
		}, 0.15);
		slideClose.animate();
	};
	
	var closeOthers = function(o) {
		for(var i = 0; i < _item.length; i++) {
			if(_item[i].isOpen() && _item[i].id != o.id) {
				close(_item[i]);
			}
		}
	};
	
	Event.onDOMReady(init);
	
}('menu');

