/* $Id: Base.js,v 1.1 2004/08/24 15:08:07 jane Exp $ */

function checkElement(element, descriptor)
{
	var msg;
	if (msg = checkelement(element, descriptor)) {
		try { element.focus(); element.select(); } catch (e) {}
		alert(getValidateMessage(msg));
		return (false);
	}
	else return (true);
}

function checkelement(element, p_ed)
{
	var result = undefined;
	var descriptor;
	if ((p_ed != undefined) && (p_ed != null)) descriptor = copyED(p_ed)
	else descriptor = fillEDByElement(undefined, element);
	if (checkBool(descriptor.validate))
	{
		if (checkBool(descriptor.required))
		{
			if (element.tagName.toUpperCase() == 'SELECT')
			{
				alert('Sorry, validating <select/> element under constructing.');
			}
			else
			{
				if (!(new ParserNonEmpty(element.value)).doCheck()) return (descriptor.msgRequired);
			}
		}
		if (element.tagName.toUpperCase() == 'SELECT') return undefined;
		if (element.value != '')
		{
			var dt = descriptor.dataType;
			if (dt != undefined)
			{
				if (isDTSupport(dt))
					eval('if ((new ' + dt.substr(2) + 'Parser(descriptor, element.value, element)).doCheck() != parserResults.Correct) result = descriptor.msgValidate;');
				else
					result = '\nElement id: ' + element.id + '\nElement name: ' + element.name + '\n' + DefMsgErrDataTypeUnsupported;
			}
		}
	}
	return result;
}

function checkExp(value, regExp)
{
	var arr = regExp.exec(value);
	if (arr)
	{
		for (var i = 0; i < arr.length; i++)
		{
			if (arr[i] == value) return true;
		}
	}
	return false;
}

function getValidateMessage(msg)
{
	return (DefMsgPrefix + '\n\n' + msg + '\n\n' + DefMsgSuffix);
}

function checkBool(value)
{
	return ((value != undefined) && (value != null) && ((value.toUpperCase() == '1') || (value.toUpperCase() == 'YES') || (eval(value) == true)));
}

function isDTSupport(dt)
{
	var result = false;
	for (var i = 0; i < vSupportedDT.length; i++)
		if (vSupportedDT[i] == dt)
		{
			result = true;
			break;
		}
	return result;
}

function ltrim(s)
{
	return (s.replace(/^[\s]*/, ''));
}

function rtrim(s)
{
	return (s.replace(/[\s]*$/, ''));
}

function trim(s)
{
	return (ltrim(rtrim(s)));
}
