diff --git a/dashboard-ui/episodes.html b/dashboard-ui/episodes.html
new file mode 100644
index 000000000..3591b299d
--- /dev/null
+++ b/dashboard-ui/episodes.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dashboard-ui/favoritetv.html b/dashboard-ui/favoritetv.html
deleted file mode 100644
index 410dd03d7..000000000
--- a/dashboard-ui/favoritetv.html
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
diff --git a/dashboard-ui/itembynamedetails.html b/dashboard-ui/itembynamedetails.html
index 2b8b17a48..2eb7941cc 100644
--- a/dashboard-ui/itembynamedetails.html
+++ b/dashboard-ui/itembynamedetails.html
@@ -43,10 +43,10 @@
diff --git a/dashboard-ui/scripts/episodes.js b/dashboard-ui/scripts/episodes.js
new file mode 100644
index 000000000..87f758442
--- /dev/null
+++ b/dashboard-ui/scripts/episodes.js
@@ -0,0 +1,237 @@
+(function ($, document) {
+
+ var view = "Poster";
+
+ // The base query options
+ var query = {
+
+ SortBy: "SeriesSortName,SortName",
+ SortOrder: "Ascending",
+ IncludeItemTypes: "Episode",
+ Recursive: true,
+ Fields: "DateCreated,SeriesInfo",
+ StartIndex: 0
+ };
+
+ function reloadItems(page) {
+
+ Dashboard.showLoadingMsg();
+
+ ApiClient.getItems(Dashboard.getCurrentUserId(), query).done(function (result) {
+
+ // Scroll back up so they can see the results from the beginning
+ $(document).scrollTop(0);
+
+ var html = '';
+
+ $('.listTopPaging', page).html(LibraryBrowser.getPagingHtml(query, result.TotalRecordCount, true)).trigger('create');
+
+ if (view == "Poster") {
+ html += LibraryBrowser.getPosterDetailViewHtml({
+ items: result.Items,
+ context: "tv",
+ shape: "backdrop"
+ });
+ $('.itemsContainer', page).removeClass('timelineItemsContainer');
+ }
+
+ html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
+
+ $('#items', page).html(html).trigger('create');
+
+ $('.selectPage', page).on('change', function () {
+ query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
+ reloadItems(page);
+ });
+
+ $('.btnNextPage', page).on('click', function () {
+ query.StartIndex += query.Limit;
+ reloadItems(page);
+ });
+
+ $('.btnPreviousPage', page).on('click', function () {
+ query.StartIndex -= query.Limit;
+ reloadItems(page);
+ });
+
+ $('.selectPageSize', page).on('change', function () {
+ query.Limit = parseInt(this.value);
+ query.StartIndex = 0;
+ reloadItems(page);
+ });
+
+ Dashboard.hideLoadingMsg();
+ });
+ }
+
+ $(document).on('pageinit', "#episodesPage", function () {
+
+ var page = this;
+
+ $('.radioSortBy', this).on('click', function () {
+ query.StartIndex = 0;
+ query.SortBy = this.getAttribute('data-sortby');
+ reloadItems(page);
+ });
+
+ $('.radioSortOrder', this).on('click', function () {
+ query.StartIndex = 0;
+ query.SortOrder = this.getAttribute('data-sortorder');
+ reloadItems(page);
+ });
+
+ $('.chkStandardFilter', this).on('change', function () {
+
+ var filterName = this.getAttribute('data-filter');
+ var filters = query.Filters || "";
+
+ filters = (',' + filters).replace(',' + filterName, '').substring(1);
+
+ if (this.checked) {
+ filters = filters ? (filters + ',' + filterName) : filterName;
+ }
+
+ query.StartIndex = 0;
+ query.Filters = filters;
+
+ reloadItems(page);
+ });
+
+
+ $('.chkVideoTypeFilter', this).on('change', function () {
+
+ var filterName = this.getAttribute('data-filter');
+ var filters = query.VideoTypes || "";
+
+ filters = (',' + filters).replace(',' + filterName, '').substring(1);
+
+ if (this.checked) {
+ filters = filters ? (filters + ',' + filterName) : filterName;
+ }
+
+ query.StartIndex = 0;
+ query.VideoTypes = filters;
+
+ reloadItems(page);
+ });
+
+ $('#chk3D', this).on('change', function () {
+
+ query.StartIndex = 0;
+ query.Is3D = this.checked ? true : null;
+
+ reloadItems(page);
+ });
+
+ $('#chkSubtitle', this).on('change', function () {
+
+ query.StartIndex = 0;
+ query.HasSubtitles = this.checked ? true : null;
+
+ reloadItems(page);
+ });
+
+ $('#chkTrailer', this).on('change', function () {
+
+ query.StartIndex = 0;
+ query.HasTrailer = this.checked ? true : null;
+
+ reloadItems(page);
+ });
+
+ $('#chkThemeSong', this).on('change', function () {
+
+ query.StartIndex = 0;
+ query.HasThemeSong = this.checked ? true : null;
+
+ reloadItems(page);
+ });
+
+ $('#chkThemeVideo', this).on('change', function () {
+
+ query.StartIndex = 0;
+ query.HasThemeVideo = this.checked ? true : null;
+
+ reloadItems(page);
+ });
+
+ $('#chkSpecialFeature', this).on('change', function () {
+
+ query.ParentIndexNumber = this.checked ? 0 : null;
+
+ reloadItems(page);
+ });
+
+ $('.alphabetPicker', this).on('alphaselect', function (e, character) {
+
+ query.NameStartsWithOrGreater = character;
+ query.StartIndex = 0;
+
+ reloadItems(page);
+
+ }).on('alphaclear', function (e) {
+
+ query.NameStartsWithOrGreater = '';
+
+ reloadItems(page);
+ });
+
+ }).on('pagebeforeshow', "#episodesPage", function () {
+
+ var limit = LibraryBrowser.getDefaultPageSize();
+
+ // If the default page size has changed, the start index will have to be reset
+ if (limit != query.Limit) {
+ query.Limit = limit;
+ query.StartIndex = 0;
+ }
+
+ reloadItems(this);
+
+ }).on('pageshow', "#episodesPage", function () {
+
+ // Reset form values using the last used query
+ $('.radioSortBy', this).each(function () {
+
+ this.checked = query.SortBy == this.getAttribute('data-sortby');
+
+ }).checkboxradio('refresh');
+
+ $('.radioSortOrder', this).each(function () {
+
+ this.checked = query.SortOrder == this.getAttribute('data-sortorder');
+
+ }).checkboxradio('refresh');
+
+ $('.chkStandardFilter', this).each(function () {
+
+ var filters = "," + (query.Filters || "");
+ var filterName = this.getAttribute('data-filter');
+
+ this.checked = filters.indexOf(',' + filterName) != -1;
+
+ }).checkboxradio('refresh');
+
+ $('.chkVideoTypeFilter', this).each(function () {
+
+ var filters = "," + (query.VideoTypes || "");
+ var filterName = this.getAttribute('data-filter');
+
+ this.checked = filters.indexOf(',' + filterName) != -1;
+
+ }).checkboxradio('refresh');
+
+ $('#chk3D', this).checked(query.Is3D == true).checkboxradio('refresh');
+
+ $('#chkSubtitle', this).checked(query.HasSubtitles == true).checkboxradio('refresh');
+ $('#chkTrailer', this).checked(query.HasTrailer == true).checkboxradio('refresh');
+ $('#chkSpecialFeature', this).checked(query.HasSpecialFeature == true).checkboxradio('refresh');
+ $('#chkThemeSong', this).checked(query.HasThemeSong == true).checkboxradio('refresh');
+ $('#chkThemeVideo', this).checked(query.HasThemeVideo == true).checkboxradio('refresh');
+ $('#chkSpecialFeature', this).checked(query.ParentIndexNumber == 0).checkboxradio('refresh');
+
+ $('.alphabetPicker', this).alphaValue(query.NameStartsWithOrGreater);
+
+ });
+
+})(jQuery, document);
\ No newline at end of file
diff --git a/dashboard-ui/scripts/favoritetv.js b/dashboard-ui/scripts/favoritetv.js
deleted file mode 100644
index c2dc1912e..000000000
--- a/dashboard-ui/scripts/favoritetv.js
+++ /dev/null
@@ -1,140 +0,0 @@
-(function ($, document) {
-
- var shape = "poster";
-
- // The base query options
- var query = {
-
- SortBy: "SortName",
- SortOrder: "Ascending",
- IncludeItemTypes: "Series",
- Recursive: true,
- Fields: "DisplayMediaType,SeriesInfo,ItemCounts,DateCreated,UserData",
- StartIndex: 0,
- Filters: "IsFavorite"
- };
-
- function reloadItems(page) {
-
- Dashboard.showLoadingMsg();
-
- ApiClient.getItems(Dashboard.getCurrentUserId(), query).done(function (result) {
-
- // Scroll back up so they can see the results from the beginning
- $(document).scrollTop(0);
-
- var html = '';
-
- $('.listTopPaging', page).html(LibraryBrowser.getPagingHtml(query, result.TotalRecordCount, true)).trigger('create');
-
- html += LibraryBrowser.getPosterDetailViewHtml({
- items: result.Items,
- context: "tv",
- shape: shape
- });
-
- html += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount);
-
- $('#items', page).html(html).trigger('create');
-
- $('.selectPage', page).on('change', function () {
- query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
- reloadItems(page);
- });
-
- $('.btnNextPage', page).on('click', function () {
- query.StartIndex += query.Limit;
- reloadItems(page);
- });
-
- $('.btnPreviousPage', page).on('click', function () {
- query.StartIndex -= query.Limit;
- reloadItems(page);
- });
-
- $('.selectPageSize', page).on('change', function () {
- query.Limit = parseInt(this.value);
- query.StartIndex = 0;
- reloadItems(page);
- });
-
- Dashboard.hideLoadingMsg();
- });
- }
-
- $(document).on('pageinit', "#favoriteTvPage", function () {
-
- var page = this;
-
- $('.btnFavoriteType', page).on('click', function () {
-
- $('.favoriteTypes .ui-btn-active', page).removeClass('ui-btn-active');
- $(this).addClass('ui-btn-active');
-
- });
-
- $('.btnFavoriteSeries', page).on('click', function () {
-
- shape = "poster";
- query.IncludeItemTypes = "Series";
- reloadItems(page);
- });
-
- $('.btnFavoriteSeasons', page).on('click', function () {
-
- shape = "poster";
- query.IncludeItemTypes = "Season";
- reloadItems(page);
- });
-
- $('.btnFavoriteEpisodes', page).on('click', function () {
-
- shape = "backdrop";
- query.IncludeItemTypes = "Episode";
- reloadItems(page);
- });
-
- $('.btnFavoriteSeries', page).on('click', function () {
-
- query.IncludeItemTypes = "Series";
- reloadItems(page);
- });
-
- $('#chkIncludeLikes', page).on('change', function () {
-
- query.Filters = this.checked ? "IsFavoriteOrLikes" : "IsFavorite";
- reloadItems(page);
- });
-
- $('.alphabetPicker', page).on('alphaselect', function (e, character) {
-
- query.NameStartsWithOrGreater = character;
- query.StartIndex = 0;
-
- reloadItems(page);
-
- }).on('alphaclear', function (e) {
-
- query.NameStartsWithOrGreater = '';
-
- reloadItems(page);
- });
-
- }).on('pagebeforeshow', "#favoriteTvPage", function () {
-
- var limit = LibraryBrowser.getDefaultPageSize();
-
- // If the default page size has changed, the start index will have to be reset
- if (limit != query.Limit) {
- query.Limit = limit;
- query.StartIndex = 0;
- }
-
- reloadItems(this);
-
- }).on('pageshow', "#favoriteTvPage", function () {
-
- $('.alphabetPicker', this).alphaValue(query.NameStartsWith);
- });
-
-})(jQuery, document);
\ No newline at end of file
diff --git a/dashboard-ui/tvgenres.html b/dashboard-ui/tvgenres.html
index e3626c9f3..37075cc6d 100644
--- a/dashboard-ui/tvgenres.html
+++ b/dashboard-ui/tvgenres.html
@@ -9,10 +9,10 @@
Suggested
Next up
Shows
+
Episodes
Genres
Actors
Networks
-
Favorites