var currentMenuEffect = {};
var menuCloseTimers = {};
var menuEffectDuration = 0.5;
var availMenus = null;

function initLayout() {
	availMenus = $$('.dropDownContainer');
	availMenus.each( function(e) {
		e.style.height = '1px';
		e.down().style.marginTop = (-1 * e.down().getHeight()) + 'px';
		e.open = openSubmenu;
		e.close = closeSubmenu;
		e.down().onmousemove = submenuMouseMove;
		currentMenuEffect[e.up().id] = null;
		menuCloseTimers[e.up().id] = null;
	} );
}

function tabMouseOver( tab ) {
	$(tab).down().next().style.visibility = 'visible';
	$(tab).down().style.visibility = 'hidden';
	var subcont = $(tab).previous();

	availMenus.each( function(e) {
		if( e == subcont )
			return;
		if( currentMenuEffect[e.up().id] )
			currentMenuEffect[e.up().id].cancel();
		
		e.close();
		currentMenuEffect[e.up().id] = null;
	} );
	
	subcont.open();
}

function tabMouseOut( tab ) {
	$(tab).down().next().style.visibility = 'hidden';
	$(tab).down().style.visibility = 'visible';
	var subcont = $(tab).previous();

	resetMenuCloseTimer( subcont );
}

function openSubmenu() {
	var subcont = this;
	var sub = subcont.down();
	subcont.style.height = '300px';
	
	if( currentMenuEffect[subcont.up().id] ) currentMenuEffect[subcont.up().id].cancel();
	
	currentMenuEffect[subcont.up().id] = new Effect.Morph( sub,
		{
			style: {
				marginTop: '0px'
			},
			duration: menuEffectDuration,
			afterFinish: function() { currentMenuEffect[subcont.up().id] = null; }
		}
	);
}

function closeSubmenu() {
	var subcont = this;
	var sub = subcont.down();
	
	if( currentMenuEffect[subcont.up().id] ) currentMenuEffect[subcont.up().id].cancel();

	currentMenuEffect[subcont.up().id] = new Effect.Morph( sub,
		{
			style: {
				marginTop: (-1 * sub.getHeight()) + 'px'
			},
			duration: menuEffectDuration,
			afterFinish: function() { subcont.style.height = '1px'; currentMenuEffect[subcont.up().id] = null; }
		}
	);
}

function submenuMouseMove() {
	var subcont = this.up();
	resetMenuCloseTimer( subcont );
}

function resetMenuCloseTimer( subcont ) {
	var id = subcont.up().id;
	if( menuCloseTimers[id] )
		clearTimeout( menuCloseTimers[id] );
	menuCloseTimers[id] = setTimeout( function() { subcont.close(); menuCloseTimers[id] = null; }, 1500 );
}

function searchKeyPress( event ) {
	if( !event ) event = window.event;
	
	if( event.keyCode == 13 ) {
		window.location = '/search?query='+escape($('searchQuery').value);
	}
}

