(function ($, document, LibraryBrowser, window) { var currentItem; function reload(page) { var id = getParameterByName('id'); Dashboard.showLoadingMsg(); ApiClient.getItem(Dashboard.getCurrentUserId(), id).done(function (item) { currentItem = item; var name = item.Name; if (item.IndexNumber != null) { name = item.IndexNumber + " - " + name; } if (item.ParentIndexNumber != null) { name = item.ParentIndexNumber + "." + name; } $('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item)); Dashboard.setPageTitle(name); $('#itemName', page).html(name); if (item.SeriesName || item.Album) { var seriesName = item.SeriesName || item.Album; $('#seriesName', page).html(seriesName).show(); } setInitialCollapsibleState(page, item); renderDetails(page, item); if (MediaPlayer.canPlay(item)) { $('#btnPlayMenu', page).show(); $('#playButtonShadow', page).show(); $('#btnQueueMenu', page).hide(); } else { $('#btnPlayMenu', page).hide(); $('#playButtonShadow', page).hide(); $('#btnQueueMenu', page).hide(); } Dashboard.hideLoadingMsg(); }); } function setInitialCollapsibleState(page, item) { if (!item.MediaStreams || !item.MediaStreams.length) { $('#mediaInfoCollapsible', page).hide(); } else { $('#mediaInfoCollapsible', page).show(); } if (!item.Chapters || !item.Chapters.length) { $('#scenesCollapsible', page).hide(); } else { $('#scenesCollapsible', page).show(); } if (!item.LocalTrailerCount || item.LocalTrailerCount == 0) { $('#trailersCollapsible', page).hide(); } else { $('#trailersCollapsible', page).show(); } if (!item.SpecialFeatureCount || item.SpecialFeatureCount == 0) { $('#specialsCollapsible', page).hide(); } else { $('#specialsCollapsible', page).show(); } if (!item.People || !item.People.length) { $('#castCollapsible', page).hide(); } else { $('#castCollapsible', page).show(); } } function renderDetails(page, item) { if (item.Taglines && item.Taglines.length) { $('#itemTagline', page).html(item.Taglines[0]).show(); } else { $('#itemTagline', page).hide(); } if (item.Overview || item.OverviewHtml) { var overview = item.OverviewHtml || item.Overview; $('#itemOverview', page).html(overview).show(); $('#itemOverview a').each(function () { $(this).attr("target", "_blank"); }); } else { $('#itemOverview', page).hide(); } if (item.CommunityRating) { $('#itemCommunityRating', page).html(LibraryBrowser.getStarRatingHtml(item)).show().attr('title', item.CommunityRating); } else { $('#itemCommunityRating', page).hide(); } LibraryBrowser.renderBudget($('#itemBudget', page), item); $('#itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item)); LibraryBrowser.renderGenres($('#itemGenres', page), item); LibraryBrowser.renderStudios($('#itemStudios', page), item); renderUserDataIcons(page, item); LibraryBrowser.renderLinks($('#itemLinks', page), item); } function renderUserDataIcons(page, item) { $('#itemRatings', page).html(LibraryBrowser.getUserDataIconsHtml(item)); } function renderScenes(page, item) { var html = ''; var chapters = item.Chapters || {}; for (var i = 0, length = chapters.length; i < length; i++) { var chapter = chapters[i]; var chapterName = chapter.Name || "Chapter " + i; html += '
'; html += ''; if (chapter.ImageTag) { var imgUrl = ApiClient.getImageUrl(item.Id, { width: 500, tag: chapter.ImageTag, type: "Chapter", index: i }); html += ''; } else { html += ''; } html += '
' + chapterName + '
'; html += '
'; html += ticks_to_human(chapter.StartPositionTicks); html += '
'; html += '
'; html += '
'; } $('#scenesContent', page).html(html); } function renderGallery(page, item) { var imageTags = item.ImageTags || {}; var html = ''; if (imageTags.Logo) { html += createGalleryImage(item.Id, "Logo", item.ImageTags.Logo); } if (imageTags.Thumb) { html += createGalleryImage(item.Id, "Thumb", item.ImageTags.Thumb); } if (imageTags.Art) { html += createGalleryImage(item.Id, "Art", item.ImageTags.Art); } if (imageTags.Menu) { html += createGalleryImage(item.Id, "Menu", item.ImageTags.Menu); } if (imageTags.Disc) { html += createGalleryImage(item.Id, "Disc", item.ImageTags.Disc); } if (imageTags.Box) { html += createGalleryImage(item.Id, "Box", item.ImageTags.Box); } if (item.BackdropImageTags) { for (var i = 0, length = item.BackdropImageTags.length; i < length; i++) { html += createGalleryImage(item.Id, "Backdrop", item.BackdropImageTags[0], i); } } $('#galleryContent', page).html(html).trigger('create'); } function createGalleryImage(itemId, type, tag, index) { var downloadWidth = 400; var lightboxWidth = 800; var html = ''; if (typeof (index) == "undefined") index = 0; html += '
'; html += ''; html += ''; html += '
'; html += '
'; html += 'Close'; html += ''; html += '
'; return html; } function renderMediaInfo(page, item) { var html = ''; for (var i = 0, length = item.MediaStreams.length; i < length; i++) { var stream = item.MediaStreams[i]; if (stream.Type == "Data") { continue; } var type; if (item.MediaType == "Audio" && stream.Type == "Video") { type = "Embedded Image"; } else { type = stream.Type; } html += '
'; html += '

' + type + '

'; html += ''; html += '
'; } $('#mediaInfoContent', page).html(html).trigger('create'); $('#mediaInfoCollapsible', page).show(); } function renderSpecials(page, item) { var html = ''; ApiClient.getSpecialFeatures(Dashboard.getCurrentUserId(), item.Id).done(function (specials) { for (var i = 0, length = specials.length; i < length; i++) { var special = specials[i]; html += '
'; html += ''; var imageTags = special.ImageTags || {}; if (imageTags.Primary) { var imgUrl = ApiClient.getImageUrl(special.Id, { maxwidth: 500, tag: imageTags.Primary, type: "primary" }); html += ''; } else { html += ''; } html += '
' + special.Name + '
'; html += '
'; if (special.RunTimeTicks != "") { html += ticks_to_human(special.RunTimeTicks); } else { html += " "; } html += '
'; html += '
'; html += '
'; } $('#specialsContent', page).html(html); }); } function renderTrailers(page, item) { var html = ''; ApiClient.getLocalTrailers(Dashboard.getCurrentUserId(), item.Id).done(function (trailers) { for (var i = 0, length = trailers.length; i < length; i++) { var trailer = trailers[i]; html += '
'; html += ''; var imageTags = trailer.ImageTags || {}; if (imageTags.Primary) { var imgUrl = ApiClient.getImageUrl(trailer.Id, { maxwidth: 500, tag: imageTags.Primary, type: "primary" }); html += ''; } else { html += ''; } html += '
' + trailer.Name + '
'; html += '
'; if (trailer.RunTimeTicks != "") { html += ticks_to_human(trailer.RunTimeTicks); } else { html += " "; } html += '
'; html += '
'; html += '
'; } $('#trailersContent', page).html(html); }); } function renderCast(page, item) { var html = ''; var casts = item.People || []; for (var i = 0, length = casts.length; i < length; i++) { var cast = casts[i]; var role = cast.Role || cast.Type; html += ''; html += '
'; if (cast.PrimaryImageTag) { var imgUrl = ApiClient.getPersonImageUrl(cast.Name, { width: 185, tag: cast.PrimaryImageTag, type: "primary" }); html += ''; } else { var style = "background-color:" + LibraryBrowser.getMetroColor(cast.Name) + ";"; html += ''; } html += '
' + cast.Name + '
'; html += '
' + role + '
'; html += '
'; } $('#castContent', page).html(html); } function play(startPosition) { MediaPlayer.play([currentItem], startPosition); } $(document).on('pageinit', "#itemDetailPage", function () { var page = this; $('#btnPlayMenu', page).on('click', function () { var userdata = currentItem.UserData || {}; if (userdata.PlaybackPositionTicks) { var pos = $('#playMenuAnchor', page).offset(); $('#playMenu', page).popup("open", { x: pos.left + 125, y: pos.top + 20 }); } else { play(); } }); $('#btnQueueMenu', page).on('click', function () { var pos = $('#queueMenuAnchor', page).offset(); $('#queueMenu', page).popup("open", { x: pos.left + 165, y: pos.top + 20 }); }); $('#btnPlay', page).on('click', function () { $('#playMenu', page).popup("close"); play(); }); $('#btnResume', page).on('click', function () { $('#playMenu', page).popup("close"); var userdata = currentItem.UserData || {}; play(userdata.PlaybackPositionTicks); }); $('#btnQueue', page).on('click', function () { $('#queueMenu', page).popup("close"); Playlist.add(currentItem); }); }).on('pageshow', "#itemDetailPage", function () { var page = this; reload(page); $('#mediaInfoCollapsible', page).on('expand.lazyload', function () { renderMediaInfo(page, currentItem); $(this).off('expand.lazyload'); }); $('#scenesCollapsible', page).on('expand.lazyload', function () { if (currentItem) { renderScenes(page, currentItem); $(this).off('expand.lazyload'); } }); $('#specialsCollapsible', page).on('expand.lazyload', function () { renderSpecials(page, currentItem); $(this).off('expand.lazyload'); }); $('#trailersCollapsible', page).on('expand.lazyload', function () { renderTrailers(page, currentItem); $(this).off('expand.lazyload'); }); $('#castCollapsible', page).on('expand.lazyload', function () { renderCast(page, currentItem); $(this).off('expand.lazyload'); }); $('#galleryCollapsible', page).on('expand.lazyload', function () { renderGallery(page, currentItem); $(this).off('expand.lazyload'); }); }).on('pagehide', "#itemDetailPage", function () { currentItem = null; var page = this; $('#mediaInfoCollapsible', page).off('expand.lazyload'); $('#scenesCollapsible', page).off('expand.lazyload'); $('#specialsCollapsible', page).off('expand.lazyload'); $('#trailersCollapsible', page).off('expand.lazyload'); $('#castCollapsible', page).off('expand.lazyload'); $('#galleryCollapsible', page).off('expand.lazyload'); }); function itemDetailPage() { var self = this; self.play = play; self.playTrailer = function (index) { ApiClient.getLocalTrailers(Dashboard.getCurrentUserId(), currentItem.Id).done(function (trailers) { MediaPlayer.play([trailers[index]]); }); }; self.playSpecial = function (index) { ApiClient.getSpecialFeatures(Dashboard.getCurrentUserId(), currentItem.Id).done(function (specials) { MediaPlayer.play([specials[index]]); }); }; } window.ItemDetailPage = new itemDetailPage(); })(jQuery, document, LibraryBrowser, window);