FriendsModule={};

Nexopia.Friends = {	
	init: function()
	{
		this.remove_friend_elements = [];
		this.add_friend_elements = [];
		this.reverse_remove_friend_elements = [];
		this.comment_elements = [];
		this.message_elements = [];
		this.online_elements = [];
		this.offline_elements = [];
		
		//find all the elements for each tooltip
		var add_friend_tooltip;
		var remove_friend_tooltip;
		var reverse_remove_friend_tooltip;
		var readd_friend_tooltip;
		var comment_tooltip;
		var message_tooltip;
		var online_tooltip;
		var offline_tooltip;
		
		var friends_list = YAHOO.util.Dom.getElementsByClassName("friend", "div", "friends_layout", null);
		
		var i;
		var temp;
		var friend_id_regex = /^friend_\d*$/;
		
		for(i=0;i<friends_list.length;i++)
		{
			temp = friends_list[i];
			if(!temp.id.match(friend_id_regex))
			{
				continue;
			}
			
			for(j=0; j<temp.childNodes.length; j++)
			{
				temp_child = temp.childNodes[j];
				
				if(YAHOO.util.Dom.hasClass(temp_child, "actions"))
				{
					Nexopia.Friends.setup_actions(temp_child);
				}
				else if(YAHOO.util.Dom.hasClass(temp_child, "pictures_div"))
				{
					Nexopia.Friends.setup_user_status(temp_child);
				}
			}
		}
		/*
		alert("Online: " + Nexopia.Friends.online_elements.length);
		alert("Offline: " + Nexopia.Friends.offline_elements.length);
		alert("Message: " + Nexopia.Friends.message_elements.length);
		alert("Comments: " + Nexopia.Friends.comment_elements.length);
		alert("Add Friend: " + Nexopia.Friends.add_friend_elements.length);
		alert("Remove Friend: " + Nexopia.Friends.remove_friend_elements.length);
		alert("Reverse Remove Friend: " + Nexopia.Friends.reverse_remove_friend_elements.length);
		*/
		add_friend_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: Nexopia.Friends.add_friend_elements, text: "Add as Friend"});
		remove_friend_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: Nexopia.Friends.remove_friend_elements, text: "Remove Friend"});
		reverse_remove_friend_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: Nexopia.Friends.reverse_remove_friend_elements, text: "Remove from Friends list"});
		readd_friend_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: [], text: "Add as Friend"});
		comment_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: Nexopia.Friends.comment_elements, text: "Comment"});
		message_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: Nexopia.Friends.message_elements, text: "Send Message"});
		online_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: Nexopia.Friends.online_elements, text: "Online"});
		offline_tooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: Nexopia.Friends.offline_elements, text: "Offline"});
	},
	
	setup_actions: function(el)
	{
		var remove_friend = YAHOO.util.Dom.getElementsByClassName("remove_friend", "a", el, null);
		var reverse_remove_friend = YAHOO.util.Dom.getElementsByClassName("reverse_remove_friend", "a", el, null);
		var add_friend = YAHOO.util.Dom.getElementsByClassName("add_friend", "a", el, null);
		var message = YAHOO.util.Dom.getElementsByClassName("friend_send_message", "a", el, null);
		var comment = YAHOO.util.Dom.getElementsByClassName("friend_comments", "a", el, null);
		
		if(remove_friend.length > 0)
		{
			Nexopia.Friends.remove_friend_elements.push(remove_friend[0]);
		}
		if(reverse_remove_friend.length > 0)
		{
			Nexopia.Friends.reverse_remove_friend_elements.push(reverse_remove_friend[0]);
		}
		if(add_friend.length > 0)
		{
			Nexopia.Friends.add_friend_elements.push(add_friend[0]);
		}
		if(message.length > 0)
		{
			Nexopia.Friends.message_elements.push(message[0]);
		}
		if(comment.length > 0)
		{
			Nexopia.Friends.comment_elements.push(comment[0]);
		}
	},
	
	setup_user_status: function(el)
	{
		var i;
		var j;
		
		for(i=0; i<el.childNodes.length; i++)
		{
			var temp = el.childNodes[i];
			if(YAHOO.util.Dom.hasClass(temp, "online_offline"))
			{
				for(j=0;j<temp.childNodes.length; j++)
				{
					if(YAHOO.util.Dom.hasClass(temp.childNodes[j], "friend_offline"))
					{
						Nexopia.Friends.offline_elements.push(temp.childNodes[j]);
					}
					else if(YAHOO.util.Dom.hasClass(temp.childNodes[j], "friend_online"))
					{
						Nexopia.Friends.online_elements.push(temp.childNodes[j]);
					}
				}
			}
		}
	}
};

