var g_visitcard 			= null;
var g_vc_timeoutId 			= false;
var g_vc_timeoutDelay 		= 500;
var g_vc_xOffset			= 20;
var g_vc_yOffset			= 10;

var g_visitCardBreite 		= 200;        	// Breite (Vorgabewert)
var g_visitCardDir 			= 0;         	// Ausrichtung; 0=rechts 1=links
var g_visitCardVDir 		= 0;        	// Ausrichtung; 0=unten 1=oberhalb

var g_visitCardSpace 		= 10;        	// Abstand vom Cursor
var g_visitCardChangeVDir 	= 65;

var b_Breite;								// aktueller Speicher für Ballonbreite
var b_Dir, b_VDir;

function Visitcard()
{
	if(g_visitcard == null)
	{
		g_visitcard 		= this;
		
		this.m_bDisplayed 	= false;
		this.m_currentText	= '';
		this.m_bDuringLoad	= false;
		this.m_timer		= null;

		this.createFrame('visitcard');
	}
}

Visitcard.prototype.createFrame = function(div_id)
{
	var div = crossGetObject(div_id);

	if(div == null)
	{
		var div = document.createElement("DIV");
			div.id 				= div_id;
			div.style.display	= "block";
			div.style.position 	= "absolute";
			div.style.left		= "-200px";
			div.style.visibility= "hidden";
			//div.style.zIndex	= "10000";
			
			div.onmouseover		= function(event) { if (g_vc_timeoutId) clearTimeout(g_vc_timeoutId); };
			div.onmouseout		= function(event) { VisitcardTimeout() };
			
		document.body.appendChild(div);
	}
}

function showVisitCard(text,param)
{
	if(g_visitcard != null && !g_visitcard.m_bDuringLoad)
	{
		var mousePos	= param[0];
		var MouseX 		= mousePos.crossMouseX;
		var MouseY		= mousePos.crossMouseY;
	
		var showstyle	= param[1];
		var args 		= text.split(",");

		if(g_visitcard.m_bDisplayed)
			g_visitcard.hide();

		if(!g_visitcard.m_bDisplayed)
		{
			var reg_email	= /^\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}$/;
			var table 		= '<table width="200px" cellpadding="0" cellspacing="0" border="0" id="vistitCardTbl" bgcolor="#ffffff" style="border-left:1px solid #4C6171; border-right:1px solid #4C6171; border-top:1px solid #4C6171; border-bottom:1px solid #4C6171; padding:4px;"><tr><td><table cellpadding="0" cellspacing="0" border="0">';

			if(showstyle == "as_table")
			{
				var i=0;
				var bExistAnyLabel = false;

				while(i < args.length)
				{
					var label = args[i++];

					if(label.length)
					{
						bExistAnyLabel = true;
						break;
					}
				}

				var i=0;

				while(i < args.length)
				{
					var label = args[i++];
					var value = args[i++];

					if(label == 'Header')
					{
						if(i-2 > 0) table += '<tr><td height="10"><img src="images_pub/1x1.gif" width="1px" height="1"></td></tr>';
						table += '<tr><td style="font-family:verdana; font-size:9.5px; color:#5F858F;"><b>'+value+'</b></td></tr>';
					}
					else
					{
						table += '<tr>';

						if(label.length)
						{
							table += '<td bgcolor="#ffffff" style="font-family:verdana; font-size:9.5px; color:#5F858F;">';
							table += label;
							table += '</td>';
						}

						if(value && value.length)
						{
							table += '<td style="font-family:verdana; font-size:9.5px; color:#5F858F;"';

							if(label.length <= 0 && bExistAnyLabel)
								table += 'colspan=2>';
							else
								table += '>';

							if(reg_email.test(value))
								table += '<a style="font-family:verdana; font-size:9.5px; color:#5F858F;" href=mailto:'+value+'>'+value+'</a>';
							else
								table += value;

							table += '</td>';
						}

						table += '</tr>';
					}
				}

				table += '</table></td></tr>';
			}
			else
			{
				table += '<tr><td style="font-family:verdana; font-size:9.5px; color:#5F858F;">';

				var value = text;
				table += value;

				table += '</td></tr>';
			}

			table += '</table>';

			var div 		= crossGetObject('visitcard');
			var relWidth 	= crossInnerWindowWidth() + crossGetScroll("x");
			var relHeight 	= crossInnerWindowHeight() + crossGetScroll("y");

			b_Dir 			= g_visitCardDir;
			b_Breite		= g_visitCardBreite;
			b_VDir 			= g_visitCardVDir;

			if(MouseX + b_Breite + g_visitCardSpace > relWidth)
				b_Dir = 1;
			else if (MouseX < b_Breite + g_visitCardSpace)
				b_Dir = 0;

			if (MouseY + g_visitCardChangeVDir > relHeight)
				b_VDir = 1;
			else if (MouseY - g_visitCardChangeVDir < 0)
				b_VDir = 0;

			crossWrite(div, table);
			cursorMoveVisitcard(mousePos);
		}
	}
}

