/*
 * Image preview script 
 * powered by jQuery (http://www.jquery.com)
 * 
 * written by Alen Grakalic (http://cssglobe.com)
 * 
 * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery
 *
 */
 
this.imagePreview = function(){	
	/* CONFIG */
		
		xOffset = -20;
		yOffset = 20;
		
		// these 2 variable determine popup's distance from the cursor
		// you might want to adjust to get the right result
		
	/* END CONFIG */
	$("img.preview").hover(function(e){
		
		var tmp = this.id.split('_');
		
		var span = 'desc_'+tmp[1];

		var c = $("#"+span).html();
		
		$("body").append("<div id='preview'>"+c+"</div>");								 
		$("#preview")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px")
			.fadeIn("fast");
		fixSides($("#preview"));					
    },
	function(){
		$("#preview").remove();
    });	
	$("img.preview").mousemove(function(e){
		$("#preview")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px");
		fixSides($("#preview"));
	});	
	

	
	function fixSides( objRef ) {
		if( fixTop(objRef) ) {
			fixLeft(objRef, true);
		} else {
			fixLeft(objRef, false);
		}
	}	
	function fixTop(objRef) {
	
		arrScroll = getScroll();
		scrY = arrScroll[1];
		
		var offsetTop = $(objRef).offset().top - scrY + $(objRef).height() + 25;
		
		var count = 0;
		if( offsetTop > $(window).height() ) {
			$(objRef).css("top", ( ($(objRef).offset().top - ( offsetTop - $(window).height() )) + "px" ));
			return true;
		}
		return false;
		
	}
	function fixLeft(objRef, bool) {
	
		arrScroll = getScroll();
		scrX = arrScroll[0];
		
		var offsetLeft = $(objRef).offset().left - scrX + $(objRef).width() + 12;
		
		var count = 0;
		if( offsetLeft > $(window).width() ) {
			if( bool ) {
				$(objRef).css("left",(( $(objRef).offset().left - ( $(objRef).width() + (yOffset*2) + 15 )) + "px" ))
				.css("top", (( $(objRef).offset().top - 11 )));
			} else {
				$(objRef).css("left", ( ($(objRef).offset().left - ( offsetLeft - $(window).width() )) + "px" ));
			}
			return true;
		}
		return false;
		
	}
	
	function getScroll() {
		
		var scrOfX = 0, scrOfY = 0;
		if( typeof( window.pageYOffset ) == 'number' ) {
			//Netscape compliant
			scrOfY = window.pageYOffset;
			scrOfX = window.pageXOffset;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			//DOM compliant
			scrOfY = document.body.scrollTop;
			scrOfX = document.body.scrollLeft;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			//IE6 standards compliant mode
			scrOfY = document.documentElement.scrollTop;
			scrOfX = document.documentElement.scrollLeft;
		}
		
		return [scrOfX, scrOfY]
	}
};