Friends = function()
{
	
};



Friends.prototype =
{
	
};

Friends.AddLink = function(element, replacement_element) {
	this.element = element;
	this.replacement_element = replacement_element;
	YAHOO.util.Event.on(this.element, 'click', this.submit, this, true);
};

Friends.AddLink.prototype = {
	submit: function(event) {
		if (event) {
			YAHOO.util.Event.preventDefault(event);
		}

		var spinner = new Spinner({ context: [this.element, "tr"], offset: [-3,-4] , lazyload: true });
		this.element.style.visibility = "hidden";
		spinner.on();
		var that = this;
		
		YAHOO.util.Connect.asyncRequest('POST', this.element.href, new ResponseHandler({
			success: function() {
				spinner.off();
				if (that.replacement_element)
				{
					this.parentNode.replaceChild(that.replacement_element, that.element);					
					// init_custom_color_icons([that.replacement_element]);
				}
				else
				{
					this.parentNode.removeChild(this);
				}
			},
			failure: function() {
				spinner.off();
				this.style.visibility = "visible";
			},
			scope: this.element
		}), "ajax=true&form_key[]=" + Nexopia.json(this.element));
	}
};

Overlord.assign({
	minion: "friends:add_friend",
	load: function(element) {
		var replacement_img = document.createElement('img');
		YAHOO.util.Dom.addClass(replacement_img, "color_icon");
		replacement_img.src = Site.coloredImgURL(Nexopia.Utilities.deduceImgColor(element)) +"/friends/images/icon_friend_true.gif";
		new Friends.AddLink(element, replacement_img);
	},
	order: -1
});

Overlord.assign({
	minion: "friends:remove_friend",
	load: function(element) {
		
	},
    click: function(event, element) {
        YAHOO.util.Event.preventDefault(event);
		form_key = Nexopia.json(element);
		YAHOO.util.Connect.asyncRequest('POST', element.href, new ResponseHandler({}), "ajax=true&form_key[]=" + form_key);
    }
});

Overlord.assign({
	minion: "friends:reverse_remove_friend",
	load: function(element) {
		
	},

    click: function(event, element) {
		YAHOO.util.Event.preventDefault(event);
		form_key = Nexopia.json(element);
		YAHOO.util.Connect.asyncRequest('POST', element.href, new ResponseHandler({}), "ajax=true&form_key[]=" + form_key);
    }
});

Overlord.assign({
	minion: "friends:re_add_friend",
	load: function(element) {
		
	},

  click: function(event, element) {
  	YAHOO.util.Event.preventDefault(event);
		form_key = Nexopia.json(element);
		YAHOO.util.Connect.asyncRequest('POST', element.href, new ResponseHandler({}), "ajax=true&form_key[]=" + form_key);
	}
});

Overlord.assign({
	minion: "friends:truncated",
	load: function(element) {
		new Truncator(element, {
			height:30,
			width:350,
			expandable: true,
			collapsible: true,
			suffix: "...&nbsp;<a href=''>[more]</a>",
			expandedSuffix: "&nbsp;<a href=''>[less]</a>",
			tooltip: false
		});
	}
});

