find('ul.level2') as $ul) {
// get parent li
$li = $ul->parent();
// get columns
$columns = (int) $li->attr('data-menu-columns');
if ($columns > 1) {
$i = 0;
$column = -1;
$children = $ul->children('li');
if ($children->length > $columns) {
$remainder = $children->length % $columns;
$colrows = ($children->length - $remainder) / $columns;
} else {
$remainder = 0;
$colrows = 1;
}
foreach ($children as $child) {
if ($i-- == 0) {
$i = $remainder-- > 0 ? $colrows : $colrows - 1;
$column++;
}
if ($li->children('ul')->length == $column) {
$li->append('
');
}
if ($column > 0) {
$li->children('ul')->item($column)->append($child);
}
}
$columns = $column + 1;
} else {
$columns = 1;
}
// get width
$width = (int) $li->attr('data-menu-columnwidth');
$style = $width > 0 ? sprintf(' style="width:%spx;"', $columns * $width) : null;
// append dropdown divs
$li->append(sprintf('', $columns, $style));
$div = $li->first('div.dropdown div.dropdown-bg div:first');
foreach ($li->children('ul') as $i => $u) {
$div->append(sprintf('', floor(100 / $columns)))->children('div')->item($i)->append($u);
}
}
return $element;
}
}