void addNumbersButton_Click(object sender, EventArgs e)
        {
            int qty = 0;

            certificateId = Int32.Parse(idHidden.Value);

            try {
                qty = Int32.Parse(newQtyBox.Text);
            } catch { }

            if (qty > 0)
            {
                CertificateNumberTableAdapter certificateNumberAdapter = new CertificateNumberTableAdapter();
                certificateNumberAdapter.Generate(certificateId, qty);

                InfoMessage = qty + " numbers added";
                Response.Redirect("~/admin/CertificateEdit.aspx?id=" + certificateId);
            }
            else
            {
                InfoMessage = "Quantity must be a postitive integer";
            }
        }
        void saveButton_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                int    advertiserId = Int32.Parse(advertiserIdHidden.Value);
                String shortName    = nameBox.Text.Trim();
                String description  = descriptionBox.Text.Trim();

                if (shortName == String.Empty)
                {
                    ErrorMessage = "Name is required";
                    return;
                }

                if (shortName.Length > 100)
                {
                    shortName = shortName.Substring(0, 100);
                }

                if (description == String.Empty)
                {
                    ErrorMessage = "Description is required";
                    return;
                }

                if (description.Length > 500)
                {
                    description = description.Substring(0, 500);
                }


                int minPurchaseQty = 0;

                try {
                    minPurchaseQty = Int32.Parse(minPurchaseQtyBox.Text);
                } catch {
                    ErrorMessage = "Min Purchase Qty must be an integer";
                    return;
                }

                if (minPurchaseQty <= 0)
                {
                    ErrorMessage = "Min Purchase Qty must be a postive number";
                    return;
                }


                int maxPurchaseQty = 0;

                try {
                    maxPurchaseQty = Int32.Parse(maxPurchaseQtyBox.Text);
                } catch {
                    ErrorMessage = "Max Purchase Qty must be an integer";
                    return;
                }

                if (maxPurchaseQty < 0)
                {
                    ErrorMessage = "Min Purchase Qty must be greater than or equal to 0";
                    return;
                }



                decimal faceValue = 0;
                try {
                    faceValue = Decimal.Parse(faceValueBox.Text);
                } catch {
                    ErrorMessage = "Face Value must be a decimal";
                    return;
                }

                if (faceValue <= 0)
                {
                    ErrorMessage = "Face Value be a postive";
                    return;
                }

                decimal discount = 0;
                try {
                    discount = Decimal.Parse(discountBox.Text);
                } catch {
                    ErrorMessage = "Discount must be a decimal";
                    return;
                }

                if (discount <= 0)
                {
                    ErrorMessage = "Discount be a postive";
                    return;
                }

                int discountTypeId = Int32.Parse(discountList.SelectedValue);

                String onSaleDateStr = String.Empty;

                if (Station.StationSiteType == SiteType.DealOfTheWeek)
                {
                    onSaleDateStr = onSaleDateList.SelectedValue;
                }
                else
                {
                    onSaleDateStr = onSaleDateBox.Text.Trim();
                }

                if (onSaleDateStr == String.Empty)
                {
                    ErrorMessage = "On Sale Date is required";
                    return;
                }

                if (Station.StationSiteType == SiteType.Standard)
                {
                    onSaleDateStr += " " + onSaleHourList.SelectedValue + ":" + onSaleMinuteList.SelectedValue + ":00 ";
                }

                DateTime onSaleDate;
                try {
                    onSaleDate = Convert.ToDateTime(onSaleDateStr);
                } catch {
                    ErrorMessage = "On Sale Date must by in the format MM/DD/YYYY";
                    return;
                }

                onSaleDate = TimeZoneInfo.ConvertTime(onSaleDate, Station.StationTimeZoneInfo, TimeZoneInfo.Local);

                int lowStockAmount = 0;

                try {
                    lowStockAmount = Int32.Parse(lowStockAmountBox.Text);
                } catch {
                    ErrorMessage = "Low Stock Amount must be an integer";
                    return;
                }

                if (lowStockAmount < 0)
                {
                    ErrorMessage = "Low Stock Amount must be greater than or equal to 0";
                    return;
                }

                int numberLength = Convert.ToInt32(numberLengthList.SelectedValue);

                int    deliveryTypeId = Convert.ToInt32(deliveryList.SelectedValue);
                string deliveryNote   = deliveryNoteBox.Text.Trim();


                if (deliveryNote.Length > 500)
                {
                    deliveryNote = deliveryNote.Substring(0, 500);
                }

                bool isActive = isActiveBox.Checked;

                CertificateTableAdapter certificateAdapter = new CertificateTableAdapter();

                if (idHidden.Value != String.Empty)
                {
                    certificateId = Int32.Parse(idHidden.Value);

                    certificate = certificateAdapter.GetCertificate(certificateId)[0];

                    certificate.ShortName      = shortName;
                    certificate.Description    = description;
                    certificate.MinPurchaseQty = minPurchaseQty;
                    certificate.MaxPurchaseQty = maxPurchaseQty;

                    certificate.FaceValue      = faceValue;
                    certificate.Discount       = discount;
                    certificate.DiscountTypeId = discountTypeId;
                    certificate.OnSaleDate     = onSaleDate;
                    certificate.LowStockAmount = lowStockAmount;
                    certificate.NumberLength   = numberLength;
                    certificate.DeliveryTypeId = deliveryTypeId;
                    certificate.DeliveryNote   = deliveryNote;
                    certificate.IsActive       = isActive;

                    certificateAdapter.Update(certificate);

                    CertificateNumberTableAdapter certificateNumberAdapter = new CertificateNumberTableAdapter();

                    InfoMessage = "Certificate updated";
                }
                else
                {
                    int quantity = 0;

                    try {
                        quantity = Int32.Parse(qtyBox.Text.Trim());
                    } catch {
                        ErrorMessage = "Quantity must be an integer";
                        return;
                    }

                    if (quantity <= 0)
                    {
                        ErrorMessage = "Quantity must be a postive";
                        return;
                    }

                    certificateId = Convert.ToInt32(certificateAdapter.InsertPK(advertiserId, shortName, description,
                                                                                minPurchaseQty, maxPurchaseQty, faceValue, discount, discountTypeId, deliveryTypeId, deliveryNote, isActive,
                                                                                onSaleDate, lowStockAmount, numberLength));


                    CertificateNumberTableAdapter certificateNumberAdapter = new CertificateNumberTableAdapter();
                    certificateNumberAdapter.Generate(certificateId, quantity);

                    InfoMessage = "Certificate created";
                }

                Response.Redirect("~/admin/AdvertiserEdit.aspx?id=" + advertiserId);
            }
        }