function showError(caption, text, x, y)
{
	$('errorCaption').innerHTML = caption;
	$('errorText').innerHTML = text;
	$('errorDiv').style.left = x + 'px';
	$('errorDiv').style.top = y + 'px';
	/*if (!document.all)
		$('errorDiv').addEventListener("blur", closeError, false);*/
	new Effect.Appear('errorDiv', {to:0.8, duration:0.2});
	setTimeout("focusErrorBox();", 300);
}

function focusErrorBox()
{
	try
	{
		$('errorDiv').focus();
	}
	catch(ex)
	{
		$('errorDiv').style.display = 'block';
		$('errorDiv').focus();
	}
}

function closeError()
{
	new Effect.Fade('errorDiv', {duration:0.3});
}

function showErrorOnElement(caption, text, elementId, quadrant, offsetX, offsetY)
{
	if (!offsetX) offsetX = 0;
	if (!offsetY) offsetY = 0;
	
	pos = findPosition($(elementId));
	var X, Y;
	if (typeof quadrant != 'undefined')
	{
		switch(quadrant)
		{
			case 1:
				$('errorDiv').className = 'errorDiv1';
				X = pos[0] + offsetX;
				Y = pos[1]-130 + offsetY;
				break;
			case 2:
				$('errorDiv').className = 'errorDiv2';
				X = pos[0]-230 + offsetX;
				Y = pos[1]-130 + offsetY;
				break;
			case 3:
				$('errorDiv').className = 'errorDiv3';
				X = pos[0]-230 + offsetX;
				Y = pos[1]+10 + offsetY;
				break;
			case 4:
				$('errorDiv').className = 'errorDiv4';
				X = pos[0] + offsetX;
				Y = pos[1]+10 + offsetY;
				break;
			case 5:
				$('errorDiv').className = 'errorDiv5';
				X = pos[0]+258 + offsetX;
				Y = pos[1]-28 + offsetY;
				break;
		}
	}
	//if no quadrant has been passed
	else
	{
		X = pos[0];
		Y = pos[1]-130;
		$('errorDiv').className = 'errorDiv1';
	}
	
	//display error box
	showError(caption, text, X, Y);	
}

function findPosition(obj)
{
	var curleft = 0;
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
		curtop += obj.y;
	}
	return [curleft, curtop];
}