_profile_hover = function()
{
	this.cached = [];
	this.timer = null;
	this.display = false;

	var myTimer;


	this.out = function(userobj, userid, endtime)
	{
		this.hide_profile(endtime);
		this.display = false;
		clearTimeout(this.timer);
	};

	this.outnow = function(userobj, userid)
	{
		this.hidenow_profile();
		this.display = false;
		clearTimeout(this.timer);
	};

	this.hover = function(userobj, userid, starttime)
	{
		this.display = true;

		if (this.cached[userid])
		{
			this.display_profile(userobj, userid);
			return false;
		};

		this.timer = setTimeout(function()
		{
			ProfileHover.fetch_display.call(ProfileHover, userobj, userid);
		}, starttime);
	};

	this.fetch_display = function(userobj, userid)
	{
		YAHOO.util.Connect.asyncRequest('POST', 'ajax.php', {
			success: function(ajax)
			{
				ProfileHover.fetched_display.call(ProfileHover, ajax, userobj, userid);
			},
			failure: function()
			{
				return false;
			},
			timeout: vB_Default_Timeout,
			scope: this
		}, SESSIONURL + 'securitytoken=' + SECURITYTOKEN + '&do=profilehover&userid=' + userid);
	};

	this.fetched_display = function(ajax, userobj, userid)
	{
		if (ajax.responseXML && ajax.responseXML.getElementsByTagName('profilehover') && ajax.responseXML.getElementsByTagName('profilehover')[0])
		{
			this.cached[userid] = ajax.responseXML.getElementsByTagName('profilehover')[0].firstChild.nodeValue;
			this.display_profile(userobj, userid);
		};
	};

	this.display_profile = function(userobj, userid)
	{
		if (this.cached[userid] && this.display)
		{
			this.hide_profile();

			profile = document.createElement('div');
			profile.id = 'dbt_profilehover';
			profile.style.position = 'absolute';
			profile.style.top = (YAHOO.util.Dom.getY(userobj) + parseInt(userobj.offsetHeight)) + 'px';
			profile.style.left = YAHOO.util.Dom.getX(userobj) + 'px';
			profile.style.zIndex = '3';
			profile.innerHTML = this.cached[userid];

			document.body.appendChild(profile);

			ph = YAHOO.util.Dom.get('dbt_profilehover');
			right = (parseInt(ph.style.left) + ph.offsetWidth);

			if (right >= YAHOO.util.Dom.getViewportWidth())
			{
				YAHOO.util.Dom.get('dbt_profilehover').style.left = (YAHOO.util.Dom.getViewportWidth() - ph.offsetWidth) + 'px';
			};
		};
	};

	this.hide_profile = function(endtime)
	{
		if (YAHOO.util.Dom.get('dbt_profilehover'))
		{
			setTimeout("YAHOO.util.Dom.get('dbt_profilehover').parentNode.removeChild(YAHOO.util.Dom.get('dbt_profilehover'));",endtime);
		};
	};

	this.hidenow_profile = function()
	{
		if (YAHOO.util.Dom.get('dbt_profilehover'))
		{
			setTimeout("YAHOO.util.Dom.get('dbt_profilehover').parentNode.removeChild(YAHOO.util.Dom.get('dbt_profilehover'));",1);
		};
	};
};

ProfileHover = new _profile_hover();
