//
// Preview Image
// (Requires Prototype)
//
// Usage:
// new ImagePreview('imageId');
//
if((typeof Prototype=='undefined') || 
       parseFloat(Prototype.Version.split(".")[0] + "." +
                  Prototype.Version.split(".")[1]) < 1.5)
       throw("ImagePreview requires the Prototype JavaScript framework >= 1.5.0");

var ImagePreview = Class.create();

ImagePreview.prototype = {
	initialize: function(element) {
		Event.observe(element, 'mouseover', ImagePreview.show);
		Event.observe(element, 'mouseout', ImagePreview.hide);
	}
};

Object.extend(ImagePreview, {
	element: null,
	image: null,

	show: (function(ev) {
		if (!ImagePreview.element) {
			// Create preview element
			ImagePreview.element = document.createElement("div");
			Element.setStyle(ImagePreview.element, {
				position: "absolute",
				backgroundColor: "#e0e0e0",
				padding: "2px"
			});
			document.body.appendChild(ImagePreview.element);
			
			ImagePreview.image = document.createElement("img");
			ImagePreview.image.style.display = "block";
			ImagePreview.element.appendChild(ImagePreview.image);
		}

		var target = Event.element(ev);
		ImagePreview.image.src = target.src;

		var p = Position.cumulativeOffset(target);
		Element.setStyle(ImagePreview.element, {
			left: (p[0] + target.offsetWidth + 5) + "px",
			top: p[1] + "px"
		});

		Element.show(ImagePreview.element);
	}).bindAsEventListener(),

	hide: function() {
		if (ImagePreview.element) Element.hide(ImagePreview.element);
	}
});

