private void SearchCompletedHandler(System.Net.DownloadStringCompletedEventArgs e)
        {
            SearchGroupTabs = null;
            //TODO examine e.Error
            if (e.Error == null)
            {
                var groupTabs = _tabSearcher.Entries.Where(FilterTab).
                                Select(entry => new TabEntity
                {
                    SearchId  = entry.Id,
                    SearchUrl = entry.Url,
                    Name      = entry.Name,
                    Group     = entry.Artist,
                    Rating    = entry.Rating,
                    Type      = entry.Type,
                    ImageUrl  = Database.GetTabTypeByName(entry.Type).ImageUrl,
                    Votes     = entry.Votes,
                    Version   = entry.Version
                });



                if (_sortOrder == ResultsSortOrder.Popularity)
                {
                    var artistName = CurrentSearchText.TransLiterate();
                    var grouped    = groupTabs.Where(t => t.Group.TransLiterate() == artistName).OrderByDescending(t => t.Votes);
                    IsNothingPopularFound = !grouped.Any();
                    SearchPopularTabs     = new ObservableCollection <TabEntity>(grouped.Take(100));
                    Deployment.Current.Dispatcher.BeginInvoke(() => { IsSearching = false; });
                    //Clear the Search Area (for the Search Page)
                    this.ClearSearchArea();
                }
                else
                {
                    IsNothingFound  = !groupTabs.Any();
                    Pages           = Enumerable.Range(1, _tabSearcher.Summary.PageCount).Select(p => p.ToString());
                    SearchGroupTabs = new TabsByName(new ObservableCollection <TabEntity>(groupTabs), Database);
                    Deployment.Current.Dispatcher.BeginInvoke(
                        () =>
                    {
                        if (Pages.Any())
                        {
                            SelectedPage = Pages.ElementAt(CurrentPageIndex - 1);
                        }
                        RaisePropertyChanged("SelectedPage");
                        AssignHeaderPagingUI(_tabSearcher.Summary.PageCount);
                        IsSearching = false;
                    });
                }
            }
            else
            {
                IsSearching = false;
                ClearSearchArea();
                Dialog.Show(AppResources.Search_Sorry, AppResources.Search_ServerUnavailable);
            }
        }
        private void DoSelectPage(string index)
        {
            if (index == null)
            {
                return;
            }

            int pageNumber;

            if (Int32.TryParse(index, out pageNumber))
            {
                SearchInfoTextBlock = String.Format(AppResources.Search_PageFor, index, CurrentTypedText);
                CurrentPageIndex    = pageNumber;

                string bandName = string.Empty,
                       songName = string.Empty;

                switch (SearchMethod)
                {
                case SearchType.ByBand:
                    bandName = CurrentSearchText;
                    break;

                case SearchType.BySong:
                    songName = CurrentSearchText;
                    break;

                case SearchType.BandSong:
                    if (CurrentSearchText.Contains(","))
                    {
                        string[] words = CurrentSearchText.Split(',');
                        bandName = words[0].Trim();
                        songName = words[1].Trim();
                    }
                    else if (CurrentSearchText.Contains(" "))
                    {
                        string[] words = CurrentSearchText.Split(' ');
                        bandName = words[0].Trim();
                        for (int i = 1; i < words.Length; i++)
                        {
                            songName += words[i] + " ";
                        }
                    }
                    else
                    {
                        bandName = CurrentSearchText;
                    }
                    break;
                }
                RunSearch(bandName, songName, ResultsSortOrder.Alphabetical);
            }
        }