var validationTimeout;

function validateCharInput(event, object, regexpstr, info, time)
{
	var code = (event.which == null) ? event.keyCode : event.which;

	if(code == 0)
	{
		document.getElementById('validation').style.display='none';
		return true;
	}

	if (code < 0x20 || event.ctrlKey)//|| code > 0x7e
	{
		return true;
	}


	var regexp = eval(regexpstr);
	var str = String.fromCharCode(code);
	if (str.match(regexp) == null)
	{
		validationTimeout = setTimeout("document.getElementById('validation').style.display='none';", time);
		document.getElementById('validation-text').innerHTML = info;

		pos = findPos(object);


		if(window.innerHeight)
		{
			iw = self.innerWidth;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			iw = document.documentElement.clientWidth;
		} else if (document.body) {
			iw = document.body.clientWidth;
		}


		if(pos[0] + 213 < iw)
		{

			x = pos[0];
		} else if(pos[0] + 213 > iw) {

			x = iw - 40 - 213;
		}


		document.getElementById('validation').style.left = x + 'px';
		document.getElementById('validation').style.top = pos[1] + 16 + 'px';
		document.getElementById('validation').style.display = 'block';

		return false;
	}

	document.getElementById('validation').style.display = 'none';
	clearTimeout(validationTimeout);
	return true;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
