// Var set by the settimeout
var timer;

// static => the div is fixed on the link, float => the div follows the mouse, both => mix between them
var positionDiv = 'float'




//////////////////////////////////////////////////////////////
var updatePos = true
var linkobj
var idlink = 0

// Set Netscape up to run the "captureMousePosition" function whenever
// the mouse is moved. For Internet Explorer and Netscape 6, you can capture
// the movement a little easier.


if (document.layers) { // Netscape
	document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = captureMousePosition;
} else if (document.all) { // Internet Explorer
	document.onmousemove = captureMousePosition;
} else if (document.getElementById) { // Netcsape 6
	document.onmousemove = captureMousePosition;
}

// Global variables
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page

function captureMousePosition(e) {
	
	if (updatePos == true && linkobj)
	{    
		if (document.layers) {
			// When the page scrolls in Netscape, the event's mouse position
			// reflects the absolute position on the screen. innerHight/Width
			// is the position from the top/left of the screen that the user is
			// looking at. pageX/YOffset is the amount that the user has
			// scrolled into the page. So the values will be in relation to
			// each other as the total offsets into the page, no matter if
			// the user has scrolled or not.
			xMousePos = e.pageX;
			yMousePos = e.pageY;
			xMousePosMax = window.innerWidth+window.pageXOffset;
			yMousePosMax = window.innerHeight+window.pageYOffset;
		} else if (document.all) {
			// When the page scrolls in IE, the event's mouse position
			// reflects the position from the top/left of the screen the
			// user is looking at. scrollLeft/Top is the amount the user
			// has scrolled into the page. clientWidth/Height is the height/
			// width of the current page the user is looking at. So, to be
			// consistent with Netscape (above), add the scroll offsets to
			// both so we end up with an absolute value on the page, no
			// matter if the user has scrolled or not.
			xMousePos = window.event.x+document.body.scrollLeft;
			yMousePos = window.event.y+document.body.scrollTop;
			xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
			yMousePosMax = document.body.clientHeight+document.body.scrollTop;
		} else if (document.getElementById) {
			// Netscape 6 behaves the same as Netscape 4 in this regard
			xMousePos = e.pageX;
			yMousePos = e.pageY;
			xMousePosMax = window.innerWidth+window.pageXOffset;
			yMousePosMax = window.innerHeight+window.pageYOffset;
		}  
	
		if ((positionDiv == 'float' || positionDiv == 'both'))
		{	
			SetPopupPos()
		}
	}
	
}

// Returns an object
function getObj(name)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
	}
	else if (document.all)
	{
		this.obj = document.all[name];
	}
	else if (document.layers)
	{
		this.obj = document.layers[name];
	}
}

// Main function
function DisplayThumb(linkobjT, url, text)
{	
	if(linkobjT.id == '')
	{
		linkobjT.id = idlink
		idlink++
	}
	
	linkobj = linkobjT	
	
	// Preloads the image
	PreLoadImage(url);
	
	// onMouseOut
	xObj = new getObj(linkobj.id);
	xObj.obj.onmouseout = ClearThumb	
	xObj.obj.onclick = ClearThumb
	
	// Sets the text
	if(text && text.length > 0)
	{
		document.getElementById('thumbtext').innerHTML = text;
		document.getElementById('divpopup').style.width = '250px';
	}
	else
	{
		document.getElementById('thumbtext').style.visibility = 'hidden';
	}
		
		
	// Sets the position
	SetPopupPos()
	
	// Changes the image
	document.getElementById('thumbimg').src=url;
	// Sets as visible
	timer = window.setTimeout('ShowPopup()', '300')
}

// Makes the div visible
function ShowPopup()
{	

	// Checks whether the image exists
	if (navigator.appName != "Microsoft Internet Explorer" && navigator.appName != "Opera" && typeof document.getElementById('thumbimg').naturalWidth == "undefined" || document.getElementById('thumbimg').naturalWidth == 0)
	{
		document.getElementById('thumbimg').src = 'thumbs/generic/defthumb75.png';
	}
	document.getElementById('divpopup').style.visibility='visible';
}

// Patch for this stupid IE
function IEImgNotFound()
{
	document.getElementById('thumbimg').src = 'thumbs/generic/defthumb75.png';
}

// Pre-load images
function PreLoadImage(image)
{
	if (document.images)
	{
		preload_image = new Image(); 
		preload_image.src=image; 
	}
}

// Calculates the position of the div
function SetPopupPos()
{
	if (navigator.appName == "Microsoft Internet Explorer")
	{		
		scrollTop = document.documentElement.scrollTop
		scrollLeft = document.documentElement.scrollLeft
	}
	else
	{
		scrollTop = window.pageYOffset
		scrollLeft = window.pageXOffset
	}
	
	
	if(positionDiv == 'float')
	{
		posX = xMousePos
		posY = yMousePos
		
		if (navigator.appName == "Microsoft Internet Explorer")
		{
			posX = posX + scrollLeft
			posY = posY + scrollTop
		}
	}
	else if (positionDiv == 'both')
	{
		posX = xMousePos
		posY = findPosY(linkobj);	

		if (navigator.appName == "Microsoft Internet Explorer")
		{
			posX = posX + scrollLeft
			posY = posY + 10
		}
	}
	else
	{
		// Detects the position of  the link
		posX = findPosX(linkobj);
		posY = findPosY(linkobj);		
		
		if (navigator.appName == "Microsoft Internet Explorer")
		{
			posX = posX + 15
			posY = posY + 15
		}
	}
	
	
	// Detects the screen size
	var larg = xMousePosMax-20
	var haut = yMousePosMax

 	
	// If to low
	if((navigator.appName == "Microsoft Internet Explorer" && posY + document.getElementById('divpopup').offsetHeight)+15 > (screen.availHeight+scrollTop-250))
	{
		posY = posY - document.getElementById('divpopup').offsetHeight - 25
	}
	else if((navigator.appName != "Microsoft Internet Explorer" && posY + document.getElementById('divpopup').offsetHeight)+15 > haut)
	{
		posY = posY - document.getElementById('divpopup').offsetHeight - 25
	}
		
	// If too much on the right
	if((posX + document.getElementById('divpopup').offsetWidth) > larg)
	{
		posX = larg-document.getElementById('divpopup').offsetWidth
	}
	
	//window.status = 'x: '+posX+', y: '+posY+', offsetHeight: '+document.getElementById('divpopup').offsetHeight+', haut: '+haut

	document.getElementById('divpopup').style.top = posY+20+"px";
	document.getElementById('divpopup').style.left = posX+"px";	
	
}


function ClearThumb()
{
	// Kills the timer
	window.clearTimeout(timer);
	// Erases the text
	document.getElementById('thumbtext').innerHTML = '';
	// Set the size back to auto
	document.getElementById('divpopup').style.width = document.getElementById('thumbimg').offsetWidth+5+'px';
	// hIdes the div
	document.getElementById('divpopup').style.visibility = 'hidden';
	linkobj = ''

}



// Finds the X position of the link
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

// finds the Y position of the link
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

