var Friend = {
	__url_get_friend__ : "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_get_list",
	__url_get_friend_short__: "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_short_list",
	__url_add_friend__ : "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_add",
	__url_modify_remark__ : "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_modify_remark",
	__url_delete_friend__ : "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_delete",
	__url_add_group__ : "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_addgroup",
	__url_move_group__ : "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_movegroup",
	__url_add_black_list__ :  "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_add_blacklist",
	__url_verify_request__ : "http://portal.widget.xunlei.com/cgi-bin/cgi_friend_verify",

	getFriendList : function(callback) {
		var url=this._appendParam(this.__url_get_friend__, "cachetime", new Date().getTime());
		this._sendRequest(url, callback);
	},

	getFriendShortList : function(callback) {
		var url=this._appendParam(this.__url_get_friend_short__, "cachetime", new Date().getTime());
		this._sendRequest(url, callback);
	},

	addFriend : function(friend_uin, message, vefiry_code, callback) {
		var url=this._appendParam(this.__url_add_friend__, "cachetime", new Date().getTime());
		url=this._appendParam(url, "uinb", friend_uin);
		url=this._appendParam(url, "message", encodeURIComponent(message));
		url=this._appendParam(url, "verify_code", vefiry_code);
		this._sendRequest(url, callback);
	},
	
	modifyRemark :ˇˇfunction (friend_uin, new_remark, callback) {
		var url=this._appendParam(this.__url_modify_remark__, "cachetime", new Date().getTime());
		url=this._appendParam(url, "uinb", friend_uin);
		url=this._appendParam(url, "remark", encodeURIComponent(new_remark));
		this._sendRequest(url, callback);
	},

	deleteFriend : function (friend_uin, callback) {
		if(friend_uin=="admin")
			return;
		var url=this._appendParam(this.__url_delete_friend__, "cachetime", new Date().getTime());
		url=this._appendParam(url, "uinb", friend_uin);
		this._sendRequest(url, callback);
	},
	
	addGroup : function (new_group_name, callback) {
		var url=this._appendParam(this.__url_add_group__, "name", encodeURIComponent(new_group_name));
		this._sendRequest(url, callback);
	},

	moveGroup : function (friend_uin, friend_id, old_group_id, new_group_id, callback) {
		var message=(friend_id+"||"+old_group_id+"||"+new_group_id);
		var url=this._appendParam(this.__url_move_group__, "cachetime", new Date().getTime());
		url=this._appendParam(url, "uinb", friend_uin);
		url=this._appendParam(url, "message", message);
		this._sendRequest(url, callback);
	},

	verifyRequest : function (request_uin, sessionid, op, callback) {
		var url=this._appendParam(this.__url_verify_request__, "cachetime", new Date().getTime());
		url=this._appendParam(url, "uinb", request_uin);
		url=this._appendParam(url, "sessionid", sessionid);
		url=this._appendParam(url, "op", op);
		this._sendRequest(url, callback);
	},

	addBlacklist : function (friend_uin, friend_id, old_group_id, callback) {
		if(friend_uin=="admin")
			return;
		this.moveGroup(friend_uin, friend_id, old_group_id, 2, callback);
	},

	addDirectToBlacklist : function (uin, callback) {
		if(uin=="admin")
			return;
		var url=this._appendParam(this.__url_add_black_list__, "cachetime", new Date().getTime());
		url=this._appendParam(url, "uinb", uin);
		this._sendRequest(url, callback);
	},

	removeBlacklist : function (friend_uin, callback) {
		this.deleteFriend(friend_uin, callback);
	},
	
	_appendParam : function(url, name, value) {
		var url_out=url;
		if(url.indexOf("?")<0)
			url_out+="?";
		else
			url_out+="&";
		url_out+=(name+"="+value);
		return url_out;
	},

	_sendRequest : function(url, callback) {
		new Ajax.Request(url, {
		response: "Object",
		onSuccess: Delegate.create(this, function(evt){
			var rr=evt.response;
			callback(rr);
		}),
		onException: function(evt){
			alert("friend excpetion, "+url);
		}
	});
	}
	
}