//showstyle = "as_table";
//showstyle = "as_block";
Visitcard.prototype.onMouseOver = function(event,link,showstyle)
{
	event = event || window.event;

	if(this.m_timer)
		clearTimeout(this.m_timer);

	if(typeof showstyle == 'undefined')
		showstyle = "as_table";

	crossMousePosition(event);

	var mousePos = 	{
						crossMouseX:crossMouseX,
						crossMouseY:crossMouseY
					};

	this.m_timer = setTimeout(	function()
								{
									var xml = new xml_http2();
									xml.open(link,"",showVisitCard,[mousePos,showstyle]);
								},500);
		
	return true;
}

Visitcard.prototype.onMouseOut = function()
{
	this.hide();
	
	return true;
}

Visitcard.prototype.show = function(obj)
{
	this.m_bDisplayed 		= true;
	crossShowObject(obj);
}

Visitcard.prototype.hide = function()
{
	var obj 				= crossGetObject('visitcard');
	crossHideObject(obj);

	this.m_bDisplayed 		= false;
	crossMoveTo(obj, -200, 0);
}

function addEvent(obj,event_name,func_name)
{
	if (obj.attachEvent)
	{
		obj.attachEvent("on"+event_name, func_name);
	}
	else if(obj.addEventListener)
	{
		obj.addEventListener(event_name,func_name,true);
	}
	else
	{
		obj["on"+event_name] = func_name;
	}
}

function removeEvent(obj,event_name,func_name)
{
	if (obj.detachEvent)
	{
		obj.detachEvent("on"+event_name,func_name);
	}
	else if(obj.removeEventListener)
	{
		obj.removeEventListener(event_name,func_name,true);
	}
	else
	{
		obj["on"+event_name] = null;
	}
}

function hideVisitcard()
{
	if(g_visitcard != null)
		g_visitcard.hide();
}

function cursorMoveVisitcard(mousePos)
{
	if(g_visitcard != null)
	{
		var posX, posY;
		
		var obj 		= crossGetObject('visitcard');
		var crossMouseX = mousePos.crossMouseX;
		var crossMouseY = mousePos.crossMouseY;

//		if (g_visitcard.m_bDisplayed)
		{
			if (b_Dir==0)
			{
				posX = crossMouseX + g_visitCardSpace;

				if (b_VDir==0)
				{
					posY = crossMouseY + g_visitCardSpace;
				}
				else
				{
					posY = crossMouseY - g_visitCardChangeVDir;
				}
			}
			else
			{
				posX = crossMouseX-b_Breite-g_visitCardSpace;

				if (b_VDir==0)
				{
					posY = crossMouseY + g_visitCardSpace;
				}
				else
				{
					posY = crossMouseY - g_visitCardChangeVDir;
				}
			}
			
			crossMoveTo(obj, posX, posY)
		}

		if(!crossIsVisible(obj))
		{
			obj.style.display = "block";
			jt_BodyZ.toTop(obj);
		
			crossShowObject(obj);
			g_visitcard.m_bDisplayed = true;
		}
	}
}


function VisitcardTimeout()
{
	if(g_visitcard != null)
		g_vc_timeoutId = setTimeout('g_visitcard.hide();',g_vc_timeoutDelay);

	if(g_visitcard != null && g_visitcard.m_timer)
		clearTimeout(g_visitcard.m_timer);
}


cDomEvent.addEvent(window,"resize",hideVisitcard);