protected bool SaveModel(int saveMode, string name, bool showMessage)
    {
        string currDbDir = GetDirectory() + userDir;
        string modelDir  = currDbDir + MODELS + "\\";
        string modelName = modelDir + name;
        string modelInitialName;
        string originalModel = Master.GetCurrentModel();

        if (saveMode == SaveMode.CURRENT_MODEL || saveMode == SaveMode.RENAME_MODEL)
        {
            modelInitialName = modelDir + CURRENT_DATABASE;
            {
                ClassF classF = new ClassF(GetDirectory() + userDir);
                classF.Open();
                classF.eliminate_nulls0();
                classF.check_dock_stock();
                //classF.checkDOCKSTOCK();
                //classF.clear_all_id_name_flags(); ????? CANNOT FIND
                classF.set_ids2names();
                classF.Close();
            }
        }
        else if (saveMode == SaveMode.NEW_MODEL)
        {
            modelInitialName = modelDir + NEW_MODEL_DATABASE;
        }
        string message = "Model '" + name + "'";

        try {
            if (saveMode == SaveMode.NEW_MODEL)
            {
                if (!File.Exists(currDbDir + NEW_MODEL_DATABASE))
                {
                    File.Copy(GetDirectory() + NEW_MODEL_DATABASE, currDbDir + NEW_MODEL_DATABASE, true);
                }
                File.Copy(currDbDir + NEW_MODEL_DATABASE, modelName, true); // save the model
                message += " was created ";
                //File.Move(modelInitialName, modelName);
            }
            else
            {
                if (saveMode == SaveMode.CURRENT_MODEL)
                {
                    File.Copy(currDbDir + CURRENT_DATABASE, modelName, true); // save the model
                }
                else if (saveMode == SaveMode.RENAME_MODEL)
                {
                    File.Copy(currDbDir + CURRENT_DATABASE, modelName, true); // save the model
                    File.Delete(modelDir + originalModel);                    // delete the original model
                }
                message += " saved successfuly.";
            }
            SetModelModified(false);
        } catch (Exception ex) {
            logFiles.ErrorLog(ex);
            if (showMessage)
            {
                message += " could not save. ";
                Master.ShowErrorMessage("An error has occured." + message);
            }
            return(false);
        }
        CleanUpAfterSave(saveMode, originalModel, name, message, showMessage);
        return(true);
    }