disableSerialization;
_dsp = uiNamespace getVariable ["RscDisplayVEMFrClient", displayNull];
if not isNull _dsp then
   {
      if (count (uiNamespace getVariable ["VEMFrMsgQueue", []]) isEqualTo 0) then
         {
            (["RscDisplayVEMFrClient"] call BIS_fnc_rscLayer) cutFadeOut 0;
            systemChat "[VEMFrClient] No messages to display";
         } else
         {
            playSound "HintExpand";
            // do stuff
            _ctrlPic = _dsp displayCtrl 10;
            _ctrlTitle = _dsp displayCtrl 11;
            _ctrlMsg = _dsp displayCtrl 12;
            {
               [_dsp, _x] spawn
               {
                  disableSerialization;
                  _dsp = _this select 0;
                  _data = _this select 1;
                  _ctrlPic = _dsp displayCtrl 10;
                  if (ctrlFade _ctrlPic < 1) then
                     {
                        _ctrlPic ctrlSetFade 1;
                        _ctrlPic ctrlCommit 0.5;
                        uiSleep 0.75;
                     };
                  _ctrlPic ctrlSetTextColor call
                     {
                        private ["_return"];
                        if (_data select 0 isEqualTo 0) then
                           {
                              _return = [0.5,0,0,1];
                           };
                        if (_data select 0 isEqualTo 1) then
                           {
                              _return = [0,0.3,0.6,1];
                           };
                        if (_data select 0 isEqualTo 2) then
                           {
                              _return = [0,0,0,1];
                           };
                        if isNil"_return" then
                           {
                              _return = [1,1,1,1];
                           };
                        _return
                     };
                  _ctrlPic ctrlSetFade 0;
                  _ctrlPic ctrlCommit 0.5;
               };

               if (_ctrlTitle getVariable ["expanded",false] AND _ctrlMsg getVariable ["expanded", false]) then
                  {
                     _ctrlPos = ctrlPosition _ctrlTitle;
                     _ctrlTitle ctrlSetPosition [_ctrlPos select 0, _ctrlPos select 1, 0 * safezoneW, _ctrlPos select 3];
                     _ctrlTitle ctrlSetFade 1;
                     _ctrlTitle ctrlCommit 0.5;
                     _ctrlTitle setVariable ["expanded", false];
                     uiSleep 0.75;
                     _ctrlTitle ctrlSetText toUpper (_x select 1);
                     _ctrlPos = ctrlPosition _ctrlTitle;
                     _ctrlTitle ctrlSetPosition [_ctrlPos select 0, _ctrlPos select 1, 0.1 * safezoneW, _ctrlPos select 3];
                     _ctrlTitle ctrlSetFade 0;
                     _ctrlTitle ctrlCommit 0.5;
                     _ctrlTitle setVariable ["expanded", true];

                     _ctrlPos = ctrlPosition _ctrlMsg;
                     _ctrlMsg ctrlSetPosition [_ctrlPos select 0, _ctrlPos select 1, 0 * safezoneW, _ctrlPos select 3];
                     _ctrlMsg ctrlSetFade 1;
                     _ctrlMsg ctrlCommit 0.5;
                     _ctrlMsg setVariable ["expanded", false];
                     uiSleep 0.75;
                     _ctrlMsg ctrlSetText (_x select 2);
                     _ctrlPos = ctrlPosition _ctrlMsg;
                     _ctrlMsg ctrlSetPosition [_ctrlPos select 0, _ctrlPos select 1, 0.45 * safezoneW, _ctrlPos select 3];
                     _ctrlMsg ctrlSetFade 0;
                     _ctrlMsg ctrlCommit 0.5;
                     _ctrlMsg setVariable ["expanded", true];

                     uiSleep (count (_x select 2) / 5);
                  } else
                  {
                     _ctrlTitle ctrlSetText toUpper (_x select 1);
                     _ctrlPos = ctrlPosition _ctrlTitle;
                     _ctrlTitle ctrlSetPosition [_ctrlPos select 0, _ctrlPos select 1, 0.1 * safezoneW, _ctrlPos select 3];
                     _ctrlTitle ctrlSetFade 0;
                     _ctrlTitle ctrlCommit 0.5;
                     _ctrlTitle setVariable ["expanded", true];

                     _ctrlMsg ctrlSetText (_x select 2);
                     _ctrlPos = ctrlPosition _ctrlMsg;
                     _ctrlMsg ctrlSetPosition [_ctrlPos select 0, _ctrlPos select 1, 0.45 * safezoneW, _ctrlPos select 3];
                     _ctrlMsg ctrlSetFade 0;
                     _ctrlMsg ctrlCommit 0.5;
                     _ctrlMsg setVariable ["expanded", true];

                     uiSleep (count (_x select 2) / 5);
                  };
            } forEach (uiNamespace getVariable ["VEMFrMsgQueue",[]]);
            uiNamespace setVariable ["VEMFrMsgQueue", []];
            (["RscDisplayVEMFrClient"] call BIS_fnc_rscLayer) cutFadeOut 0.5;
         };
   } else
   {
      systemChat "Nope.";
   };

//(uiNamespace getVariable ["VEMFrMsgQueue", []]) pushBack ["title","message"];
