public void ShowActionSheet(FresviiGUICommentCard card)
        {
            HasPopUp = true;

            List<string> buttons = new List<string>();

            if (!string.IsNullOrEmpty(card.Comment.Text))
            {
                buttons.Add(FresviiGUIText.Get("CopyText"));
            }

            if(card.ClipImage != null)
            {
                buttons.Add(FresviiGUIText.Get("SaveImage"));
            }

            if (card.IsMine())
            {
                buttons.Add(FresviiGUIText.Get("EditText"));

                if (card.ClipImage != null)
                {
                    buttons.Add(FresviiGUIText.Get("ChangeImageFromLibrary"));

                    buttons.Add(FresviiGUIText.Get("ChangeImageFromCamera"));
                }
                else
                {
                    buttons.Add(FresviiGUIText.Get("AddImageFromLibrary"));

                    buttons.Add(FresviiGUIText.Get("AddImageFromCamera"));
                }

                if (card.Comment.Id != Thread.Comment.Id)
                {
                    buttons.Add(FresviiGUIText.Get("Delete"));
                }
            }

            if (!string.IsNullOrEmpty(card.IncludingUrl))
            {
                buttons.Add(FresviiGUIText.Get("OpenLink"));
            }

            buttons.Add(FresviiGUIText.Get("Report"));

            actionSheet = Fresvii.AppSteroid.Gui.ActionSheet.Show(scaleFactor, postFix, this.GuiDepth - 30, buttons.ToArray(), (selectedButton) =>
            {
                HasPopUp = false;

                if (selectedButton == FresviiGUIText.Get("CopyText")) // copy
                {
            #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IOS)
                    Fresvii.AppSteroid.Util.Clipboard.SetText(card.Comment.Text);
            #endif
                }
                else if (selectedButton == FresviiGUIText.Get("SaveImage"))
                {
                    Fresvii.AppSteroid.Util.ImagePicker.SaveImageData(this, card.ClipImage.EncodeToPNG(), System.IO.Path.GetFileName(card.Comment.ImageThumbnailUrl));
                }
                else if (selectedButton == FresviiGUIText.Get("EditText")) // edit
                {
                    FASGesture.Pause();

                    GetComponent<FresviiGUIPopUpTextInput>().Show(card.Comment.Text, true, delegate(string text)
                    {
                        FASGesture.Resume();

                        string origText = card.Comment.Text;

                        card.Comment.Text = text;

                        threadBottomMenu.ClearTextInputField();

                        FASForum.EditComment(card.Comment.Id, text, "", delegate(Fresvii.AppSteroid.Models.Comment comment, Fresvii.AppSteroid.Models.Error error)
                        {
                            if (error == null)
                            {
                                card.Comment = comment;
                            }
                            else if (error.Code == (int)Fresvii.AppSteroid.Models.Error.ErrorCode.WWWTimeOut)
                            {
                                if (this != null && this.gameObject != null)
                                {
                                    if (this.gameObject.activeInHierarchy && this.enabled)
                                    {
                                        Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                                        Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("TimeOut"), delegate(bool del) { });
                                    }
                                }
                            }
                            else if (error.Code == (int)Fresvii.AppSteroid.Models.Error.ErrorCode.NotFound || (Application.platform == RuntimePlatform.Android && error.Detail.IndexOf("FileNotFound") >= 0))
                            {
                                Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                                Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("ThreadNone"), delegate(bool del) { });

                                threadCard.DeleteThreadNonConfirm();
                            }
                            else
                            {
                                Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                                Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("CommentCreateError"), delegate(bool del) { });

                                card.Comment.Text = origText;
                            }
                        });
                    });
                }
                else if (selectedButton == FresviiGUIText.Get("ChangeImageFromLibrary") || selectedButton == FresviiGUIText.Get("ChangeImageFromCamera")
                    || selectedButton == FresviiGUIText.Get("AddImageFromLibrary") || selectedButton == FresviiGUIText.Get("AddImageFromCamera"))
                {
                    Fresvii.AppSteroid.Util.ImagePicker.Type type = (selectedButton == FresviiGUIText.Get("ChangeImageFromLibrary") || selectedButton == FresviiGUIText.Get("AddImageFromLibrary")) ? Fresvii.AppSteroid.Util.ImagePicker.Type.Gallery : Fresvii.AppSteroid.Util.ImagePicker.Type.Camera;

                    Fresvii.AppSteroid.Util.ImagePicker.Show(this, type, (image) =>
                    {
                        Texture2D origImage = card.ClipImage;

                        if (image != null)
                        {
                            card.ClipImage = image;

                            FASForum.EditComment(card.Comment.Id, "", image, (comment, error) =>
                            {
                                if (error == null)
                                {
                                    if (!string.IsNullOrEmpty(card.Comment.ImageThumbnailUrl))
                                    {
                                        FresviiGUIManager.Instance.resourceManager.ReleaseTexture(card.Comment.ImageThumbnailUrl);
                                    }

                                    card.Comment = comment;
                                }
                                else if (error.Code == (int)Fresvii.AppSteroid.Models.Error.ErrorCode.WWWTimeOut)
                                {
                                    if (this != null && this.gameObject != null)
                                    {
                                        if (this.gameObject.activeInHierarchy && this.enabled)
                                        {
                                            Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                                            Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("TimeOut"), delegate(bool del) { });
                                        }
                                    }
                                }
                                else if (error.Code == (int)Fresvii.AppSteroid.Models.Error.ErrorCode.NotFound || (Application.platform == RuntimePlatform.Android && error.Detail.IndexOf("FileNotFound") >= 0))
                                {
                                    Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                                    Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("ThreadNone"), delegate(bool del) { });

                                    threadCard.DeleteThreadNonConfirm();
                                }
                                else
                                {
                                    Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                                    Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("CommentEditError"), delegate(bool del) { });

                                    card.ClipImage = origImage;
                                }
                            });
                        }
                    });
                }
                else if (selectedButton == FresviiGUIText.Get("Delete"))
                {
                    Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("Delete"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                    Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSelectDialog(FresviiGUIText.Get("ConfirmDeleteComment"), delegate(bool del)
                    {
                        if (del)
                        {
                            if (threadCard.Thread.CommentCount >= 1)
                            {
                                threadCard.Thread.CommentCount -= 1;
                            }

                            card.DeleteCard();
                        }
                    });
                }
                else if(selectedButton == FresviiGUIText.Get("Report"))
                {
                    StartCoroutine(ReportDelay(card.Comment.Id));
                }
                else if (selectedButton == FresviiGUIText.Get("OpenLink"))
                {
                    Application.OpenURL(card.IncludingUrl);
                }

            });

            FASGesture.Stop();
        }
        public void Report(string commentId)
        {
            HasPopUp = true;

            List<string> buttons = new List<string>();

            foreach (ForumService.ReportKind kind in System.Enum.GetValues(typeof(ForumService.ReportKind)))
            {
                buttons.Add(FresviiGUIText.Get(kind.ToString()));
            }

            actionSheetReport = Fresvii.AppSteroid.Gui.ActionSheet.Show(scaleFactor, postFix, this.GuiDepth - 30, buttons.ToArray(), (selectedButton) =>
            {
                HasPopUp = false;

                for (int i = 0; i < buttons.Count; i++)
                {
                    if (selectedButton == FresviiGUIText.Get(((ForumService.ReportKind)i).ToString()))
                    {
                        FASForum.ReportComment(commentId, (ForumService.ReportKind)i, "", (comment, error) =>
                        {
                            if (error != null && error.Code != 402)
                            {
                                Debug.LogError("ReportComment :" + error.ToString());

                                Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("UnknownError"), FresviiGUIText.Get("OK"), FresviiGUIText.Get("OK"), FresviiGUIText.Get("OK"), (del) => { });
                            }
                            else
                            {
                                Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("ReportSent"), FresviiGUIText.Get("OK"), FresviiGUIText.Get("OK"), FresviiGUIText.Get("OK"), (del) => { });
                            }

                        });

                        return;
                    }
                }
            });
        }
        void OnGUI()
        {
            GUI.depth = GuiDepth;

            GUI.DrawTextureWithTexCoords(menuRect, palette, texCoordsMenu);

            GUI.DrawTextureWithTexCoords(new Rect(menuRect.x, menuRect.y - 1, Screen.width, 1), palette, texCoordsBorderLine);

            GUI.BeginGroup(menuRect);

            Event e = Event.current;

            if (!imageLoading)
            {
                if (clipImage == null)
                {
                    GUI.DrawTexture(addButtonPosition, addButton, ScaleMode.ScaleToFit);
                }
                else
                {
                    GUI.DrawTexture(addButtonPosition, clipImage, ScaleMode.ScaleAndCrop);
                }
            }

            if (!imageLoading)
            {
                if (GUI.Button(addButtonHitPosition, "", GUIStyle.none) && !parentFrame.ControlLock)
                {
                    if (!sendEnableAtAction)
                    {
                        Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                        Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(sendUnableAtActionMessage, delegate(bool del) { });
                    }
                    else
                    {

                        List<string> buttons = new List<string>();

                        buttons.Add(FresviiGUIText.Get("TakePhoto"));

                        buttons.Add(FresviiGUIText.Get("ChoosePhoto"));

                        buttons.Add(FresviiGUIText.Get("ChooseMovie"));

                        if (clipImage != null)
                            buttons.Add(FresviiGUIText.Get("CancelPhoto"));

                        if (video != null)
                        {
                            buttons.Add(FresviiGUIText.Get("CancelVideo"));
                        }

                        actionSheet = Fresvii.AppSteroid.Gui.ActionSheet.Show(scaleFactor, postFix, this.GuiDepth - 10, buttons.ToArray(), (selectedButton) =>
                        {
                            if (selectedButton == FresviiGUIText.Get("TakePhoto")) // TakePhoto
                            {
                                imageLoading = true;

                                loadingSpinnerPosition = new Rect(menuRect.x + addButtonPosition.x, menuRect.y + addButtonPosition.y, addButtonPosition.width, addButtonPosition.height);

                                loadingSpiner = Fresvii.AppSteroid.Gui.LoadingSpinner.Show(loadingSpinnerPosition, GUI.depth);

                                Fresvii.AppSteroid.Util.ImagePicker.Show(this, Fresvii.AppSteroid.Util.ImagePicker.Type.Camera, delegate(Texture2D loadedTexture)
                                {
                                    imageLoading = false;

                                    loadingSpiner.Hide();

                                    if (loadedTexture != null)
                                    {
                                        if (clipImage != null)
                                        {
                                            Destroy(clipImage);

                                            clipImage = null;
                                        }

                                        clipImage = loadedTexture;

                                        video = null;

                                        if (autoSendImageLoaded)
                                        {
                                            Send("", clipImage, video);
                                        }
                                    }
                                });
                            }
                            else if (selectedButton == FresviiGUIText.Get("ChoosePhoto")) // Choose Photo from library
                            {
                                imageLoading = true;

                                loadingSpiner = Fresvii.AppSteroid.Gui.LoadingSpinner.Show(new Rect(menuRect.x + addButtonPosition.x, menuRect.y + addButtonPosition.y, addButtonPosition.width, addButtonPosition.height), GUI.depth);

                                Fresvii.AppSteroid.Util.ImagePicker.Show(this, Fresvii.AppSteroid.Util.ImagePicker.Type.Gallery, delegate(Texture2D loadedTexture)
                                {
                                    imageLoading = false;

                                    loadingSpiner.Hide();

                                    if (loadedTexture != null)
                                    {
                                        if (clipImage != null)
                                        {
                                            Destroy(clipImage);

                                            clipImage = null;
                                        }

                                        clipImage = loadedTexture;

                                        video = null;

                                        if (autoSendImageLoaded)
                                        {
                                            Send("", clipImage, video);
                                        }
                                    }
                                });
                            }
                            else if (selectedButton == FresviiGUIText.Get("ChooseMovie")) // Choose Video from library
                            {
                                imageLoading = true;

                                loadingSpiner = Fresvii.AppSteroid.Gui.LoadingSpinner.Show(new Rect(menuRect.x + addButtonPosition.x, menuRect.y + addButtonPosition.y, addButtonPosition.width, addButtonPosition.height), GUI.depth);

                                FresviiGUIVideoList.Show(parentFrame, int.MinValue + 1000, delegate(Fresvii.AppSteroid.Models.Video _video, Texture2D loadedTexture)
                                {
                                    imageLoading = false;

                                    loadingSpiner.Hide();

                                    if (loadedTexture != null)
                                    {
                                        if (clipImage != null)
                                        {
                                            Destroy(clipImage);

                                            clipImage = null;
                                        }

                                        clipImage = loadedTexture;

                                        this.video = _video;

                                        if (autoSendImageLoaded)
                                        {
                                            Send("", clipImage, video);
                                        }
                                    }
                                });
                            }
                            else if (selectedButton == FresviiGUIText.Get("CancelPhoto")) // Cancel photo
                            {
                                if (clipImage != null)
                                {
                                    Destroy(clipImage);

                                    clipImage = null;

                                    video = null;
                                }
                            }
                            else if (selectedButton == FresviiGUIText.Get("CancelVideo")) // Cancel video
                            {
                                if (clipImage != null)
                                {
                                    Destroy(clipImage);

                                    clipImage = null;

                                    video = null;
                                }
                            }
                        });
                    }
                }
            }

            FresviiGUIUtility.DrawButtonFrameX9(textFieldPosition, textFiled);

            if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.OSXEditor)
            {
                textInputField = GUI.TextField(textFieldPosition, textInputField, guiStyleTextFiled);
            }
            else{

                if (e.type == EventType.MouseUp && textFieldPosition.Contains(e.mousePosition) && !FASGesture.IsDragging)
                {
                    e.Use();

                    FresviiGUIPopUpShield shield = gameObject.GetComponent<FresviiGUIPopUpShield>();

                    if(shield == null)
                    {
                        shield = gameObject.AddComponent<FresviiGUIPopUpShield>();
                    }

                    shield.Enable(delegate ()
                    {
                        if(keyboard != null)
                        {
                            keyboard.active = false;

                            keyboard.text = "";

                            keyboard = null;
                        }
                    });

                    keyboard = TouchScreenKeyboard.Open(textInputField, TouchScreenKeyboardType.Default, false, true, false, false);
                }

                if (keyboard != null)
                {
                    textInputField = keyboard.text;

                    if(keyboard.done || keyboard.wasCanceled || !keyboard.active)
                    {
                        gameObject.GetComponent<FresviiGUIPopUpShield>().Done();

                        keyboard = null;
                    }
                }

                GUI.Label(textFieldPosition, textInputField, guiStyleTextFiled);
            }

            bool sendOK = ((clipImage != null) || !string.IsNullOrEmpty(textInputField));

            guiStyleSendButton.normal.textColor = (sendOK) ? buttonTextEnableColor : buttonTextUnableColor;

            Texture2D sendButtonTexture = (sendOK) ? sendButton : sendButtonD;

            if (sending)
            {
                sendButtonTexture = sendButtonH;

                guiStyleSendButton.normal.textColor = buttonTextHitColor;
            }

            FresviiGUIUtility.DrawButtonFrameX9(sendButtonPosition, sendButtonTexture);

            GUI.Label(sendButtonPosition, FresviiGUIText.Get("send"), guiStyleSendButton);

            if (e.type == EventType.MouseUp && sendButtonPosition.Contains(e.mousePosition) && sendOK && !FASGesture.IsDragging && !parentFrame.ControlLock)
            {
                e.Use();

                if (!sendEnableAtAction)
                {
                    Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("OK"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                    if (string.IsNullOrEmpty(sendUnableAtActionDialogTitle))
                    {
                        Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(sendUnableAtActionMessage, delegate(bool del) { });
                    }
                    else
                    {
                        Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(sendUnableAtActionDialogTitle, sendUnableAtActionMessage, delegate(bool del) { });
                    }

                }
                else
                {
                    Send(textInputField, clipImage, video);

                    textInputField = "";

                    if (keyboard != null)
                    {
                        keyboard.text = "";
                    }

                    keyboard = null;

                    clipImage = null;

                    video = null;
                }
            }

            GUI.EndGroup();
        }
        public void ShowActionSheet(FresviiGUIGroupCard card)
        {
            List<string> buttons = new List<string>();

            buttons.Add(FresviiGUIText.Get("Delete"));

            ControlLock = true;

            actionSheet = Fresvii.AppSteroid.Gui.ActionSheet.Show(this.scaleFactor, this.postFix, GuiDepth - 10, buttons.ToArray(), (selectedButton) =>
            {
                ControlLock = false;

                if (selectedButton == FresviiGUIText.Get("Delete"))
                {
                    if (card.Group.Pair)
                    {
            #if !UNITY_EDITOR
                        Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("Yes"), FresviiGUIText.Get("No"), FresviiGUIText.Get("Close"));

                        Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("NotArrowDeletePair"), delegate(bool del) { });
            #endif
                        return;
                    }
                    else
                    {
            #if !UNITY_EDITOR
                        Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("Delete"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                        Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSelectDialog(FresviiGUIText.Get("ConfirmDeleteGroup"), delegate(bool del)
                        {
                            if (del)
                            {
            #endif
                                card.OnCardGone();
            #if !UNITY_EDITOR
                            }
                        });
            #endif
                    }
                }
            });
        }
        public void Draw(Rect position, bool drawSeperateLine)
        {
            if (user != null)
            {
                if (!userIconLoaded && !userIconLoading)
                {
                    StartCoroutine(UserIconLoad());
                }
                else if (userIconLoaded && user.ProfileImageUrl != userProfileUrl)
                {
                    StartCoroutine(UserIconLoad());
                }
            }

            CalcLayout(position.width);

            Event e = Event.current;

            if (position.Contains(e.mousePosition) && FASGesture.IsHolding && !FASGesture.IsDragging && !frameEditGroupMembers.ControlLock)
            {
                List<string> buttons = new List<string>();

                buttons.Add(FresviiGUIText.Get("Delete"));

                frameEditGroupMembers.ControlLock = true;

                actionSheet = Fresvii.AppSteroid.Gui.ActionSheet.Show(this.scaleFactor, this.postFix, frameEditGroupMembers.GuiDepth - 10, buttons.ToArray(), (selectedButton) =>
                {
                    frameEditGroupMembers.ControlLock = false;

                    if (selectedButton == FresviiGUIText.Get("Delete"))
                    {
                        if (ValidateDelete())
                        {
                            if (!(Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer))
                            {
                                OnCardGone();
                            }
                            else
                            {

                                Fresvii.AppSteroid.Util.DialogManager.Instance.SetLabel(FresviiGUIText.Get("Delete"), FresviiGUIText.Get("Cancel"), FresviiGUIText.Get("Close"));

                                Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSelectDialog(FresviiGUIText.Get("ConfirmRemoveMember"), delegate(bool del)
                                {
                                    if (del)
                                    {
                                        OnCardGone();
                                    }
                                });
                            }
                        }
                    }
                });
            }

            isSlide = (FASGesture.IsTouching && position.Contains(e.mousePosition) && FASGesture.DragDirec == FASGesture.DragDirection.Horizontal);

            if (FASGesture.IsTouchBegin && cardXOffset > 0 && !position.Contains(e.mousePosition))
            {
                isClose = true;

                isSlide = false;
            }

            Rect slidedPosition = new Rect(position.x - cardXOffset, position.y, position.width + cardXOffset, position.height);

            GUI.DrawTextureWithTexCoords(position, palette, texCoordsBackground);

            GUI.BeginGroup(slidedPosition);

            //  Delete button
            buttonDeletePostion = new Rect(slidedPosition.width - deleteButtonWidth, 0, deleteButtonWidth, cardHeight);

            GUI.DrawTextureWithTexCoords(buttonDeletePostion, palette, textureCoordsDelete);

            if(!isDelete && cardXOffset > 0)
                GUI.Label(buttonDeletePostion, FresviiGUIText.Get("Delete"), guiStyleDelete);

            if (cardXOffset == deleteButtonWidth)
            {
                if (e.type == EventType.MouseUp && buttonDeletePostion.Contains(e.mousePosition) && !FASGesture.IsDragging && !isDelete && !frameEditGroupMembers.ControlLock)
                {
                    e.Use();

                    if (ValidateDelete())
                    {
                        DeleteAnimation();
                    }
                    else
                    {
                        isClose = true;
                    }
                }
            }

            if (e.type == EventType.MouseUp && cardPosition.Contains(e.mousePosition) && !FASGesture.IsDragging && !isDelete && !frameEditGroupMembers.ControlLock)
            {
                e.Use();

                if (cardXOffset > 0)
                {
                    isClose = true;
                }
                else if(!frameEditGroupMembers.CardIsOpen)
                {
                    if (this.user != null)
                    {
                        if (nextFrameProfile == null)
                        {
                            nextFrameProfile = ((GameObject)Instantiate(prfbGUIFrameUserProfile)).GetComponent<FresviiGUIFrame>();

                            nextFrameProfile.gameObject.GetComponent<FresviiGUIUserProfile>().SetUser(user);

                            nextFrameProfile.Init(null, FresviiGUIManager.postFix, FresviiGUIManager.scaleFactor, FASGui.GuiDepthBase);

                            nextFrameProfile.transform.parent = this.transform;
                        }

                        nextFrameProfile.SetDraw(true);

                        nextFrameProfile.PostFrame = frameEditGroupMembers;

                        frameEditGroupMembers.Tween(Vector2.zero, new Vector2(-Screen.width, 0.0f), delegate()
                        {
                            frameEditGroupMembers.SetDraw(false);
                        });

                        nextFrameProfile.Tween(new Vector2(Screen.width, 0.0f), Vector2.zero, delegate() { });
                    }
                }
            }

            GUI.DrawTextureWithTexCoords(cardPosition, palette, texCoordsBackground);

            GUI.DrawTexture(buttonRightPosition, buttonRightIcon);

            if(drawSeperateLine)
                GUI.DrawTextureWithTexCoords(seperateLinePosition, palette, textureCoordsSeparateLine);

            //  UserIcon -----------------------
            if (Event.current.type == EventType.Repaint)
            {
                userMask.color = new Color(1f, 1f, 1f, 1.0f);

                Graphics.DrawTexture(userIconPosition, ((userIcon == null) ? userIconDefault : userIcon), userMask);
            }

            //  User name -----------------------
            GUI.Label(userNamePosition, contentUserName, guiStyleUserName);

            GUI.EndGroup();
        }
        void OnGUI()
        {
            GUI.depth = GuiDepth;

            GUI.DrawTextureWithTexCoords(menuRect, palette, texCoordsMenu);

            GUI.DrawTextureWithTexCoords(new Rect(menuRect.x, menuRect.y - 1, Screen.width, 1), palette, texCoordsBorderLine);

            GUI.BeginGroup(menuRect);

            Event e = Event.current;

            if (!imageLoading)
            {
                if (clipImage == null)
                {
                    GUI.DrawTexture(addButtonPosition, addButton, ScaleMode.ScaleToFit);
                }
                else
                {
                    GUI.DrawTexture(addButtonPosition, clipImage, ScaleMode.ScaleAndCrop);
                }
            }

            if (!imageLoading)
            {
                if (GUI.Button(addButtonHitPosition, "", GUIStyle.none))
                {
                    List<string> buttons = new List<string>();

                    buttons.Add(FresviiGUIText.Get("TakePhoto"));

                    buttons.Add(FresviiGUIText.Get("ChoosePhoto"));

                    buttons.Add(FresviiGUIText.Get("ChooseMovie"));

                    if (clipImage != null)
                        buttons.Add(FresviiGUIText.Get("CancelPhoto"));

                    if (video != null)
                        buttons.Add(FresviiGUIText.Get("CancelVideo"));

                    actionSheet = Fresvii.AppSteroid.Gui.ActionSheet.Show(scaleFactor, postFix, this.GuiDepth - 10, buttons.ToArray(), (selectedButton) =>
                    {
                        if (selectedButton == FresviiGUIText.Get("TakePhoto")) // TakePhoto
                        {
                            imageLoading = true;

                            loadingSpinnerPosition = new Rect(menuRect.x + addButtonPosition.x, menuRect.y + addButtonPosition.y, addButtonPosition.width, addButtonPosition.height);

                            loadingSpiner = Fresvii.AppSteroid.Gui.LoadingSpinner.Show(loadingSpinnerPosition, GUI.depth);

                            Fresvii.AppSteroid.Util.ImagePicker.Show(this, Fresvii.AppSteroid.Util.ImagePicker.Type.Camera, delegate(Texture2D loadedTexture)
                            {
                                imageLoading = false;

                                loadingSpiner.Hide();

                                if (loadedTexture != null)
                                {
                                    if (clipImage != null)
                                    {
                                        Destroy(clipImage);
                                        clipImage = null;
                                    }

                                    clipImage = loadedTexture;

                                    video = null;
                                }
                            });
                        }
                        else if (selectedButton == FresviiGUIText.Get("ChoosePhoto")) // Choose Photo from library
                        {
                            imageLoading = true;

                            loadingSpiner = Fresvii.AppSteroid.Gui.LoadingSpinner.Show(new Rect(menuRect.x + addButtonPosition.x, menuRect.y + addButtonPosition.y, addButtonPosition.width, addButtonPosition.height), GUI.depth);

                            Fresvii.AppSteroid.Util.ImagePicker.Show(this, Fresvii.AppSteroid.Util.ImagePicker.Type.Gallery, delegate(Texture2D loadedTexture)
                            {
                                imageLoading = false;

                                loadingSpiner.Hide();

                                if (loadedTexture != null)
                                {
                                    if (clipImage != null)
                                    {
                                        Destroy(clipImage);
                                        clipImage = null;
                                    }

                                    clipImage = loadedTexture;

                                    video = null;
                                }
                            });
                        }
                        else if (selectedButton == FresviiGUIText.Get("ChooseMovie")) // Choose Video from library
                        {
                            imageLoading = true;

                            loadingSpiner = Fresvii.AppSteroid.Gui.LoadingSpinner.Show(new Rect(menuRect.x + addButtonPosition.x, menuRect.y + addButtonPosition.y, addButtonPosition.width, addButtonPosition.height), GUI.depth);

                            FresviiGUIVideoList.Show(frameThread, frameThread.GuiDepth - 500, delegate(Fresvii.AppSteroid.Models.Video _video, Texture2D loadedTexture)
                            //ImagePicker.ShowMoviePicker(this, delegate(string path, Texture2D loadedTexture)
                            {
                                imageLoading = false;

                                loadingSpiner.Hide();

                                if (loadedTexture != null)
                                {
                                    if (clipImage != null)
                                    {
                                        Destroy(clipImage);

                                        clipImage = null;
                                    }

                                    clipImage = loadedTexture;

                                    this.video = _video;
                                }
                            });
                        }
                        else if (selectedButton == FresviiGUIText.Get("CancelPhoto")) // Cancel photo
                        {
                            if (clipImage != null)
                            {
                                Destroy(clipImage);

                                clipImage = null;

                                video = null;
                            }
                        }
                        else if (selectedButton == FresviiGUIText.Get("CancelVideo")) // Cancel video
                        {
                            if (clipImage != null)
                            {
                                Destroy(clipImage);

                                clipImage = null;

                                video = null;
                            }
                        }
                    });
                }
            }

            FresviiGUIUtility.DrawButtonFrame(textFieldPosition, textFiled, scaleFactor);

            #if UNITY_EDITOR

            textInputField = GUI.TextField(textFieldPosition, textInputField, guiStyleTextFiled);

            #elif UNITY_ANDROID || UNITY_IOS

            if (e.type == EventType.MouseUp && textFieldPosition.Contains(e.mousePosition) && !FASGesture.IsDragging)
            //if (GUI.Button(textFieldPosition, textInputField, guiStyleTextFiled))
            {
                e.Use();

                FresviiGUIPopUpShield shield = gameObject.GetComponent<FresviiGUIPopUpShield>();

                if(shield == null)
                {
                    shield = gameObject.AddComponent<FresviiGUIPopUpShield>();
                }

                shield.Enable(delegate ()
                {
                    if(keyboard != null)
                    {
                        keyboard.active = false;

                        keyboard.text = "";

                        keyboard = null;
                    }
                });

                keyboard = TouchScreenKeyboard.Open(textInputField, TouchScreenKeyboardType.Default, false, true, false, false);
            }

            if (keyboard != null)
            {
                textInputField = keyboard.text;

                if(keyboard.done || keyboard.wasCanceled || !keyboard.active)
                {
                    gameObject.GetComponent<FresviiGUIPopUpShield>().Done();

                    keyboard = null;
                }
            }

            GUI.Label(textFieldPosition, textInputField, guiStyleTextFiled);

            #endif

            bool sendEnable = (clipImage != null) || !string.IsNullOrEmpty(textInputField);

            guiStyleSendButton.normal.textColor = (sendEnable) ? buttonTextEnableColor : buttonTextUnableColor;

            Texture2D sendButtonTexture = (sendEnable) ? sendButton : sendButtonD;

            if (sending)
            {
                sendButtonTexture = sendButtonH;

                guiStyleSendButton.normal.textColor = buttonTextHitColor;
            }

            FresviiGUIUtility.DrawButtonFrame(sendButtonPosition, sendButtonTexture, scaleFactor);

            GUI.Label(sendButtonPosition, FresviiGUIText.Get("send"), guiStyleSendButton);

            if(e.type == EventType.MouseUp && sendButtonPosition.Contains(e.mousePosition) && sendEnable && !FASGesture.IsDragging)
            {
                e.Use();

                if (Application.internetReachability == NetworkReachability.NotReachable)
                {
                    Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("Offline"), delegate(bool del) { });

                    return;
                }

                frameThread.AddComment(frameThread.Thread.Id, textInputField, clipImage, video);

                StartCoroutine(SendingAnimation());

                textInputField = "";

                if(keyboard != null)
                    keyboard.text = "";

                keyboard = null;

                clipImage = null;

                video = null;
            }

            GUI.EndGroup();
        }