public void SetPreview(Fresvii.AppSteroid.Models.Video video, AUIPreviewVideoList auiPreviewVideoList)
        {
            this.auiPreviewVideoList = auiPreviewVideoList;

            this.Video = video;

            videoThumbnail.Set(this.Video.ThumbnailUrl);

            if (this.Video.App != null)
            {
                appIcon.Set(this.Video.App.IconUrl);

                textAppName.text = this.Video.App.Name;

                if (this.Video.App.GameGenres.Count > 0)
                    textGameCategory.text = this.Video.App.GameGenres[0].Name;

            }

            uint min = video.Duration / 60;

            uint sec = video.Duration % 60;

            uploadedText.text = video.CreatedAt.ToLocalTime().ToString(FASText.Get("LocalDateFormat")) + " " + FASText.Get("Uploaded");

            durationText.text = min + ":" + sec.ToString("00");
        }
        public void PlayVideo()
        {
            if (this.Video != null)
            {
                FASVideo.Play(this.Video, (_video, button) =>
                {
                    this.Video = _video;

                    SetPreview(this.Video);

                    if (button == Util.MoviePlayer.TappedButton.App)
                    {
                        if (OnTapAppButtonAtVideoUI != null)
                        {
                            OnTapAppButtonAtVideoUI(this.Video.App);
                        }
                    }
                });

                FASVideo.IncrementVideoPlaybackCount(this.Video.Id, (_video, error)=>{

                    if(error == null)
                    {
                        this.Video = _video;

                        SetPreview(this.Video);
                    }

                });
            }
        }
        public void SetPreview(Fresvii.AppSteroid.Models.Video video)
        {
            this.Video = video;

            videoThumbnail.delayCount = 2;

            videoThumbnail.Set(this.Video.ThumbnailUrl);

            if (this.Video.App != null)
            {
                appIcon.Set(this.Video.App.IconUrl);

                textAppName.text = this.Video.App.Name;

                if (this.Video.App.GameGenres.Count > 0)
                    textGameCategory.text = this.Video.App.GameGenres[0].Name;
            }
        }
        public void BackToForum()
        {
            PostFrame.SetDraw(true);

            clipImage = null;

            video = null;

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

                keyboard.text = "";

                keyboard = null;
            }

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

            PostFrame.Tween(new Vector2(-Screen.width, 0.0f), Vector2.zero, delegate() { });
        }
        public void Create()
        {
            if (!string.IsNullOrEmpty(inputString) || clipImage != null)
            {
                if (Application.internetReachability == NetworkReachability.NotReachable)
                {
                    Fresvii.AppSteroid.Util.DialogManager.Instance.ShowSubmitDialog(FresviiGUIText.Get("Offline"), delegate(bool del) { });

                    return;
                }

                FresviiGUIForum.Instance.CreateThread(inputString, clipImage, video);

                BackToForum();

                clipImage = null;

                video = null;

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

					keyboard.text = "";
					
                    keyboard = null;
				}
			}
        }
        public void VideoSelected(Fresvii.AppSteroid.Models.Video video, Texture2D thumbnail)
        {
            this.selectedVideo = video;

            this.selectedVideoThumbnail = thumbnail;

            Back();
        }
        public void SetVideo(Fresvii.AppSteroid.Models.Video video, Texture2D videoThumbnail)
        {
            this.video = video;

            clipImage.SetTexture(videoThumbnail);

            Validate();
        }
        public void SetVideo(Fresvii.AppSteroid.Models.Video video, AUIVideoList.Mode mode)
        {
            this.Video = video;

            this.mode = mode;

            buttonShare.gameObject.SetActive(mode == AUIVideoList.Mode.Share);

            buttonSelect.gameObject.SetActive(mode == AUIVideoList.Mode.Select);

            if (Video.User != null)
            {
                buttonMenu.gameObject.SetActive(Video.User.Id == FAS.CurrentUser.Id);

                userIcon.Set(Video.User.ProfileImageUrl);

                userName.text = (!string.IsNullOrEmpty(Video.Title)) ? Video.Title : Video.User.Name;

                likeCount.text = Video.LikeCount.ToString();

                viewedCount.text = Video.PlaybackCount.ToString();

                thumbnail.Set(Video.ThumbnailUrl);

                uint min = video.Duration / 60;

                uint sec = video.Duration % 60;

                uploadDate.text = video.CreatedAt.ToLocalTime().ToString(FASText.Get("LocalDateFormat")) + " " + FASText.Get("Uploaded");

                duration.text = min + ":" + sec.ToString("00");
            }
        }
        public void ClearClipImage()
        {
            clipImage = null;

            video = null;
        }
        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 Set(FresviiGUIVideoSharing videoSharing, Fresvii.AppSteroid.Models.Video video, Texture2D videoThumbnail)
        {
            this.gameObject.SetActive(true);

            this.video = video;

            this.videoThumbnail = videoThumbnail;
        }
        public void Select(Fresvii.AppSteroid.Models.Video _video, Texture2D _videoThumbnail)
        {
            video = _video;

            videoThumbnail = (Texture2D) Instantiate(_videoThumbnail);

            BackToPostFrame();
        }
        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();
        }
        public void Draw(Rect position, Rect scrollViewRect, int guiDepth, float topMenuHeight)
        {
            Color tmpColor = GUI.color;

            GUI.color = new Color(tmpColor.r, tmpColor.g, tmpColor.b, alpha);

            if (!string.IsNullOrEmpty(Video.ThumbnailUrl) && !thumbnailLoaded && !videoThumbnailLoading)
            {
                LoadVideoThumbnail();
            }

            CalcLayout(position.width);

            GUI.BeginGroup(position);

            // Background
            GUI.DrawTextureWithTexCoords(new Rect(0, 0, position.width, position.height), palette, texCoordsBackground);

            // Progressbar
            if (downloading)
            {
                progressBarPosition = new Rect(0, position.height - FresviiGUIManager.Instance.ScaleFactor, position.width * downloadingProgress, FresviiGUIManager.Instance.ScaleFactor);

                GUI.DrawTextureWithTexCoords(progressBarPosition, palette, texCoordsProgressBar);
            }

            if (Event.current.type == EventType.Repaint)
            {
                if (videoThumbnail != null)
                {
                    videoThumbnailMaterial.color = new Color(1f, 1f, 1f, alpha);

                    if(videoThumbnail.width > videoThumbnail.height)
                    {
                        Vector2 offset = new Vector2((float)(videoThumbnail.width - videoThumbnail.height) / (float)videoThumbnail.width * 0.5f, 0f);

                        Vector2 scale = new Vector2( 1.0f - offset.x * 2f, 1.0f);

                        videoThumbnailMaterial.mainTextureOffset = offset;

                        videoThumbnailMaterial.mainTextureScale = scale;
                    }
                    else
                    {
                        Vector2 offset = new Vector2(0f, (float)(videoThumbnail.height - videoThumbnail.width) /(float) videoThumbnail.height * 0.5f);

                        Vector2 scale = new Vector2(1.0f, 1.0f - offset.y * 2f);

                        videoThumbnailMaterial.mainTextureOffset = offset;

                        videoThumbnailMaterial.mainTextureScale = scale;
                    }

                    Graphics.DrawTexture(videoThumbnailPosition, videoThumbnail, videoThumbnailMaterial);

                    //GUI.DrawTexture(videoThumbnailPosition, videoThumbnail, ScaleMode.ScaleAndCrop);
                }
            }

            GUI.DrawTexture(videoPlaybackIconPositon, FresviiGUIVideoList.TexVideoPlaybackIcon, ScaleMode.StretchToFill);

            //  videoTitle -----------------------
            GUI.Label(videoTitlePosition, contentVideoTitle, guiStyleVideoTitle);

            GUI.Label(uplodedDateTimePosition, contentUpdatedDateTime, guiStyleUpdatedDateTime);

            GUI.Label(durationPosition, contentDuration, guiStyleUpdatedDateTime);

            GUI.DrawTexture(watchedIconPosition, FresviiGUIVideoList.TexVideoEyeIcon);

            GUI.Label(watchedCountPosition, contentPlaybackCount, guiStyleUpdatedDateTime);

            GUI.DrawTexture(likeIconPosition, FresviiGUIVideoList.TexVideoHeartIcon);

            GUI.Label(likeCountPositon, contentLikeCount, guiStyleUpdatedDateTime);

            if (buttonShare.IsTap(Event.current, videoShareButtonPosition, videoShareButtonPosition,
                    FresviiGUIButton.ButtonType.FrameAndLabel,
                    FresviiGUIVideoList.TexButtonShare,
                    FresviiGUIVideoList.TexButtonShareH,
                    FresviiGUIVideoList.TexButtonShareH,
                    (mode == FresviiGUIVideoList.Mode.Share || mode == FresviiGUIVideoList.Mode.FromUploded) ? FresviiGUIText.Get("Share") : FresviiGUIText.Get("Select"),
                    guiStyleButtonShare))
            {
                isSelected = true;

                if (mode == FresviiGUIVideoList.Mode.Share || mode == FresviiGUIVideoList.Mode.FromUploded)
                {
                    parentFrame.Share(Video, videoThumbnail);
                }
                else if (mode == FresviiGUIVideoList.Mode.Select)
                {
                    parentFrame.Select(Video, videoThumbnail);
                }
            }

            if (GUI.Button(videoThumbnailPosition, "", GUIStyle.none))
            {
                FASVideo.Play(Video.VideoUrl);

                FASVideo.IncrementVideoPlaybackCount(Video.Id, (video, error) =>
                {
                    if (error == null)
                    {
                        Video = video;
                    }
                });
            }

            // Menu button
            if (parentFrame.IsMine)
            {
                if (buttonMenu.IsTap(Event.current, menuButtonPosition, menuButtonHitPosition, FresviiGUIButton.ButtonType.TextureOnly, FresviiGUIVideoList.TexMenu, FresviiGUIVideoList.TexMenu, FresviiGUIVideoList.TexMenuH))
                {
                    List<string> buttons = new List<string>();

                    if(!downloading)
                        buttons.Add(FresviiGUIText.Get("CopyToCameraRoll"));

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

                    popUpBaloonMenu = ((GameObject)Instantiate(Resources.Load("GuiPrefabs/PopUpBalloonMenu"))).GetComponent<Fresvii.AppSteroid.Gui.PopUpBalloonMenu>();

                    Vector2 popupBalloonPosition = popUpOffset + new Vector2(scrollViewRect.x + menuButtonPosition.x, scrollViewRect.y - topMenuHeight + menuButtonPosition.y) + FresviiGUIFrame.OffsetPosition;

                    popUpBaloonMenu.Show(buttons.ToArray(), popupBalloonPosition, FresviiGUIManager.scaleFactor, FresviiGUIManager.postFix, guiDepth - 10, Color.black, Color.white, Color.white, delegate(string selectedButton)
                    {
                        if (selectedButton == FresviiGUIText.Get("CopyToCameraRoll"))
                        {
                            downloading = true;

                            FASVideo.DownloadAndCopyToAlbum(Video.VideoUrl, () =>
                            {
                                downloading = false;
                            }
                            ,

                            (progress) =>
                            {
                                downloadingProgress = progress;
                            }

                            );
                        }
                        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("ConfirmDeleteVideo"), delegate(bool del)
                            {
                                if (del)
                                {
                                    parentFrame.DeleteVideo(this);
                                }
                            });
                        }
                    });
                }
            }

            if (popUpBaloonMenu != null)
            {
                popUpBaloonMenu.SetPosition(popUpOffset + new Vector2(scrollViewRect.x + position.x + menuButtonPosition.x, scrollViewRect.y - topMenuHeight + position.y + menuButtonPosition.y + FresviiGUIFrame.OffsetPosition.y));
            }

            GUI.EndGroup();

            GUI.color = tmpColor;
        }
        public void Init(Fresvii.AppSteroid.Models.Video video, float scaleFactor, FresviiGUIVideoList parentFrame, FresviiGUIVideoList.Mode mode)
        {
            this.Video = video;

            this.parentFrame = parentFrame;

            this.mode = mode;

            if (Application.platform == RuntimePlatform.IPhonePlayer)
            {
                guiStyleVideoTitle.font = null;

                guiStyleVideoTitle.fontStyle = FontStyle.Bold;

                guiStyleButtonShare.font = null;

                guiStyleUpdatedDateTime.font = null;
            }

            videoThumbnailPosition = FresviiGUIUtility.RectScale(videoThumbnailPosition, scaleFactor);

            videoTitlePosition = FresviiGUIUtility.RectScale(videoTitlePosition, scaleFactor);

            sideMargin *= scaleFactor;

            cardHeight *= scaleFactor;

            menuButtonMargin *= scaleFactor;

            popUpOffset *= scaleFactor;

            videoInfoMargin *= scaleFactor;

            guiStyleVideoTitle.fontSize = (int)(guiStyleVideoTitle.fontSize * scaleFactor);

            palette = FresviiGUIColorPalette.Palette;

            guiStyleVideoTitle.normal.textColor = FresviiGUIColorPalette.GetColor(FresviiGUIColorPalette.CardUserName);

            guiStyleButtonShare.normal.textColor = FresviiGUIColorPalette.GetColor(FresviiGUIColorPalette.CardUserName);

            guiStyleButtonShare.fontSize = (int)(guiStyleButtonShare.fontSize * scaleFactor);

            guiStyleUpdatedDateTime.fontSize = (int)(guiStyleUpdatedDateTime.fontSize * scaleFactor);

            texCoordsBackground = FresviiGUIColorPalette.GetTextureCoods(FresviiGUIColorPalette.CardBackground);

            texCoordsProgressBar = FresviiGUIColorPalette.GetTextureCoods(FresviiGUIColorPalette.CardProgressBar);

            videoThumbnail = videoThumbnailDefault;

            contentVideoTitle = new GUIContent(FresviiGUIText.Get("Title") + " " + video.Title);

            //videoPlaybackIconPositon = new Rect(videoThumbnailPosition.x + videoThumbnailPosition.width * 0.25f, videoThumbnailPosition.y + videoThumbnailPosition.height * 0.25f, videoThumbnailPosition.width * 0.5f, videoThumbnailPosition.height * 0.5f);

            videoPlaybackIconPositon = new Rect(videoThumbnailPosition.x + videoThumbnailPosition.width * 0.5f - 0.5f * FresviiGUIVideoList.TexVideoPlaybackIcon.width, videoThumbnailPosition.y + videoThumbnailPosition.height * 0.5f - 0.5f * FresviiGUIVideoList.TexVideoPlaybackIcon.height, FresviiGUIVideoList.TexVideoPlaybackIcon.width, FresviiGUIVideoList.TexVideoPlaybackIcon.height);

            videoShareButtonPosition = FresviiGUIUtility.RectScale(videoShareButtonPosition, scaleFactor);

            uplodedDateTimePosition = FresviiGUIUtility.RectScale(uplodedDateTimePosition, scaleFactor);

            uint min = video.Duration / 60;

            uint sec = video.Duration % 60;

            contentUpdatedDateTime = new GUIContent(FresviiGUIUtility.CurrentTimeSpan(video.CreatedAt));

            contentDuration = new GUIContent(min + ":" + sec.ToString("00"));

            Vector2 sizeTitle = guiStyleVideoTitle.CalcSize(contentVideoTitle);

            videoTitlePosition = new Rect(videoTitlePosition.x, videoTitlePosition.y, sizeTitle.x, sizeTitle.y);

            // 2 line

            Vector2 sizeDuration = guiStyleUpdatedDateTime.CalcSize(contentDuration);

            durationPosition = new Rect(uplodedDateTimePosition.x, uplodedDateTimePosition.y, sizeDuration.x, sizeDuration.y);

            Vector2 sizeUpdated = guiStyleUpdatedDateTime.CalcSize(contentUpdatedDateTime);

            uplodedDateTimePosition = new Rect(uplodedDateTimePosition.x + durationPosition.width + videoInfoMargin, uplodedDateTimePosition.y, sizeUpdated.x, sizeUpdated.y);

            // 3 line

            watchedIconPosition = new Rect(durationPosition.x, videoShareButtonPosition.y + videoShareButtonPosition.height * 0.5f - 0.5f * FresviiGUIVideoList.TexVideoEyeIcon.height, FresviiGUIVideoList.TexVideoEyeIcon.width, FresviiGUIVideoList.TexVideoEyeIcon.height);

            contentPlaybackCount = new GUIContent(Video.PlaybackCount.ToString());

            Vector2 sizePlaybackCount = guiStyleUpdatedDateTime.CalcSize(contentPlaybackCount);

            watchedCountPosition = new Rect(watchedIconPosition.x + watchedIconPosition.width + videoInfoMargin, videoShareButtonPosition.y + videoShareButtonPosition.height * 0.5f - 0.5f * sizePlaybackCount.y, sizePlaybackCount.x, sizePlaybackCount.y);

            likeIconPosition = new Rect(watchedCountPosition.x + watchedCountPosition.width + videoInfoMargin, videoShareButtonPosition.y + videoShareButtonPosition.height * 0.5f - 0.5f * FresviiGUIVideoList.TexVideoHeartIcon.height, FresviiGUIVideoList.TexVideoHeartIcon.width, FresviiGUIVideoList.TexVideoHeartIcon.height);

            contentLikeCount = new GUIContent(Video.LikeCount.ToString());

            Vector2 sizeLikeCount = guiStyleUpdatedDateTime.CalcSize(contentLikeCount);

            likeCountPositon = new Rect(likeIconPosition.x + likeIconPosition.width + videoInfoMargin, videoShareButtonPosition.y + videoShareButtonPosition.height * 0.5f - 0.5f * sizeLikeCount.y, sizeLikeCount.x, sizeLikeCount.y);
        }
        void OnGUI()
        {
            GUI.depth = GuiDepth;

            GUI.DrawTextureWithTexCoords(backgroundRect, FresviiGUIColorPalette.Palette, textureCoordsBackground);

            GUI.BeginGroup(scrollViewRect);

            Color tmpColor = GUI.color;

            GUI.color = inputAreaColor;

            FresviiGUIUtility.DrawMenuTopButtonFrame(inputArea, textFiled);

            GUI.color = inputAreaBottomColor;

            FresviiGUIUtility.DrawMenuBottomButtonFrame(inputAreaBottom, textFiled);

            GUI.color = tmpColor;

            Event e = Event.current;

            if (clipImage != null)
            {
                if (e.type == EventType.MouseDown && closeButtonHitArea.Contains(e.mousePosition))
                {
                    e.Use();

                    Destroy(clipImage);

                    clipImage = null;
                }
            }

            if (GUI.Button(chooseImageButton, "", guiStyleTextButtonImage))
            {
                Fresvii.AppSteroid.Util.GUIAnimation.TextButtonBold(1.0f, guiStyleTextButtonImage, this);

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

                    clipImage = null;
                }

                Fresvii.AppSteroid.Util.ImagePicker.Show(this, Fresvii.AppSteroid.Util.ImagePicker.Type.Gallery, delegate(Texture2D loadedTexture)
                {
                    if (loadedTexture != null)
                    {
                        clipImage = loadedTexture;

                        this.video = null;
                    }
                });
            }

            #if UNITY_IOS
            if (GUI.Button(chooseVideoButton, "", guiStyleTextButtonMovie) && FASConfig.Instance.videoEnable)
            {
                Fresvii.AppSteroid.Util.GUIAnimation.TextButtonBold(1.0f, guiStyleTextButtonMovie, this);

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

                    clipImage = null;
                }

				if(keyboard != null){
					keyboard.active = false;
				}


                showModal = true;

                FresviiGUIVideoList.Show(this, this.GuiDepth - 100, (_video, loadedTexture)=>
                {
                    showModal = false;

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

                        this.video = _video;
                    }
                });
            }
            #endif

            if (e.type == EventType.MouseDown && inputArea.Contains(e.mousePosition))
            {
                e.Use();

				popUpShield.Enable(delegate() {
				
					if(keyboard != null){
						keyboard.active = false;
						keyboard.text = "";
						keyboard = null;
					}

				});

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

            if (keyboard != null)
            {
                if (keyboard.active)
                {
                    inputString = keyboard.text;
                }
                else 
                {
                    if(string.IsNullOrEmpty(inputString))
                    {
                        guiStyleTextArea.normal.textColor = placeHolderTextColor;

                        guiStyleTextArea.alignment = TextAnchor.UpperLeft;

                        GUI.Label(inputArea, FresviiGUIText.Get("NewComment"), guiStyleTextArea);
                    }
                }

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

					keyboard = null;
				}

            }
            else
            {
                if (string.IsNullOrEmpty(inputString))
                {
                    guiStyleTextArea.normal.textColor = placeHolderTextColor;

                    guiStyleTextArea.alignment = TextAnchor.UpperLeft;

                    GUI.Label(inputArea, FresviiGUIText.Get("NewComment"), guiStyleTextArea);
                }
            }

            guiStyleTextArea.normal.textColor = normalTextColor;

            if (!string.IsNullOrEmpty(inputString))
            {
                GUIContent guiContentInputString = new GUIContent(inputString);

                float inputStringHeight = guiStyleTextArea.CalcHeight(guiContentInputString, inputArea.width);

                guiStyleTextArea.alignment = (inputStringHeight > inputArea.height) ? TextAnchor.LowerLeft : TextAnchor.UpperLeft;

                GUI.Label(inputArea, guiContentInputString, guiStyleTextArea);
            }

            GUI.DrawTexture(chooseImagePosition, chooseImageTexture);

            GUI.Label(chooseImageButton, FresviiGUIText.Get("ChooseImage"), guiStyleTextButtonImage);

