xref: /freebsd/contrib/lutok/api-docs/html/menu.js (revision 132f818ddbf457ee67d502cd89b5a18e0a34713d)
1*132f818dSEnji Cooper/*
2*132f818dSEnji Cooper @licstart  The following is the entire license notice for the JavaScript code in this file.
3*132f818dSEnji Cooper
4*132f818dSEnji Cooper The MIT License (MIT)
5*132f818dSEnji Cooper
6*132f818dSEnji Cooper Copyright (C) 1997-2020 by Dimitri van Heesch
7*132f818dSEnji Cooper
8*132f818dSEnji Cooper Permission is hereby granted, free of charge, to any person obtaining a copy of this software
9*132f818dSEnji Cooper and associated documentation files (the "Software"), to deal in the Software without restriction,
10*132f818dSEnji Cooper including without limitation the rights to use, copy, modify, merge, publish, distribute,
11*132f818dSEnji Cooper sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
12*132f818dSEnji Cooper furnished to do so, subject to the following conditions:
13*132f818dSEnji Cooper
14*132f818dSEnji Cooper The above copyright notice and this permission notice shall be included in all copies or
15*132f818dSEnji Cooper substantial portions of the Software.
16*132f818dSEnji Cooper
17*132f818dSEnji Cooper THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
18*132f818dSEnji Cooper BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19*132f818dSEnji Cooper NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20*132f818dSEnji Cooper DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21*132f818dSEnji Cooper OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*132f818dSEnji Cooper
23*132f818dSEnji Cooper @licend  The above is the entire license notice for the JavaScript code in this file
24*132f818dSEnji Cooper */
25*132f818dSEnji Cooperfunction initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
26*132f818dSEnji Cooper  function makeTree(data,relPath) {
27*132f818dSEnji Cooper    var result='';
28*132f818dSEnji Cooper    if ('children' in data) {
29*132f818dSEnji Cooper      result+='<ul>';
30*132f818dSEnji Cooper      for (var i in data.children) {
31*132f818dSEnji Cooper        var url;
32*132f818dSEnji Cooper        var link;
33*132f818dSEnji Cooper        link = data.children[i].url;
34*132f818dSEnji Cooper        if (link.substring(0,1)=='^') {
35*132f818dSEnji Cooper          url = link.substring(1);
36*132f818dSEnji Cooper        } else {
37*132f818dSEnji Cooper          url = relPath+link;
38*132f818dSEnji Cooper        }
39*132f818dSEnji Cooper        result+='<li><a href="'+url+'">'+
40*132f818dSEnji Cooper                                data.children[i].text+'</a>'+
41*132f818dSEnji Cooper                                makeTree(data.children[i],relPath)+'</li>';
42*132f818dSEnji Cooper      }
43*132f818dSEnji Cooper      result+='</ul>';
44*132f818dSEnji Cooper    }
45*132f818dSEnji Cooper    return result;
46*132f818dSEnji Cooper  }
47*132f818dSEnji Cooper  var searchBoxHtml;
48*132f818dSEnji Cooper  if (searchEnabled) {
49*132f818dSEnji Cooper    if (serverSide) {
50*132f818dSEnji Cooper      searchBoxHtml='<div id="MSearchBox" class="MSearchBoxInactive">'+
51*132f818dSEnji Cooper                 '<div class="left">'+
52*132f818dSEnji Cooper                  '<form id="FSearchBox" action="'+relPath+searchPage+
53*132f818dSEnji Cooper                    '" method="get"><span id="MSearchSelectExt">&#160;</span>'+
54*132f818dSEnji Cooper                  '<input type="text" id="MSearchField" name="query" value="" placeholder="'+search+
55*132f818dSEnji Cooper                    '" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)"'+
56*132f818dSEnji Cooper                    ' onblur="searchBox.OnSearchFieldFocus(false)"/>'+
57*132f818dSEnji Cooper                  '</form>'+
58*132f818dSEnji Cooper                 '</div>'+
59*132f818dSEnji Cooper                 '<div class="right"></div>'+
60*132f818dSEnji Cooper                '</div>';
61*132f818dSEnji Cooper    } else {
62*132f818dSEnji Cooper      searchBoxHtml='<div id="MSearchBox" class="MSearchBoxInactive">'+
63*132f818dSEnji Cooper                 '<span class="left">'+
64*132f818dSEnji Cooper                  '<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()"'+
65*132f818dSEnji Cooper                     ' onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>'+
66*132f818dSEnji Cooper                  '<input type="text" id="MSearchField" value="" placeholder="'+search+
67*132f818dSEnji Cooper                    '" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" '+
68*132f818dSEnji Cooper                    'onblur="searchBox.OnSearchFieldFocus(false)" '+
69*132f818dSEnji Cooper                    'onkeyup="searchBox.OnSearchFieldChange(event)"/>'+
70*132f818dSEnji Cooper                 '</span>'+
71*132f818dSEnji Cooper                 '<span class="right"><a id="MSearchClose" '+
72*132f818dSEnji Cooper                  'href="javascript:searchBox.CloseResultsWindow()">'+
73*132f818dSEnji Cooper                  '<img id="MSearchCloseImg" border="0" src="'+relPath+
74*132f818dSEnji Cooper                  'search/close.svg" alt=""/></a>'+
75*132f818dSEnji Cooper                 '</span>'+
76*132f818dSEnji Cooper                '</div>';
77*132f818dSEnji Cooper    }
78*132f818dSEnji Cooper  }
79*132f818dSEnji Cooper
80*132f818dSEnji Cooper  $('#main-nav').before('<div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>'+
81*132f818dSEnji Cooper                        '<label class="main-menu-btn" for="main-menu-state">'+
82*132f818dSEnji Cooper                        '<span class="main-menu-btn-icon"></span> '+
83*132f818dSEnji Cooper                        'Toggle main menu visibility</label>'+
84*132f818dSEnji Cooper                        '<span id="searchBoxPos1" style="position:absolute;right:8px;top:8px;height:36px;"></span>'+
85*132f818dSEnji Cooper                        '</div>');
86*132f818dSEnji Cooper  $('#main-nav').append(makeTree(menudata,relPath));
87*132f818dSEnji Cooper  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
88*132f818dSEnji Cooper  if (searchBoxHtml) {
89*132f818dSEnji Cooper    $('#main-menu').append('<li id="searchBoxPos2" style="float:right"></li>');
90*132f818dSEnji Cooper  }
91*132f818dSEnji Cooper  var $mainMenuState = $('#main-menu-state');
92*132f818dSEnji Cooper  var prevWidth = 0;
93*132f818dSEnji Cooper  if ($mainMenuState.length) {
94*132f818dSEnji Cooper    function initResizableIfExists() {
95*132f818dSEnji Cooper      if (typeof initResizable==='function') initResizable();
96*132f818dSEnji Cooper    }
97*132f818dSEnji Cooper    // animate mobile menu
98*132f818dSEnji Cooper    $mainMenuState.change(function(e) {
99*132f818dSEnji Cooper      var $menu = $('#main-menu');
100*132f818dSEnji Cooper      var options = { duration: 250, step: initResizableIfExists };
101*132f818dSEnji Cooper      if (this.checked) {
102*132f818dSEnji Cooper        options['complete'] = function() { $menu.css('display', 'block') };
103*132f818dSEnji Cooper        $menu.hide().slideDown(options);
104*132f818dSEnji Cooper      } else {
105*132f818dSEnji Cooper        options['complete'] = function() { $menu.css('display', 'none') };
106*132f818dSEnji Cooper        $menu.show().slideUp(options);
107*132f818dSEnji Cooper      }
108*132f818dSEnji Cooper    });
109*132f818dSEnji Cooper    // set default menu visibility
110*132f818dSEnji Cooper    function resetState() {
111*132f818dSEnji Cooper      var $menu = $('#main-menu');
112*132f818dSEnji Cooper      var $mainMenuState = $('#main-menu-state');
113*132f818dSEnji Cooper      var newWidth = $(window).outerWidth();
114*132f818dSEnji Cooper      if (newWidth!=prevWidth) {
115*132f818dSEnji Cooper        if ($(window).outerWidth()<768) {
116*132f818dSEnji Cooper          $mainMenuState.prop('checked',false); $menu.hide();
117*132f818dSEnji Cooper          $('#searchBoxPos1').html(searchBoxHtml);
118*132f818dSEnji Cooper          $('#searchBoxPos2').hide();
119*132f818dSEnji Cooper        } else {
120*132f818dSEnji Cooper          $menu.show();
121*132f818dSEnji Cooper          $('#searchBoxPos1').empty();
122*132f818dSEnji Cooper          $('#searchBoxPos2').html(searchBoxHtml);
123*132f818dSEnji Cooper          $('#searchBoxPos2').show();
124*132f818dSEnji Cooper        }
125*132f818dSEnji Cooper        if (typeof searchBox!=='undefined') {
126*132f818dSEnji Cooper          searchBox.CloseResultsWindow();
127*132f818dSEnji Cooper        }
128*132f818dSEnji Cooper        prevWidth = newWidth;
129*132f818dSEnji Cooper      }
130*132f818dSEnji Cooper    }
131*132f818dSEnji Cooper    $(window).ready(function() { resetState(); initResizableIfExists(); });
132*132f818dSEnji Cooper    $(window).resize(resetState);
133*132f818dSEnji Cooper  }
134*132f818dSEnji Cooper  $('#main-menu').smartmenus();
135*132f818dSEnji Cooper}
136*132f818dSEnji Cooper/* @license-end */
137