private void NodesChangeIndexCompleted(Object sender, krw.NodesChangeIndexCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "ReIndexed":
                        TreeView trv = new TreeView();

                        switch (nodeServerLang)
                        {
                            case "pagesfa":
                                trv = trvMenusPersian;
                                break;
                            case "pagesen":
                                trv = trvMenusEnglish;
                                break;
                            case "pagesar":
                                trv = trvMenusArabic;
                                break;
                            default:
                                break;
                        }

                        int index = nodeServerBeside.Index;

                        TreeNode parent = trv.SelectedNode.Parent;
                        TreeNode node = trv.SelectedNode;
                        parent.Nodes.Remove(node);
                        parent.Nodes.Insert(index, node);
                        trv.SelectedNode = node;

                        Base.Loading(this, false);
                        break;
                    case "Not Found":
                        MessageBox.Show("صفحه ای با نام موردنظر جهت تغییر موقعیت یافت نشد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("NodesChangeIndex", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("NodesChangeIndex", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("NodesChangeIndex", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("NodesChangeIndex", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void CalendarAddCompleted(Object sender, krw.CalendarAddCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "Added":
                        MessageBox.Show("رخداد جدید با موفقیت درج شد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);

                        SendRequest("CalendarAll");

                        break;
                    case "Already Exist":
                        MessageBox.Show("رخدادی با این عنوان قبلا ثبت شده است", "رخداد تکراری", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);

                        frm.firstRun = false;
                        frm.ShowDialog(this);

                        if (!frm.wasCanceled)
                        {
                            SendRequest("CalendarAdd");
                        }
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("CalendarAdd", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("CalendarAdd", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("GalleryDefAdd", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("GalleryDefAdd", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void CalendarEditCompleted(Object sender, krw.CalendarEditCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "Updated":
                        MessageBox.Show("رخداد مورد نظر با موفقیت ویرایش شد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);

                        SendRequest("CalendarAll");
                        break;
                    case "Not Found":
                        MessageBox.Show("رخدادی با عنوان موردنظر جهت ویرایش یافت نشد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case "Duplicate Error":
                        MessageBox.Show("رخداد دیگری با عنوان موردنظر قبلا ثبت شده است", "رخداد تکراری", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);

                        frm.firstRun = false;
                        frm.ShowDialog(this);

                        if (!frm.wasCanceled)
                        {
                            SendRequest("CalendarEdit");
                        }
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("CalendarEdit", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("CalendarEdit", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("CalendarEdit", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("CalendarEdit", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
 private void AdminPwSetCompleted(Object sender, krw.AdminPwSetCompletedEventArgs Completed)
 {
     try
     {
         string result = Completed.Result;
         switch (result)
         {
             case "OK":
                 Base.pw = txtPwNew.Text;
                 MessageBox.Show("كلمه ي عبور جديد با موفقيت جايگزين شد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                 Base.Loading(this, false);
                 ClearFormPw();
                 break;
             case Base.srvMsgDSReject:
                 TryRequest("AdminPwSet", Base.errDSReject);
                 break;
             case Base.srvMsgInvalidLegal:
                 MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                 DoExit();
                 break;
             default:
                 TryRequest("AdminPwSet", result);
                 break;
         }
     }
     catch (SoapException ex)
     {
         TryRequest("AdminPwSet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     catch (Exception ex)
     {
         TryRequest("AdminPwSet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     finally
     {
     }
 }
 private void WatermarkStatusSetCompleted(Object sender, krw.WatermarkStatusSetCompletedEventArgs Completed)
 {
     try
     {
         string result = Completed.Result;
         switch (result)
         {
             case "OK":
                 Base.Loading(this, false);
                 break;
             case Base.srvMsgDSReject:
                 TryRequest("WatermarkStatusSet", Base.errDSReject);
                 break;
             case Base.srvMsgInvalidLegal:
                 MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                 DoExit();
                 break;
             default:
                 TryRequest("WatermarkStatusSet", result);
                 break;
         }
     }
     catch (SoapException ex)
     {
         TryRequest("WatermarkStatusSet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     catch (Exception ex)
     {
         TryRequest("WatermarkStatusSet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     finally
     {
     }
 }
        private void GoogleAllCompleted(Object sender, krw.GoogleAllCompletedEventArgs Completed)
        {
            try
            {
                dgvGoogle.DataSource = null;
                dtGoogle = Completed.Result;
                GoogleReDrawEveryThing();

                Base.Loading(this, false);
            }
            catch (SoapException ex)
            {
                TryRequest("GoogleAll", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("GoogleAll", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void GoogleEraseCompleted(Object sender, krw.GoogleEraseCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "Erased":
                        string cell = GetIDGoogle();

                        dgvGoogle.DataSource = null;

                        DataRow dr;

                        for (int i = 0; i < dtGoogle.Rows.Count; i++)
                        {
                            dr = dtGoogle.Rows[i];

                            if (dr[0].ToString().Trim() == cell)
                            {
                                dr.Delete();
                                dtGoogle.AcceptChanges();
                                break;
                            }
                        }

                        GoogleReDrawEveryThing();

                        Base.Loading(this, false);
                        break;
                    case "Not Found":
                        MessageBox.Show("گالری با نام موردنظر جهت حذف یافت نشد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("GoogleErase", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("GoogleErase", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("GoogleErase", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("GoogleErase", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void ContactListCompleted(Object sender, krw.ContactListCompletedEventArgs Completed)
        {
            try
            {
                DataTable result = Completed.Result;

                using (frmContactList frm = new frmContactList())
                {
                    frm.cList = result;
                    frm.ShowDialog(this);

                    if (frm.hasChanged)
                    {
                        cList = frm.cList;
                        SendRequest("ContactListCatchChanges");
                    }
                    else
                        Base.Loading(this, false);
                }
            }
            catch (SoapException ex)
            {
                TryRequest("ContactList", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("ContactList", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
 private void ContactListCatchChangesCompleted(Object sender, krw.ContactListCatchChangesCompletedEventArgs Completed)
 {
     try
     {
         string result = Completed.Result;
         switch (result)
         {
             case "Catched":
                 MessageBox.Show("ليست تماس ها با موفقيت ذخيره شد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                 cList = new DataTable();
                 Base.Loading(this, false);
                 break;
             case "Can't Clean Table":
                 TryRequest("ContactListCatchChanges", "در حال حاضر سرور قادر به ذخيره تغييرات مربوط به ليست تماس ها نمي باشد");
                 break;
             case Base.srvMsgDSReject:
                 TryRequest("ContactListCatchChanges", Base.errDSReject);
                 break;
             case Base.srvMsgInvalidLegal:
                 MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                 DoExit();
                 break;
             default:
                 TryRequest("ContactListCatchChanges", result);
                 break;
         }
     }
     catch (SoapException ex)
     {
         TryRequest("ContactListCatchChanges", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     catch (Exception ex)
     {
         TryRequest("ContactListCatchChanges", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     finally
     {
     }
 }
        private void ServerPageGetCompleted(Object sender, krw.ServerPageGetCompletedEventArgs Completed)
        {
            try
            {
                string result = Zipper.DecompressToStrng(Completed.Result);

                switch (result.Substring(0, Base.srvMsgLen))
                {
                    case Base.srvMsgSuccess:
                        result = result.Substring(Base.srvMsgLen);

                        int pos1 = -1;
                        int pos2 = 0;
                        string src = "src=\"";

                        while (true)
                        {
                            pos1 = result.IndexOf(src, pos2) + src.Length;
                            if (pos1 != src.Length - 1)
                            {
                                pos2 = result.IndexOf("\"", pos1);

                                if (result.IndexOf("http://", pos1, pos2 - pos1) != -1)
                                    continue;

                                result = result.Insert(pos1, Base.url);
                            }
                            else
                                break;
                        }

                        if (result == string.Empty)
                            result = "<p>&nbsp;</p>";


                        //flvObect Section

                        pos1 = -1;
                        pos2 = 0;
                        
                        if (result.ToLower().Contains("<div"))
                        {
                            int p1 = -1;
                            int p2 = -1;

                            string flvObjectId = string.Empty;

                            while (true)
                            {
                                pos1 = result.ToLower().IndexOf("<div");
                                if (pos1 == -1)
                                    break;
                                pos2 = result.ToLower().IndexOf("</div>", pos1) + "</div>".Length;
                                if (pos2 == -1)
                                    break;

                                string swf = result.Substring(pos1, pos2 - pos1);

                                if (swf.Contains(".flv"))
                                {
                                    p1 = swf.IndexOf("id=\"") + "id=\"".Length;
                                    p2 = swf.IndexOf("\"", p1);

                                    flvObjectId = swf.Substring(p1, p2 - p1);

                                    result = result.Remove(pos1, pos2 - pos1);
                                    result = result.Insert(pos1, string.Format(Base.flvObject, flvObjectId));
                                }
                            }
                        }
                        
                        //end flvObect Section


                        string start = "<!DOCTYPE html PUBLIC \" -//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"fa\" xml:lang=\"fa\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title></title></head><style type=\"text/css\">html, body {direction: rtl; text-align: justify; font-family: Tahoma; line-height: 33px;}</style><body>";
                        string stop = "</body></html>";
                        editor.Document.Write(string.Empty);
                        editor.DocumentText = start + result + stop;
                        editor.Tick += new Editor.TickDelegate(editor_Tick);

                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgErr:
                        //An erorr ocurred
                        result = result.Substring(Base.srvMsgLen);
                        if (result == Base.srvMsgInvalidLegal)
                        {
                            MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                            DoExit();
                        }
                        else
                        {
                            TryRequest("ServerPageGet", result);
                            return;
                        }
                        break;
                    default:
                        break;
                }
                SetEditorMnuState(true);
            }
            catch (SoapException ex)
            {
                TryRequest("ServerPageGet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("ServerPageGet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void ServerPageSetCompleted(Object sender, krw.ServerPageSetCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;

                switch (result)
                {
                    case "Saved":
                        hasChanges = false;
                        DocClose();
                        MessageBox.Show("تغييرات با موفقيت اعمال شد", "ويرايشگر صفحات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        MessageBox.Show(Base.errPrefix + Base.errDSReject, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("ServerPageSet", result);
                        break;
                }
            }
            catch (IOException ex)
            {
                MessageBox.Show(Base.errPrefix + ex.Message, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                Base.Loading(this, false);
            }
            catch (SoapException ex)
            {
                TryRequest("ServerPageSet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("ServerPageSet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void NodesAllTreesCompleted(Object sender, krw.NodesAllTreesCompletedEventArgs Completed)
        {
            try
            {
                DataSet ds = Completed.Result;

                RegenMenu(mItemOpenPersian, ds.Tables["pagesfa"], Base.rootTitleFa);
                RegenMenu(mItemOpenEnglish, ds.Tables["pagesen"], Base.rootTitleEn);
                RegenMenu(mItemOpenArabic, ds.Tables["pagesar"], Base.rootTitleAr);

                Base.Loading(this, false);
            }
            catch (SoapException ex)
            {
                TryRequest("NodesAllTrees", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("NodesAllTrees", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
 private void CleanAndRepairCompleted(Object sender, krw.CleanAndRepairCompletedEventArgs CleanAndRepairCompleted)
 {
     DoExit();
 }
 private void AdminPwGetCompleted(Object sender, krw.AdminPwGetCompletedEventArgs Completed)
 {
     try
     {
         string pw = Completed.Result;
         switch (pw.Substring(0, Base.srvMsgLen))
         {
             case Base.srvMsgSuccess:
                 pw = pw.Substring(Base.srvMsgLen);
                 Base.pw = pw;
                 if (pw != string.Empty)
                 {
                     using (frmPw dlg = new frmPw())
                     {
                         dlg.cboxCloseVisible = true;
                         dlg.ShowDialog(this);
                         if (dlg.isValid)
                             ShowGUI();
                         else
                             //Password is inavlid - User closed the form
                             ShutItDown();
                     }
                 }
                 else
                     ShowGUI();
                 break;
             case Base.srvMsgErr:
                 //An erorr ocurred
                 pw = pw.Substring(Base.srvMsgLen);
                 if (pw == Base.srvMsgInvalidLegal)
                 {
                     MessageBox.Show(this, Base.errPrefix + pw, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                     ShutItDown();
                 }
                 else
                 {
                     TryRequest("AdminPwGet", pw);
                     return;
                 }
                 break;
             default:
                 break;
         }
     }
     catch (SoapException ex)
     {
         TryRequest("AdminPwGet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     catch (Exception ex)
     {
         TryRequest("AdminPwGet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     finally
     {
     }
 }
 private void LogoUploadCompleted(Object sender, krw.LogoUploadCompletedEventArgs Completed)
 {
     try
     {
         string result = Completed.Result;
         switch (result)
         {
             case "OK":
                 MessageBox.Show("با موفقیت ارسال شد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
                 Base.Loading(this, false);
                 break;
             case Base.srvMsgDSReject:
                 TryRequest("LogoUpload", Base.errDSReject);
                 break;
             case Base.srvMsgInvalidLegal:
                 MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                 frm.DoExit();
                 break;
             default:
                 TryRequest("LogoUpload", result);
                 break;
         }
     }
     catch (SoapException ex)
     {
         TryRequest("LogoUpload", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     catch (Exception ex)
     {
         TryRequest("LogoUpload", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     finally
     {
     }
 }
        private void FilesListServerCompleted(Object sender, krw.FilesListServerCompletedEventArgs Completed)
        {
            try
            {
                string[][] files = Completed.Result;

                for (int i = 0; i < files.Length; i++)
                {
                    imglstServerFiles.Images.Add(ExtractIcon.GetIcon(files[i][0], false));
                    lstServerFiles.Items.Add(new ListViewItem(files[i], i));
                }

                RefreshFormStatus();

                Base.Loading(this, false);

                lstServerFiles.Focus();
            }
            catch (SoapException ex)
            {
                TryRequest("FilesListServer", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("FilesListServer", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void LogoDownloadCompleted(Object sender, krw.LogoDownloadCompletedEventArgs Completed)
        {
            try
            {
                try
                {
                    while (true)
                    {
                        DialogResult res = sfd.ShowDialog();

                        if (res == DialogResult.OK)
                        {
                            string filePath = sfd.FileName;
                            int backslash = filePath.LastIndexOf(Base.backslash);
                            string fileName = filePath.Substring(backslash + 1);
                            string path = filePath.Substring(0, backslash + 1);

                            int dot = fileName.LastIndexOf(".");
                            string ext = string.Empty;

                            if (dot != -1)
                            {
                                ext = fileName.Substring(dot).ToLower();
                            }

                            if (ext == ".png")
                            {
                                byte[] buffer = Completed.Result;

                                using (FileStream fs = new FileStream(filePath, FileMode.Create))
                                {
                                    fs.Write(buffer, 0, buffer.Length);
                                    fs.Close();
                                }

                                Base.RunExplorer(path);
                                break;
                            }
                            else
                                MessageBox.Show("فرمت تصویر قابل قبول نمی باشد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        }
                        else
                            break;
                    }
                    Base.Loading(this, false);
                }
                catch (IOException ex)
                {
                    MessageBox.Show(Base.errPrefix + ex.Message, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Base.Loading(this, false);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(Base.errPrefix + ex.Message, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Base.Loading(this, false);
                }
            }
            catch (SoapException ex)
            {
                TryRequest("LogoDownload", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("LogoDownload", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void FileDownloadCompleted(Object sender, krw.FileDownloadCompletedEventArgs Completed)
        {
            try
            {
                byte[][] result = Completed.Result;

                if (result.Length > 0)
                {
                    string path = string.Empty;
                    string[] files = { };

                    if (lstServerFiles.SelectedItems.Count == 1)
                    {
                        int pos = sfd.FileName.LastIndexOf(Base.backslash);
                        path = sfd.FileName.Substring(0, pos + 1);
                        files = new string[] { sfd.FileName.Substring(pos + 1) };
                    }
                    else if (lstServerFiles.SelectedItems.Count > 1)
                    {
                        path = fbd.SelectedPath;
                        path += path.EndsWith(Base.backslash) ? string.Empty : Base.backslash;

                        files = new string[lstServerFiles.SelectedItems.Count];
                        int i = -1;

                        foreach (ListViewItem item in lstServerFiles.SelectedItems)
                        {
                            files[++i] = item.Text;
                        }
                    }


                    byte[] buffer = { };

                    for (int i = 0; i < result.Length; i++)
                    {
                        buffer = result[i];

                        using (FileStream fs = new FileStream(path + files[i], FileMode.Create))
                        {
                            fs.Write(buffer, 0, buffer.Length);
                            fs.Close();
                        }
                    }

                    Base.RunExplorer(path);
                }

                Base.Loading(this, false);
            }
            catch (SoapException ex)
            {
                TryRequest("FileDownload", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("FileDownload", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void GoogleAddCompleted(Object sender, krw.GoogleAddCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "Added":
                        dgvGoogle.DataSource = null;
                        dtGoogle.Rows.Add(new string[] { inputBoxValue });
                        dtGoogle.AcceptChanges();
                        GoogleReDrawEveryThing();

                        Base.Loading(this, false);
                        break;
                    case "Already Exist":
                        MessageBox.Show(errDuplicateEmail, errDuplicateEmailHeader, MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("GoogleAdd", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("GoogleAdd", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("GoogleAdd", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("GoogleAdd", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
 private void FileEraseCompleted(Object sender, krw.FileEraseCompletedEventArgs Completed)
 {
     try
     {
         string result = Completed.Result;
         switch (result)
         {
             case "Erased!":
                 SendRequest("FilesListServer");
                 break;
             case Base.srvMsgInvalidLegal:
                 MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                 DoExit();
                 break;
             default:
                 TryRequest("FileErase", result);
                 break;
         }
     }
     catch (SoapException ex)
     {
         TryRequest("FileErase", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     catch (Exception ex)
     {
         TryRequest("FileErase", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     finally
     {
     }
 }
        private void PreferencesSetCompleted(Object sender, krw.PreferencesSetCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "OK":
                        switch ((string)themes.Tag)
                        {
                            case "MacOSXAqua":
                                frm.theme = SkinSoft.OSSkin.SkinStyle.MacOSXAqua;
                                break;
                            case "MacOSXBrushed":
                                frm.theme = SkinSoft.OSSkin.SkinStyle.MacOSXBrushed;
                                break;
                            case "MacOSXSilver":
                                frm.theme = SkinSoft.OSSkin.SkinStyle.MacOSXSilver;
                                break;
                            default:
                                break;
                        }
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("PreferencesSet", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        frm.DoExit();
                        break;
                    default:
                        TryRequest("PreferencesSet", result);
                        break;
                }

                Base.Loading(this, false);
            }
            catch (SoapException ex)
            {
                TryRequest("PreferencesSet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("PreferencesSet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
 private void WebsiteTitlesGetCompleted(Object sender, krw.WebsiteTitlesGetCompletedEventArgs Completed)
 {
     try
     {
         dtTitles = Completed.Result;
         RefreshWTitles();
         Base.Loading(this, false);
     }
     catch (SoapException ex)
     {
         TryRequest("WebsiteTitlesGet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     catch (Exception ex)
     {
         TryRequest("WebsiteTitlesGet", ex.Message + "\n\n" + ex.InnerException.Message);
     }
     finally
     {
     }
 }
        private void WatermarkStatusGetCompleted(Object sender, krw.WatermarkStatusGetCompletedEventArgs Completed)
        {
            try
            {
                chkWebsiteWatermark.Checked = Completed.Result;

                if (isLoaded)
                    Base.Loading(this, false);
                else
                    SendRequest("SpecRightClickGet");
            }
            catch (SoapException ex)
            {
                TryRequest("WatermarkStatusGet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("WatermarkStatusGet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void WebsiteTitlesChangeCompleted(Object sender, krw.WebsiteTitlesChangeCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "OK":
                        string cell = GetIDTitles();
                        dgvLogoTitles.DataSource = null;

                        DataRow dr;

                        for (int i = 0; i < dtTitles.Rows.Count; i++)
                        {
                            dr = dtTitles.Rows[i];
                            if (dr[0].ToString().Trim() == cell)
                            {
                                dr.BeginEdit();
                                dr[1] = inputBoxValue;
                                dr.EndEdit();
                                dr.AcceptChanges();
                                break;
                            }
                        }

                        RefreshWTitles();

                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("WebsiteTitlesChange", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        frm.DoExit();
                        break;
                    default:
                        TryRequest("WebsiteTitlesChange", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("WebsiteTitlesChange", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("WebsiteTitlesChange", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void CalendarAllCompleted(Object sender, krw.CalendarAllCompletedEventArgs Completed)
        {
            try
            {
                DataTable dt = Completed.Result;

                dt.Columns["day"].ColumnName = "روز";
                dt.Columns["month"].ColumnName = "ماه";
                dt.Columns["title"].ColumnName = "عنوان";

                switch (lang)
                {
                    case "calendarfa":
                        CalendarAllFillTable(dgvCalendar, dt);
                        break;
                    case "calendaren":
                        CalendarAllFillTable(dgvCalendarEn, dt);
                        break;
                    case "calendarar":
                        CalendarAllFillTable(dgvCalendarAr, dt);
                        break;
                    default:
                        break;
                }

                Base.Loading(this, false);
            }
            catch (SoapException ex)
            {
                TryRequest("CalendarAll", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("CalendarAll", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void ScrollTextGetCompleted(Object sender, krw.ScrollTextGetCompletedEventArgs Completed)
        {
            try
            {
                DataTable dt = Completed.Result;
                Array.Resize(ref scrollText, dt.Rows.Count);

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    scrollText[i] = dt.Rows[i][1].ToString().Replace("{SEPARATOR}", Base.nLine);
                }

                txtWebsiteScrText.Text = scrollText[cmbWebsiteScrLang.SelectedIndex].Trim();
                hasChanges = false;

                isLoaded = true;
                if (isLoaded)
                    Base.Loading(this, false);
            }
            catch (SoapException ex)
            {
                TryRequest("ScrollTextGet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("ScrollTextGet", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void CalendarGetBodyCompleted(Object sender, krw.CalendarGetBodyCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result.Substring(0, Base.srvMsgLen))
                {
                    case Base.srvMsgSuccess:
                        Base.Loading(this, false);

                        result = result.Substring(Base.srvMsgLen).Trim();

                        frm = new frmCalendarAddEdit();
                        frm.mode = "Edit";

                        DataGridView dgv = new DataGridView();

                        string[] mm = { };

                        switch (lang)
                        {
                            case "calendarfa":
                                mm = months;
                                dgv = dgvCalendar;
                                break;
                            case "calendaren":
                                mm = monthsEn;
                                dgv = dgvCalendarEn;
                                break;
                            case "calendarar":
                                mm = monthsAr;
                                dgv = dgvCalendarAr;
                                break;
                            default:
                                break;
                        }

                        int m = -1;
                        for (int i = 0; i < mm.Length; i++)
                        {
                            if (dgv.CurrentRow.Cells[0].Value.ToString().Trim() == mm[i].Trim())
                            {
                                m = i;
                                break;
                            }
                        }

                        frm.months = mm;
                        frm.returnMonth = m.ToString().Trim();

                        frm.returnDay = dgv.CurrentRow.Cells[1].Value.ToString().Trim();
                        frm.returnTitle = dgv.CurrentRow.Cells[2].Value.ToString().Trim();
                        frm.returnBody = result.Trim();

                        frm.ShowDialog(this);

                        if (!frm.wasCanceled)
                        {
                            SendRequest("CalendarEdit");
                        }
                        break;
                    case Base.srvMsgErr:
                        result = result.Substring(Base.srvMsgLen);

                        switch (result)
                        {
                            case "Not Found":
                                MessageBox.Show("رخدادی با عنوان موردنظر جهت ویرایش یافت نشد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                                Base.Loading(this, false);
                                break;
                            case Base.srvMsgInvalidLegal:
                                MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                                DoExit();
                                break;
                            default:
                                TryRequest("CalendarGetBody", result);
                                break;
                        }
                        break;
                    default:
                        TryRequest("CalendarGetBody", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("CalendarGetBody", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("CalendarGetBody", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void ScrollTextChangeCompleted(Object sender, krw.ScrollTextChangeCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "OK":
                        scrollText[cmbWebsiteScrLang.SelectedIndex] = txtWebsiteScrText.Text.Trim();

                        SetStateScrollText(true);

                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("ScrollTextChange", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        frm.DoExit();
                        break;
                    default:
                        TryRequest("ScrollTextChange", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("ScrollTextChange", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("ScrollTextChange", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void CalendarEraseCompleted(Object sender, krw.CalendarEraseCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "Erased":
                        MessageBox.Show("رخداد مورد نظر با موفقیت حذف شد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);

                        SendRequest("CalendarAll");

                        break;
                    case "Not Found":
                        MessageBox.Show("رخدادی با نام موردنظر جهت حذف یافت نشد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("CalendarErase", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("CalendarErase", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("CalendarErase", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("CalendarErase", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }
        private void NodesEditCompleted(Object sender, krw.NodesEditCompletedEventArgs Completed)
        {
            try
            {
                string result = Completed.Result;
                switch (result)
                {
                    case "Updated":
                        nodeServer.Text = nodeServerNew;
                        nodeServer.Name = nodeServerNew;

                        nodeServer.ExpandAll();

                        Base.Loading(this, false);
                        break;
                    case "Not Found":
                        MessageBox.Show("صفحه ای با نام موردنظر جهت ویرایش یافت نشد", Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case "Duplicate Error":
                        MessageBox.Show(errDuplicateNode, errDuplicateNodeHeader, MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
                        Base.Loading(this, false);
                        break;
                    case Base.srvMsgDSReject:
                        TryRequest("NodesEdit", Base.errDSReject);
                        break;
                    case Base.srvMsgInvalidLegal:
                        MessageBox.Show(Base.errPrefix + result, Base.msgTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        DoExit();
                        break;
                    default:
                        TryRequest("NodesEdit", result);
                        break;
                }
            }
            catch (SoapException ex)
            {
                TryRequest("NodesEdit", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                TryRequest("NodesEdit", ex.Message + "\n\n" + ex.InnerException.Message);
            }
            finally
            {
            }
        }