goog.provide('oneup.ui.widgets.RecentlyAchievedList');
goog.provide('oneup.ui.widgets.RecentlyAchievedList.AchievementLine');

goog.require('goog.dom');
goog.require('goog.style');

oneup.ui.widgets.RecentlyAchievedList = function() {
	oneup.ui.widgets.Widget.call(this, 'ralWidget');
	
};
goog.inherits(oneup.ui.widgets.RecentlyAchievedList, oneup.ui.widgets.Widget);

oneup.ui.widgets.RecentlyAchievedList.prototype.dataLoaded = function(data) {
	if (data.target.getResponseJson()) {
		var header = goog.dom.createDom('div', {'class': 'widgetHeader'}, 'Recently Achieved');
		this.holder_.appendChild(header);
		for (var i = 0; i < data.target.getResponseJson().length; i++) {
			var recentAch = data.target.getResponseJson()[i];
			this.holder_.appendChild(
			    new oneup.ui.widgets.RecentlyAchievedList.AchievementLine(recentAch).render());
		}
		this.holder_.appendChild(goog.dom.createDom('div', {'class': 'clear'}));
		return this.holder_;
	}
};

oneup.ui.widgets.RecentlyAchievedList.AchievementLine = function(recentAch) {
	oneup.ui.Component.call(this);
	this.recentAch_ = recentAch;
}
goog.inherits(oneup.ui.widgets.RecentlyAchievedList.AchievementLine, oneup.ui.Component);

oneup.ui.widgets.RecentlyAchievedList.AchievementLine.prototype.render = function() {
	var recentAch = this.recentAch_;
	var doneByMe = oneup.app.userData.hasAchievement(recentAch.achievementId);
	var recentAchLine = goog.dom.createDom('div', {'class':'recentlyAchieved'});
	var ach = oneup.app.getAchievements([recentAch.achievementId])[0];
	if (ach) {
		recentAchLine.appendChild(ach.render());
		var count = recentAch.friends.length;
		count += doneByMe ? 1 : 0;
		var achDetailsText = count + 
		    ' ' + 
		    (count == 1 ? 'friend has' : 'friends have') +
		    ' done this.'
		var achDetails = goog.dom.createDom('div', {'class':'recentAchDetails'}, achDetailsText);
		recentAchLine.appendChild(achDetails);
	}
	
	var friendTexts = doneByMe ? ['You'] : [];
	for (var i = 0; i < recentAch.friends.length; i++) {
		if (friendTexts.length != 0) {
			friendTexts.push(goog.dom.createDom('br'));
		}
		friendTexts.push(recentAch.friends[i].name);
	}

	var friendName = goog.dom.createDom('div', {'class':'floatBox', 'style':'display:none;'}, friendTexts)
	recentAchLine.appendChild(friendName);
	
	goog.events.listen(achDetails, goog.events.EventType.MOUSEMOVE, function(e) {
		var x = goog.style.getClientPosition(e).x + window.scrollX;
		var y = goog.style.getClientPosition(e).y + window.scrollY;
		friendName.style.display = '';
		goog.style.setPosition(friendName, x+10 + 'px', y+10 + 'px');
	});
	goog.events.listen(achDetails, goog.events.EventType.MOUSEOUT, function(e) {
		friendName.style.display = 'none';
	});
	
	
	return recentAchLine;
}
