public MainViewModel()
 {
     this.Friends = new ObservableCollection<Friend>();
     this.Requests = new ObservableCollection<Request>();
     this.Groups = new ObservableCollection<Group>();
     Me = new Friend() { Latitude = 181, Longitude = 181, NickName = "Me" };
     AllGroup = new Group() { Gid = -1, Name = "ALL" };
 }
        void proxy_getGroupsCompleted(object sender, Server.getGroupsCompletedEventArgs e)
        {
            // 2 continued
            if (e.Error == null && e.Result != null)
            {

                Groups.Clear();
                // 3. for each group, get friends
                foreach (var item in e.Result)
                {
                    Friend[] tempFriends = null;
                    if (item.users.Length > 0)
                    {
                        tempFriends = new Friend[item.users.Length];
                        for (int i = 0; i < item.users.Length; i++)
                        {
                            if (item.users[i].uid != Me.Uid)
                            {
                                tempFriends[i] = new Friend()
                                {
                                    NickName = item.users[i].fName,
                                    Uid = item.users[i].uid,
                                    Status = "Last updated at " + item.users[i].lastLoc.date,
                                    IsFriend = true,
                                    ImagePath = "/Assets/fakePor.png",
                                    Latitude = item.users[i].lastLoc.latitude,
                                    Longitude = item.users[i].lastLoc.longitude
                                };
                            }
                        }
                    }
                    Groups.Add(new Group() { Gid = item.gid, Name = item.name, Owner = item.owner, Friends = tempFriends });
                }

                // 4. set Friends for Current Group
                if (Groups.Count > 0)
                {
                    CurrentGroup = this.Groups[0];
                    Friends.Clear();
                    foreach (var item in CurrentGroup.Friends)
                    {
                        if (item != null)
                            Friends.Add(item);
                    }
                }

                // 5. Set AllGroup
                List<Friend> tempAll = new List<Friend>();
                foreach (var item in Groups)
                {
                    foreach (var user in item.Friends)
                    {
                        if (user != null)
                        {
                            bool isContained = false;
                            foreach (var u in tempAll)
                            {
                                if (u.Uid == user.Uid)
                                    isContained = true;
                            }
                            if (!isContained)
                                tempAll.Add(user);
                        }
                    }
                }

                Friend[] allFriend = new Friend[tempAll.Count];
                for (int i = 0; i < tempAll.Count; i++)
                {
                    allFriend[i] = tempAll[i];
                }
                AllGroup.Friends = allFriend;

                this.IsDataLoaded = true;
            }
        }