Overlord.assign({
	minion: "friends:init_tooltips",
	load: function(element) {
		Nexopia.Friends.init();
	}
})
// require friends.js

Nexopia.Friends.Note = function(element) {
	this.editLink = element;
	this.root = this.editLink.parentNode.parentNode;
	this.note = YAHOO.util.Dom.getElementsByClassName('note', 'div', this.root)[0];
	this.form = this.root.getElementsByTagName('form')[0];
	this.text = YAHOO.util.Dom.getElementsByClassName("edit_notes", 'input', this.form)[0];
	YAHOO.util.Event.on(this.editLink, 'click', this.edit, this, true);
	YAHOO.util.Event.on(this.text, 'blur', this.save, this, true);
	YAHOO.util.Event.on(this.form, 'submit', this.save, this, true);
};

Nexopia.Friends.Note.prototype = {
	edit: function(event) {
		YAHOO.util.Event.preventDefault(event);
		YAHOO.util.Dom.setStyle(this.note, 'display', 'none');
		YAHOO.util.Dom.setStyle(this.editLink, 'display', 'none');
		YAHOO.util.Dom.setStyle(this.form, 'display', 'inline');
		YAHOO.util.Dom.setStyle(this.text, 'display', 'inline');
		this.text.focus();
		this.text.select();
	},
	save: function() {
		YAHOO.util.Dom.setStyle(this.text, 'display', 'none');
		YAHOO.util.Dom.setStyle(this.note, 'display', 'inline');
		YAHOO.util.Dom.setStyle(this.editLink, 'display', 'inline-block');
		this.note.innerHTML = "Updating...<img src=\"" + Site.staticFilesURL + "/Legacy/images/spinner.gif\"/>";
		YAHOO.util.Connect.setForm(this.form);
		that = this;
		YAHOO.util.Connect.asyncRequest('POST', this.form.action, {
			success: function() {
				that.note.innerHTML = that.text.value;
			},
			scope: this.element
		}, 'null=null');
	}
};

Overlord.assign({
	minion: "friends:notes:edit",
	load: function(element) {
		new Nexopia.Friends.Note(element);
	}
});

Overlord.assign({
	minion: "friends:notes:form",
    submit: function(event, element) {
        YAHOO.util.Event.preventDefault(event);
    }
});

FriendsOfFriends = {
	init: function() {
		var add = YAHOO.util.Dom.getElementsByClassName("add");
		for (var i=0;i<add.length;i++) {
			FriendsOfFriends.registerAjaxForm(add[i]);
			new ToolTip(add[i], {text:"Add as Friend"});
		}
		var hide = YAHOO.util.Dom.getElementsByClassName("hide");
		for (var i=0;i<hide.length;i++) {
			FriendsOfFriends.registerAjaxForm(hide[i]);
			new ToolTip(hide[i], {text:"Hide"});
		}
		var connected_friends = YAHOO.util.Dom.getElementsByClassName("connected_friend");
		for (var i=0;i<connected_friends.length;i++) {
			var friend = connected_friends[i];
			var name = friend.id.match(/picture_\d+_(.+)/)[1];
			new ToolTip(friend, {text:name});
		}
	},
	//Sets up functionality to do ajax form submission and then hide wrapping element
	registerAjaxForm: function(element) {
		YAHOO.util.Event.on(element, "click", function(e) {
			YAHOO.util.Event.preventDefault(e);
			element.innerHTML = "<img src='"+Site.staticFilesURL+"/Legacy/images/spinner.gif'";
			YAHOO.util.Connect.asyncRequest("post", element.href, {
				success: function() {
					var li = YAHOO.util.Dom.getAncestorByClassName(element, 'friend_list_entry');
					li.parentNode.removeChild(li);
				},
				scope: element
			}, "null=null");
		});
	}
};

