/*
此处为数据对应库
US.friend   集合,里面包含了好友分组,好友,群,群成员,最近联系人。
US.friend.allclass 数组 是所有的好友分组,结构参见好友分组实体U.MD.F.T.friendGroupEntity
US.friend.friends 数组 是所有的好友,结构参见好友实体U.MD.F.T.friendEntity
US.friend.group 数组 是所有的群,结构参见群实体U.MD.F.T.groupEntity
US.friend.groupusers 数组 是所有的群好友,结构参见群成员实体U.MD.F.T.groupUserEntity
US.friend.recentcontacts 数组 是所有的在线好友,结构为U.MD.F.T.recentContactsEntity
从数据库中取出的数据都要放到此全局变量中,当新建好友,新建分组等时,需要用下面的结构生成新的实体。
*/

Namespace.register("U.MD.F.T"); //好友数据源操作命名空间

/**
* 好友实体
*
* @param  {array} 好友信息
----------[0] 好友签名
----------[1] 好友用户id
----------[2] 好友原图
----------[3] 好友小图
----------[4] 好友别名
----------[5] 好友用户名
----------[6] 好友id
----------[7] 好友备注
----------[8] 好友分组id
----------[9] 是否在线
*/
U.MD.F.T.friendEntity = function (signature, userid, userimagehead, thumbnailheadimage, nickname, name, friendid, descript, groupid, islogin) {
    this.UserIndividualitysignature = signature;
    this.UserId = userid;
    this.UserImageHead = userimagehead;
    this.UserThumbnailImageHead = thumbnailheadimage;
    this.UserNickName = nickname;
    this.UserName = name;
    this.FriendsID = friendid;
    this.FriendsDescript = descript;
    this.FriendsGroupID = groupid;
    this.IsLogin = islogin;
}

/**
* 最近联系人
*
* @param  {array} 在线好友信息
----------[0] 好友用户id
----------[1] 好友用户名
----------[2] 好友大图
----------[3] 好友昵称
----------[4] 好友小图
----------[5] 最后聊天时间
----------[6] 好友备注
----------[7] 好友签名
----------[8] 是否在线
*/
U.MD.F.T.recentContactsEntity = function (userid, username, userimagehead, usernickname, userthumbnailimagehead, sendtime, descript, signature, islogin) {
    this.UserId = userid;
    this.UserName = username;
    this.UserImageHead = userimagehead;
    this.UserNickName = usernickname;
    this.UserThumbnailImageHead = userthumbnailimagehead;
    this.maxMessageSendTime = sendtime;
    this.FriendsDescript = descript;
    this.UserIndividualitysignature = signature;
    this.IsLogin = islogin;
}

/**
* 好友分组实体
*
* @param  {array} 好友分组信息
----------[0] 分组描述
----------[1] 分组分组id
----------[2] 分组名
*/
U.MD.F.T.friendGroupEntity = function (groupid, groupname, descript) {
    this.FriendsGroupID = groupid;
    this.FriendsGroupName = groupname;
    this.FriendsGroupDescript = descript;
}

/**
* 群实体
*
* @param  {array} 群信息
----------[0] 群id
----------[1] 群名
----------[2] 群创建时间
----------[3] 群创建用户id
----------[4] 群管理用户id
----------[5] 群描述
----------[6] 群备注
*/
U.MD.F.T.groupEntity = function (groupid, name, date, userid, descript, remark) {
    this.GroupManageID = groupid;
    this.GroupManageName = name;
    this.GroupManageCreateDate = date;
    this.GroupManageCreateUserID = userid;
    this.GroupManageUserID = userid;
    this.GroupManageDescript = descript;
    this.GroupManageRemark = remark;
}

/**
* 群成员实体
*
* @param  {array} 群信息
----------[0] 群用户id
----------[1] 群用户头像
----------[2] 群用户昵称
----------[3] 群用户名
----------[4] 群用户小图
----------[5] 群用户描述
----------[6] 群id
----------[6] 群用户登录信息
*/
U.MD.F.T.groupUserEntity = function (userid, userimagehead, nickname, name, thumbnailimagehead, descript, groupid, islogin) {
    this.UserId = userid;
    this.UserImageHead = userimagehead;
    this.UserNickName = nickname;
    this.UserName = name;
    this.UserThumbnailImageHead = thumbnailimagehead;
    this.GroupUsersDescript = descript;
    this.GroupManageID = groupid;
    this.IsLogin = islogin;
}

/**
* 循环所有好友,让在线用户都置顶在最上面。
*
*/
U.MD.F.T.initFriendInfo = function () {
    var i,
        j,
        _arr = ["friends", "groupusers", "recentcontacts"],
        _userinfo;

    //循环US.friend变量,修改里面的好友、群好友、在线联系人的信息为默认信息,同事设置用户是否在线
    for (i = 0; i < _arr.length; i++) {
        //0 好友分组 1好友信息 2群分组 3群用户 4最近联系人 5在线好友 这里只修改有用户信息的 所以修改为1、3、4
        //      if (i == 1 && i == 3 && i == 4) {
        for (j = 0; j < US.friend[_arr[i]].length; j++) {
            _userinfo = US.friend[_arr[i]][j];
            //判断用户是否在线,如果在线设置在线属性为在线
            if (US.friend.onlinefirendinfo.indexOf(_userinfo.UserId) > -1) {
                _userinfo.IsLogin = 1; //设置在线
            }
            //如果是好友信息的修改,由于从数据库里面选出来的数据有null值,所以这里把null过滤了
            if (i != 1) {
                U.Json.Change(_userinfo, {
                    "UserIndividualitysignature": _userinfo["UserIndividualitysignature"] || "",
                    "UserNickName": _userinfo.UserName,
                    "FriendsDescript": _userinfo["FriendsDescript"] || _userinfo.UserName
                });
            }
            //如果是群好友信息的修改,由于从数据库里面选出来的数据有null值,所以这里把null过滤了
            else {
                U.Json.Change(_userinfo, {
                    "UserNickName": _userinfo.UserName,
                    "GroupUsersDescript": _UFE[j]["GroupUsersDescript"] || _userinfo.UserName
                });
            }
        }
        //除了最近联系人以外,其他的都要重新排序
        if (i != "recentcontacts") {
            U.Json.Reset(US.friend[_arr[i]], "IsLogin", 1); //设置完在线后,把在线用户发在最前面,这里是根据IsLogin = 1的排序
        }
    }
    //  }
}