/// <summary>
        /// Starts searching for the cards.
        /// </summary>
        public void StartSearching()
        {
            if (txtSearchFor.Text.Trim().Length < 1)
            {
                MessageBox.Show("Enter what you want to search for.");
                return;
            }

            int maxResults;
            if (!int.TryParse(txtMaxResults.Text, out maxResults))
            {
                MessageBox.Show("# of Results can not be blank");
                return;
            }

            List<WebImageSearchItem> items = new List<WebImageSearchItem>();
            string[] values = txtSearchFor.Text.Split(new string[] { "||" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string s in values)
            {
                if (s.Trim().Length > 0)
                    items.Add(new WebImageSearchItem(s));
            }

            progressBar.Maximum = items.Count;
            progressBar.Step = 1;
            progressBar.Value = 0;

            if (items.Count > 0)
            {
                lblStatus.Text = "Downloading... Please Wait...";
            }
            else
            {
                lblStatus.Text = "Nothing to search for.";
                return;
            }

            LoadingPanelIsVisible = true;
            loadingSmallPictureBox.Visible = true;

            errors = new List<ImageRecievedCallbackItem>();

            //Get the images
            _WTIM_SearchFor = WebImage.ProcessImageBatchWithThreadPool(items, maxResults, wTIM_SearchForCallback, 5);
        }
        /// <summary>
        /// Download and save images for a group of cards by matching images with the answer text.         
        /// </summary>
        /// <param name="cards"></param>
        public void DownloadAndSaveImagesForCards(dsLanguageData.CardDataTable cards)
        {
            //If it is already working.
            if (_WTIM_GetForCards != null && _WTIM_GetForCards.IsWorking)
            {
                return;
            }

            List<WebImageSearchItem> searchItems = new List<WebImageSearchItem>();
            LanguageData dataLayer = new LanguageData();
            foreach (dsLanguageData.CardRow card in cards)
            {
                if (!dataLayer.CardHasPicture(card.ID))
                    searchItems.Add(new WebImageSearchItem(card.ID, card.Answer));
            }

            progressBar.Maximum = searchItems.Count;
            progressBar.Step = 1;
            progressBar.Value = 0;

            if (searchItems.Count > 0)
            {
                lblStatus.Text = "Downloading... Please Wait...";
            }
            else
            {
                lblStatus.Text = "All done. No need to get any pictures";

                LoadImagesForCards(cards);

                return;
            }

            LoadingPanelIsVisible = true;
            loadingSmallPictureBox.Visible = true;

            errors = new List<ImageRecievedCallbackItem>();

            _WTIM_GetForCards = WebImage.ProcessImageBatchWithThreadPool(searchItems, wTIM_GetForSelectedCardsCallback, 5);
        }