(function (window, document, $) { var itemCountsPromise; var liveTvInfoPromise; var itemsPromise; function ensurePromises() { itemsPromise = itemsPromise || ApiClient.getItems(Dashboard.getCurrentUserId(), { SortBy: "SortName" }); itemCountsPromise = itemCountsPromise || ApiClient.getItemCounts(Dashboard.getCurrentUserId()); liveTvInfoPromise = liveTvInfoPromise || ApiClient.getLiveTvInfo(); } function renderHeader(user) { var html = '
'; html += ''; html += ''; html += 'Remote Control'; if (user.Configuration.IsAdministrator) { html += 'Metadata Manager'; } html += '
'; html += ''; html += ''; if (user.PrimaryImageTag) { var url = ApiClient.getUserImageUrl(user.Id, { height: 24, tag: user.PrimaryImageTag, type: "Primary" }); html += ''; } else { html += ''; } html += ''; html += ''; if (user.Configuration.IsAdministrator) { html += 'Dashboard'; } html += '
'; html += '
'; $(document.body).prepend(html); $('.viewMenuBar').trigger('create'); $(document).trigger('headercreated'); } function getItemHref(item) { if (item.Type == 'ManualCollectionsFolder') { return 'collections.html?topParentId=' + item.Id; } if (item.CollectionType == 'boxsets') { return 'moviecollections.html?topParentId=' + item.Id; } if (item.CollectionType == 'trailers') { return 'movietrailers.html?topParentId=' + item.Id; } if (item.Type == 'TrailerCollectionFolder') { return 'movietrailers.html?topParentId=' + item.Id; } if (item.CollectionType == 'movies') { return 'movieslatest.html?topParentId=' + item.Id; } if (item.CollectionType == 'tvshows') { return 'tvrecommended.html?topParentId=' + item.Id; } if (item.CollectionType == 'music') { return 'musicrecommended.html?topParentId=' + item.Id; } if (item.CollectionType == 'games') { return 'gamesrecommended.html?topParentId=' + item.Id; } return 'itemlist.html?topParentId=' + item.Id + '&parentid=' + item.Id; } function insertViews(user, counts, items, liveTvInfo) { var html = ''; html += items.map(function (i) { return '' + i.Name + ''; }).join(''); if (counts.ChannelCount) { html += 'Channels'; } if (liveTvInfo.EnabledUsers.indexOf(user.Id) != -1) { html += 'Live TV'; } $('.viewMenuRemoteControlButton').before(html); } function showLibraryMenu() { ensurePromises(); $.when(itemCountsPromise, itemsPromise, liveTvInfoPromise).done(function (response1, response2, response3) { var counts = response1[0]; var items = response2[0].Items; var liveTvInfo = response3[0]; var page = $.mobile.activePage; var panel = getLibraryMenu(page, counts, items, liveTvInfo); $(panel).panel('toggle'); }); } function getLibraryMenu(page, counts, items, liveTvInfo) { var panel = $('#libraryPanel', page); if (!panel.length) { var html = ''; html += '
'; html += '

MEDIABROWSER

'; html += ''; html += '
'; $(page).append(html); panel = $('#libraryPanel', page).panel({}).trigger('create'); } return panel; } function getTopParentId() { return getParameterByName('topParentId') || sessionStorage.getItem('topParentId') || null; } window.LibraryMenu = { showLibraryMenu: showLibraryMenu, getTopParentId: getTopParentId }; function updateCastIcon() { var info = MediaController.getPlayerInfo(); if (info.isLocalPlayer) { $('.btnCast').addClass('btnDefaultCast').removeClass('btnActiveCast'); } else { $('.btnCast').removeClass('btnDefaultCast').addClass('btnActiveCast'); } } function updateLibraryNavLinks(page) { page = $(page); var isLiveTvPage = page.hasClass('liveTvPage'); var id = isLiveTvPage || page.hasClass('noLibraryMenuSelectionPage') ? '' : getTopParentId() || ''; sessionStorage.setItem('topParentId', id); $('.lnkMediaFolder').each(function () { var itemId = this.getAttribute('data-itemid'); if (isLiveTvPage && itemId == 'livetv') { $(this).addClass('selectedMediaFolder'); } else if (id && itemId == id) { $(this).addClass('selectedMediaFolder'); } else { $(this).removeClass('selectedMediaFolder'); } }); $('.scopedLibraryViewNav a', page).each(function () { var src = this.href; if (src.indexOf('#') != -1) { return; } src = replaceQueryString(src, 'topParentId', id); this.href = src; }); } $(document).on('pageinit', ".libraryPage", function () { var page = this; $('.libraryViewNav', page).wrapInner('
'); $('.libraryViewNav a', page).each(function () { this.innerHTML = '' + this.innerHTML + ''; }); }).on('pagebeforeshow', ".page", function () { var page = this; if ($(page).hasClass('libraryPage')) { if (!$('.viewMenuBar').length) { Dashboard.getCurrentUser().done(function (user) { renderHeader(user); ensurePromises(); $.when(itemCountsPromise, itemsPromise, liveTvInfoPromise).done(function (response1, response2, response3) { var counts = response1[0]; var items = response2[0].Items; var liveTvInfo = response3[0]; insertViews(user, counts, items, liveTvInfo); updateLibraryNavLinks(page); }); }); } else { $('.viewMenuBar').show(); updateLibraryNavLinks(page); } } else { $('.viewMenuBar').hide(); } }).on('pageshow', ".libraryPage", function () { var page = this; var elem = $('.libraryViewNavInner .ui-btn-active:visible', page); if (elem.length) { elem[0].scrollIntoView(); // Scroll back up so in case vertical scroll was messed with $(document).scrollTop(0); } }); $(function () { $(MediaController).on('playerchange', function () { updateCastIcon(); }); }); })(window, document, jQuery);