var trailimage=["test.gif", 100, 99] //image path, plus width and height
var offsetfrommouse=[0,0] //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.


if (document.getElementById || document.all)
	document.write('<div id="trailimageid" onMouseOver="zmrazit();">&nbsp;</div>')


function gettrailobj()
{
	if (document.getElementById)
		return document.getElementById("trailimageid").style
	else if (document.all)
		return document.all.trailimagid.style
}


function truebody()
{
	return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}


function hidetrail()
{
	gettrailobj().visibility="hidden"
	gettrailobj().width="1px"
	gettrailobj().height="1px"
	document.onmousemove=""
}


function showtrail(sirka,vyska)
{
	gettrailobj().visibility="visible"
	gettrailobj().width=sirka
	gettrailobj().height=vyska
	document.onmousemove=followmouse
}

function zmrazit()
{
	gettrailobj().visibility="visible"
	document.onmousemove=""
}


function followmouse(e)
{
	var x_coord = offsetfrommouse[0]; // abs. X suradnica
	var y_coord = offsetfrommouse[1]; // abs. Y suradnica

	var y_relCoord = 0; // Y suradnica vo viewporte
	var x_relCoord = 0; // X suradnica vo viewporte


	if (typeof e != "undefined")
	{
		x_coord += e.pageX;
		y_coord += e.pageY;

		y_relCoord = e.clientY;
		x_relCoord = e.clientX;
	}
	else if (typeof window.event !="undefined")
	{
		x_coord += truebody().scrollLeft+event.clientX;
		y_coord += truebody().scrollTop+event.clientY;

		y_relCoord = event.clientY;
		x_relCoord = event.clientX;
	}


	x_coord += 10;
	y_coord += 10;


	var docwidth  = document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
	var docheight = document.all? Math.max(truebody().scrollHeight, truebody().clientHeight) : Math.max(document.body.offsetHeight, window.innerHeight)


	/*if (xcoord+trailimage[1]+3>docwidth || ycoord+trailimage[2]> docheight)
		gettrailobj().display = "none"
	else
		gettrailobj().display = ""*/


	var child = document.getElementById("trailimageid").firstChild;

	if (child && child.tagName == "IMG")
	{
		var clientWidth  = (document.documentElement.clientWidth ? document.documentElement.clientWidth : 1560);
		var clientHeight = (document.documentElement.clientHeight ? document.documentElement.clientHeight : 1000);

		var objWidth  = child.width;
		var objHeight = child.height;

		var padding = 10;


		// korekcia zobrazenia right => left
		if ((x_relCoord + objWidth + padding) > clientWidth)
		{
			if (objWidth > x_relCoord)
				x_coord -= 0.5 * objWidth + padding;
			else
				x_coord -= objWidth + 2*padding;
		}


		// korekcia zobrazenia top => bottom
		if ((y_relCoord + objHeight + padding) > clientHeight)
		{
			if (objHeight > y_relCoord)
				y_coord -= 0.5 * objHeight + padding;
			else
				y_coord -= objHeight + 2*padding;
		}
	}


	gettrailobj().left = x_coord + "px";
	gettrailobj().top  = y_coord + "px";
}

document.onmousemove=followmouse
