GameSalad.TitleManager = {
	alignRight: { left:"auto", right:"0px" },
	alignLeft: { left:"-0.5em", right:"auto" },
	completed: {},
	currentTitle: null,
	truncate: function(selector) {
		if (!this.completed[selector]) {
			$$(selector).each(this.checkTitle);
			this.completed[selector] = true;
		}
	},
	checkTitle: function(elem) {
		var width = elem.getWidth();
		var title = elem.select("h3 a")[0];
		if (title) {
			if (width < title.getWidth()) {
				Element.addClassName(title.parentNode,"too-long");
				var tip = elem.select(".expanded")[0];
				tip.style.width = title.getWidth() + "px"
				Event.observe(elem,"mouseover", GameSalad.TitleManager.showFullTitle);
				Event.observe(tip,"mouseout", GameSalad.TitleManager.hideFullTitle);
			}
			var author = elem.select(".author a")[0];
			if (author) {
				if (width < author.getWidth()) {
					Element.addClassName(author.parentNode,"too-long");
				}
			}
		}
	},
	hideFullTitle: function(evt) {
		var elem = evt.element();
		if (Element.hasClassName(elem,"expanded")) {
			elem.hide();
			GameSalad.TitleManager.currentTitle = null;
		}
	},
	showFullTitle: function(evt) {
		var _this = GameSalad.TitleManager;
		var elem = evt.findElement(".info");
		var tt = elem.select(".expanded")[0];
		if (tt && tt != _this.currentTitle) {
			var posX = elem.viewportOffset().left;
			if (_this.currentTitle) _this.currentTitle.hide();
			tt.style.display = "block";
			_this.currentTitle = tt;
			if (posX > (document.viewport.getWidth()/2)) {
				tt.setStyle(_this.alignRight);
			} else {
				tt.setStyle(_this.alignLeft);
			}
		}
	}
	
}