GlobalRegistry.register_handler("friends_of_friends", FriendsOfFriends.init, FriendsOfFriends, true);
FriendsProfileBlock = {
	init: function(element) {
		this.toolBar = element;
		
		this.sendMessageTooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: [], text: "Send Message"});
		this.commentTooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: [], text: "Comment"});
		this.addFriendTooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: [], text: "Add as Friend"});
		
		this.sendMessageLinks = [];
		this.commentLinks = [];
		this.addFriendLinks = [];
		
		var autoComplete = new YAHOO.widget.AutoComplete("friends_search", "friends_results", new YAHOO.widget.DS_JSArray(Nexopia.json(element), {
			queryMatchContains: true
		}), {
			animHoriz: false,
			animVert: false
		});
		autoComplete.itemSelectEvent.subscribe(function(event, args) {
			var username = args[2][0];
			window.location = "/users/" + encodeURIComponent(username);
		});
		
		this.thumbViewLink = YAHOO.util.Dom.getElementsByClassName('thumb_view', 'a', element, function(thumb_view) {
			YAHOO.util.Event.on(thumb_view, 'click', FriendsProfileBlock.thumbView, FriendsProfileBlock, true);
		})[0];
		if (!YAHOO.util.Dom.hasClass('thumb_view_container', 'hidden')) {
			this.loadThumbViewImages();
		}
		this.listViewLink = YAHOO.util.Dom.getElementsByClassName('list_view', 'a', element, function(list_view) {
			YAHOO.util.Event.on(list_view, 'click', FriendsProfileBlock.listView, FriendsProfileBlock, true);
		})[0];
		if (!YAHOO.util.Dom.hasClass('list_view_container', 'hidden')) {
			this.listView();
		}
		
		this.updateAddFriends();
		
		var mock_event = new Object();
		mock_event.page = 0;
		mock_event.previous_page = 0;
		FriendsProfileBlock.onPageChangeTooltipUpdate("onPageChange", [mock_event]);
	},
	loadThumbViewImages: function() {
		if (!this.loadedThumbViewImages) {
			Nexopia.DelayedImage.loadImages("thumb_view_container");
			this.loadedThumbViewImages = true;
			//once we load the images once make sure we load the images for any future pages immediately
			Overlord.assign({
				minion: "fpb:friend_pic",
				load: Nexopia.DelayedImage.loadImage,
				limitToContext: true				
			});
		}
	},
	thumbView: function(event) {
		if (event) {
			YAHOO.util.Event.preventDefault(event);
		}
		this.loadThumbViewImages();
		YAHOO.util.Dom.addClass(this.thumbViewLink, 'selected');
		YAHOO.util.Dom.removeClass('thumb_view_container', 'hidden');
		YAHOO.util.Dom.removeClass(this.listViewLink, 'selected');
		YAHOO.util.Dom.addClass('list_view_container', 'hidden');
	},
	listView: function(event) {
		if (event) {
			YAHOO.util.Event.preventDefault(event);
		}
		YAHOO.util.Dom.addClass(this.listViewLink, 'selected');
		YAHOO.util.Dom.removeClass('list_view_container', 'hidden');
		YAHOO.util.Dom.removeClass(this.thumbViewLink, 'selected');
		YAHOO.util.Dom.addClass('thumb_view_container', 'hidden');
	},
	updateTooltips: function() {
		this.sendMessageTooltip.render(this.element);
		this.commentTooltip.render(this.element);
		this.addFriendTooltip.render(this.element);
		this.sendMessageTooltip.cfg.setProperty("context", this.sendMessageLinks);
		this.commentTooltip.cfg.setProperty("context", this.commentLinks);
		this.addFriendTooltip.cfg.setProperty("context", this.addFriendLinks);
	},
	onPageChangeTooltipUpdate: function(type, args)
	{
		var page_info = args[0];

		message_links = YAHOO.util.Dom.getElementsByClassName("send_message", "a", "friends_list_page_"+page_info.page, null);
		FriendsProfileBlock.sendMessageLinks = message_links;
		comment_links = YAHOO.util.Dom.getElementsByClassName("comment", "a", "friends_list_page_"+page_info.page, null);
		FriendsProfileBlock.commentLinks = comment_links;
		add_friend_links = YAHOO.util.Dom.getElementsByClassName("add_friend", "a", "friends_list_page_"+page_info.page, null);
		FriendsProfileBlock.addFriendLinks = add_friend_links;
		FriendsProfileBlock.updateTooltips();
	},
	deduceImgColor: function()
	{
		var iconColor = '000000';

		var profileDiv = document.getElementById('profile');
		if (profileDiv)
		{
			var primaryDiv = document.createElement('div');
			primaryDiv.className = 'primary_block';
			var secondaryDiv = document.createElement('div');
			secondaryDiv.className = 'secondary_block';
			primaryDiv.appendChild(secondaryDiv);
			profileDiv.appendChild(primaryDiv);
			iconColor = Nexopia.Utilities.deduceImgColor(secondaryDiv);
			profileDiv.removeChild(primaryDiv);
		}
		return iconColor;
	},
	updateAddFriends: function() {
		YAHOO.util.Event.on(YAHOO.util.Dom.getElementsByClassName("add_friend", "a", this.element), 'click', this.addFriend, this);
	},
	addFriend: function(event, obj) {
		if (event) {
			YAHOO.util.Event.preventDefault(event);
		}

		YAHOO.util.Connect.asyncRequest('POST', this.href, new ResponseHandler({
			success: function() {
				this.innerHTML = "<img src='" + Site.coloredImgURL(obj.deduceImgColor()) + "/friends/images/icon_friend_true.gif' class='color_icon'/>";				
			},
			scope: this
		}), 'ajax=true');
	}
};

