void btnViewSeries_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                AnimeRatingVM animeRanking = this.DataContext as AnimeRatingVM;
                if (animeRanking == null)
                {
                    return;
                }

                if (animeRanking.AnimeSeries == null)
                {
                    MessageBox.Show("This anime is not in your collection");
                    return;
                }

                MainWindow mainwdw = (MainWindow)Window.GetWindow(this);

                if (mainwdw == null)
                {
                    return;
                }
                mainwdw.ShowPinnedSeries(animeRanking.AnimeSeries);
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
        void dgRankings_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            DataGrid _DataGrid = sender as DataGrid;

            AnimeRatingVM animeRanking = _DataGrid.SelectedItem as AnimeRatingVM;

            if (animeRanking == null)
            {
                ShowAnimeDetails = false;
                return;
            }

            ShowDetails(animeRanking);
            ShowAnimeDetails = true;
        }
        void RankingsControl_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            try
            {
                AnimeRatingVM animeRanking = this.DataContext as AnimeRatingVM;
                if (animeRanking == null)
                {
                    return;
                }

                AnimeHasSeries = animeRanking.AnimeSeries != null;
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
        void workerFiles_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                RankingRefreshOptions opt = e.Argument as RankingRefreshOptions;


                List <JMMServerBinary.Contract_AnimeRating> rawRatings = JMMServerVM.Instance.clientBinaryHTTP.GetAnimeRatings(
                    (int)opt.CollectionState, (int)opt.WatchedState, (int)opt.VotedState, JMMServerVM.Instance.CurrentUser.JMMUserID.Value);

                List <AnimeRatingVM> ratings = new List <AnimeRatingVM>();
                foreach (JMMServerBinary.Contract_AnimeRating contract in rawRatings)
                {
                    AnimeRatingVM rating = new AnimeRatingVM(contract);
                    ratings.Add(rating);
                }

                e.Result = ratings;

                /*AllAnime = MainListHelperVM.Instance.AllAnimeDetailedDictionary.Values.ToList();
                 *
                 * List<AnimeRanking> rankings = new List<AnimeRanking>();
                 *
                 * int i = 0;
                 * foreach (AniDB_AnimeDetailedVM anime in AllAnime)
                 * {
                 *      i++;
                 *      AnimeRanking ranking = new AnimeRanking()
                 *      {
                 *              AnimeName = anime.AniDB_Anime.MainTitle,
                 *              Ranking = 1,
                 *              Rating = String.Format("{0:0.00}", anime.AniDB_Anime.AniDBRating),
                 *              UserRating = anime.UserRating,
                 *              Year = anime.AniDB_Anime.BeginYear,
                 *              AnimeDetailed = anime
                 *      };
                 *      AllRankings.Add(ranking);
                 *      //if (i == 50) break;
                 * }*/
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
        void cRating_OnRatingValueChangedEvent(RatingValueEventArgs ev)
        {
            AnimeRatingVM animeRating = this.DataContext as AnimeRatingVM;

            if (animeRating == null)
            {
                return;
            }

            AnimeSeriesVM ser = animeRating.AnimeSeries;

            if (ser == null)
            {
                return;
            }

            try
            {
                decimal rating = (decimal)ev.RatingValue;

                int voteType = 1;
                if (ser.AniDB_Anime.FinishedAiring)
                {
                    voteType = 2;
                }

                animeRating.UserRating = rating;
                animeRating.AnimeDetailed.UserRating = rating;

                JMMServerVM.Instance.VoteAnime(ser.AniDB_ID, rating, voteType);

                // refresh the data
                MainListHelperVM.Instance.UpdateHeirarchy(ser);
            }
            catch (Exception ex)
            {
                Utils.ShowErrorMessage(ex);
            }
        }
 private void ShowDetails(AnimeRatingVM ranking)
 {
     this.DataContext = ranking;
 }