internal void ChangeSelectedChampionSkins(int selectedChampionId)
        {
            Skins = null;
            Skins = new List<int>();
            champions champion = champions.GetChampion(selectedChampionId);
            if (champion == null)
                return;

            SkinSelectListView.Items.Clear();
            AbilityListView.Items.Clear();

            //Render default skin
            var defaultSkinItem = new ListViewItem();
            var skinImage = new Image();
            if (File.Exists(Path.Combine(Client.ExecutingDirectory, "Assets", "champions", champion.portraitPath)))
            {
                string UriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", champion.portraitPath);
                skinImage.Source = Client.GetImage(UriSource);
                skinImage.Width = 191;
                skinImage.Stretch = Stretch.UniformToFill;
                defaultSkinItem.Tag = "0:" + champion.id; //Hack
                defaultSkinItem.Content = skinImage;
                SkinSelectListView.Items.Add(defaultSkinItem);
                //Render abilities
                List<championAbilities> Abilities = championAbilities.GetAbilities(selectedChampionId);
                var abilities = new List<ChampionAbility>();
                foreach (championAbilities ability in Abilities)
                {
                    var championAbility = new ChampionAbility();
                    UriSource = Path.Combine(Client.ExecutingDirectory, "Assets",
                        ability.iconPath.ToLower().Contains("passive") ? "passive" : "spell", ability.iconPath);
                    championAbility.AbilityImage.Source = Client.GetImage(UriSource);
                    if (!string.IsNullOrEmpty(ability.hotkey))
                        championAbility.AbilityHotKey.Content = ability.hotkey;

                    switch (ability.hotkey)
                    {
                        case "":
                            championAbility.Order = 0;
                            break;
                        case "Q":
                            championAbility.Order = 1;
                            break;
                        case "W":
                            championAbility.Order = 2;
                            break;
                        case "E":
                            championAbility.Order = 3;
                            break;
                        case "R":
                            championAbility.Order = 4;
                            break;
                    }
                    championAbility.AbilityName.Content = ability.name;
                    if ((DateTime.Now.Month == 4) && (DateTime.Now.Day == 1))
                        championAbility.AbilityDescription.Text = ability.description.Replace("bard", "tard").Replace("Bard", "Tard");
                    else
                        championAbility.AbilityDescription.Text = ability.description;
                    championAbility.Width = 375;
                    championAbility.Height = 75;
                    abilities.Add(championAbility);
                }
                abilities.Sort();
                foreach (ChampionAbility a in abilities)
                    AbilityListView.Items.Add(a);

                //Render champions
                foreach (ChampionSkinDTO skin in from champ in ChampList
                                                 where champ.ChampionId == selectedChampionId
                                                 from skin in champ.ChampionSkins
                                                 where skin.Owned
                                                 select skin)
                {
                    ListViewItem skinItem = new ListViewItem();
                    skinImage = new Image();
                    UriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions",
                        championSkins.GetSkin(skin.SkinId).portraitPath);
                    skinImage.Source = Client.GetImage(UriSource);
                    skinImage.Width = 191;
                    skinImage.Stretch = Stretch.UniformToFill;
                    skinItem.Tag = skin.SkinId;
                    skinItem.Content = skinImage;
                    SkinSelectListView.Items.Add(skinItem);
                    Skins.Add(skin.SkinId);
                }

                if (Skins.Count > 0)
                {
                    int index = SkinSelectListView.Items.IndexOf((ListViewItem)defaultSkinItem);
                    ListViewItem randomSkinItem = new ListViewItem();
                    Image randomSkinImage = new Image();
                    var src = "/LegendaryClient;component/NONE.png";
                    randomSkinImage.Source = Client.GetImage(src);
                    randomSkinImage.Width = 191;
                    randomSkinImage.Stretch = Stretch.UniformToFill;
                    randomSkinItem.Tag = "random";
                    randomSkinItem.Content = randomSkinImage;
                    SkinSelectListView.Items.Insert(index, randomSkinItem);
                }
            }
            else
                Client.Log("File not found.");
        }
        /// <summary>
        /// Render the post selection grid after locked in
        /// </summary>
        /// <param name="selection">Details of champion you want to render</param>
        internal void RenderLockInGrid(PlayerChampionSelectionDTO selection)
        {
            ChampionSelectListView.Visibility = Visibility.Hidden;
            AfterChampionSelectGrid.Visibility = Visibility.Visible;

            LockInButton.Content = "Locked In";

            champions Champion = champions.GetChampion(selection.ChampionId);

            SkinSelectListView.Items.Clear();
            AbilityListView.Items.Clear();

            //Render default skin
            ListViewItem item = new ListViewItem();
            Image skinImage = new Image();
            string uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", Champion.portraitPath);
            skinImage.Source = Client.GetImage(uriSource);
            skinImage.Width = 191;
            skinImage.Stretch = Stretch.UniformToFill;
            item.Tag = "0:" + Champion.id; //Hack
            item.Content = skinImage;
            SkinSelectListView.Items.Add(item);

            //Render abilities
            List<championAbilities> Abilities = championAbilities.GetAbilities(selection.ChampionId);
            foreach (championAbilities ability in Abilities)
            {
                ChampionAbility championAbility = new ChampionAbility();
                uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "abilities", ability.iconPath);
                championAbility.AbilityImage.Source = Client.GetImage(uriSource);
                championAbility.AbilityHotKey.Content = ability.hotkey;
                championAbility.AbilityName.Content = ability.name;
                championAbility.AbilityDescription.Text = ability.description;
                championAbility.Width = 375;
                championAbility.Height = 75;
                AbilityListView.Items.Add(championAbility);
            }

            //Render champions
            foreach (ChampionDTO champ in ChampList)
            {
                if (champ.ChampionId == selection.ChampionId)
                {
                    foreach (ChampionSkinDTO skin in champ.ChampionSkins)
                    {
                        if (skin.Owned)
                        {
                            item = new ListViewItem();
                            skinImage = new Image();
                            uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", championSkins.GetSkin(skin.SkinId).portraitPath);
                            skinImage.Source = Client.GetImage(uriSource);
                            skinImage.Width = 191;
                            skinImage.Stretch = Stretch.UniformToFill;
                            item.Tag = skin.SkinId;
                            item.Content = skinImage;
                            SkinSelectListView.Items.Add(item);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Render the post selection grid after locked in
        /// </summary>
        /// <param name="selection">Details of champion you want to render</param>
        internal void RenderLockInGrid(PlayerChampionSelectionDTO selection)
        {
            champions Champion = champions.GetChampion(selection.ChampionId);

            if (Champion == null)
                return;

            ChampionSelectListView.Visibility = Visibility.Hidden;
            AfterChampionSelectGrid.Visibility = Visibility.Visible;

            LockInButton.Content = "Locked In";

            SkinSelectListView.Items.Clear();
            AbilityListView.Items.Clear();

            //Render default skin
            ListViewItem item = new ListViewItem();
            Image skinImage = new Image();
            string uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", Champion.portraitPath);
            skinImage.Source = Client.GetImage(uriSource);
            skinImage.Width = 191;
            skinImage.Stretch = Stretch.UniformToFill;
            item.Tag = "0:" + Champion.id; //Hack
            item.Content = skinImage;
            SkinSelectListView.Items.Add(item);

            //Render abilities
            foreach (Spell ability in Champion.Spells)
            {
                ChampionAbility championAbility = new ChampionAbility();
                championAbility.DataContext = ability;
                uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "spell", ability.Image);
                championAbility.AbilityImage.Source = Client.GetImage(uriSource);
                championAbility.Width = 375;
                championAbility.Height = 75;
                AbilityListView.Items.Add(championAbility);
            }

            //Render champions
            foreach (ChampionDTO champ in ChampList)
            {
                if (champ.ChampionId == selection.ChampionId)
                {
                    foreach (ChampionSkinDTO skin in champ.ChampionSkins)
                    {
                        if (skin.Owned)
                        {
                            item = new ListViewItem();
                            skinImage = new Image();
                            uriSource = Path.Combine(Client.ExecutingDirectory, "Assets", "champions", championSkins.GetSkin(skin.SkinId).portraitPath);
                            skinImage.Source = Client.GetImage(uriSource);
                            skinImage.Width = 191;
                            skinImage.Stretch = Stretch.UniformToFill;
                            item.Tag = skin.SkinId;
                            item.Content = skinImage;
                            SkinSelectListView.Items.Add(item);
                        }
                    }
                }
            }
        }