/// <summary>
        /// Deletes and removes specified users default folder from collection.
        /// </summary>
        /// <param name="folder">UsersDefaultFolder to delete.</param>
        public void Remove(UsersDefaultFolder folder)
        {
            /* DeleteUsersDefaultFolder <virtualServerID> "<folderName>"
             *    Responses:
             +OK
             *      -ERR <errorText>
             */

            if (folder.FolderName.ToLower() == "inbox")
            {
                throw new Exception("Inbox is permanent system folder and can't be deleted ! '");
            }

            string id = Guid.NewGuid().ToString();

            // Call TCP DeleteGroup
            m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("DeleteUsersDefaultFolder " +
                                                                  m_pVirtualServer.VirtualServerID + " " +
                                                                  TextUtils.QuoteString(folder.FolderName)
                                                                  );

            string response = m_pVirtualServer.Server.ReadLine();

            if (!response.ToUpper().StartsWith("+OK"))
            {
                throw new Exception(response);
            }

            m_pFolders.Remove(folder);
        }
        /// <summary>
        /// Deletes and removes specified users default folder from collection.
        /// </summary>
        /// <param name="folder">UsersDefaultFolder to delete.</param>
        public void Remove(UsersDefaultFolder folder)
        {
            /* DeleteUsersDefaultFolder <virtualServerID> "<folderName>"
                  Responses:
                    +OK                     
                    -ERR <errorText>
            */

            if(folder.FolderName.ToLower() == "inbox"){
                throw new Exception("Inbox is permanent system folder and can't be deleted ! '");                
            }

            string id = Guid.NewGuid().ToString();

            // Call TCP DeleteGroup
            m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("DeleteUsersDefaultFolder " + 
                m_pVirtualServer.VirtualServerID + " " + 
                TextUtils.QuoteString(folder.FolderName)
            );
                        
            string response = m_pVirtualServer.Server.ReadLine();
            if(!response.ToUpper().StartsWith("+OK")){
                throw new Exception(response);
            }

            m_pFolders.Remove(folder);
        }
        /// <summary>
        /// Creates and adds new users default folder into collection.
        /// </summary>
        /// <param name="folderName">Folder name.</param>
        /// <param name="permanent">Specifies if folder is permanent (User can't delete it).</param>
        public UsersDefaultFolder Add(string folderName, bool permanent)
        {
            /* AddUsersDefaultFolder <virtualServerID> "<folderName>" <permanent>
             *    Responses:
             +OK
             *      -ERR <errorText>
             */

            if (folderName.IndexOfAny(new char[] { '\\', '/' }) > -1)
            {
                throw new Exception("Folders with path not allowed !");
            }

            string id = Guid.NewGuid().ToString();

            // Call TCP AddUsersDefaultFolder
            m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("AddUsersDefaultFolder " +
                                                                  m_pVirtualServer.VirtualServerID + " " +
                                                                  TextUtils.QuoteString(folderName) + " " +
                                                                  permanent
                                                                  );

            string response = m_pVirtualServer.Server.ReadLine();

            if (!response.ToUpper().StartsWith("+OK"))
            {
                throw new Exception(response);
            }

            UsersDefaultFolder folder = new UsersDefaultFolder(this, folderName, permanent);

            m_pFolders.Add(folder);
            return(folder);
        }
        /// <summary>
        /// Creates and adds new users default folder into collection.
        /// </summary>
        /// <param name="folderName">Folder name.</param>
        /// <param name="permanent">Specifies if folder is permanent (User can't delete it).</param>
        public UsersDefaultFolder Add(string folderName,bool permanent)
        {
            /* AddUsersDefaultFolder <virtualServerID> "<folderName>" <permanent>
                  Responses:
                    +OK                     
                    -ERR <errorText>
            */

            if(folderName.IndexOfAny(new char[]{'\\','/'}) > -1){
                throw new Exception("Folders with path not allowed !");
            }

            string id = Guid.NewGuid().ToString();

            // Call TCP AddUsersDefaultFolder
            m_pVirtualServer.Server.TcpClient.TcpStream.WriteLine("AddUsersDefaultFolder " + 
                m_pVirtualServer.VirtualServerID + " " + 
                TextUtils.QuoteString(folderName) + " " +
                permanent
            );
                        
            string response = m_pVirtualServer.Server.ReadLine();
            if(!response.ToUpper().StartsWith("+OK")){
                throw new Exception(response);
            }

            UsersDefaultFolder folder = new UsersDefaultFolder(this,folderName,permanent);
            m_pFolders.Add(folder);
            return folder;
        }