1jQuery(function intializeTemplateJS() {
2    'use strict';
3
4    var getULwidth = function getULwidth($ul) {
5        var widestLiWidth = 0;
6        var $li = $ul.children('li');
7        $li.each(function getInlineLiWidth() {
8            var $div = jQuery(this).children('div.li').first();
9            var content = $div.html();
10            var currentLiWidth;
11            $div.html('<span id="widthMeasure">' + content + '</span>');
12            currentLiWidth = jQuery('#widthMeasure').width();
13            $div.html(content);
14            widestLiWidth = Math.max(widestLiWidth, currentLiWidth);
15        });
16        return parseInt(widestLiWidth, 10);
17    };
18
19    (function toggleSubsectionsOnMobile() {
20        var MOBILE_WIDTH = 600;
21        var SHALLOWST_SECTION_TO_HIDE = 2;
22        var DEEPEST_SECTION_TO_HIDE = 6;
23        var i;
24        var $page;
25        if (jQuery(window).width() <= MOBILE_WIDTH) {
26            $page = jQuery('#icke__page');
27            for (i = SHALLOWST_SECTION_TO_HIDE; i < DEEPEST_SECTION_TO_HIDE; i += 1) {
28                $page.find('div.level' + i).hide();
29                $page.find('h' + i).click(function toggleSection() {
30                    jQuery(this).next('div').toggle();
31                });
32            }
33        }
34    }());
35
36    (function buildNestedQuickNav() {
37        // noinspection JSJQueryEfficiency
38        jQuery('div.sec_level').css('display', 'inline');
39        jQuery('.popup_content ul').children('li.node').each(function detachLiIntoBubble($index, element) {
40            var ZINDEX_STEP = 5;
41            var $currentNode = jQuery(element);
42            var $newPopout = $currentNode.closest('div.sec_level').clone();
43            var currentZIndex = parseInt($currentNode.closest('div.sec_level').first().css('z-index'), 10);
44            var newZIndex = currentZIndex + ZINDEX_STEP;
45            var parentWidth = getULwidth($currentNode.closest('ul'));
46            var parentPaddingLeft = parseInt($currentNode.css('padding-left').replace('px', ''), 10);
47            var parentPaddingRight = parseInt($currentNode.css('padding-right').replace('px', ''), 10);
48            var newCSS = {
49                'z-index': newZIndex,
50                left: parentPaddingLeft + parentWidth + parentPaddingRight + 'px',
51            };
52            $newPopout.html('');
53            $newPopout.css(newCSS);
54            $currentNode.children('ul').first().appendTo($newPopout);
55            $newPopout.appendTo($currentNode);
56            $currentNode.removeClass('node');
57            $currentNode.addClass('navNode');
58        });
59        // we need to duplicate the selector since we just changed the selected elements
60        // noinspection JSJQueryEfficiency
61        jQuery('div.sec_level').css('display', '');
62    }());
63});
64