private void generateMessageBarAndAnimate(string message, MessageDB msgList, UserDB contact, bool shutUp = false)
        {
            //RunOnUiThread (delegate {
            bool rpong = false;
            if (shutUp != true) {
                AudioPlayer ap = new AudioPlayer (context);
                Android.Content.Res.AssetManager am = this.Assets;
                ap.playFromAssets (am, "incoming.mp3");
            }
            Guid grabGuid = Guid.Empty;
            RunOnUiThread (() => messageBar.SetPadding ((int)ImageHelper.convertDpToPixel (5f, context), 0, (int)ImageHelper.convertDpToPixel (5f, context),
                                                        (int)ImageHelper.convertDpToPixel (10f, context)));

            int leftOver = Convert.ToInt32 (wowZapp.LaffOutOut.Singleton.ScreenXWidth - (picSize + 40));
            LinearLayout.LayoutParams layParams;
            if (contact == null)
                throw new Exception ("Contact is null in generateMessageBarAndAnimate");

            ImageView profilePic = new ImageView (context);
            using (layParams = new LinearLayout.LayoutParams (picSize, picSize)) {
                layParams.SetMargins ((int)ImageHelper.convertDpToPixel (15f, context), (int)ImageHelper.convertDpToPixel (20f, context), 0, 0);
                profilePic.LayoutParameters = layParams;
            }
            profilePic.SetBackgroundResource (Resource.Drawable.defaultuserimage);
            profilePic.Tag = new Java.Lang.String ("profilepic_" + contact.AccountID);

            RunOnUiThread (() => messageBar.AddView (profilePic));

            if (Contacts.ContactsUtil.contactFilenames.Contains (contact.AccountGuid)) {
                rpong = true;
                using (Bitmap bm = BitmapFactory.DecodeFile (System.IO.Path.Combine (wowZapp.LaffOutOut.Singleton.ImageDirectory, contact.AccountGuid))) {
                    using (MemoryStream ms = new MemoryStream ()) {
                        bm.Compress (Bitmap.CompressFormat.Jpeg, 80, ms);
                        byte[] image = ms.ToArray ();
                        displayImage (image, profilePic);
                    }
                }
            } else {
                if (contact.Picture.Length == 0)
                    grabGuid = contact.AccountID;
                else {
                    if (contact.Picture.Length > 0)
                        loadProfilePicture (contact, profilePic);
                }
            }

            LinearLayout fromTVH = new LinearLayout (context);
            fromTVH.Orientation = Orientation.Vertical;
            fromTVH.LayoutParameters = new ViewGroup.LayoutParams (LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.FillParent);

            float textNameSize = wowZapp.LaffOutOut.Singleton.resizeFonts == true ? (int)ImageHelper.convertPixelToDp (((25 * picSize) / 100), context) : 16f;
            TextView textFrom = new TextView (context);
            using (layParams = new LinearLayout.LayoutParams (leftOver, (int)textNameSize)) {
                layParams.SetMargins ((int)ImageHelper.convertDpToPixel (9.3f, context), (int)ImageHelper.convertPixelToDp (textNameSize - 1, context), 0, 0);
                textFrom.LayoutParameters = layParams;
            }
            float fontSize = wowZapp.LaffOutOut.Singleton.resizeFonts == true ? ImageHelper.convertPixelToDp (((12 * picSize) / 100), context) : ImageHelper.convertPixelToDp (14f, context);
            textFrom.SetTextSize (Android.Util.ComplexUnitType.Dip, fontSize);

            textFrom.SetTextColor (Color.Black);
            if (contact != null)
                textFrom.Text = contact.FirstName + " " + contact.LastName;
            else
                textFrom.Text = "Ann Onymouse";
            RunOnUiThread (() => fromTVH.AddView (textFrom));

            float textMessageSize = wowZapp.LaffOutOut.Singleton.resizeFonts == true ? ImageHelper.convertPixelToDp (((70 * picSize) / 100), context) : ImageHelper.convertDpToPixel (39f, context);
            TextView textMessage = new TextView (context);
            using (layParams = new LinearLayout.LayoutParams (leftOver, (int)textMessageSize)) {
                layParams.SetMargins ((int)ImageHelper.convertDpToPixel (10f, context), 0, (int)ImageHelper.convertDpToPixel (10, context), 0);
                textMessage.LayoutParameters = layParams;
            }
            float fontSize2 = wowZapp.LaffOutOut.Singleton.resizeFonts == true ? ImageHelper.convertPixelToDp (((12 * picSize) / 100), context) : ImageHelper.convertPixelToDp (16f, context);
            textMessage.SetTextSize (Android.Util.ComplexUnitType.Dip, fontSize2);
            textMessage.SetTextColor (Color.White);

            textMessage.SetPadding ((int)ImageHelper.convertDpToPixel (20f, context), 0, (int)ImageHelper.convertDpToPixel (10f, context), 0);
            if (!string.IsNullOrEmpty (message))
                textMessage.SetBackgroundResource (Resource.Drawable.bubblesolidleft);
            textMessage.Text = message != string.Empty ? message : "";
            textMessage.ContentDescription = msgList.MessageGuid;
            textMessage.Click += new EventHandler (textMessage_Click);
            RunOnUiThread (() => fromTVH.AddView (textMessage));
            //}

            if (msgList != null) {
                LinearLayout messageItems = new LinearLayout (context);
                messageItems.Orientation = Orientation.Horizontal;
                float messageBarSize = wowZapp.LaffOutOut.Singleton.resizeFonts == true ? ImageHelper.convertPixelToDp (((35 * picSize) / 100), context) : ImageHelper.convertDpToPixel (40f, context);
                using (layParams = new LinearLayout.LayoutParams (leftOver, (int)messageBarSize)) {
                    layParams.SetMargins ((int)ImageHelper.convertDpToPixel (14f, context), (int)ImageHelper.convertDpToPixel (3.3f, context), (int)ImageHelper.convertDpToPixel (12.7f, context), (int)ImageHelper.convertDpToPixel (4f, context));
                    messageItems.LayoutParameters = layParams;
                }
                messageItems.SetPadding ((int)ImageHelper.convertDpToPixel (10f, context), (int)ImageHelper.convertDpToPixel (3.3f, context), (int)ImageHelper.convertDpToPixel (10f, context), 0);
                messageItems.SetGravity (GravityFlags.Left);
                messageItems = createMessageBar (messageItems, msgList, leftOver);
                RunOnUiThread (() => fromTVH.AddView (messageItems));
            }

            RunOnUiThread (() => messageBar.AddView (fromTVH));

            RunOnUiThread (delegate {
                hsv.RemoveAllViews ();
                hsv.AddView (messageBar);
            });

            if (grabGuid != null) {
                LOLConnectClient service = new LOLConnectClient (LOLConstants.DefaultHttpBinding, LOLConstants.LOLConnectEndpoint);
                service.UserGetImageDataCompleted += Service_UserGetImageDataCompleted;
                service.UserGetImageDataAsync (AndroidData.CurrentUser.AccountID, grabGuid, new Guid (AndroidData.ServiceAuthToken));
            }
            //});
            RunOnUiThread (delegate {
                Handler handler = new Handler ();
                handler.PostDelayed (new Action (() =>
                {
                    hsv.SmoothScrollTo (newX, 0);
                }), 2000);
            });
        }