1;var BS = BS || {}; 2(function($, BS) { 3 'use strict'; 4 5 var initialized = false; 6 var _vars = { 7 widescreenEnabled: false, 8 widescreenActive: false, 9 widescreenMinWidth: 992, 10 menuState: { 11 running: false, 12 loaded: false 13 }, 14 classNames: { 15 btnActive: "is-active", 16 widescreenActive: "menu-widescreen", 17 widescreenOpenedLoad: "menu-widescreen-load" 18 }, 19 resizeTimeout: null, 20 resizeDelay: 150 21 }; 22 23 var _eventHandlers = {}; 24 var _cookie = "bs_slide_menu"; 25 var _keydownEvent = "keydown.mm-offCanvas"; 26 27 function _init(menuSelector, settings) { 28 var menu = document.getElementById(menuSelector); 29 if(menu) 30 { 31 $(menu).mmenu(settings.mmenu.options, settings.mmenu.configuration); 32 _vars.menu = menu; 33 _vars.api = $(menu).data("mmenu"); 34 _vars.btn = document.getElementById("navButtonIcon"); 35 _vars.html = document.documentElement; 36 $.extend(true, _vars, settings); 37 38 if(_vars.autoOpenPanel) { 39 _openPanel(); 40 } 41 menu = null; 42 _registerEvents(); 43 return true; 44 } 45 else 46 { 47 return false; 48 } 49 } 50 51 function _openPanel() { 52 var selected = $(_vars.menu).find("." + _vars.classNames.selected).eq(-1); 53 var next = selected.find("a.mm-next").attr("href"), 54 panel; 55 if(next) { 56 panel = $(next); 57 if(panel.length) { 58 _vars.api.openPanel(panel); 59 } 60 } 61 } 62 63 function _registerEvents() { 64 _vars.api.bind("open:start", function() { 65 _updateMenuState("opening"); 66 _runEventHandlers("opening", this, [_createEventObj("opening")]); 67 }); 68 _vars.api.bind("open:finish", function() { 69 _updateMenuState("opened"); 70 _runEventHandlers("open", this, [_createEventObj("open")]); 71 }); 72 _vars.api.bind("close:start", function() { 73 _updateMenuState("closing"); 74 _runEventHandlers("closing", this, [[_createEventObj("closing")]]); 75 }); 76 _vars.api.bind("close:finish", function() { 77 _updateMenuState("closed"); 78 _runEventHandlers("close", this, [_createEventObj("close")]); 79 }); 80 _vars.btn.addEventListener("click", function(e) { 81 e.preventDefault(); 82 if(!_isOpened()) 83 { 84 _open(); 85 BS.cookie.set(_cookie, 1); 86 } 87 else 88 { 89 _close(); 90 BS.cookie.set(_cookie, 0); 91 } 92 }); 93 if(_vars.widescreenEnabled) 94 { 95 window.addEventListener("resize", function(e) { 96 clearTimeout(_vars.resizeTimeout); 97 _vars.resizeTimeout = setTimeout(function() { 98 _windowResize(window.innerWidth); 99 _vars.resizeTimeout = null; 100 }, _vars.resizeDelay); 101 }); 102 _windowResize(window.innerWidth); 103 } 104 else 105 { 106 _menuFirstLoaded(); 107 } 108 //mmenu úplnÄ rušà tabelovánà pokud je menu otevÅeno 109 //ve widescreen variantÄ ale máme menu otevÅeno a chceme interagovat se stránkou 110 //zruÅ¡enà internÃho onkeydown eventu a nahrazenà naÅ¡im 111 $(window).off(_keydownEvent); 112 _addKeydownEvent(); 113 } 114 115 function _windowResize(width) { 116 //nic nedÄlat, pokud 'widescreen' možnost nenà zapnuta 117 //nebo se menu již otevÃrá/zavÃrá 118 if(_vars.widescreenEnabled 119 && !_vars.menuState.running) 120 { 121 if(width >= parseInt(_vars.widescreenMinWidth)) 122 { 123 _vars.html.classList.add(_vars.classNames.widescreenActive); 124 _vars.widescreenActive = true; 125 if(parseInt(BS.cookie.get(_cookie)) !== 0 126 && !_vars.menuState.loaded) { 127 //prvotnà naÄtenà a otevÅenà menu 128 _open(); 129 } else if(!_vars.menuState.loaded) { 130 //neÄekáme na otevÅenà menu 131 _menuFirstLoaded(); 132 } 133 } 134 else 135 { 136 if(_vars.widescreenActive === true) { 137 _vars.html.classList.remove(_vars.classNames.widescreenActive); 138 _close(); 139 _vars.widescreenActive = false; 140 if(!_vars.menuState.loaded) 141 { 142 //malá obrazovka, menu zůstává zavÅeno 143 _menuFirstLoaded(); 144 } 145 } 146 } 147 } 148 } 149 150 function _menuFirstLoaded() { 151 if(_vars.widescreenEnabled) 152 { 153 _vars.html.classList.remove(_vars.classNames.widescreenOpenedLoad); 154 } 155 156 _vars.menuState.loaded = true; 157 } 158 159 function _open() { 160 if(!_isOpened()) 161 { 162 _vars.api.open(); 163 } 164 } 165 166 function _close() { 167 if(_isOpened()) 168 { 169 _vars.api.close(); 170 } 171 } 172 173 function _resizeSlider() { 174 if(_vars.widescreenEnabled 175 && _vars.widescreenActive 176 && BS.slider 177 && BS.slider.isReady()) 178 { 179 BS.slider.api.revredraw(); 180 } 181 } 182 183 function _updateMenuState(state) { 184 switch (state) 185 { 186 case "opening": 187 _vars.menuState.running = true; 188 break; 189 case "opened": 190 _menuOpened(); 191 _resizeSlider(); 192 _vars.menuState.running = false;
193 break; 194 case "closing": 195 _vars.menuState.running = true; 196 break; 197 case "closed": 198 _menuClosed(); 199 _resizeSlider(); 200 _vars.menuState.running = false; 201 break; 202 } 203 } 204 205 function _menuOpened() { 206 if(!_vars.menuState.loaded) 207 { 208 _menuFirstLoaded(); 209 } 210 setTimeout(function() { 211 _vars.btn.classList.add(_vars.classNames.btnActive); 212 }, 10); 213 } 214 215 function _menuClosed() { 216 setTimeout(function() { 217 _vars.btn.classList.remove(_vars.classNames.btnActive); 218 }, 10); 219 } 220 221 function _isOpened() { 222 return _vars.api.getInstance().vars.opened; 223 } 224 225 function _runEventHandlers(event, context, data) { 226 if(_eventHandlers[event]) { 227 for(var i = 0; i < _eventHandlers[event].length; i++) { 228 _eventHandlers[event][i].apply(context, data); 229 } 230 } 231 } 232 233 function _createEventObj(event) { 234 return { 235 type: event, 236 api: _vars.api, 237 menu: _vars.menu 238 } 239 } 240 241 function _customKeydownHandler(e) { 242 if(e.keyCode === 9) { 243 //rozÅ¡ÃÅenà internà funkce mmenu 244 if(!_vars.widescreenActive && _isOpened()) { 245 e.preventDefault(); 246 } 247 } 248 } 249 250 function _removeKeydownEvent() { 251 window.removeEventListener("keydown", _customKeydownHandler); 252 } 253 254 function _addKeydownEvent() { 255 window.addEventListener("keydown", _customKeydownHandler); 256 } 257 258 function initSlideMenu(menuSelector, settings) { 259 if(!_init(menuSelector, settings)) 260 { 261 console.error("Menu couldn't be initialized"); 262 return; 263 } 264 265 //veÅejné metody 266 BS.slideMenu.menu = { 267 open: function() { 268 _open(); 269 }, 270 close: function() { 271 _close(); 272 }, 273 isOpened: function() { 274 return _isOpened(); 275 }, 276 isWidescreenEnabled: function() { 277 return _vars.widescreenEnabled; 278 }, 279 isWidescreenActive: function() { 280 return _vars.widescreenActive; 281 }, 282 tabEnable: function() { 283 _removeKeydownEvent(); 284 }, 285 tabRestore: function() { 286 _addKeydownEvent() 287 }, 288 getApi: function() { 289 return _vars.api; 290 }, 291 on: function(event, handler) { 292 if(typeof handler === "function") { 293 if(!_eventHandlers[event]) _eventHandlers[event] = []; 294 _eventHandlers[event].push(handler); 295 } 296 }, 297 off: function(event, handler) { 298 if(typeof handler === "function" 299 && !!_eventHandlers[event] 300 && !!_eventHandlers[event].length) { 301 var i = _eventHandlers[event].length - 1; 302 for(; i >= 0 ; i--) { 303 if(_eventHandlers[event][i] === handler) { 304 _eventHandlers[event].splice(i, 1); 305 } 306 } 307 } 308 } 309 } 310 } 311 312 BS.slideMenu = { 313 init: function(menuSelector, settings) { 314 if(!initialized) { 315 initSlideMenu(menuSelector, settings); 316 initialized = true; 317 } 318 } 319 } 320})(jQuery, BS);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.