
Event.addEvent(window,"load",preparePreviews);
var JSPreviewPreloader = new Image();
JSPreviewPreloader.src = "js_images/ani_preview.gif";
var JSPreviewSpacing = 10;

function preparePreviews(){
	var previews = Document.getElementsByClassMatch("JS:Preview");
	previews.each(Preview);
}
function Preview(element){
	Event.addEvent(element, "mouseover", Preview.show);
	Event.addEvent(element, "mouseout", Preview.hide);
	Event.addEvent(element, "click", Preview.hide);
}
Preview.show = function(evt){
	var element = Event.getTarget(evt);
	var thumb = element;
	element = (element.tagName.toLowerCase() == "img") ? element.parentNode : element;
	Preview.createFrame();
	Preview.setPosition(thumb);
	Preview.addPreloader();
	Preview.load(element, thumb);
}
Preview.hide = function(evt){
	var element = Event.getTarget(evt);
	element = (element.tagName.toLowerCase() == "img") ? element.parentNode : element;
	Preview.removeFrame();
	Preview.removePreloader();
}
Preview.createFrame = function(){
	var frame = document.createElement("div");
	frame.setAttribute("id","js_preview_box");
	frame.style.height = "50px";
	frame.style.width = "50px";
	frame.style.top = "100px";
	frame.style.left = "100px";
	document.getElementsByTagName("body")[0].appendChild(frame);
}
Preview.removeFrame = function(){
	var frame = document.getElementById("js_preview_box");
	try{
		frame.parentNode.removeChild(frame);
	}catch(e){}
}
Preview.setPosition = function(element){
	var frame = document.getElementById("js_preview_box");
	var windowWidth = Document.getWindowWidth();
	var windowHeight = Document.getWindowHeight();
	var xloc = Document.getX(element);
	var yloc = Document.getY(element);
	var scrollY = Document.getScrollY();
	if(xloc > (windowWidth / 2)){
		frame.style.left = (xloc - frame.offsetWidth - JSPreviewSpacing) + "px";
	}
	else{
		frame.style.left = (xloc + element.offsetWidth + JSPreviewSpacing) + "px";
	}
	var windowPos = windowHeight + scrollY;
	var framePos = frame.offsetHeight + Document.getY(frame);
	if(framePos > windowPos){
		frame.style.top = (yloc - frame.offsetHeight) + element.offsetHeight + "px";
	}
	else{
		frame.style.top = yloc + "px";
	}
}
Preview.load = function(element, thumb){
	var preview = new Image();
	preview.onload = function(){
		Preview.removePreloader();
		var frame = document.getElementById("js_preview_box");
		frame.style.width = preview.width + "px";
		frame.style.height = "auto";
		frame.appendChild(preview);
		Preview.addLabels(element.title, element.rel);
		Preview.setPosition(thumb);
	}
	preview.src = element.href;
}
Preview.addLabels = function(title, description){
	var frame = document.getElementById("js_preview_box");
	var pTitle = document.createElement("p");
	pTitle.setAttribute("id","js_preview_title");
	frame.appendChild(pTitle);
	pTitle.innerHTML = title;
	var pDescription = document.createElement("p");
	pDescription.setAttribute("id","js_preview_description");
	frame.appendChild(pDescription);
	pDescription.innerHTML = description;
}
Preview.addPreloader = function(){
	var frame = document.getElementById("js_preview_box");
	var xpos = Document.getX(frame) + (frame.offsetWidth / 2) - (JSPreviewPreloader.width / 2) ;
	var ypos = Document.getY(frame) + (frame.offsetHeight / 2) - (JSPreviewPreloader.height / 2) ;
	JSPreviewPreloader.setAttribute("id","js_preview_preloader");
	JSPreviewPreloader.style.left = xpos + "px";
	JSPreviewPreloader.style.top = ypos + "px";
	document.getElementsByTagName("body")[0].appendChild(JSPreviewPreloader);
}
Preview.removePreloader = function(){
	var preloader = document.getElementById("js_preview_preloader");
	try{
		preloader.parentNode.removeChild(preloader);
	}catch(e){}
}