getSubmenuWidth = function() {
    return JQ("#submenu")[0].offsetWidth;
}

getLiWidth = function(li) {
    return JQ(li)[0].offsetWidth;
}

getLIsWidth = function() {
    var submenu = JQ("#submenu");
    var total = 0;
    JQ(submenu).children("li").each(function() {
        total = total + getLiWidth(this);
    });
    return total;
}

doExtension = function() {
    var width = getSubmenuWidth();
    var submen = JQ('#submenu');
    var total = 0;
    var count = 0;
    JQ(submen).children("li").each(function() {
        var thisWidth = getLiWidth(this);
        if (total + thisWidth > width) {
            total = thisWidth;
            count = count + 1;
            JQ(this).addClass('first');
        } else {
            total = total + thisWidth;
        }
    });
    var version = 7;
    if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) {
        var version = parseInt(navigator.appVersion);
    }
    if (version >= 7) {
        count = count + 1;
        //set inner ul height
        var ulHeight = JQ(submen).height() * count;
        JQ(submen).css("height", ulHeight + "px");
        //calculate new height of div
        var divHeight = JQ('div.submenu').height();
        divHeight = divHeight + ((divHeight - numeric(JQ(submen), "paddingTop") - numeric(JQ(submen), "paddingBottom")) * (count - 1));
        //set max submenu height
        JQ('div.submenu').css("height", divHeight + "px");
        //end
    }
}

numeric = function(el, prop) {
    return parseInt(JQ.curCSS(el.jquery ? el[0] : el, prop, true)) || 0;
};