/*
 * Url preview script 
 * powered by jQuery (http://www.jquery.com)
 * 
 * written by Alen Grakalic (http://cssglobe.com)
 * modified by Dmitry Shirokov (deadrunk@gmail.com)
 * 
 * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery
 *
 */
 
var picturePreview = {
	init: function() {
	
		xOffset = 10;
		yOffset = 30;
	
		$("a.picturePreview").hover(function(e){
			//dump(picturePreview.getPageSize());
			this.t = this.title;
			this.title = "";	
			var c = (this.t != "") ? "<br/>" + this.t : "";
			$("body").append("<p id='picturePreview'><img src='"+ this.rel +"' alt='loading...' />"+ c +"</p>");
			
			var top = e.pageY + yOffset;
			var left = e.pageX + xOffset;
			var left = ((picturePreview.getPageSize().windowWidth / 2) < left) ? left - 400 : left;
			//alert([top, picturePreview.getPageSize().windowHeight]);
			if (picturePreview.getPageSize().windowHeight - top < 300) {
				$("#picturePreview")
					.css("bottom", picturePreview.getPageSize().windowHeight - top + "px")
					.css("left", left + "px")
					.fadeIn("fast");
			} else {
				$("#picturePreview")
					.css("top", top + "px")
					.css("left", left + "px")
					.fadeIn("fast");
			}
									
    	},
		function(){
			this.title = this.t;	
			$("#picturePreview").remove();
    	});	
		$("a.picturePreview").mousemove(function(e){
			$("#screenshot")
				.css("top",(e.pageY - xOffset) + "px")
				.css("left",(e.pageX + yOffset) + "px");
		});			
	},
	getPageSize: function() {
		var xScroll, yScroll;

		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}

		var windowWidth, windowHeight;

		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	

		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
		
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = xScroll;		
		} else {
			pageWidth = windowWidth;
		}

		return {
			pageWidth: pageWidth,
			pageHeight: pageHeight,
			windowWidth: windowWidth,
			windowHeight: windowHeight
		};
	}
};
