var floatingPanel = null;

// because IE won't play nice. From Quirksmode
var findPosX = function (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;
}

var findPosY = function (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;
}

var displayNone = function (obj) {
	obj.style.display = "none";
}


var toggleDisplay = function (obj) {
	if(obj.style.display == "none") {
		obj.style.display = "block";
	} else {
		obj.style.display = "none";
	}
}

var mouseLeave = function (e, pid) {

	if(!self.floatDefined) return;

	if (!e) var e = window.event;
	
	var tg = (window.event) ? e.srcElement : e.target;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	try {
		while(reltg.id != pid && reltg.nodeName != 'BODY') {
			reltg = reltg.parentNode;
		}
	} catch (e) { return; }
	
	if (reltg.id == pid) return;
	
	// Mouseout took place when mouse actually left container
	// Handle event
	toggleDisplay($(pid));
}
	
var floatPanel = function(obj, id, offset_x, offset_y) {

	if(!self.floatDefined) return;

	offset_x = (offset_x) ? offset_x : 40;
	offset_y = (offset_y) ? offset_y : 40;
	
	posx = this.findPosX(obj);
	posy = this.findPosY(obj);

    if (floatingPanel) {
		displayNone(floatingPanel);
    }

	floatingPanel = $("floatpanel" + id);
	floatingPanel.style.left = (posx + offset_x) + "px";
	floatingPanel.style.top = (posy + offset_y) + "px";
	
	if(document.all) {
		floatingPanel.onmouseleave = function() { toggleDisplay(floatingPanel); }
	} else {
		floatingPanel.onmouseout = function(e) { if(self.mouseLeave) { mouseLeave(e, floatingPanel.id); } }
	}
    
    toggleDisplay(floatingPanel);
};

var floatDefined = true;