void saveButton_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                String username        = usernameBox.Text.Trim().ToLower();
                String emailAddress    = emailBox.Text.Trim();
                String password        = passwordBox.Text;
                String confirmPassword = confirmPasswordBox.Text;
                bool   isActive        = isActiveBox.Checked;


                if (username == String.Empty)
                {
                    ErrorMessage = "Username is required";
                    return;
                }

                if (emailAddress != String.Empty && !Regex.IsMatch(emailAddress, @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"))
                {
                    ErrorMessage = "E-mail address is not valid";
                    return;
                }

                if (emailAddress == String.Empty)
                {
                    emailAddress = null;
                }

                if (password != confirmPassword)
                {
                    ErrorMessage = "Password and Confirmation must be the same.";
                    return;
                }

                if (password != String.Empty && password.Length < 6)
                {
                    ErrorMessage = "Password must be at least 6 characters long";
                    return;
                }

                if (!Regex.IsMatch(username, @"^\w+$"))
                {
                    ErrorMessage = "Username can only contain numbers, letters or underscores";
                    return;
                }


                AdminTableAdapter            adminAdapter = new AdminTableAdapter();
                DollarSaverDB.AdminDataTable checkAdmins  = adminAdapter.GetByUsername(0, username);

                if (checkAdmins.Count == 1 && checkAdmins[0].AdminId != adminId)
                {
                    ErrorMessage = "Username is already in use";
                    return;
                }

                if (adminId > 0)
                {
                    DollarSaverDB.AdminRow admin = adminAdapter.GetAdmin(adminId)[0];

                    admin.Username = username;
                    admin.IsActive = isActive;

                    if (emailAddress != null)
                    {
                        admin.EmailAddress = emailAddress;
                    }
                    else
                    {
                        admin.SetEmailAddressNull();
                    }

                    if (password != String.Empty)
                    {
                        admin.Password = password;
                    }

                    adminAdapter.Update(admin);

                    InfoMessage = "Root User updated";
                }
                else
                {
                    if (password == String.Empty)
                    {
                        ErrorMessage = "Password is required";
                        return;
                    }
                    adminAdapter.Insert(null, (int)AdminRole.Root, username, password, emailAddress, DateTime.Now, null, isActive, false);

                    InfoMessage = "Root User created";
                }

                RedirectToUserList();
            }
        }