/*
 * Image preview script 
 * powered by jQuery (http://www.jquery.com)
 * 
 * written by Alen Grakalic (http://cssglobe.com)
 * modified by Andrei Erimcioi (aermicioi@creafire.com)
 * 
 * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery
 *
 */

var ImagePreview = {
	_xPos: 0,
	_yPos: 0,
	_mouseIsOver: false,
	_isLocked: false,
	_htmlObj: null,
	_viewedImage: null,
	
	init: function() {
		jQuery("body").append("<p id='preview'></p>");
		this._htmlObj = jQuery("#preview");
	},
	
	bindAll: function() {
		jQuery("a.thumb").hover(this._onMouseOver, this._onMouseOut);
		jQuery("a.thumb").mousemove(this._onMouseMove);
	},
	
	/**
	 * this object is element object, not ImagePreview
	 */
	_onMouseOver: function(ev) {
		ImagePreview._mouseIsOver = true;
		var image = new jQuery(new Image());
		var that = jQuery(this);
		image.attr("src", that.attr("imghref"));
		ImagePreview._viewedImage = image;
		
		
		
		image.load(function() {
			if (!ImagePreview._mouseIsOver) {
				return;
			}
			
			var pos = ImagePreview._calculatePosition(ev, ImagePreview._viewedImage);
			ImagePreview._htmlObj.css("top", pos.y + "px").css("left", pos.x + "px");
			
			ImagePreview._htmlObj.html('').append(image).show();
		});
	},
	
	/**
	 * this object is element object, not ImagePreview
	 */
	_onMouseOut: function(ev) {
		ImagePreview._mouseIsOver = false;
		ImagePreview._htmlObj.hide();
	},
	
	/**
	 * this object is element object, not ImagePreview
	 */
	_onMouseMove: function(ev) {
		var pos = ImagePreview._calculatePosition(ev, ImagePreview._viewedImage);
		ImagePreview._htmlObj.css("top", pos.y + "px").css("left", pos.x + "px");
	},
	
	_calculatePosition: function(ev, image) {
		var winWidth = jQuery(window).width();
		var winHeight = jQuery(window).height();

		var middleX = winWidth / 2;
		var middleY = winHeight / 2;
		
		var imgWidth = image.attr("width");
		var imgHeight = image.attr("height");
		
		if (ev.clientX > middleX) {
			xPos = ev.pageX - imgWidth - 10;
		} else {
			xPos = ev.pageX + 10;
		}
		
		if (ev.clientY > middleY) {
			yPos = ev.pageY - imgHeight - 10;
		} else {
			yPos = ev.pageY + 10;
		}
		
		return {x: xPos, y: yPos};
	},
	
	_log: function(msg) {
		if (console != undefined) {
			console.log(msg);
		}
	}
};

var previewIsInited = false;

this.imagePreview = function() {
	
	if (!previewIsInited) {
		ImagePreview.init();
	}
	
	ImagePreview.bindAll();
};




