/**
 * @author forellana
 */
(function($) {
	
	var clientCoords = function() {
	      var dimensions = {width: 0, height: 0};
	      if (document.documentElement) {
	          dimensions.width = document.documentElement.offsetWidth;
	          dimensions.height = document.documentElement.offsetHeight;
	      } else if (window.innerWidth && window.innerHeight) {
	          dimensions.width = window.innerWidth;
	          dimensions.height = window.innerHeight;
	      }
	      return dimensions;
	 }
		
	$.fn.link_preview = function(options) {
		var defaults = {
			xOffset: 20,
			yOffset: 40,
			followMouse: true,
			title: ''
		};
		
		var options = $.extend(defaults, options);
		
		return this.each(function(){
			var obj = $(this);
			if ( obj.attr('rel') != "" ) {
				var h = 0;
				obj.t = $(this).attr('title');
//				$.cacheImage($(this).attr('rel'));
				obj.hover(function(e){					
					$(this).attr('title', "");
					obj.rel = $(this).attr('rel');
					var c = (this.t != "") ? "<br/>" + obj.t : "";
					$("body").append("<p id='link_preview' align=\"center\"><img src='" + obj.rel + "' alt='" + options.title + "' /><span class='preview_text'>" + c + "</span></p>");
					h = $("#link_preview img").height();
					var winh = $(window).height();
					var py = e.pageY;
					if ( e.pageY > (winh/2) + $(window).scrollTop() + 100 ) {
						py -= h + options.yOffset;
					} else if (e.pageY < (winh/2) + $(window).scrollTop() - 100) {
						py += options.yOffset;
					} else {
						py -= (h/2);
					}
					$("#link_preview").css({
						"top": py + 'px',
						"left": (e.pageX + options.xOffset) + 'px'
					}).fadeIn("fast");
				}, function(){
					obj.title = obj.t;
					$("#link_preview").remove();
				});
				
				if (options.followMouse) {
					$(obj).mousemove(function(e){
						h = $("#link_preview img").height();
						var winh = $(window).height();
						var py = e.pageY;
						if ( e.pageY > (winh/2) + $(window).scrollTop() + 100 ) {
							py -= h + options.yOffset;
						} else if (e.pageY < (winh/2) + $(window).scrollTop() - 100) {
							py += options.yOffset;
						} else {
							py -= (h/2);
						}
						//console.log(py + "px");
						$("#link_preview").css({
							"top": py + 'px',
							"left": (e.pageX + options.xOffset) + 'px'
						});
						
					});
				}
			}
		});		
	}
})(jQuery);

