var offTop = 0;
var offLeft = 0;
var offWidth = 0;
var resultsDiv;
var debugDiv;
var preAjax;
var ignoreAjax;

function clearData()
	{
	var results = document.getElementById("results");
	var paras = results.getElementsByTagName("p");
	var length = results.childNodes.length

/*	alert("paras.length: " + paras.length); */

/*		alert("paras.length: " + paras.length); */
/*		debugDiv.innerHTML = "paras.length: " + paras.length; */
	for (var i = length - 1; i >= 0; i--)
		{
/*			debugDiv.innerHTML = debugDiv.innerHTML + " i: " + i; */
/*			alert("i: " + i); */
		results.removeChild(results.childNodes[i]);
		}

	results.style.border = "none";

	/* Hack to not display popup if mouse is moved away before data comes back */
	if (preAjax == 1)
		{
		preAjax = 0;
		ignoreAjax = 1;
		}

	}

function getX(e)
	{
	var x = 0;
	while (e)
		{
		x += e.offsetLeft;
		e = e.offsetParent;
		}
	return x;
	}

function getY(e)
	{
	var y = 0;
	while (e)
		{
		y += e.offsetTop;
/*		alert(y); */
		e = e.offsetParent;
		}
	return y;
	}

function getOffset(element)
	{

	/* Hack to not display popup if mouse is moved away before data comes back */
	preAjax = 1;

	resultsDiv = document.getElementById("results");
	debugDiv = document.getElementById("debugDiv");

/*	alert(debugDiv.innerHTML); */

/*	offTop = element.offsetTop; */
/* 	offLeft = element.offsetLeft; */
	offTop = getY(element);
	offLeft = getX(element);
	offWidth = element.offsetWidth;

/* 	alert("offTop: " + offTop + "  offLeft: " + offLeft); */

	}

function setOffsets()
	{

	resultsDiv.style.top = offTop + "px";
	resultsDiv.style.left = offLeft + offWidth + "px";

	alert(resultsDiv.style.top);

	}

function setData(request)
	{

	/* Hack to not display popup if mouse is moved away before data comes back */
	preAjax = 0;

	if (ignoreAjax == 1)
		{
		ignoreAjax = 0;
		return;
		}

/*	alert(Geometry.getViewportHeight()); */

/* 738 for Firefox at 1024 x 768 with taskbar */
/*	alert(window.outerHeight) */

	var xmlDoc = request.responseXML;
/* 	alert(xmlDoc); */

/*
	serialXML = new XMLSerializer();
	retStr = serialXML.serializeToString(xmlDoc);
	alert(retStr);
*/

	var response_name = xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;

	var response_title = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
	var response_description = xmlDoc.getElementsByTagName("description")[0].childNodes[0].nodeValue;
	var thumbnail = xmlDoc.getElementsByTagName("thumbnail")[0].childNodes[0].nodeValue;

	if (response_description == "&nbsp;")
		{
		response_description = " "
		}

/*	alert(response_name); */
/*	alert(response_title);  */
/*	alert(response_description); */

	names = xmlDoc.getElementsByTagName("name");

	for (var i = 0; i < names.length; i++)
		{
/*		alert("i: " + i + " " + names[i]); */
		children = names[i].childNodes;
		for (var j = 0; j < children.length; j++)
			{
			child = children[j];
/*			alert(child.nodeValue);  */
/*			alert(child); */

			}
		}

/*	alert("test"); */
/* 	alert(response_name);*/

/*	alert(offTop + " " + offLeft); */

	clearData(); /* Need this here to remove "double" post problem */
/*	alert(request.responseText); */
/*	alert(offTop + " " + offLeft); */

	var results = document.getElementById("results");

/*	alert(results); */

/* 	alert(offTop + " " + offLeft); */

	results.style.border = "black 1px solid";

/*	alert(results.style.top); */

	var img = document.createElement("img");
	img.setAttribute("src", "/images/thumbnails/" + thumbnail);
	results.appendChild(img);

	var elem = document.createElement("h3");
	results.appendChild(elem);
	var tmp = response_title
	var txt = document.createTextNode(tmp);
	elem.appendChild(txt);

	var para = document.createElement("p");
	results.appendChild(para);
/*	alert("childNodes.length: " + results.childNodes.length); */
/*	var txt = document.createTextNode(request.responseText); */

/*	tmp = response_name + " : " + response_title + " : " + response_description; */
	tmp = response_description;
/*	alert(tmp); */
	txt = document.createTextNode(tmp);

	para.appendChild(txt);

	var resultsWidth = results.offsetWidth;
	var resultsHeight = results.offsetHeight;

/*	alert("offTop: " + offTop + "  offWidth: " + offWidth + "  Width: " + resultsWidth + "  Height: " + resultsHeight); */

/*	alert("Geometry.getVerticalScroll: " + Geometry.getVerticalScroll()); */

	var reloffTop =  offTop - Geometry.getVerticalScroll();

/*	alert("reloffTop: " + reloffTop); */

	var viewportHeight = Geometry.getViewportHeight();
/*	alert(Geometry.getViewportHeight()); */

/*	if (reloffTop + resultsHeight > window.outerHeight) */
	if (reloffTop + resultsHeight > viewportHeight) 
		{
		var newTop = offTop - resultsHeight + 15;
		results.style.top = newTop + "px";
		}
	else
		{
		results.style.top = offTop + "px";
		}

	var viewportWidth = Geometry.getViewportWidth();

/*	alert(viewportWidth); */

/*	alert(offWidth + offLeft + 5); */

	if (offWidth + offLeft + resultsWidth + 30 > viewportWidth)
		{
		results.style.left = offLeft - resultsWidth - 5 + "px";
		}
	else
		{
		results.style.left = offWidth + offLeft + 5 + "px";
		}

	}
