var commonFriendsPreview = null;
var commonMessagesPreview = null;
/** ------------------------------------------------------------------------ **/
function sendRequest(args) {
	var a = {model: "json", t: (new Date()).getTime()};
	for (var i in args) a[i] = args[i];

	var ajax_rpc = new AjaxRpc("");
	var result = null;
	try {
		result = ajax_rpc.GET({url: "/getmyprofile.plex", args: a, callback: null});
		if (result && result.ERROR && (result.ERROR != 0)) {
			//if (result.MESSAGE) alert(result.MESSAGE);
			return null;
		}
	} catch (e) {
		//alert(e.message);
		return null;
	}
	return result;
}
/** ------------------------------------------------------------------------ **/
// Friends Preview
function CFriendsPreview(element, info_element, user) {
	this.element = element;
	this.info_element = info_element;
	this.user = user || 0;
	this.maxNumber = 0;
	this.rowsNumber = 0;
	this.itemsInRow = 0;
	this.peopleCount = 0;
	this.rows = new Array();
	this.refresh();
	commonFriendsPreview = this;
}
CFriendsPreview.getInstance = function () {
	return commonFriendsPreview;
}
CFriendsPreview.prototype.refresh = function() {
	this.loadFriends();
	this.drawFriends();
}
CFriendsPreview.prototype.loadFriends = function() {
	var a = {operation: "ReviewFriends", 'class': "Friends"};
	a["type"] = "F";
	a["view"] = "preview";
	a["user"] = this.user;
	var result = sendRequest(a);
	if (!result) return;
	this.rows.length = 0;
	if (result.ARRAYS) {
		var rows = result.ARRAYS[0];
		for (var i = 0; i < rows.length; i++) {
			this.rows[i] = rows[i];
		}
	}
	this.peopleCount = parseInt(result.peopleCount);
	if (this.maxNumber == 0) this.maxNumber = parseInt(result.maxNumber);
	if (this.rowsNumber == 0) this.rowsNumber = parseInt(result.rowsNumber);
	if (this.itemsInRow == 0) this.itemsInRow = parseInt(result.itemsInRow);
}
CFriendsPreview.prototype.drawFriends = function() {
	var str = '';
	if (this.rows.length > 0) {
		var j = 0, l = Math.ceil(this.rows.length / this.itemsInRow);
		if (l > this.rowsNumber) l = this.rowsNumber;
		l *= this.itemsInRow;
		var textWidth = 60;
		var imgWidth = 58;
		str += '<table border="0"><tr>';
		for (var i = 0; i < l; i++) {
			if (j == this.itemsInRow) {
				str += '</tr><tr>';
				j = 0;
			}
			if (!this.rows[i]) {
				str += '<td></td>';
			} else {
				str += '<td width="' + textWidth + '" align="center" valign="bottom">'
					+ '<table width="' + imgWidth + '" align="center"><tr>'
					+ '<td width="100%" style="padding:1px;">'
					+ '<div class="UserPicDivS" id="UserPic' + this.rows[i].Login + 'Div">'
					+ '<a href="/user/' + this.rows[i].Login + '">'
					+ '	<img id="UserPic' + this.rows[i].Login + '" src="" style="display:block;" alt="">'
					+ '</a>'
					+ '	<div class="xt"><!-- // --></div>'
					+ '	<div class="xr"><!-- // --></div>'
					+ '	<div class="xb"><!-- // --></div>'
					+ '	<div class="xl"><!-- // --></div>'
					+ '	<div class="xtl"><!-- // --></div>'
					+ '	<div class="xtr"><!-- // --></div>'
					+ '	<div class="xbl"><!-- // --></div>'
					+ '	<div class="xbr"><!-- // --></div>'
					+ '</div>'
					+ '<div class="clearer"><!-- // --></div>'
					+ "\n"
					+ '</td></tr></table>'
					+ '<div id="user' +  this.rows[i].Login + '" style="width:' + textWidth + 'px;display:none;">'
					+ '</div></td>' + "\n";
			}
			j++;
		}
		str += '</tr></table>' + "\n";
		this.element.innerHTML = str;
		var div = document.createElement("div");
		div.id = "resizeTextDiv";
		div.style.width = textWidth + 'px';
		div.style.overflow = "scroll";
		div.style.visibility = "hidden";
		document.body.appendChild(div);
		var resizeDiv = document.getElementById("resizeTextDiv");
		for (var i = 0; i < l; i++) {
			if (!this.rows[i]) continue;
			var fs = 11;
			resizeDiv.innerHTML = '<div style="width:100%;font-size:' + fs + 'px;">' + this.rows[i].Login + '</div>';
			while (resizeDiv.scrollWidth > textWidth) {
				if (fs == 6) break;
				fs--;
				resizeDiv.firstChild.style.fontSize = fs + 'px';
			}
			var userDiv = document.getElementById("user" + this.rows[i].Login);
			if (fs == 6) {
				fs++;
				userDiv.title = this.rows[i].Login;
				userDiv.style.overflow = "hidden";
			}
			userDiv.style.fontSize = fs + "px";
			userDiv.innerHTML = '<a href="/user/' + this.rows[i].Login
				+ '" class="lnkFrend" style="font-size:' + fs + 'px;">'
				+ this.rows[i].Login + '</a>';
			userDiv.style.display = "";
		}
		document.body.removeChild(resizeDiv);
		for (var i = 0; i < this.rows.length; i++) {
			showUserPicture('UserPic' + this.rows[i].Login, imgWidth, this.rows[i].NormalPic, this.rows[i].PicWidth, this.rows[i].PicHeight);
		}
	} else {
		this.element.innerHTML = 'No friends.';
	}
	//var s = 's';
	//if (this.peopleCount == 1) s = '';
	//this.info_element.innerHTML = '(' + this.peopleCount + '&nbsp;friend' + s + ')';
	this.info_element.innerHTML = '(' + this.peopleCount + ')';
}
/** ------------------------------------------------------------------------ **/
// Messages Preview
function CMessagesPreview(element, info_element) {
	this.element = element;
	this.info_element = info_element;
	this.itemsInView = 0;
	this.messageCount = 0;
	this.unreadCount = 0;
	this.lastUpdate = 0;
	this.rows = new Array();
	this.refresh();
	commonMessagesPreview = this;
}
CMessagesPreview.getInstance = function () {
	return commonMessagesPreview;
}
CMessagesPreview.prototype.refresh = function() {
	this.loadMessages();
	this.drawMessages();
}
CMessagesPreview.prototype.loadMessages = function() {
	var a = {operation: "LoadMessages", 'class': "Messages"};
	a["view"] = "preview";
	a["lastUpdate"] = this.lastUpdate;
	var result = sendRequest(a);
	if (!result) return;
	this.rows.length = 0;
	if (result.ARRAYS) {
		var rows = result.ARRAYS[0];
		for (var i = 0; i < rows.length; i++) {
			this.rows[rows[i].MessagePos] = rows[i];
		}
		if (this.itemsInView == 0) this.itemsInView = parseInt(result.itemsInView);
		this.lastUpdate = result.lastUpdate;
		this.messageCount = parseInt(result.messageCount);
		this.unreadCount = parseInt(result.unreadCount);
	}
}
CMessagesPreview.prototype.drawMessages = function() {
	var str = '', img, className;
	if (this.rows.length > 0) {
		for (var i = 0; i < this.itemsInView; i++) {
			var rowObj = this.rows[i];
			if (!rowObj) continue;
			if (rowObj.Unread == 'Y') {
				className = 'MessNew';
				if (rowObj.MessageType == 'C') img = "/images/iconmailnew.gif";
				else img = "/images/iconnotifynew.gif";
			} else {
				className = 'MessRead';
				if (rowObj.MessageType == 'C') img = "/images/iconmail.gif";
				else img = "/images/iconnotify.gif";
			}
			var view = '';
			if ((rowObj.MessageType == 'I') || (rowObj.MessageType == '-')) view = '?view=invites';
			str += '<div style="width:180px;overflow:hidden;">'
				+ '<div class="' + className
				+ '" style="cursor:pointer; position:relative;float:left;width:180px;overflow:visible;"'
				+ ' onclick="document.location=\'/mymessages.plex' + view + '\';">'
				+ '<img src="' + img + '" style="position:absolute;top:0;left:0;">'
				+ '<span style="padding-left:17px;font-weight:bold;">' + rowObj.Login + ':</span> '
				+ rowObj.Subject + '</div></div><hr class="separBlue">' + "\n";
		}
		str = '<hr class="separBlue">' + str;
	} else {
		str = 'No messages.';
	}
	this.element.innerHTML = str;
	str = '';
	if (this.unreadCount > 0) str = '(' + this.unreadCount + '&nbsp;unread)';
	this.info_element.innerHTML = str;
}
/** ------------------------------------------------------------------------ **/
function handleLoad4userleftbar(login) {
	if (!userSession.isLogged) return;
	var friendsCPanel = new CPanelManager("friends", "/myfriends.plex");
	var friendsPreview = new CFriendsPreview(friendsCPanel.getContent(), friendsCPanel.getHeadInfo());
	var listsCPanel = new CPanelManager("lists", "/user/" + login + "#MyLists");
	var listsFeed = new BykiFeed(login, "FU", listsCPanel.getContent(), 180);
	listsFeed.display();
	var messagesCPanel = new CPanelManager("mess", "/mymessages.plex");
	var messagesPreview = new CMessagesPreview(messagesCPanel.getContent(), messagesCPanel.getHeadInfo());
}
