protected void ItemsGrid_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int itemId = AlwaysConvert.ToInt(e.CommandArgument);
            int index  = _Order.Items.IndexOf(itemId);

            if (index > -1)
            {
                switch (e.CommandName)
                {
                case "DeleteItem":
                    _Order.Items.RemoveAt(index);
                    _Order.Save(true, false);
                    BindGrids();
                    break;

                case "EditItem":
                    OrderItem item = _Order.Items[index];
                    GiftCertMessage.Visible    = item.GiftCertificates.Count > 0;
                    EditItemDialogCaption.Text = "Edit " + item.Name;
                    EditItemName.Text          = item.Name;
                    EditItemQuantity.Text      = item.Quantity.ToString();
                    EditItemPrice.Text         = item.Price.ToString("F2");
                    EditItemId.Value           = itemId.ToString();
                    EditItemPopup.Show();
                    break;
                }
            }
        }
        protected void SaveEditButton_Click(object sender, EventArgs e)
        {
            int itemId = AlwaysConvert.ToInt(EditItemId.Value);
            int index  = _Order.Items.IndexOf(itemId);

            if (index > -1)
            {
                OrderItem orderItem = _Order.Items[index];
                orderItem.Price    = AlwaysConvert.ToDecimal(EditItemPrice.Text);
                orderItem.Quantity = AlwaysConvert.ToInt16(EditItemQuantity.Text);

                // Do not allow positive values for Discount/Credit or negative values for charge
                switch (orderItem.OrderItemTypeId)
                {
                case ((short)OrderItemType.Discount):
                case ((short)OrderItemType.Credit):
                    if (orderItem.Price > 0)
                    {
                        orderItem.Price = Decimal.Negate((Decimal)orderItem.Price);
                    }
                    break;

                case ((short)OrderItemType.Charge):
                    if (orderItem.Price < 0)
                    {
                        orderItem.Price = Decimal.Negate((Decimal)orderItem.Price);
                    }
                    break;

                default:
                    break;
                }

                // UPDATE THE CALCULATED SUMMARY VALUES OF ORDER
                _Order.Save(true, false);
                BindGrids();
            }
            EditItemPopup.Hide();
        }