Мучает вопрос, как выровнять меню. Строить заборы из JS не охота, ищу более элегантное решение.
Есть меню

Есть нубоюзер, который сидит и пихает туда пункты из админки. На выходе получаем условный "массив" меню вида:
<!-- Первый уровень -->
<ul>
<li><a href="#">Жирный заголовок</a>
<!-- второй уровень -->
<ul>
<li><a href="#">Дочерний пункт</a></li>
<li><a href="#">Дочерний пункт</a></li>
<li><a href="#">Дочерний пункт</a></li>
</ul>
</li>
<li><a href="#">Жирный заголовок</a>
<ul>
<li><a href="#">Дочерний пункт</a></li>
<li><a href="#">Дочерний пункт</a></li>
<li><a href="#">Дочерний пункт</a></li>
</ul>
</li>
</ul>
Собственно сабж в том, что хочется вывести меню более красиво, пример -- сайт эльдорадо.

Однако там не все так просто, на выходе получаются 3 колонки в виде 3 UL элементов. Как они так шаманят, чтобы сортировать меню таким образом мне не совсем понятно (подозреваю работу ручками или очень сложные скрипты).
Вопрос заключается лишь в том, можно ли каким-нибудь элегантным и простым способом смастерить такую же менюшку, без огородов, костылей и прочего шлака?
Если нет, просто расскажите свою точку зрения и алгоритм, как поступили бы вы (код за меня писать не обязательно).
P.S. Меню можно крутить как угодно, переписать алгоритм вывода меню не составит труда.
Благодарен за любую помощь!