public void retrieveFieldsWonder()
        {
            CurrentResultDelegate currentResultDelegate = new CurrentResultDelegate(currentResultWonder);
            FinalResultDelegate   finalResultDelegate   = new FinalResultDelegate(finalResultWonder);

            PreferencesSettings settings = GlobalSettings.getSettings().curPreferencesSettings;

            TEAMSTATE teamState = TEAMSTATE.TS_NONNATIONAL;

            TeamGridViewModel newRow;
            DateTime          timerStart = DateTime.Now;
            double            counter    = 0;
            double            total      = 100.0 / (double)globalFuncs.allClubs.Count;

            foreach (DictionaryEntry entry in globalFuncs.allClubs)
            {
                progressBarValue = counter * total;
                ++counter;

                if (stopSearching)
                {
                    searching     = false;
                    stopSearching = false;
                    break;
                }

                Club club = (Club)entry.Value;
                // check empty name
                if (club.Name.Length == 0)
                {
                    continue;
                }

                int curTeam = 0;
                //for (curTeam = 0; curTeam < club.Teams.Count; ++curTeam)
                //{
                //    if (club.Teams[curTeam].Type == TeamTypeEnum.First)
                //        break;
                //    else if (club.Teams[curTeam].Type == TeamTypeEnum.Amateur)
                //        break;
                //    //else if (club.Teams[curTeam].Type == TeamTypeEnum.Empty)
                //    //  break;
                //}

                if (curTeam == club.Teams.Count)
                {
                    --curTeam;
                }

                teamState = TEAMSTATE.TS_NONNATIONAL;
                if (club.Country != null)
                {
                    if (globalFuncs.localization.regionsNative.Contains(club.Country.Name))
                    {
                        teamState = TEAMSTATE.TS_NATIONAL;
                    }
                }

                // check reputation
                if (club.Teams[curTeam].Reputation <= settings.wonderteamsMinRep)
                {
                    continue;
                }

                newRow           = new TeamGridViewModel();
                newRow.TeamState = teamState;
                addTeamToGrid(club, ref newRow, curTeam);
                //dataTable.Add(newRow);

                this.Dispatcher.BeginInvoke(
                    System.Windows.Threading.DispatcherPriority.Normal,
                    currentResultDelegate, newRow);
            }

            this.Dispatcher.BeginInvoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                finalResultDelegate);
        }
        public void retrieveFields()
        {
            CurrentResultDelegate currentResultDelegate = new CurrentResultDelegate(currentResult);
            FinalResultDelegate   finalResultDelegate   = new FinalResultDelegate(finalResult);

            PreferencesSettings settings = GlobalSettings.getSettings().curPreferencesSettings;

            List <string> name_substrings        = new List <string>();
            bool          empty_name             = globalFuncs.multiEntryTextBox(ref name_substrings, searchUI.name);
            List <string> nationality_substrings = new List <string>();
            bool          empty_nationality      = globalFuncs.multiEntryTextBox(ref nationality_substrings, searchUI.nation);
            List <string> stadium_substrings     = new List <string>();
            bool          empty_stadium          = globalFuncs.multiEntryTextBox(ref stadium_substrings, searchUI.stadium);

            TEAMSTATE teamState = TEAMSTATE.TS_NONNATIONAL;

            TeamGridViewModel newRow;
            DateTime          timerStart = DateTime.Now;
            Club   club            = null;
            string clubName        = "";
            string clubNationality = "";
            string clubStadium     = "";
            double counter         = 0;
            double total           = 100.0 / (double)globalFuncs.allClubs.Count;

            foreach (DictionaryEntry entry in globalFuncs.allClubs)
            {
                progressBarValue = counter * total;
                ++counter;
                if (stopSearching)
                {
                    searching     = false;
                    stopSearching = false;
                    break;
                }

                club = (Club)entry.Value;
                // check empty name
                if (club.Name.Length == 0 && club.Country != null)
                {
                    System.Diagnostics.Debug.WriteLine(club.Name);
                }
                if (club.Name.Length == 0 && club.Country != null)
                {
                    continue;
                }

                // check name
                if (!empty_name)
                {
                    clubName = club.Name.ToLower();
                    globalFuncs.specialCharactersReplacement(ref clubName);
                    int no_of_successes = 0;
                    foreach (string str in name_substrings)
                    {
                        if (clubName.Contains(str))
                        {
                            ++no_of_successes;
                        }
                    }

                    if (no_of_successes != name_substrings.Count)
                    {
                        continue;
                    }
                }

                teamState = TEAMSTATE.TS_NONNATIONAL;
                if (club.Country != null)
                {
                    if (globalFuncs.localization.regionsNative.Contains(club.Country.Name))
                    {
                        teamState = TEAMSTATE.TS_NATIONAL;
                    }
                }

                // check nationality
                if (!empty_nationality)
                {
                    if (club.Country != null)
                    {
                        if (teamState == TEAMSTATE.TS_NONNATIONAL)
                        {
                            clubNationality = club.Country.Name.ToLower();
                        }
                        else
                        {
                            clubNationality = club.Name.ToLower();
                        }

                        int no_of_successes = 0;
                        foreach (string str in nationality_substrings)
                        {
                            if (clubNationality.Contains(str))
                            {
                                ++no_of_successes;
                            }
                        }

                        if (no_of_successes != nationality_substrings.Count)
                        {
                            continue;
                        }

                        if (teamState == TEAMSTATE.TS_NATIONAL)
                        {
                            clubNationality = club.Country.Name.ToLower();
                        }
                    }
                    else
                    {
                        globalFuncs.logging.update("Error: Not added " + club.Name + ". Reason: Country null");
                    }
                }

                // check type
                if (searchUI.teamtypeIndex > 0)
                {
                    if (searchUI.teamtypeIndex == 1 && teamState == TEAMSTATE.TS_NONNATIONAL)
                    {
                        continue;
                    }
                    else if (searchUI.teamtypeIndex == 2 && teamState == TEAMSTATE.TS_NATIONAL)
                    {
                        continue;
                    }
                }

                int curTeam = 0;
                //for (curTeam = 0; curTeam < club.Teams.Count; ++curTeam)
                //{
                //    if (club.Teams[curTeam].Type == TeamTypeEnum.First)
                //        break;
                //    else if (club.Teams[curTeam].Type == TeamTypeEnum.Amateur)
                //        break;
                //    //else if (club.Teams[curTeam].Type == TeamTypeEnum.Empty)
                //    //  break;
                //}

                if (curTeam == club.Teams.Count)
                {
                    --curTeam;
                }
                if (curTeam < 0)
                {
                    continue;
                }

                // check reputation
                if (searchUI.reputationIndex > 0)
                {
                    if (searchUI.reputationIndex == 1 && club.Teams[curTeam].Reputation < 8000)
                    {
                        continue;
                    }
                    else if (searchUI.reputationIndex == 2 && (!(club.Teams[curTeam].Reputation > 5000 && club.Teams[curTeam].Reputation <= 8000)))
                    {
                        continue;
                    }
                    else if (searchUI.reputationIndex == 3 && (!(club.Teams[curTeam].Reputation > 3000 && club.Teams[curTeam].Reputation <= 5000)))
                    {
                        continue;
                    }
                    else if (searchUI.reputationIndex == 4 && (!(club.Teams[curTeam].Reputation > 0 && club.Teams[curTeam].Reputation <= 3000)))
                    {
                        continue;
                    }
                }

                // check region
                if (searchUI.regionIndex > 0 && club.Country != null)
                {
                    if (teamState == TEAMSTATE.TS_NONNATIONAL)
                    {
                        if (!searchUI.regionItem.Contains(club.Country.Continent.Name))
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (!searchUI.regionItem.Contains(club.Country.Name))
                        {
                            continue;
                        }
                    }
                }

                // check stadium
                if (!empty_stadium)
                {
                    if (club.Teams[curTeam].Stadium != null)
                    {
                        clubStadium = club.Teams[curTeam].Stadium.Name.ToLower();
                        globalFuncs.specialCharactersReplacement(ref clubStadium);
                        int no_of_successes = 0;
                        foreach (string str in stadium_substrings)
                        {
                            if (clubStadium.Contains(str))
                            {
                                ++no_of_successes;
                            }
                        }

                        if (no_of_successes != stadium_substrings.Count)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        globalFuncs.logging.update("Error: No stadium found for " + club.Name);
                        continue;
                    }
                }

                // check transfer budget
                if (searchUI.transferBudgetMin > 0)
                {
                    if (club.Finances.SeasonTransferBudget < searchUI.transferBudgetMin ||
                        club.Finances.SeasonTransferBudget > searchUI.transferBudgetMax)
                    {
                        continue;
                    }
                }
                else
                {
                    if (club.Finances.SeasonTransferBudget > searchUI.transferBudgetMax)
                    {
                        continue;
                    }
                }

                if (searchUI.transferBudgetMin > 0)
                {
                    if (club.Finances.WageBudget < searchUI.wageBudgetMin ||
                        club.Finances.WageBudget > searchUI.wageBudgetMax)
                    {
                        continue;
                    }
                }
                else
                {
                    if (club.Finances.WageBudget < searchUI.wageBudgetMin)
                    {
                        continue;
                    }
                }

                newRow           = new TeamGridViewModel();
                newRow.TeamState = teamState;
                addTeamToGrid(club, ref newRow, curTeam);
                //dataTable.Add(newRow);

                this.Dispatcher.BeginInvoke(
                    System.Windows.Threading.DispatcherPriority.Normal,
                    currentResultDelegate, newRow);
            }

            this.Dispatcher.BeginInvoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                finalResultDelegate);
        }