protected void CouponCodeGoCommand(object sender, CommandEventArgs e)
        {
            string couponCode = CouponCodeEdit.Text;
            using (Database db = new MySqlDatabase())
            {
                ClientInfo ci = db.GetClientInfo(Util.UserId);

                if (db.CheckActivationCode(couponCode))
                {
                    // Code is ok, raise the number of credits for this user
                    db.MarkActivationCode(couponCode, Util.UserId);

                    Config cfg = new Config();
                    cfg.Load(Server.MapPath("~/Config/trackprotect.config"));

                    long prodid = 0;
                    if (cfg["activationcode.productid"] != null)
                        prodid = Convert.ToInt64(cfg["activationcode.productid"]);
                    // Get the credits from the database
                    ProductInfo pi = db.GetProductById(prodid);

                    if (pi != null && pi.ProductId > 0)
                    {
                        // How many credits to issue
                        string transactionIdCoupon = string.Format("COUPON {0}", couponCode);
                        long orderId = db.CreateTransaction(Util.UserId, 0m, prodid, pi.Description);
                        db.UpdateTransaction(orderId.ToString(), "OK", "OK", "Payment Completed", "COUPON", couponCode, couponCode, transactionIdCoupon, "COUPON", 0m, pi, "EUR", Util.GetCountryIso2(ci.Country));
                        db.UpdateUserCredits(Util.UserId, prodid, pi.Credits);
                        db.AddCreditHistory(Util.UserId, prodid, pi.Credits, orderId);
                        Response.Redirect(string.Format("~/Member/CouponSuccess.aspx?cradd={0}", pi.Credits), false);
                    }
                }
                else
                {
                    Response.Redirect(string.Format("~/Member/CouponFailure.aspx?couponcode={0}", couponCode), false);
                }
            }
        }
        protected void SubmitButton_Command(object sender, CommandEventArgs e)
        {
            InitializeWithDefaultValues();

            Page.Validate("TrackProtectValidation");

            bool atleastOneTaggingSelected = false;

            if (ViewState["Genre1"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["Genre2"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["Genre3"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["SubGenre1"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["SubGenre2"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["SubGenre3"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["SoundTag1"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["SoundTag2"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;
            else if (ViewState["SoundTag3"] != null && atleastOneTaggingSelected == false)
                atleastOneTaggingSelected = true;

            if (!FileUpload1.HasFile)
            {
                CustomValidationShow(Resources.Resource.SelectMp3File);
            }
            else if (FileUpload1.FileContent.Length > 12582912)
            {
                CustomValidationShow(Resources.Resource.FileSizeExceed);
            }
            else if (atleastOneTaggingSelected == false)
            {
                CustomValidationShow(Resources.Resource.SelectOneTag);
            }
            else if (Session["soundCloudAccessToken"] == null && (cbxSendToFacebook.Checked == true || cbxSendToTwitter.Checked == true))
            {
                CustomValidationShow(Resources.Resource.SoundCloudCredRequired);
            }
            else if (cbxSendToSoundCloud.Checked == false && (cbxSendToFacebook.Checked == true || cbxSendToTwitter.Checked == true))
            {
                CustomValidationShow(Resources.Resource.SelectSoundcloud);
            }

            if (Page.IsValid)
            {
                bool failed = false;
                long managedUserId = 0;
                if (Session["managed.userid"] != null)
                    managedUserId = Convert.ToInt64(Session["managed.userid"]);

                if (!FileUpload1.HasFile)
                {
                    // No file for the first option, need one to proceed or need a check to indicate
                    // only songtext and sheet music will be registered.
                    Response.Redirect(string.Format("~/Member/ErrorPage.aspx?title={0}&message={1}&returnurl={2}",
                        Resources.Resource.FirstFileRequiredTitle,
                        Resources.Resource.FirstFileRequiredMessage,
                        Uri.EscapeDataString(Request.RawUrl)), false);
                }

                long registerId = 0;

                string trackName = TrackNameText.Text;
                string doc1 = string.Empty, doc2 = string.Empty, doc3 = string.Empty;
                string uploadPath = string.Empty;
                using (Database db = new MySqlDatabase())
                {
                    UserInfo ui = db.GetUser(Util.UserId);

                    uploadPath = db.GetUserDocumentPath(managedUserId);

                    string isrcCode = string.Empty;
                    if (!string.IsNullOrEmpty(IsrcHandle.Text) && !string.IsNullOrEmpty(IsrcPostfix.Text))
                        isrcCode = IsrcHandle.Text + "-" + IsrcPostfix.Text;

                    if (!failed && FileUpload1.HasFile)
                    {
                        doc1 = FileUpload1.FileName;
                        try
                        {
                            FileUpload1.SaveAs(Path.Combine(uploadPath, Path.GetFileName(doc1)));
                            StatusInfo1.Text = string.Format(Resources.Resource.FileStoreSuccess, Path.GetFileName(doc1));
                        }
                        catch (Exception)
                        {
                            StatusInfo1.Text = string.Format(Resources.Resource.FileStoreFailed, Path.GetFileName(doc1));
                            failed = true;
                        }
                    }
                    if (!failed && FileUpload2.HasFile)
                    {
                        doc2 = FileUpload2.FileName;
                        try
                        {
                            FileUpload2.SaveAs(Path.Combine(uploadPath, Path.GetFileName(doc2)));
                            StatusInfo2.Text = string.Format(Resources.Resource.FileStoreSuccess, Path.GetFileName(doc2));
                        }
                        catch (Exception)
                        {
                            StatusInfo2.Text = string.Format(Resources.Resource.FileStoreFailed, Path.GetFileName(doc2));
                            failed = true;
                        }
                    }
                    if (!failed && FileUpload3.HasFile)
                    {
                        doc3 = FileUpload3.FileName;
                        try
                        {
                            FileUpload3.SaveAs(Path.Combine(uploadPath, Path.GetFileName(doc3)));
                            StatusInfo3.Text = string.Format(Resources.Resource.FileStoreSuccess, Path.GetFileName(doc3));
                        }
                        catch (Exception)
                        {
                            StatusInfo3.Text = string.Format(Resources.Resource.FileStoreFailed, Path.GetFileName(doc3));
                            failed = true;
                        }
                    }
                    if (!failed)
                    {
                        // Continue registration
                        string f1 = string.Empty, f2 = string.Empty, f3 = string.Empty;
                        if (!string.IsNullOrEmpty(doc1))
                            f1 = Path.Combine(uploadPath, Path.GetFileName(doc1));
                        if (!string.IsNullOrEmpty(doc2))
                            f2 = Path.Combine(uploadPath, Path.GetFileName(doc2));
                        if (!string.IsNullOrEmpty(doc3))
                            f3 = Path.Combine(uploadPath, Path.GetFileName(doc3));

                        // Get the cooperating artists to add to the certificate
                        CoopArtistList coopArtists = new CoopArtistList();
                        foreach (DataRow row in CoArtistsTable.Rows)
                        {
                            string name = Convert.ToString(row[0]);
                            string role = Convert.ToString(row[1]);
                            coopArtists.Add(new CoopArtist(name, role));
                        }

                        string certfilename = CreateCertificate(managedUserId, f1, f2, f3, isrcCode, trackName, coopArtists);
                        //long registerId = db.CreateRegistry(managedUserId, certfilename, f1);
                        registerId = db.CreateRegistry(Util.UserId, managedUserId, certfilename, f1, trackName.Trim(), isrcCode,
                            (Genre1.SelectedItem.Text == "--Select--" ? "" : Genre1.SelectedItem.Text),
                            (Genre2.SelectedItem.Text == "--Select--" ? "" : Genre2.SelectedItem.Text),
                            (Genre3.SelectedItem.Text == "--Select--" ? "" : Genre3.SelectedItem.Text),
                            (SubGenre1.SelectedItem.Text == "--Select--" ? "" : SubGenre1.SelectedItem.Text),
                            (SubGenre2.SelectedItem.Text == "--Select--" ? "" : SubGenre2.SelectedItem.Text),
                            (SubGenre3.SelectedItem.Text == "--Select--" ? "" : SubGenre3.SelectedItem.Text),
                            (Tag1.SelectedItem.Text == "--Select--" ? "" : Tag1.SelectedItem.Text),
                            (Tag2.SelectedItem.Text == "--Select--" ? "" : Tag2.SelectedItem.Text),
                            (Tag3.SelectedItem.Text == "--Select--" ? "" : Tag3.SelectedItem.Text), StageNameText.Text.Trim());

                        if (registerId > 0)
                        {
                            if (!failed && !string.IsNullOrEmpty(f1))
                                failed = (RegisterDoc(registerId, f1) == 0);

                            if (!failed && !string.IsNullOrEmpty(f2))
                                failed = (RegisterDoc(registerId, f2) == 0);

                            if (!failed && !string.IsNullOrEmpty(f3))
                                failed = (RegisterDoc(registerId, f3) == 0);
                            if (!failed && CoArtistsTable.Rows.Count > 0)
                            {
                                foreach (DataRow row in CoArtistsTable.Rows)
                                {
                                    string name = Convert.ToString(row[0]);
                                    string role = Convert.ToString(row[1]);
                                    long clientId = Convert.ToInt64(row[2]);
                                    string id = clientId.ToString();
                                    RegisterCoArtist(registerId, name, id, role);
                                }
                            }
                            if (!failed)
                            {
                                StatusInfo4.Text = Resources.Resource.RegistrationSuccessful;
                                db.DecrementCredits(Util.UserId);
                                db.AddCreditHistory(Util.UserId, 0L, 1, 0);

                                string certdocfile = Path.ChangeExtension(certfilename, ".pdf");
                                Util.SendRegistration(Convert.ToInt64(Session["managed.userid"]), uploadPath, trackName, certfilename, certdocfile);
                            }
                            else
                            {
                                StatusInfo4.Text = Resources.Resource.RegistrationFailed;
                            }
                        }
                        else
                        {
                            // Registration failed
                            StatusInfo4.Text = Resources.Resource.RegistrationFailed;
                        }
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(doc1))
                            DeleteFile(Path.Combine(uploadPath, Path.GetFileName(doc1)));
                        if (!string.IsNullOrEmpty(doc2))
                            DeleteFile(Path.Combine(uploadPath, Path.GetFileName(doc2)));
                        if (!string.IsNullOrEmpty(doc3))
                            DeleteFile(Path.Combine(uploadPath, Path.GetFileName(doc3)));
                    }
                }

                if (failed == false)
                {
                    Session["TrackProtected"] = true;

                    if (cbxSendToSoundCloud.Checked == false)
                        Session["SoundCloud.Response"] = "Deactive";
                    else if (cbxSendToSoundCloud.Checked && !File.Exists(Path.Combine(uploadPath, doc1)))
                        Session["SoundCloud.Response"] = "Error";
                    else if (cbxSendToSoundCloud.Checked && File.Exists(Path.Combine(uploadPath, doc1)))
                        Session["SoundCloud.Response"] = Publish.SoundCloudPublish(Convert.ToString(Session["soundCloudAccessToken"]), Path.Combine(uploadPath, doc1), trackName + System.Environment.NewLine + SoundCloudMsg.Text.Trim());

                    if (Session["SoundCloud.Response"] != null)
                    {
                        if (!Convert.ToString(Session["SoundCloud.Response"]).Contains("Deactive") && !Convert.ToString(Session["SoundCloud.Response"]).Contains("Error"))
                        {
                            string shortUrl =
                                BitlyApi.GetShortUrl(ConfigurationManager.AppSettings["SiteNavigationLink"] + "/idlookup.aspx?TrackID="
                                + EncryptionClass.Encrypt(Convert.ToString(registerId)));

                            string stream_url = string.Empty;

                            try
                            {
                                var obj = JsonConvert.DeserializeObject<Dictionary<string, object>>(Convert.ToString(Session["SoundCloud.Response"]));

                                stream_url = Convert.ToString(obj["permalink_url"]) + "/" + Convert.ToString(obj["secret_token"]);
                            }
                            catch { }

                            #region Facebook

                            if (cbxSendToFacebook.Checked == false)
                                Session["Facebook.Response"] = "Deactive";
                            else if (cbxSendToFacebook.Checked)
                            {
                                String messageToPost = string.Empty;
                                messageToPost += FacebookMsg.Text.Trim() + System.Environment.NewLine + System.Environment.NewLine;
                                messageToPost += "Trackname : " + TrackNameText.Text.Trim() + System.Environment.NewLine;
                                messageToPost += "Trackprotect ID : " + shortUrl + System.Environment.NewLine;
                                //messageToPost += "Protected by: " + ConfigurationManager.AppSettings["SiteNavigationLink"] + System.Environment.NewLine;

                                if (cbxSendToGenreCommunityPage.Checked == false)
                                    Session["FacebookGenre.Response"] = "Deactive";
                                else if (cbxSendToGenreCommunityPage.Checked)
                                    Session["FacebookGenre.Response"] = postToFacebook(messageToPost, stream_url, Convert.ToString(ViewState["GenrePageToken"]), Convert.ToString(ViewState["GenrePageID"]));

                                if (cbxSendToSubGenreCommunityPage.Checked == false)
                                    Session["FacebookSubGenre.Response"] = "Deactive";
                                else if (cbxSendToSubGenreCommunityPage.Checked)
                                    Session["FacebookSubGenre.Response"] = postToFacebook(messageToPost, stream_url, Convert.ToString(ViewState["SubGenrePageToken"]), Convert.ToString(ViewState["SubGenrePageID"]));

                                if (cbxShareToUserWall.Checked == false)
                                    Session["Facebook.Response"] = "Deactive";
                                else if (cbxShareToUserWall.Checked)
                                    Session["Facebook.Response"] = postToFacebook(messageToPost, stream_url, Convert.ToString(Session["FBACC"]), Convert.ToString(Session["FBID"]));

                                if (cbxShareToFriends.Checked == false)
                                    Session["ShareToFriends"] = "Deactive";
                                else if (cbxShareToFriends.Checked)
                                {
                                    IList<string> friendList = getFriendIDs();

                                    foreach (var friendId in friendList)
                                        Session["ShareToFriends"] =
                                            postToFacebook(messageToPost, stream_url, Convert.ToString(Session["FBACC"]), friendId);
                                }

                                if (cbxShareToPages.Checked == false)
                                    Session["ShareToPages"] = "Deactive";
                                else if (cbxShareToPages.Checked)
                                {
                                    Dictionary<string, string> pageList = getPageIDs();

                                    foreach (var pageId in pageList)
                                        Session["ShareToPages"] = postToFacebook(messageToPost, stream_url, pageId.Value, pageId.Key);
                                }

                                if (cbxShareToMyWall.Checked == false)
                                    Session["FacebookOwnPage.Response"] = "Deactive";
                                else if (cbxShareToMyWall.Checked)
                                    Session["FacebookOwnPage.Response"] = postToFacebook(messageToPost, stream_url, Convert.ToString(Session["FBOwnACC"]), Convert.ToString(Session["FBOwnID"]));

                                if (cbxShareToOwnFriends.Checked == false)
                                    Session["ShareToOwnFriends"] = "Deactive";
                                else if (cbxShareToOwnFriends.Checked)
                                {
                                    IList<string> friendList = getOwnFriendIDs();

                                    foreach (var friendId in friendList)
                                        Session["ShareToOwnFriends"] = postToFacebook(messageToPost, stream_url, Convert.ToString(Session["FBOwnACC"]), friendId);
                                }

                                if (cbxShareToOwnPages.Checked == false)
                                    Session["ShareToOwnPages"] = "Deactive";
                                else if (cbxShareToOwnPages.Checked)
                                {
                                    Dictionary<string, string> pageList = getOwnPageIDs();

                                    foreach (var pageId in pageList)
                                        Session["ShareToOwnPages"] = postToFacebook(messageToPost, stream_url, pageId.Value, pageId.Key);
                                }
                            }

                            #endregion

                            #region Twitter

                            if (cbxSendToTwitter.Checked == false)
                                Session["Twitter.Response"] = "Deactive";
                            else if (cbxSendToTwitter.Checked)
                                Session["Twitter.Response"] = tweetToTwitter(shortUrl, stream_url);

                            #endregion
                        }
                    }
                }
                else
                    Session["TrackProtected"] = false;

                string continueUrl = "~/Member/UploadConfirmation.aspx?id=" + Convert.ToInt64(Session["managed.userid"]);

                if (HttpContext.Current.Session["ReturnUrl"] != null)
                    continueUrl = HttpContext.Current.Session["ReturnUrl"] as string;

                Response.Redirect(continueUrl, false);
            }

            if (cbxSendToFacebook.Checked)
                divFBSharing.Attributes.Add("style", "display:block");
            else
                divFBSharing.Attributes.Add("style", "display:none");
        }