$(document).ready(function() {
	initMenu();
	$("a").focus(function() { this.blur(); });
});

function initMenu() {
	var menu = $('ul.menu');
	var entry = menu.children('li').children('a');
	menu.children('li.expand').children('ul').hide();
	entry.click(function() {
		var url = $(this).attr('href');
		var li = $(this).parent();
		if (li.hasClass('expand')) {
			/* collapseOther(li); */
			return expandMenu(li, url);
		} else if (li.hasClass('collapse')) {
			return navTo(url);
			/* return collapseMenu(li); */
		}
		return true;
	});
}

function navTo(url) {
	setTimeout(function() { self.location.href = url; }, 10); // den Delay nach Belieben runtersetzen: kleiner = schneller!
}

function expandMenu(entry, url) {
	entry.removeClass('expand');
	entry.addClass('collapse active');
	var sub = entry.children('ul');
	sub.slideDown(50, function() { navTo(url); });
	appear(sub.children('li'), 1);
	/* return false; */
}

function collapseMenu(entry) {
	entry.removeClass('collapse active');
	entry.addClass('expand');
	var sub = entry.children('ul');
	sub.slideUp(200);
	appear(sub.children('li'), 0);
	return false;
}

function collapseOther(entry) {
	$('ul.menu').children('li.collapse').each(function() {
		var li = $(this);
		if (li != entry) collapseMenu(li);
	});
}

function appear(li, d) {
	if (d) {
		var c = 0;
		var stp = 1;
		var fac = 50;
	} else {
		var c = li.size();
		var stp = -1;
		var fac = 20;
	}
	li.each(function() {
		c += stp;
		$(this).css('position', 'relative');
		if (d) {
			$(this).css("left", '100px');
			$(this).css("opacity", '0');
		}
		var obj = $(this);
		setTimeout(function() {
			realAppear(obj, d);
		}, c * fac);
	});
}

function realAppear(obj, d) {
	var dx = (d)? '0px' : '100px';
	obj.animate({
		'left': dx,
		'opacity': d
	}, 250);
}
