$(document).ready(function() {
	$('ul.menu li').each(function() {
		initMenu($(this));
	});
});

function initMenu(li) {
	if (!li.hasClass('collapse')) {
		li.children('ul').hide();
		li.children('ul').children('li').css('left', '100px');
		li.children('ul').children('li').css('opacity', 0);
	}
	li.children('a').click(function() {
		if (li.hasClass('collapse')) {
			li.removeClass('collapse');
			collapse(li.children('ul'));
			return false;
		} else if (li.children('ul').get(0)) {
			li.addClass('collapse');
			expand(li.children('ul'));
			collapseAll(li);
			return false;
		}
	});
}

function collapse(ul) {
	ul.slideUp(150);
	var count = 500;
	ul.children('li').each(function() {
		var li = $(this);
		clearTimeout(li.data('iv'));
		li.data('iv', setTimeout(function() {
			slide(li, 100, 0);
		}, Math.max(count, 10)));
		count -= 30;
	});
}

function expand(ul) {
	ul.slideDown(150);
	var count = 20;
	ul.children('li').each(function() {
		var li = $(this);
		clearTimeout(li.data('iv'));
		li.data('iv', setTimeout(function() {
			slide(li, 0, 1);
		}, count));
		count += 30;
	});
}

function collapseAll(li) {
	li.parent().children('li').each(function() {
		if ($(this).get(0) != li.get(0)) {
			$(this).removeClass('collapse');
			collapse($(this).children('ul'));
		}
	});
}

function slide(li, dx, da) {
	clearTimeout(li.data('iv'));
	li.animate(
		{ 'left' : dx + 'px',
		  'opacity' : da
		},
		150
	)
}
