var Tooltips = {

	init: function() {
		$$('a').each(function(link) {
			var title = link.readAttribute("title");
			var rel = link.readAttribute("rel");

			if (title && title.length>0 && rel=="tooltip") {
				Event.observe(link, "mouseover", Tooltips.showTipListener.bindAsEventListener(link));
				Event.observe(link, "focus",     Tooltips.showTipListener.bindAsEventListener(link));
				Event.observe(link, "mouseout",  Tooltips.hideTipListener.bindAsEventListener(link));
				Event.observe(link, "blur",      Tooltips.hideTipListener.bindAsEventListener(link));
			}
		});
	},

	showTip: function(link) {
		Tooltips.hideTip(link);

		var tip = document.createElement("span");
		tip.className = "tooltip";
		var tipText = document.createTextNode(link.title);
		tip.appendChild(tipText);
		link.appendChild(tip);
		link._tooltip = tip;
		link.title = "";

		// Fix for Safari2/Opera9 repaint issue
		//document.documentElement.style.position = "relative";
	},

	hideTip: function(link) {
		if (link._tooltip) {
			link.title = link._tooltip.childNodes[0].nodeValue;      
			link.removeChild(link._tooltip);
			link._tooltip = null;

			// Fix for Safari2/Opera9 repaint issue
			//document.documentElement.style.position = "static";
		}
	},

	showTipListener: function(event) {
		var link = this;
		this._timer = setTimeout(function() { Tooltips.showTip(link); }, 500);
		Event.stop(event);
	},

	hideTipListener: function(event) {
		var link = this;
		clearTimeout(this._timer);
		Tooltips.hideTip(link);
	}
};

Event.onDOMReady(Tooltips.init);
