private void btnUndoSelect_Click(object sender, EventArgs e)
 {
     switch (mNextField)
     {
     case NextFieldToSave.VendorCode:
         if (mProductsToSave.Count > 0)
         {
             ProductToSave toSave = mProductsToSave.Pop();
             txtVendorCode.Text  = toSave.VendorCode;
             txtProductName.Text = toSave.ProductName;
             txtSize.Text        = toSave.Size;
             txtBrandName.Text   = toSave.BrandName;
             txtCasePrice.Text   = toSave.CasePrice;
             txtCaseSize.Text    = toSave.CaseSize;
             txtEachPrice.Text   = toSave.EachPrice;
         }
         break;
     }
     if (mSelectedElements.Count > 0)
     {
         ElementSelect sel = mSelectedElements.Pop();
         mNextField = sel.OldNextField;
         if (sel.Element != null)
         {
             sel.Element.Style = sel.OldStyle;
         }
     }
     ShowNextField();
 }
        private void btnSave_Click(object sender, EventArgs e)
        {
            ProductToSave toSave = new ProductToSave();

            toSave.VendorCode  = txtVendorCode.Text;
            toSave.ProductName = txtProductName.Text;
            toSave.Size        = txtSize.Text;
            toSave.BrandName   = txtBrandName.Text;
            toSave.CasePrice   = txtCasePrice.Text;
            toSave.CaseSize    = txtCaseSize.Text;
            toSave.EachPrice   = txtEachPrice.Text;
            mProductsToSave.Push(toSave);
            SaveProductsToClipboard();

            ElementSelect selectedElm = new ElementSelect();

            selectedElm.OldNextField = NextFieldToSave.Done;
            selectedElm.OldStyle     = null;
            selectedElm.Element      = null;
            mSelectedElements.Push(selectedElm);

            InitNextProduct();
        }
        void Document_Click(object sender, HtmlElementEventArgs e)
        {
            e.BubbleEvent = false;
            HtmlElement elm = ((HtmlDocument)sender).GetElementFromPoint(e.ClientMousePosition);

            if (elm == null)
            {
                return;
            }
            string rawValue = elm.InnerText;

            if (string.IsNullOrEmpty(rawValue))
            {
                return;
            }
            rawValue = rawValue.Trim();
            bool            extractedValue = false;
            NextFieldToSave oldNextField   = mNextField;

            switch (mNextField)
            {
            case NextFieldToSave.VendorCode:
                txtVendorCode.Text = rawValue;
                mNextField         = NextFieldToSave.ProductName;
                extractedValue     = true;
                break;

            case NextFieldToSave.ProductName:
                if (rawValue.StartsWith(txtVendorCode.Text))
                {
                    rawValue = rawValue.Substring(txtVendorCode.Text.Length).Trim();
                }
                string extractedSize = string.Empty;
                string numPre        = "(^| )[0-9]{1,3}((\\.[0-9]{0,2})|(( |-)[0-9]{1,2}/[0-9]{1,2}))? ?";
                string numPreOpt     = "(" + numPre + ")?";
                if (ReplaceRegex(ref rawValue, numPre + "((OZ\\.?)|(LBS?\\.?))", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, numPre + "\"", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, numPre + "#", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, numPreOpt + "QT\\.? ", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, numPreOpt + "PT\\.? ", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, numPreOpt + "GAL?\\.? ", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, numPre + "((IN\\.?)|(COUNT))", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, numPre + "((SQ\\.FT\\.)|(SQ ?FT))", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, "(^| )MED\\.? ", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, "(^| )SM\\.? ", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, "(^| )SMALL ", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, "(^| )LR?G\\.? ", ref extractedSize))
                {
                }
                else if (ReplaceRegex(ref rawValue, "(^| )LARGE ", ref extractedSize))
                {
                }
                txtProductName.Text = rawValue;
                if (chkExtractSize.Checked)
                {
                    mNextField = NextFieldToSave.ProductSize;
                }
                else
                {
                    txtSize.Text = extractedSize;
                    if (chkExtractBrand.Checked)
                    {
                        mNextField = NextFieldToSave.BrandName;
                    }
                    else
                    {
                        txtBrandName.Text = string.Empty;
                        mNextField        = NextFieldToSave.Cost;
                    }
                }
                extractedValue = true;
                break;

            case NextFieldToSave.ProductSize:
                txtSize.Text = rawValue;
                if (chkExtractBrand.Checked)
                {
                    mNextField = NextFieldToSave.BrandName;
                }
                else
                {
                    mNextField = NextFieldToSave.Cost;
                }
                extractedValue = true;
                break;

            case NextFieldToSave.BrandName:
                txtBrandName.Text = rawValue;
                mNextField        = NextFieldToSave.Cost;
                extractedValue    = true;
                break;

            case NextFieldToSave.Cost:
                if (rawValue.StartsWith("$"))
                {
                    rawValue = rawValue.Substring(1);
                }
                rawValue = rawValue.ToUpper();
                if (TryEachPrice(rawValue, "EA"))
                {
                }
                else if (TryEachPrice(rawValue, "EACH"))
                {
                }
                else if (TryCasePrice(rawValue, "CS"))
                {
                }
                else if (TryCasePrice(rawValue, "CASE"))
                {
                }
                else if (TryCasePrice(rawValue, "BX"))
                {
                }
                else if (TryCasePrice(rawValue, "BOX"))
                {
                }
                else if (TryCasePrice(rawValue, "PK"))
                {
                }
                else if (TryCasePrice(rawValue, "PACK"))
                {
                }
                else
                {
                    txtEachPrice.Text = rawValue;
                    txtCasePrice.Text = string.Empty;
                    txtCaseSize.Text  = string.Empty;
                }
                mNextField     = NextFieldToSave.Done;
                extractedValue = true;
                break;

            default:
                break;
            }
            ShowNextField();
            ElementSelect selectedElm = new ElementSelect();

            selectedElm.OldNextField = oldNextField;
            if (extractedValue)
            {
                selectedElm.OldStyle = elm.Style;
                selectedElm.Element  = elm;
                elm.Style            = "color:black;background-color:#FFB060;font-weight:bold;font-size:10pt;";
            }
            else
            {
                selectedElm.OldStyle = null;
                selectedElm.Element  = null;
            }
            mSelectedElements.Push(selectedElm);
            btnUndoSelect.Enabled = true;
        }