private void bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            SnippetSaveResult sresult = new SnippetSaveResult();
            sresult.id = -1;
            sresult.validity = SnippetWrongField.OK;
            sresult.targetGroupId = -1;

            SnippetClient mysnippet = e.Argument as SnippetClient;

            if (mysnippet != null)
            {
                // check if snippet is valid
                sresult.validity = mysnippet.AreFieldsValid();
                if (sresult.validity == SnippetWrongField.OK)
                {
                    SnippetsWS s_snippetRepo = new SnippetsWS();

                    // save it
                    sresult.id = s_snippetRepo.SaveSnippet(mysnippet);
                    if (sresult.id <= 0)
                    {
                        try
                        {
                            sresult.errorMsg = Utilities.GetResourceLocalizedMsg<ErrorCodes>(s_snippetRepo.LastErrorCode);
                        }
                        catch (Exception)
                        {
                            sresult.errorMsg = null;
                        }
                        if (string.IsNullOrEmpty(sresult.errorMsg))
                            sresult.errorMsg = Properties.Resources.ErrorCodes_UNKNOWN;
                    }
                    else
                    {
                        sresult.targetGroupId = mysnippet.TargetGroupID;
                    }
                }
            }

            e.Result = sresult;
        }