/*
Simple Image Trail script- By JavaScriptKit.com
Visit http://www.javascriptkit.com for this script and more
This notice must stay intact
*/

var pos = 0;
var dir = 2;
var len = 0;

var offsetfrommouse = [25,25];	//image x,y offsets from cursor position in pixels. Enter 0,0 for no offset
var displayduration = 0;		//duration in seconds image should remain visible. 0 for always.

var defaultimageheight = 300;	// maximum image size.
var defaultimagewidth = 400;	// maximum image size.

var timer;

function gettrailobj() {
  if (document.getElementById) return document.getElementById("preview_div").style;
}

function gettrailobjnostyle() {
  if (document.getElementById) return document.getElementById("preview_div");
}

function truebody() {
  return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

function hidetrail() {
  gettrailobj().display = "none";
  gettrailobj().lineHeight = "300px";
  gettrailobj().textAlign = "center";
  gettrailobjnostyle().innerHTML = "Loading...";
  document.onmousemove = "";
  gettrailobj().left = "-500px"
  clearTimeout(timer);
}

function showtrail(imagename, title, width, height) {
  i = imagename;
  t = title;
  w = width;
  h = height;
  timer = setTimeout("show('"+i+"',t,w,h);", 200);
}

function show(imagename, title, width, height) {
  width = parseInt(width);
  height = parseInt(height);

  var docwidth = document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth - offsetfrommouse[0];
  var docheight = document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight);

  if ( (navigator.userAgent.indexOf("Konqueror")==-1  || navigator.userAgent.indexOf("Firefox")!=-1 || (navigator.userAgent.indexOf("Opera")==-1 && navigator.appVersion.indexOf("MSIE")!=-1)) && (docwidth>650 && docheight>500)) {
	( width == 0 ) ? width = defaultimagewidth: '';
	( height == 0 ) ? height = defaultimageheight: '';

//	width += 30;
	height += 25;

	defaultimageheight = height;
	defaultimagewidth = width;

	gettrailobj().width = width + "px";
	gettrailobj().height = height + "px";
	gettrailobj().lineHeight = height + "px";

	document.onmousemove = followmouse;

	var de = gettrailobj().display = "block";

	var ni = new Image;
	ni.src = imagename;

	newHTML = '<h2>' + title + '</h2><img src="' + imagename + '" border="0" />';
		
	if (navigator.userAgent.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1 ) {
//	  newHTML = newHTML + '<iframe src="about:blank" scrolling="no" frameborder="0" width="'+width+'" height="'+height+'"></iframe>';
	}

	ni.onload = function() {
				  gettrailobjnostyle().innerHTML = newHTML;
				  gettrailobj().lineHeight = "15px";
				  gettrailobj().textAlign = "left";
				}
  }
}

function followmouse(e) {
  var xcoord = offsetfrommouse[0];
  var ycoord = offsetfrommouse[1];

  var docwidth = document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15;
  var docheight = document.all? Math.min(truebody().scrollHeight, truebody().clientHeight) : Math.min(window.innerHeight);

  if (typeof e != "undefined") {
	if (docwidth - e.pageX < defaultimagewidth + 2*offsetfrommouse[0]) {
	  xcoord = e.pageX - xcoord - defaultimagewidth; // Move to the left side of the cursor
	} else {
	  xcoord += e.pageX;
	}

	if (docheight - e.pageY < defaultimageheight + 2*offsetfrommouse[1]) {
	  ycoord += e.pageY - Math.max(0,(2*offsetfrommouse[1] + defaultimageheight + e.pageY - docheight - truebody().scrollTop));
	} else {
	  ycoord += e.pageY;
	}
  } else if (typeof window.event != "undefined") {
	if (docwidth - event.clientX < defaultimagewidth + 2*offsetfrommouse[0]) {
	  xcoord = event.clientX + truebody().scrollLeft - xcoord - defaultimagewidth; // Move to the left side of the cursor
	} else {
	  xcoord += truebody().scrollLeft+event.clientX;
	}

	if (docheight - event.clientY < (defaultimageheight + 2*offsetfrommouse[1])) {
	  ycoord += event.clientY + truebody().scrollTop - Math.max(0,(2*offsetfrommouse[1] + defaultimageheight + event.clientY - docheight));
	} else {
	  ycoord += truebody().scrollTop + event.clientY;
	}
  }

  gettrailobj().left = xcoord + "px";
  gettrailobj().top = ycoord + "px";
}
