//Created by Alexander Kant, MIT-style license.
//moo.tooltip.js - depends on mootools.js
//Verion: 1.0
//Modified: 09.11.2007

var toolTips = new Class({
	setOptions: function(options) {
		this.options = {
			prefix: 'tooltip_'
		}
		Object.extend(this.options, options || {});
	},

	initialize: function(elements, options) {
		this.elements = elements;
		this.setOptions(options);
		$$(elements).each(function(el) {
			if ($(this.options.prefix + el.id)) {
				$(this.options.prefix + el.id).setStyle('position', 'absolute');
			}
			el.addEvent('mouseenter', function(evt) {
				this.id = el.id;
				this.show(el);
				this.positionToolTipTo(evt.client.x, evt.client.y);
				el.onmousemove = this.locate.bindAsEventListener(this);
				return false;
			}.bind(this));
			el.onmouseout = function() {
				this.hide(el);
			}.bind(this);
		}, this);
	},

	show: function(el) {
		if ($(this.options.prefix + el.id)) {
			$(this.options.prefix + el.id).setStyle('display', 'block');
		}
	},

	hide: function(el) {
		if ($(this.options.prefix + el.id)) {
			$(this.options.prefix + el.id).setStyle('display', 'none');
		}
	},

	locate: function(evt) {
		this.positionToolTipTo(evt.clientX, evt.clientY);
	},

	positionToolTipTo: function(x, y) {
		var elToolTip = $(this.options.prefix + this.id);
		if (elToolTip) {
			var oCoordinates = elToolTip.getCoordinates();
			var yOffset = 0;
			var xOffset = 0;
			if (window.getHeight() - y < oCoordinates.height + 20) {
				yOffset = window.getHeight() - y - oCoordinates.height - 20;
			}
			if (window.getWidth() - x < oCoordinates.width + 15) {
				xOffset = -oCoordinates.width - 25;
			}
			var doc = document.documentElement;
			elToolTip.setStyles({'top': y + doc.scrollTop + yOffset + 15 + 'px', 'left': x + doc.scrollLeft + xOffset + 15 + 'px'});
		}
	}
});
