';
html += '
';
html += '';
html += '
';
html += '';
html += '
';
html += ' ';
html += '(function (window, document, $, devicePixelRatio) { var backStack = []; var addNextToBackStack = true; function renderHeader() { var html = '
'; $(document.body).append(html); $('.viewMenuBar').lazyChildren(); $(document).trigger('headercreated'); bindMenuEvents(); } function onBackClick() { if (Dashboard.exitOnBack()) { Dashboard.exit(); } else { addNextToBackStack = false; backStack.length = Math.max(0, backStack.length - 1); history.back(); } } function addUserToHeader(user) { var header = $('.viewMenuBar'); if (user.localUser) { $('.btnCast', header).visible(true); $('.headerSearchButton', header).visible(true); requirejs(['voice/voice'], function () { if (VoiceInputManager.isSupported()) { $('.headerVoiceButton', header).visible(true); } else { $('.headerVoiceButton', header).visible(false); } }); } else { $('.btnCast', header).visible(false); $('.headerVoiceButton', header).visible(false); $('.headerSearchButton', header).visible(false); } if (user.canManageServer) { $('.dashboardEntryHeaderButton', header).visible(true); } else { $('.dashboardEntryHeaderButton', header).visible(false); } var userButtonHtml = ''; if (user.name) { if (user.imageUrl && AppInfo.enableUserImage) { var userButtonHeight = 26; var url = user.imageUrl; if (user.supportsImageParams) { url += "&height=" + (userButtonHeight * Math.max(devicePixelRatio || 1, 2)); } userButtonHtml += ''; } else { userButtonHtml += ''; } $('.headerUserButton', header).html(userButtonHtml).lazyChildren(); } } function bindMenuEvents() { if (AppInfo.isTouchPreferred) { if ('ontouchend' in document) { $('.mainDrawerButton').on('touchend', openMainDrawer); } else { $('.mainDrawerButton').on('click', openMainDrawer); } } else { $('.mainDrawerButton').createHoverTouch().on('hovertouch', openMainDrawer); } $('.headerBackButton').on('click', onBackClick); // Have to wait for document ready here because otherwise // we may see the jQM redirect back and forth problem $(initViewMenuBarHeadroom); } function initViewMenuBarHeadroom() { // grab an element var viewMenuBar = document.getElementsByClassName("viewMenuBar")[0]; initHeadRoom(viewMenuBar); } function updateViewMenuBarHeadroom(page, viewMenuBar) { if ($(page).hasClass('libraryPage')) { // Don't like this timeout at all but if headroom is activated during the page events it will jump and flicker on us setTimeout(reEnableHeadroom, 700); } else { viewMenuBar.addClass('headroomDisabled'); } } function reEnableHeadroom() { $('.headroomDisabled').removeClass('headroomDisabled'); } function getItemHref(item, context) { return LibraryBrowser.getHref(item, context); } var requiresDrawerRefresh = true; var requiresDashboardDrawerRefresh = true; function openMainDrawer() { var drawerPanel = $('.mainDrawerPanel')[0]; drawerPanel.openDrawer(); } function onMainDrawerOpened() { if ($.browser.mobile) { $(document.body).addClass('bodyWithPopupOpen'); } var drawer = $('.mainDrawerPanel .mainDrawer'); ConnectionManager.user(window.ApiClient).done(function (user) { if (requiresDrawerRefresh) { ensureDrawerStructure(drawer); refreshUserInfoInDrawer(user, drawer); refreshLibraryInfoInDrawer(user, drawer); refreshBottomUserInfoInDrawer(user, drawer); $(document).trigger('libraryMenuCreated'); updateLibraryMenu(user.localUser); } if (requiresDrawerRefresh || requiresDashboardDrawerRefresh) { refreshDashboardInfoInDrawer($.mobile.activePage, user, drawer); requiresDashboardDrawerRefresh = false; } requiresDrawerRefresh = false; updateSidebarOnClicks(); updateLibraryNavLinks($.mobile.activePage); }); } function onMainDrawerClosed() { $(document.body).removeClass('bodyWithPopupOpen'); } function closeMainDrawer() { var drawerPanel = $('.mainDrawerPanel')[0]; drawerPanel.closeDrawer(); } function updateSidebarOnClicks() { $('.mainDrawerContent a').off('click.closeMainDrawer').on('click.closeMainDrawer', closeMainDrawer); } function ensureDrawerStructure(drawer) { if ($('.mainDrawerContent', drawer).length) { return; } var html = '