public void NewTrial(int index, string question, string left, string right, int originalIndex)
    {
        GameObject trialObject = GameObject.Instantiate <GameObject> (TrialPrefab);

        trialObject.transform.SetParent(MainPanel.transform);
        LikertTrial t = trialObject.GetComponent <LikertTrial>();

        Trials.Add(t);
        t.Setup(index, question, left, right, this.NumbersOnLine, this, originalIndex);
    }
    public void QuestionAnswered(LikertTrial trial, int response)
    {
        if (timeFirstAnswered < 0f)
        {
            timeFirstAnswered = Time.time;
        }

        Trials.Remove(trial);

        if (DoneTrials.Contains(trial) == false)
        {
            DoneTrials.Add(trial);
        }

        if (Trials.Count == 0)
        {
            foreach (LikertTrial t in DoneTrials)
            {
                Process(t);
            }


            float score = (float)TotalScore / (float)NumberOfAnswers;

            EventData e = new EventData();

            float calc = Time.time - timeFirstAnswered;

            e.Add("Timestamp", "" + Time.time);
            e.Add("Likert Task Ended", this.LikertTitle);
            e.Add("Score", "" + score);
            e.Add("Time taken", "" + calc);


            Analytics.LogEvent(e);


            UISequencer.current.Next();
        }
        else
        {
            if (trial.Index < MainPanel.transform.childCount - 1)
            {
                trialTarget     = MainPanel.transform.GetChild(trial.Index + 1);
                centringOnTrial = true;
            }
            else if (trial.Index == MainPanel.transform.childCount - 1)
            {
                trialTarget     = MainPanel.transform.GetChild(trial.Index - 1);
                centringOnTrial = true;
            }
        }
    }
    public void Process(LikertTrial trial)
    {
        int response = trial.Response;

        NumberOfAnswers += 1;

        EventData e = new EventData();

        e.Add("Timestamp", "" + Time.time);

        e.Add("Index", trial.Index + "");
        e.Add("Original Index", trial.OriginalIndex + "");
        e.Add("Question", trial.Stimulus);
        e.Add("Response", "" + response);
        e.Add(trial.Stimulus, "" + response);

        Analytics.LogEvent(e);

        Analytics.LogCritical(LikertTitle + "_" + trial.OriginalIndex, response + "");
    }
    private void Update()
    {
        LikertTrial trialInFocus = null;

        for (int i = 0; i < Trials.Count; i++)
        {
            LikertTrial lt = Trials[i];

            if (lt.transform.position.y < 375 && !DoneTrials.Contains(lt))
            {
                //     Debug.Log(i + ":" + lt.transform.position.y);

                trialInFocus = lt;
                break;
            }
        }

        if (trialInFocus != null)
        {
            /*
             * Find out if a key has been pressed
             */

            string input = "";
            if (Input.GetKeyDown("1"))
            {
                input = "1";
            }
            else if (Input.GetKeyDown("2"))
            {
                input = "2";
            }
            else if (Input.GetKeyDown("3"))
            {
                input = "3";
            }
            else if (Input.GetKeyDown("4"))
            {
                input = "4";
            }
            else if (Input.GetKeyDown("5"))
            {
                input = "5";
            }
            else if (Input.GetKeyDown("6"))
            {
                input = "6";
            }
            else if (Input.GetKeyDown("7"))
            {
                input = "7";
            }
            else if (Input.GetKeyDown("8"))
            {
                input = "8";
            }
            else if (Input.GetKeyDown("9"))
            {
                input = "9";
            }

            /*
             * A number has been input
             */

            if (input.Length > 0)
            {
                foreach (Transform t in trialInFocus.NumberLine.transform)
                {
                    Text text = t.GetComponentInChildren <Text>();

                    if (text.text.Contains(input))
                    {
                        trialInFocus.Notify(t.gameObject);
                    }
                }
            }
        }

        if (centringOnTrial && Mathf.Abs(trialTarget.transform.position.y - oldTrialPosition) < 5f)
        {
            resetCentring += Time.deltaTime;
        }

        if (!centringOnTrial)
        {
            resetCentring = 0f;
        }

        if (resetCentring > 0.5f)
        {
            centringOnTrial = false;
        }


        if (centringOnTrial)
        {
            oldTrialPosition = trialTarget.transform.position.y;

            if (trialTarget.transform.position.y < (MainPanel.transform.parent.position.y + 40))
            {
                Scroll.value -= (Time.deltaTime * (500f / MainPanel.GetComponent <RectTransform>().rect.height));
            }
            else if (trialTarget.transform.position.y - trialTarget.GetComponent <RectTransform>().rect.height > MainPanel.transform.parent.position.y + (MainPanel.transform.parent.GetComponent <RectTransform>().rect.height / 2f))
            {
                Scroll.value += (Time.deltaTime * (500f / MainPanel.GetComponent <RectTransform>().rect.height));
            }
            else
            {
                centringOnTrial = false;
            }
        }
    }