/// <summary>
        /// Loads the scores of a user.
        /// </summary>
        /// <param name="user">User.</param>
        /// <param name="interval">Interval.</param>
        /// <param name="callback">Callback.</param>
        public static void LoadScoresByUser(User user, eLeaderboardInterval interval, System.Action <Score[], string> callback)
        {
            var form = CombuManager.instance.CreateForm();

            form.AddField("action", "highscore_account");
            form.AddField("Id", user.id);
            form.AddField("Interval", ((int)interval).ToString());
            CombuManager.instance.CallWebservice(CombuManager.instance.GetUrl("leaderboards.php"), form, (string text, string error) => {
                List <Score> scores = new List <Score>();
                if (string.IsNullOrEmpty(error))
                {
                    ArrayList result = text.arrayListFromJson();
                    if (result != null)
                    {
                        foreach (Hashtable data in result)
                        {
                            scores.Add(new Score(
                                           data["IdLeaderboard"] + "",
                                           data["CodeLeaderboard"] + "",
                                           int.Parse(data["Rank"].ToString()),
                                           user,
                                           double.Parse(data["Score"].ToString())
                                           ));
                        }
                    }
                }
                if (callback != null)
                {
                    callback(scores.ToArray(), error);
                }
            });
        }
        /// <summary>
        /// Loads the scores of a Leaderboard by user.
        /// </summary>
        /// <param name="leaderboardId">Leaderboard identifier.</param>
        /// <param name="user">User.</param>
        /// <param name="interval">Interval.</param>
        /// <param name="callback">Callback.</param>
        /// <example>
        /// Example of usage:
        /// <code>
        /// CombuManager.platform.LoadScores ("1234", CombuManager.localUser, eLeaderboardInterval.Week, 10, (Score score, int page, string error) => {
        ///    Debug.Log("Score: " + score.rank);
        /// });
        /// </code>
        /// </example>
        public virtual void LoadScoresByUser(string leaderboardId, User user, eLeaderboardInterval interval, int limit, System.Action <Score, int, string> callback)
        {
            if (!CombuManager.isInitialized)
            {
                throw new System.Exception("Combu Manager not initialized");
            }
            Leaderboard board = new Leaderboard();

            board.id = leaderboardId;
            board.LoadScoresByUser(user, interval, limit, callback);
        }
        /// <summary>
        /// Loads the scores by user.
        /// </summary>
        /// <param name="userId">User identifier.</param>
        /// <param name="userName">User name.</param>
        /// <param name="interval">Interval.</param>
        /// <param name="limit">Limit.</param>
        /// <param name="callback">Callback.</param>
        protected void LoadScoresByUser(long userId, string userName, eLeaderboardInterval interval, int limit, System.Action <Score, int, string> callback)
        {
            var form = CombuManager.instance.CreateForm();

            form.AddField("action", "highscore_account");
            if (userId > 0)
            {
                form.AddField("Id", userId.ToString());
            }
            else if (!string.IsNullOrEmpty(userName))
            {
                form.AddField("Username", userName);
            }
            form.AddField("IdLeaderboard", id);
            form.AddField("Interval", ((int)interval).ToString());
            form.AddField("Limit", limit.ToString());
            CombuManager.instance.CallWebservice(CombuManager.instance.GetUrl("leaderboards.php"), form, (string text, string error) => {
                Score score = null;
                int page    = 1;
                if (string.IsNullOrEmpty(error))
                {
                    Hashtable result = text.hashtableFromJson();
                    if (result != null && result.ContainsKey("Score"))
                    {
                        score = new Score(
                            result["IdLeaderboard"] + "",
                            result["CodeLeaderboard"] + "",
                            int.Parse(result["Rank"].ToString()),
                            new User(result["User"].ToString()),
                            double.Parse(result["Score"].ToString())
                            );
                        page = int.Parse(result["Page"].ToString());
                    }
                }
                if (callback != null)
                {
                    callback(score, page, error);
                }
            });
        }
 /// <summary>
 /// Loads the scores by userName.
 /// </summary>
 /// <param name="userName">User name.</param>
 /// <param name="interval">Interval.</param>
 /// <param name="limit">Limit.</param>
 /// <param name="callback">Callback.</param>
 public virtual void LoadScoresByUser(string userName, eLeaderboardInterval interval, int limit, System.Action <Score, int, string> callback)
 {
     LoadScoresByUser(0, userName, interval, limit, callback);
 }
 /// <summary>
 /// Loads the scores by user id.
 /// </summary>
 /// <param name="userId">User identifier.</param>
 /// <param name="interval">Interval.</param>
 /// <param name="limit">Limit.</param>
 /// <param name="callback">Callback.</param>
 public virtual void LoadScoresByUser(long userId, eLeaderboardInterval interval, int limit, System.Action <Score, int, string> callback)
 {
     LoadScoresByUser(userId, string.Empty, interval, limit, callback);
 }
 /// <summary>
 /// Loads the scores of a user on this leaderboard.
 /// </summary>
 /// <param name="user">User.</param>
 /// <param name="interval">Interval.</param>
 /// <param name="callback">Callback.</param>
 public virtual void LoadScoresByUser(User user, eLeaderboardInterval interval, int limit, System.Action <Score, int, string> callback)
 {
     LoadScoresByUser(user.idLong > 0 ? user.idLong : 0, user.idLong > 0 ? string.Empty : user.userName, interval, limit, callback);
 }