protected void DuplicatePage_Click(object sender, EventArgs e)
    {
        Util util = new Util();
        Hashtable State = (Hashtable)HttpRuntime.Cache[Session.SessionID];
        if (util.CheckSessionTimeout(State, Response, "Default.aspx")) return;

        try
        {
            ClearMessages();
            if (SavedCanvasHtml.Text.Length > 0)
            {
                if (!SavePage())
                    return;
            }
            string new_page_name = PageName.Text.Trim().Replace(" ", "_");
            PageName.Text = "";

            if (!CheckPageName(CurrentApp.SelectedValue, new_page_name))
            {
                return;
            }

            XmlUtil x_util = new XmlUtil();
            x_util.CopyAppPage(State, State["SelectedAppPage"].ToString(), new_page_name);

            Message.Text = new_page_name + " page has been created. ";
            State["SelectedAppPage"] = new_page_name;
            PageName.Text = State["SelectedAppPage"].ToString();

            InitAppPages();
            ShowPage(new_page_name);
        }
        catch (Exception ex)
        {
            util.LogError(State, ex);
            Message.Text = "Internal Error: " + ex.Message + ": " + ex.StackTrace;
        }
    }