#if UNITY_IOS

            if (FASConfig.Instance.videoEnable)
            {
                GUI.DrawTexture(chooseVideoPosition, chooseVideoTexture);

                GUI.Label(chooseVideoButton, FresviiGUIText.Get("ChooseVideo"), guiStyleTextButtonMovie);
            }
#endif
            if (clipImage != null)
            {
                GUI.DrawTexture(clipImagePosition, clipImage, ScaleMode.ScaleAndCrop);

                GUI.DrawTexture(closeButtonPositon, closeButton);
            }
            
            GUI.EndGroup();            
        }
        public override void Init(Texture2D appIcon, string postFix, float scaleFactor, int guiDepth)
        {
            textureCoordsBackground = FresviiGUIColorPalette.GetTextureCoods(FresviiGUIColorPalette.MainBackground);

            this.GuiDepth = guiDepth;

            this.scaleFactor = scaleFactor;

            createThreadTopMenu = GetComponent<FresviiGUICreateThreadTopMenu>();

            popUpShield = GetComponent<FresviiGUIPopUpShield>();

            createThreadTopMenu.Init(appIcon, postFix, scaleFactor, this);

            video = null;

            if (Application.platform == RuntimePlatform.IPhonePlayer)
            {
                guiStyleTextArea.font = null;

                guiStyleTextButtonImage.font = null;

                guiStyleTextButtonMovie.font = null;
            }

            this.scaleFactor = scaleFactor;
            verticalMargin *= scaleFactor;
            margin *= scaleFactor;
            miniMargin *= scaleFactor;
            hMagin *= scaleFactor;
            labelHeight *= scaleFactor;
            topMargin = Mathf.CeilToInt(topMargin * scaleFactor);
            sideMargin = Mathf.CeilToInt(sideMargin * scaleFactor);
            inputAreaHeight = Mathf.CeilToInt(inputAreaHeight * scaleFactor);
            buttonHeight *= scaleFactor;
            inputAreaBottomHeight *= scaleFactor;
            clipImageSideMargin *= this.scaleFactor;
            
            this.textFiled = FresviiGUIManager.Instance.resourceManager.LoadTextureFromResource(FresviiGUIConstants.ResouceTextureFolderName + "/" + FresviiGUIConstants.TextFiledWTextureName + postFix, false);

            chooseImageTexture = FresviiGUIManager.Instance.resourceManager.LoadTextureFromResource(FresviiGUIConstants.ResouceTextureFolderName + "/" + FresviiGUIConstants.IconChooseImageTextureName + postFix, false);

            chooseVideoTexture = FresviiGUIManager.Instance.resourceManager.LoadTextureFromResource(FresviiGUIConstants.ResouceTextureFolderName + "/" + FresviiGUIConstants.IconChooseVideoTextureName + postFix, false);
            
            closeButton = FresviiGUIManager.Instance.resourceManager.LoadTextureFromResource(FresviiGUIConstants.ResouceTextureFolderName + "/" + FresviiGUIConstants.IconClose + postFix, false);

            guiStyleTextArea.fontSize = (int)(guiStyleTextArea.fontSize * scaleFactor);

            guiStyleTextArea.padding = FresviiGUIUtility.RectOffsetScale(guiStyleTextArea.padding, scaleFactor);

            guiStyleTextButtonImage.fontSize = guiStyleTextButtonMovie.fontSize = (int)(guiStyleTextButtonImage.fontSize * scaleFactor);

            guiStyleTextButtonImage.contentOffset *= scaleFactor;

            guiStyleTextButtonImage.padding.left = (int)(guiStyleTextButtonImage.padding.left * scaleFactor + chooseImageTexture.width);

            guiStyleTextButtonMovie.contentOffset *= scaleFactor;

            guiStyleTextButtonMovie.padding.left = (int)(guiStyleTextButtonMovie.padding.left * scaleFactor + chooseImageTexture.width);

            clipImagePosition = FresviiGUIUtility.RectScale(clipImagePosition, scaleFactor);

            inputString = "";

            Initialized = true;
        }
        public void PlayVideo()
        {
            FASVideo.Play(Video, (_video, button) =>
            {
                Video = _video;

                SetVideo(this.Video, this.mode);

                if (button == Fresvii.AppSteroid.Util.MoviePlayer.TappedButton.User)
                {
                    auiVideoList.GoToUserPage(this.Video.User);
                }
            });

            FASVideo.IncrementVideoPlaybackCount(Video.Id, (video, error) =>
            {
                if (error == null)
                {
                    Video = video;

                    SetVideo(this.Video, this.mode);
                }
            });
        }