Overlord.assign({
	minion: "fpb:friends_pages",
	load: function(element) {
		var pageCount = YAHOO.util.Dom.get("friends_pages_count").value;
		var ajaxPath = YAHOO.util.Dom.get("friends_ajax_path").value;
		if (pageCount > 1) {
			var paginator = new Paginator(element, {
				orientation: "vertical", 
				height: 440, 
				pageIndicatorStyle: "none",
				ajaxLoadURL: ajaxPath,
				numPages: pageCount,
				prefetchPages: 3,
				pageGrouping: 10,
				duration: 0.5
			});
			//This will start the paginator loading the second page as soon as you hover
			//over the paginator the first time.
			YAHOO.util.Event.on(element, 'mouseover', function() {paginator.getPageAt(1);});
			paginator.onPageChange.subscribe(FriendsProfileBlock.onPageChangeTooltipUpdate);
		} else {
			YAHOO.util.Dom.setStyle("friends_arrow_btns", "display", "none");
		}
	},
	order: -1
});

Overlord.assign({
	minion: "fpb:user_container",
	load: function(element) {
		function hoverOn()
		{
			YAHOO.util.Dom.addClass(element, "block_hover");
			YAHOO.util.Dom.removeClass(element, "block_regular");			
		}
		YAHOO.util.Event.addListener(element, "mouseover", hoverOn);
		
		function hoverOff()
		{
			YAHOO.util.Dom.addClass(element, "block_regular");
			YAHOO.util.Dom.removeClass(element, "block_hover");
		}
		YAHOO.util.Event.addListener(element, "mouseout", hoverOff);
	}
});

Overlord.assign({
	minion: "fpb:friends_toolbar",
	load: FriendsProfileBlock.init,
	scope: FriendsProfileBlock
});

