
/* 用于从好友中选择部分名单 */
/* 可用于 input:单选 ; select:多选 */

$.fn.friend = function(defid) {

	//下拉列表控件
	var self = this;

	//是否多选
	var multiple = (self.is("select"));

	//如果是单选, 增加一个显示昵称的 input
	if (!multiple) {
		self.hide();
		var self_nick = $("<input readonly>").insertBefore(self);
	}

	//选择好友按钮
	var btn = $("<input type=button value=选择好友>");

	//存储好友数组
	var list = [];
	
	//用户类
	function user(uid, nick, selected) {
		this.uid = uid;
		this.nick = nick
		this.selected = selected;
	};

	//清空选定项目
	function clearSelected() {
		$.each(list, function(i, item) {
			item.selected = false;
		});
	}

	//选定一个好友
	function selectUser(uid) {
		$.each(list, function(i, item) {
			if (item.uid == uid) item.selected = true;
		});
	}

	//绑定到下拉列表
	function bindList() {
		if (multiple) self.empty();
		$.each(list, function(i, item) {
			if (item.selected) {
				if (multiple) {
					$("<option value=" + item.uid + " selected>" + item.nick + "</option>").appendTo(self);
				}
				else {
					self.val(item.uid);
					self_nick.val(item.nick);
				}
			}
		});
	}

	//加载好友
	$.getJSON("/home/get_friend.asp", function(data) {
		$.each(data, function(i, item) {
			list.push(new user(item.UserID, item.NickName, ((defid && item.UserID == defid) ? true : false)));
		});
		btn.insertAfter(self);		//加载完成显示按钮
		if (defid) bindList();		//如有默认值, 绑定
	});
	
	//选择好友界面
	btn.click(function() {
		var n = 0;
		var html ="<table border=0 width=330><tr>";
		$.each(list, function(i, item) {
			n++;
			if (multiple) {
				html += "<input type=checkbox name=friend_" + n + " value=" + item.uid + ((item.selected) ? " checked" : "") + ">" + item.nick + " ";
			}
			else {
				if((n-1)%3==0)
					if((n-1)>0)
						html +="</tr><tr>"
				html += "<td width=110><input type=radio name=friend value=" + item.uid + ((item.selected) ? " checked" : "") + ">" + item.nick + " </td>";
			}
		});
		html +="</tr></table>"
		
		$.prompt(html, {
			buttons: {"确定":true, "取消":false},
			callback: function(v,m,f) {
				if (v) {
					clearSelected();					//清空选定项目
					$.each(f, function(i, item) {
						selectUser(item);				//逐个选定项目
					});
					bindList();							//绑定下拉列表
				}
			}
		});
	});
}
