/// <summary>
        /// 
        /// </summary>
        /// <param name="strResponse"></param>
        /// <param name="Edition"></param>
        /// <returns></returns>
        private static MTG.MTGCard ParseCardData(String strResponse, String Edition)
        {
            MTG.MTGCard Card = new MTG.MTGCard();
            Int32 iStart = 0;
            Int32 iNext = 0;


            // here are a list of the lines to parse out to get the proper data for the individual card's web pages...
            String strFindPic = "<img ID=\"_imgCardImage\"  src=\"";
            String strFindID = "<form name=\"form1\" method=\"post\" action=\"CardDetails.aspx?id="; //<form name="form1" method="post" action="CardDetails.aspx?id=2084"
            String strFindName = "<b><span id=\"_lblCardTitle\">";              //<span id="_lblCardTitle">Abomination<
            String strFindRarity = "<span id=\"_lblSetRarity\">";               //<span id="_lblSetRarity"><i>Fourth Edition</i> uncommon<                        
            String strFindCost = "<span id=\"_lblCost\">";                      //<span id="_lblCost"><img src='http://resources.wizards.com/magic/images/symbols/Symbol_3_mana.gif' alt='3 Mana' border='0'/><img src='http://resources.wizards.com/magic/images/symbols/black_mana.gif' width='12' height='12' alt='Black Mana' border='0'/><img src='http://resources.wizards.com/magic/images/symbols/black_mana.gif' width='12' height='12' alt='Black Mana' border='0'/></span>
            String strFindType = "<span id=\"_lblCardType\">";                  //<span id="_lblCardType">Creature - Horror</span>
            String strFindPowerToughness = "<span id=\"_lblPowerToughness\">";  //<span id="_lblPowerToughness">2/6</span>
            String strFindText = "<span id=\"_lblRulesText\">";                 //<span id="_lblRulesText">...</span>
            String strFindFlavorText = "<span id=\"_lblFlavorText\">";         //<span id="_lblFlavorText"></span>
            String strFindCardNumber = "<span id=\"_lblCardNumber\">";         //<span id="_lblCardNumber">311</span>


            try
            {                   
                // Parse the information about the card on this web page...
                
                // ID
                iStart = strResponse.IndexOf(strFindID, iStart) + strFindID.Length;
                iNext = strResponse.IndexOf("\"", iStart) - iStart;
                Card.ID = Convert.ToInt32(strResponse.Substring(iStart, iNext));

                // Picture link
                //<img ID="_imgCardImage"  src="http://resources.wizards.com/Magic/Cards/4E/en-us/Card2084.jpg" alt="Magic: The Gathering" Height="285" Width="200" Border="0"/></a>
                iStart = strResponse.IndexOf(strFindPic, iStart) + strFindPic.Length;
                iNext = strResponse.IndexOf("\"", iStart) - iStart;
                Card.PicLocation = strResponse.Substring(iStart, iNext);                

                // Name
                iStart = strResponse.IndexOf(strFindName, iStart) + strFindName.Length;
                iNext = strResponse.IndexOf("<", iStart) - iStart;
                Card.Name = strResponse.Substring(iStart, iNext);

                // Rarity
                iStart = (strResponse.IndexOf(strFindRarity, iStart) + strFindRarity.Length);
                iStart = (strResponse.IndexOf("</i> ", iStart) + 5);
                iNext = strResponse.IndexOf("<", iStart) - iStart;
                Card.Rarity = strResponse.Substring(iStart, iNext);

                // Printings
                // mmb - do we care about this?

                // Cost
                iStart = (strResponse.IndexOf(strFindCost, iStart) + strFindCost.Length);
                iNext = strResponse.IndexOf("</span>", iStart) - iStart;
                Card.Cost = ParseCost(strResponse.Substring(iStart, iNext));

                // Type
                iStart = (strResponse.IndexOf(strFindType, iStart) + strFindType.Length);
                iNext = strResponse.IndexOf("<", iStart) - iStart;
                Card.Type = strResponse.Substring(iStart, iNext);

                // Power and Toughness
                iStart = (strResponse.IndexOf(strFindPowerToughness, iStart) + strFindPowerToughness.Length);
                iNext = strResponse.IndexOf("<", iStart) - iStart;
                String temp = strResponse.Substring(iStart, iNext);
                if (temp.IndexOf("/") >= 0)
                {
                    Card.Power = temp.Substring(0, temp.IndexOf("/"));
                    Card.Toughness = temp.Substring(temp.IndexOf("/") + 1);                    
                }

                // Text
                iStart = (strResponse.IndexOf(strFindText, iStart) + strFindText.Length);
                iNext = strResponse.IndexOf("<", iStart) - iStart;
                Card.Text = strResponse.Substring(iStart, iNext);

                // Flavor Text
                iStart = (strResponse.IndexOf(strFindFlavorText, iStart) + strFindFlavorText.Length);
                iNext = strResponse.IndexOf("<", iStart) - iStart;
                Card.Flavor = strResponse.Substring(iStart, iNext);

                // Card Number
                iStart = (strResponse.IndexOf(strFindCardNumber, iStart) + strFindCardNumber.Length);
                iNext = strResponse.IndexOf("<", iStart) - iStart;
                Card.Number = strResponse.Substring(iStart, iNext);

                // now download the picture of the card
                Card.Pic = DownloadPicture(Card.PicLocation);
            }
            catch (Exception ex)
            {
                String Error = String.Format("ERROR: ", ex.Message);
                //Log(String.Format("  **ERROR: ", ex.Message));
                //MessageBox.Show(String.Format("  **ERROR[ParseData]: {0}", ex.Message));
            }

            return Card;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="strResponse"></param>
        /// <param name="Edition"></param>
        /// <returns></returns>
        private static MTG.MTGCard ParseCardData(String strResponse, String Edition)
        {
            MTG.MTGCard Card   = new MTG.MTGCard();
            Int32       iStart = 0;
            Int32       iNext  = 0;


            // here are a list of the lines to parse out to get the proper data for the individual card's web pages...
            String strFindPic            = "<img ID=\"_imgCardImage\"  src=\"";
            String strFindID             = "<form name=\"form1\" method=\"post\" action=\"CardDetails.aspx?id="; //<form name="form1" method="post" action="CardDetails.aspx?id=2084"
            String strFindName           = "<b><span id=\"_lblCardTitle\">";                                     //<span id="_lblCardTitle">Abomination<
            String strFindRarity         = "<span id=\"_lblSetRarity\">";                                        //<span id="_lblSetRarity"><i>Fourth Edition</i> uncommon<
            String strFindCost           = "<span id=\"_lblCost\">";                                             //<span id="_lblCost"><img src='http://resources.wizards.com/magic/images/symbols/Symbol_3_mana.gif' alt='3 Mana' border='0'/><img src='http://resources.wizards.com/magic/images/symbols/black_mana.gif' width='12' height='12' alt='Black Mana' border='0'/><img src='http://resources.wizards.com/magic/images/symbols/black_mana.gif' width='12' height='12' alt='Black Mana' border='0'/></span>
            String strFindType           = "<span id=\"_lblCardType\">";                                         //<span id="_lblCardType">Creature - Horror</span>
            String strFindPowerToughness = "<span id=\"_lblPowerToughness\">";                                   //<span id="_lblPowerToughness">2/6</span>
            String strFindText           = "<span id=\"_lblRulesText\">";                                        //<span id="_lblRulesText">...</span>
            String strFindFlavorText     = "<span id=\"_lblFlavorText\">";                                       //<span id="_lblFlavorText"></span>
            String strFindCardNumber     = "<span id=\"_lblCardNumber\">";                                       //<span id="_lblCardNumber">311</span>


            try
            {
                // Parse the information about the card on this web page...

                // ID
                iStart  = strResponse.IndexOf(strFindID, iStart) + strFindID.Length;
                iNext   = strResponse.IndexOf("\"", iStart) - iStart;
                Card.ID = Convert.ToInt32(strResponse.Substring(iStart, iNext));

                // Picture link
                //<img ID="_imgCardImage"  src="http://resources.wizards.com/Magic/Cards/4E/en-us/Card2084.jpg" alt="Magic: The Gathering" Height="285" Width="200" Border="0"/></a>
                iStart           = strResponse.IndexOf(strFindPic, iStart) + strFindPic.Length;
                iNext            = strResponse.IndexOf("\"", iStart) - iStart;
                Card.PicLocation = strResponse.Substring(iStart, iNext);

                // Name
                iStart    = strResponse.IndexOf(strFindName, iStart) + strFindName.Length;
                iNext     = strResponse.IndexOf("<", iStart) - iStart;
                Card.Name = strResponse.Substring(iStart, iNext);

                // Rarity
                iStart      = (strResponse.IndexOf(strFindRarity, iStart) + strFindRarity.Length);
                iStart      = (strResponse.IndexOf("</i> ", iStart) + 5);
                iNext       = strResponse.IndexOf("<", iStart) - iStart;
                Card.Rarity = strResponse.Substring(iStart, iNext);

                // Printings
                // mmb - do we care about this?

                // Cost
                iStart    = (strResponse.IndexOf(strFindCost, iStart) + strFindCost.Length);
                iNext     = strResponse.IndexOf("</span>", iStart) - iStart;
                Card.Cost = ParseCost(strResponse.Substring(iStart, iNext));

                // Type
                iStart    = (strResponse.IndexOf(strFindType, iStart) + strFindType.Length);
                iNext     = strResponse.IndexOf("<", iStart) - iStart;
                Card.Type = strResponse.Substring(iStart, iNext);

                // Power and Toughness
                iStart = (strResponse.IndexOf(strFindPowerToughness, iStart) + strFindPowerToughness.Length);
                iNext  = strResponse.IndexOf("<", iStart) - iStart;
                String temp = strResponse.Substring(iStart, iNext);
                if (temp.IndexOf("/") >= 0)
                {
                    Card.Power     = temp.Substring(0, temp.IndexOf("/"));
                    Card.Toughness = temp.Substring(temp.IndexOf("/") + 1);
                }

                // Text
                iStart    = (strResponse.IndexOf(strFindText, iStart) + strFindText.Length);
                iNext     = strResponse.IndexOf("<", iStart) - iStart;
                Card.Text = strResponse.Substring(iStart, iNext);

                // Flavor Text
                iStart      = (strResponse.IndexOf(strFindFlavorText, iStart) + strFindFlavorText.Length);
                iNext       = strResponse.IndexOf("<", iStart) - iStart;
                Card.Flavor = strResponse.Substring(iStart, iNext);

                // Card Number
                iStart      = (strResponse.IndexOf(strFindCardNumber, iStart) + strFindCardNumber.Length);
                iNext       = strResponse.IndexOf("<", iStart) - iStart;
                Card.Number = strResponse.Substring(iStart, iNext);

                // now download the picture of the card
                Card.Pic = DownloadPicture(Card.PicLocation);
            }
            catch (Exception ex)
            {
                String Error = String.Format("ERROR: ", ex.Message);
                //Log(String.Format("  **ERROR: ", ex.Message));
                //MessageBox.Show(String.Format("  **ERROR[ParseData]: {0}", ex.Message));
            }

            return(Card);
        }