//require friends_profile_block.js
FriendsProfileBlock.ListView = {
	pageLength: 20,
	json: null,
	page: 0,
	init: function(element) {
		
		this.sendMessageTooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: [], text: "Send Message"});
		this.commentTooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: [], text: "Comment"});
		this.addFriendTooltip = new YAHOO.widget.Tooltip(document.createElement("div"), {context: [], text: "Add as Friend"});

		this.pages = [];
		
		this.element = element.firstChild;
		this.json = Nexopia.json(element)[0];
		this.viewer = Nexopia.json(element)[1];
		this.form_key = YAHOO.util.Dom.get('list_view_form_key').value;
		for (var i=0; i<this.json.length;i++) {
			var parsedData = {
				friendid: this.json[i][0],
				username: this.json[i][1],
				alreadyfriend: this.json[i][2]
			};
			this.json[i] = parsedData;
		}
		this.lastPage = Math.floor((this.json.length-1)/this.pageLength);
		this.element.innerHTML = "";
		this.appendPage(this.page);
		this.page_backward = YAHOO.util.Dom.getElementsByClassName('page_backward', 'a', element)[0];
		this.page_forward = YAHOO.util.Dom.getElementsByClassName('page_forward', 'a', element)[0];
		YAHOO.util.Event.on(this.page_backward, 'click', this.pageBackward, this, true);
		YAHOO.util.Event.on(this.page_forward, 'click', this.pageForward, this, true);
	},
	pageForward: function(event) {
		if (event) {
			YAHOO.util.Event.preventDefault(event);
		}
		if (this.page >= this.lastPage) {
			return;
		}
		this.page++;
		this.appendPage(this.page);
		this.scrollPageForward();
	},
	pageBackward: function(event) {
		if (event) {
			YAHOO.util.Event.preventDefault(event);
		}
		if (this.page <= 0) {
			return;
		}
		this.page--;
		this.prependPage(this.page);
		this.element.scrollTop = 440;
		this.scrollPageBackward();
		
	},
	appendPage: function(pageNumber) {
		// On a profile load, this function takes an enourmous amount of time (~150ms). If anybody
		// wants to reduce load time in the future, this would be the place to start.
		if (!this.pages[pageNumber]) {
			this.pages[pageNumber] = this.buildPage(pageNumber);
		}
		this.element.appendChild(this.pages[pageNumber]);
		this.updateTooltips();
		this.updateAddFriends();
	},
	prependPage: function(pageNumber) {
		if (!this.pages[pageNumber]) {
			this.pages[pageNumber] = this.buildPage(pageNumber);
		}
		this.element.insertBefore(this.pages[pageNumber], this.element.firstChild);
		this.updateTooltips();
	},
	updateTooltips: function() {
		this.sendMessageTooltip.render(this.element);
		this.commentTooltip.render(this.element);
		this.addFriendTooltip.render(this.element);
		this.sendMessageTooltip.cfg.setProperty("context", YAHOO.util.Dom.getElementsByClassName("send_message hover", "a", this.element));
		this.commentTooltip.cfg.setProperty("context", YAHOO.util.Dom.getElementsByClassName("comment hover", "a", this.element));
		this.addFriendTooltip.cfg.setProperty("context", YAHOO.util.Dom.getElementsByClassName("add_friend", "a", this.element));
	},
	scrollPageForward: function() {
		if (this.currentAnimation) {
			this.currentAnimation.stop(true);
		}
		this.currentAnimation = new YAHOO.util.Scroll(this.element, { scroll: { by: [0, 440] } }, 0.5, YAHOO.util.Easing.easeOutStrong);
		this.currentAnimation.animate();
		this.currentAnimation.onComplete.subscribe(this.cleanUpFront, this, true); 
	},
	scrollPageBackward: function() {
		if (this.currentAnimation) {
			this.currentAnimation.stop(true);
		}
		this.currentAnimation = new YAHOO.util.Scroll(this.element, { scroll: { by: [0, -440] } }, 0.5, YAHOO.util.Easing.easeOutStrong);
		this.currentAnimation.animate();
		this.currentAnimation.onComplete.subscribe(this.cleanUpEnd, this, true);
	},
	cleanUpFront: function() {
		this.element.removeChild(this.element.firstChild);
		this.element.scrollTop = 0;
		this.currentAnimation = null;
	},
	cleanUpEnd: function() {
		childpages = YAHOO.util.Dom.getElementsByClassName("page", "div", this.element);
		this.element.removeChild(childpages[childpages.length-1]);
		this.element.scrollTop = 0;
		this.currentAnimation = null;
	},
	buildPage: function(pageNumber) {
		var div = document.createElement("div");
		div.className = "page";
		var iconColor = this.deduceImgColor();
		friends_content = "";
		for (var i=this.page*this.pageLength;i<(this.page+1)*this.pageLength && i<this.json.length;i++) {
			friends_content += this.buildFriendDisplay(this.json[i], iconColor);
		}
		div.innerHTML = friends_content;
		return div;
	},
	buildFriendDisplay: function(jsonData, iconColor) {
		
		output = "";
		
		userURL = Site.userURL;
		coloredImgURL = Site.coloredImgURL(iconColor);
		escapedUsername = Nexopia.Utilities.escapeURI(jsonData.username);
		
		if (!this.viewer.anonymous) {
			
			output += "<div class='functions'>";
			output += "<a href='/messages.php?action=write&to=" + jsonData.friendid + "' class='send_message hover'>";
			output += "<img src='" + coloredImgURL + "/friends/images/icon_send_msg.gif' class='color_icon'/>";
			output += "</a>";
			output += "<a href='" + userURL + "/" + escapedUsername + "/comments' class='comment hover'>";
			output += "<img src='" + coloredImgURL + "/friends/images/icon_comment.gif' class='color_icon last'/>";
			output += "</a>";
			
			if (jsonData.alreadyfriend) {		
				output += "<img src='" + coloredImgURL + "/friends/images/icon_friend_true.gif' class='color_icon'/>";
			} else {
				output += "<a href='" + userURL + "/" + Nexopia.Utilities.escapeURI(this.viewer.username) + "/friends/add/" + jsonData.friendid + "?form_key[]=" + this.form_key + "' class='add_friend'>";
				output += "<img src='" + coloredImgURL + "/friends/images/icon_add_friend.gif' class='color_icon'/>";
				output += "</a>";
			}
			
			output += "</div>";
			
		}
		
		output += "<a href='" + Site.userURL + "/" + escapedUsername + "'>" + Nexopia.Utilities.escapeHTML(jsonData.username) + "</a>";

		return "<div class='short_friend'>"+output+"</div>";
	},
	deduceImgColor: function()
	{
		var iconColor = '000000';
		
		var profileDiv = document.getElementById('profile');
		if (profileDiv)
		{
			var primaryDiv = document.createElement('div');
			primaryDiv.className = 'primary_block';
			var secondaryDiv = document.createElement('div');
			secondaryDiv.className = 'secondary_block';
			primaryDiv.appendChild(secondaryDiv);
			profileDiv.appendChild(primaryDiv);
			iconColor = Nexopia.Utilities.deduceImgColor(secondaryDiv);
			profileDiv.removeChild(primaryDiv);
		}
		return iconColor;
	},
	updateAddFriends: function() {
		YAHOO.util.Event.on(YAHOO.util.Dom.getElementsByClassName("add_friend", "a", this.element), 'click', this.addFriend, this);
	},
	addFriend: function(event, obj) {
		if (event) {
			YAHOO.util.Event.preventDefault(event);
		}

		YAHOO.util.Connect.asyncRequest('POST', this.href, new ResponseHandler({
			success: function() {
				this.innerHTML = "<img src='" + Site.coloredImgURL(obj.deduceImgColor()) + "/friends/images/icon_friend_true.gif' class='color_icon'/>";				
			},
			scope: this
		}), 'ajax=true');
	}
};

Overlord.assign({
	minion: "fpb:list_view",
	load: FriendsProfileBlock.ListView.init,
	scope: FriendsProfileBlock.ListView,
	order: -10
});

