var ToolTip = {
	itemContainerId : "someId",
	itemTagName : "IMG",
	/**
	 * Value added to mouseX
	 *
	 * @var Number
	 */
	xDiv : 0,
	/**
	 * Value added to mouseY
	 *
	 * @var Number
	 */
	yDiv : 0,
	/**
	 * TooTipOnImg works with two modes,
	 *   "useAlt": means that the alt-attribute of image is copied in a
	 *      container, defined by stdToolTipNode
	 *   "useContainers": to each image belongs a container, which is displayed
	 *
	 * @type String
	 */
	mode : "useAlt",
	/**
	 * id of container used with "useAlt"
	 * @type String
	 */
	stdToolTipNodeId : "someId",
	/**
	 * container used with "useAlt"
	 * @type node
	 */
	stdToolTipNode : null,
	imgAltTexts : new Array(),
	onload : function() {
		if($(ToolTip.itemContainerId)) {
			var items = $(ToolTip.itemContainerId).getElementsByTagName(ToolTip.itemTagName);
			for(var i=0;i<items.length;i++)  {
				var item = items[i];
				Event.observe(item,"mousemove", ToolTip.mousemove);
				Event.observe(item,"mouseout", ToolTip.mouseout);
				if(typeof(item.id)=="undefined" || item.id == "") {
					item.id = ToolTip.stdToolTipNodeId+"Item"+(i+1);
				}
				if(item.alt) {
					ToolTip.imgAltTexts[item.id] = item.alt;
					item.alt = "";
				} else {
					if(item.title) {
						ToolTip.imgAltTexts[item.id] = item.title;
						item.title = "";
					}
				}
			}
		}
		if(ToolTip.mode=="useAlt") {
			ToolTip.stdToolTipNode = $(ToolTip.stdToolTipNodeId);
		}
	},
	mousemove : function(event) {
		var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));
		var y = Event.pointerY(event);
		var target = ToolTip._getTargetBySrc(Event.element(event));
		target.style.left = (x-ToolTip.xDiv) + "px";
		target.style.top  = (y-ToolTip.yDiv) + "px";
		ToolTip._displayMe(target);
	},
	mouseout : function(event) {
		var target = ToolTip._getTargetBySrc(Event.element(event));
		ToolTip._hideMe(target);
	},
	/**
	 * Returns the div to display. In case of "useAlt", the text is also
	 * puttet in the stdToolTipNode
	 *
	 * @return node
	 */
	_getTargetBySrc : function(srcElement) {
		var target = null;
		switch(ToolTip.mode) {
			case "useAlt":
				target = ToolTip.stdToolTipNode;
				target.innerHTML = ToolTip.imgAltTexts[srcElement.id];
				break;
			case "useContainers":
				target = $(srcElement.id.replace("imgId","toolTipId"));
				break;
		}

		return target;
	},
	/**
	 * Method to show a element
	 * @return void
	 */
	_displayMe : function(element) {
		element.style.display = "block"
	},
	/**
	 * Method to hide a element
	 * @return void
	 */
	_hideMe : function(element) {
		element.style.display = "none"
	}
}