// httprequest objektet
var xmlHttp;
// en timer för att kolla om vänteikon skall visas
var timer;
// håller reda om sidan håller på med någon request eller inte
var isBusy = false;

function showDetails(id)
{
	// avbryt gammla requests
	// för någon bugg i firefox
	// (http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_a_1.html)
	if(xmlHttp && isBusy)
	{
		xmlHttp.onreadystatechange = function () {}
		xmlHttp.abort();
	}
	// skapa xmlhttp objektet
	xmlHttp = GetXmlHttpObject();
	if(xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	}
	
	// rensa timern om den skulle finnas.
	clearTimeout(timer);
	// vänta en sekund innan vi lägger på en vänteikon
	timer = setTimeout("showWait('txtInfo');",1000);

	// skapa vår nya request
	isBusy = true;
	var url="getPicture.aspx";
	url = url+"?id="+id;
	//url = url+"&sid="+Math.random();	// för att inte sidan skall tas från cachen
	xmlHttp.onreadystatechange = stateChangedDetails;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function showInfoBox(id, e)
{ 
	var offsetX = 15;
	var offsetY = 5;
	// sätt rutan vid muspekare och visa den
	var mousePos = getMousePos(e);
	
	obj = document.getElementById('divInfoBox');
	obj.style.top  = (mousePos['y'] + offsetY) + 'px';
    obj.style.left = (mousePos['x'] + offsetX) + 'px';
    obj.style.display = 'block';
    obj.style.visibility = 'visible';
	
	// avbryt gammla requests
	// (http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_a_1.html)
	if(xmlHttp && isBusy)
	{
		xmlHttp.onreadystatechange = function () {}
		xmlHttp.abort();
	}
	// skapa xmlhttp objektet
	xmlHttp = GetXmlHttpObject();
	if(xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	}
	
	// rensa timern om den skulle finnas.
	clearTimeout(timer);
	// vänta en sekund innan vi lägger på en vänteikon
	timer = setTimeout("showWait('divInfoBox');",1000);
		
	// skapa vår nya request
	isBusy = true;
	var url="getInfo.php";
	url = url+"?id="+id;
	url = url+"&sid="+Math.random();
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function hideInfoBox(id)
{
	obj = document.getElementById('divInfoBox');
	obj.style.display = 'none';
    obj.style.visibility = 'hidden';
    obj.innerHTML = '';
}

function getMousePos(mev)
{
	var pos = Array;
	
	if (document.all)
	{
		pos['x'] = event.clientX + document.body.scrollLeft;
		pos['y'] = event.clientY + document.body.scrollTop;
	}
	else
	{
		pos['x'] = mev.pageX;
		pos['y'] = mev.pageY;
	}
	
	return pos;
}

function showWait(divname)
{
	obj = document.getElementById(divname);
	img = document.getElementById('waitSpinner');
	// lägg inte till vänteikonen om den redan finns..
	if(!img)
	{
		var p = document.createElement('p');
		p.align = 'center';
		var img = document.createElement('img');
		img.src = 'spinner.gif';
		img.id = 'waitSpinner';
		p.appendChild(img);
		obj.appendChild(p);
	}
}

function removeWait(divname)
{
	// rensa timern
	clearTimeout(timer);
	// ta bort vänteikonen om den finns
	obj = document.getElementById(divname);
	img = document.getElementById('waitSpinner');
	if(img)
		obj.removeChild(img);
	
}

// när hämtningen av den lilla infoboxen är klar
function stateChanged() 
{ 
	// kolla om hämtningen klar
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		// sätt innehållet i infoboxen
		document.getElementById("divInfoBox").innerHTML = xmlHttp.responseText;
		// ta bort vänteikonen
		removeWait("divInfoBox");
		isBusy = false;
	}
}

// när hämtningen av den detaljerna infoboxen är klar
function stateChangedDetails() 
{ 
	if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		document.getElementById("txtInfo").innerHTML = xmlHttp.responseText;
		removeWait("txtInfo");
		isBusy = false;
	}
} 

// skapa xmlHttpObject
function GetXmlHttpObject()
{ 
	var objXMLHttp=null
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest()
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
	return objXMLHttp
}