function ValidateStringField(_field, _length, _errMsg)
{
	if(_field.value.length < _length)
	{
		_field.className = "FieldError";
		ShowErrorTip(_errMsg, _field);
		return false;
	}
	else
	{
		_field.className = "";
		return true;
	}
}

function ValidateIntegerField(_field, _length, _errMsg)
{
	_intCheck = "^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])$";
	var _isNumber = ValidateExprField(_field, _intCheck, '');
	
	if(!_isNumber && _field.value.length < _length)
	{
		_field.className = "FieldError";
		ShowErrorTip(_errMsg, _field);
		return false;
	}
	else
	{ 
		_field.className = "";
		return true;
	}
}

function ValidateExprField(_field, _expr, _errMsg)
{
	var re = new RegExp(_expr, "i");
	re.source = _expr;
	var _match = (re.exec(_field.value)) ? true : false;
	if(_match)
	{
		_field.className = "";
		return true;
	}
	else
	{
		if(_errMsg != "")
		{
			ShowErrorTip(_errMsg, _field);
			_field.className = "FieldError";
		}
		return false;
	}
}

function CompareFields(_field1, _field2, _errMsg)
{
	if(_field1.value.length > 3)
	{
		if(_field1.value != _field2.value)
		{
			_field1.className = "FieldError";
			_field2.className = "FieldError";
			ShowErrorTip(_errMsg, _field2);
			return false;
		}
		else
		{
			_field1.className = "";
			_field2.className = "";
			return true;
		}
	}
	else
	{
		return false;
	}
}

var shownErrorTip;
function ShowErrorTip(_errorTip, _field)
{
	if(shownErrorTip)
		shownErrorTip.parentNode.removeChild(shownErrorTip);
	var fieldPosition = FindFieldPosition(_field);
	
	var output = '<div id="divErrorTip" style="position: absolute; left: ' + fieldPosition[0] + 'px; top: ' + (fieldPosition[1] + 20) + 'px; z-index: 102;" class="ErrorTip">';
	output += _errorTip;
	output += '</div>';
	
	var errorTip = document.createElement("div");
	errorTip.innerHTML = output;
	document.body.appendChild(errorTip);
	shownErrorTip = document.getElementById("divErrorTip");
	setTimeout('shownErrorTip.style.display = "none"', 6000);	
}

function FindFieldPosition(_field)
{
	var currentLeft = currentTop = 0;
	if(_field.offsetParent)
	{
		do{
			currentLeft += _field.offsetLeft;
			currentTop += _field.offsetTop;
		}while(_field = _field.offsetParent);
	}
	return [currentLeft, currentTop];
}