// Show conversation when first pressed on the button
        private void show_conversation(object sender, EventArgs e)
        {
            msg_chat_box.Enabled = true;
            bool @checked = false;

            ready_to_send = true;
            string from_employee_number;

            from_employee_number = parse_emp_number(sender.ToString());
            #region Get Conversation
            to_conversation = ""; from_conversation = "";
            msg_id          = 0; last_id = 0;
            conversation    = new string[255, 6];
            string query = "select top 10 fromemp, fromname, toemp, toname, msg, cast(msgtime as smalldatetime) as time from d_msgtable where (fromemp = '" +
                           from_employee_number + "' and toemp = '" + this.employeenumber + "') or (toemp = '" +
                           from_employee_number + "' and fromemp = '" + this.employeenumber + "') order by msgtime desc";

            ExcoODBC       database = ExcoODBC.Instance;
            OdbcDataReader reader;
            database.Open(Database.DECADE_MARKHAM);
            reader = database.RunQuery(query);
            while (reader.Read())
            {
                conversation[msg_id, 0] = reader[0].ToString().Trim(); //from employee NUMBER
                conversation[msg_id, 1] = reader[1].ToString().Trim(); //from employee NAME
                conversation[msg_id, 2] = reader[2].ToString().Trim(); //to employee NUMBER
                conversation[msg_id, 3] = reader[3].ToString().Trim(); //to employee NAME

                // Decrypt
                Encrypter en        = new Encrypter();
                string    encrypted = reader[4].ToString().Trim();
                conversation[msg_id, 4] = en.Decrypt(encrypted);       //message

                conversation[msg_id, 5] = reader[5].ToString().Trim(); //message TIME
                if (reader[0].ToString().Trim() == from_employee_number && !@checked)
                {
                    last_id  = msg_id;
                    @checked = true;
                }
                msg_id++;
            }
            reader.Close();
            @checked = false;
            #endregion

            from_employee_name_g   = get_name(from_employee_number);
            from_employee_number_g = from_employee_number;
            groupBox1.Text         = from_employee_name_g;
            string[] wrap = new string[2];
            lastmsgrec_box.Text = "Last message recieved at: " + conversation[last_id, 5];

            if (conversation.Length > 0)
            {
                for (int i = msg_id - 1; i >= 0; i--)//for (int i = 0; i < msg_id; i++)
                {
                    if (conversation[i, 0] == from_employee_number)
                    {
                        wrap = format_conversation(conversation[i, 4]);
                        from_conversation = from_conversation + wrap[0];
                        to_conversation   = to_conversation + blank_lines(Convert.ToInt32(wrap[1]));
                    }
                    else
                    {
                        wrap              = format_conversation(conversation[i, 4]);
                        to_conversation   = to_conversation + wrap[0];
                        from_conversation = from_conversation + blank_lines(Convert.ToInt32(wrap[1]));
                    }
                }
                tobox.Clear();
                frombox.Clear();

                tobox.Text   = to_conversation;
                frombox.Text = from_conversation;
            }

            // Active/inactive toggle
            if (is_active())
            {
                active_text.Text      = "Active";
                active_text.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(10)))), ((int)(((byte)(200)))), ((int)(((byte)(10)))));
                active_text.Visible   = true;
            }
            else
            {
                active_text.Text      = "Inactive";
                active_text.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(10)))), ((int)(((byte)(10)))));
                active_text.Visible   = true;
            }
        }
        // Refresh the current conversation
        private void refresh_conversation(string from_employee_number, string to_employee_number)
        {
            to_conversation = ""; from_conversation = "";
            msg_id          = 0;
            conversation    = new string[255, 6];
            string query = "select top 10 fromemp, fromname, toemp, toname, msg, cast(msgtime as smalldatetime) as time from d_msgtable where (fromemp = '" +
                           from_employee_number + "' and toemp = '" + to_employee_number + "') or (toemp = '" +
                           from_employee_number + "' and fromemp = '" + to_employee_number + "') order by msgtime desc";
            ExcoODBC       database = ExcoODBC.Instance;
            OdbcDataReader reader;

            database.Open(Database.DECADE_MARKHAM);
            reader = database.RunQuery(query);
            while (reader.Read())
            {
                conversation[msg_id, 0] = reader[0].ToString().Trim(); //from employee NUMBER
                conversation[msg_id, 1] = reader[1].ToString().Trim(); //from employee NAME
                conversation[msg_id, 2] = reader[2].ToString().Trim(); //to employee NUMBER
                conversation[msg_id, 3] = reader[3].ToString().Trim(); //to employee NAME

                // Decrypt
                Encrypter en        = new Encrypter();
                string    encrypted = reader[4].ToString().Trim();
                conversation[msg_id, 4] = en.Decrypt(encrypted);       //message

                conversation[msg_id, 5] = reader[5].ToString().Trim(); //message TIME
                msg_id++;
            }

            reader.Close();
            query    = "select firstname from d_user where employeenumber = '" + from_employee_number + "'";
            database = ExcoODBC.Instance;
            database.Open(Database.DECADE_MARKHAM);
            reader = database.RunQuery(query);
            reader.Read();
            from_employee_name_g = reader[0].ToString().Trim();;
            reader.Close();
            from_employee_number_g = from_employee_number;
            groupBox1.Text         = from_employee_name_g;
            string[] wrap = new string[2];
            lastmsgrec_box.Text = "Last message recieved at: " + conversation[last_id, 5];

            if (conversation.Length > 0)
            {
                for (int i = msg_id - 1; i >= 0; i--)
                {
                    if (conversation[i, 0] == from_employee_number)
                    {
                        wrap = format_conversation(conversation[i, 4]);
                        from_conversation = from_conversation + wrap[0];
                        to_conversation   = to_conversation + blank_lines(Convert.ToInt32(wrap[1]));
                    }
                    else
                    {
                        wrap              = format_conversation(conversation[i, 4]);
                        to_conversation   = to_conversation + wrap[0];
                        from_conversation = from_conversation + blank_lines(Convert.ToInt32(wrap[1]));
                    }
                }
                tobox.Clear();
                frombox.Clear();

                tobox.Text   = to_conversation;
                frombox.Text = from_conversation;
            }
        }
        private void send_button_Click(object sender, EventArgs e)
        {
            if (to_text.Text.Length > 3)
            {
                get_email_list(to_text.Text);
                if (Email_List.Count > 0)
                {
                    string         query    = "select * from d_active where employeenumber = '" + this.current_employeenumber + "'";
                    ExcoODBC       database = ExcoODBC.Instance;
                    OdbcDataReader reader;
                    database.Open(Database.DECADE_MARKHAM);
                    reader = database.RunQuery(query);
                    try
                    {
                        reader.Read();
                        Encrypter @str         = new Encrypter();
                        string    my_email     = @str.Decrypt(reader[3].ToString().Trim());
                        string    my_pw        = @str.Decrypt(reader[4].ToString().Trim());
                        string    my_smtp      = reader[5].ToString().Trim();
                        int       my_smtp_port = Convert.ToInt32(reader[7].ToString().Trim());
                        string    my_sig       = @str.Decrypt(reader[9].ToString().Trim());
                        foreach (string email in Email_List)
                        {
                            if (email.Contains("@") && email.Contains("."))
                            {
                                mailmsg.To.Add(email);
                            }
                        }
                        reader.Close();
                        MailAddress from = new MailAddress(my_email);
                        mailmsg.From    = from;
                        mailmsg.Subject = subject_text.Text;
                        mailmsg.Body    = message_text.Text + "\r\n\r\n" + my_sig;
                        SmtpClient        client     = new SmtpClient(my_smtp, my_smtp_port);
                        NetworkCredential credential = new NetworkCredential(my_email, my_pw);
                        client.Credentials = credential;

                        bool hasSend = false;
                        while (!hasSend)
                        {
                            try
                            {
                                client.Send(mailmsg);
                                hasSend = true;
                            }
                            catch
                            {
                                hasSend = false;
                            }
                        }
                        AlertBox alert = new AlertBox("Message sent.", "");
                        alert.Show();
                        alert.HideButton();
                        Visible = false;
                        Dispose();
                        Close();
                    }
                    catch
                    {
                        reader.Close();
                    }
                }
            }
        }