function showErr(frmID, fldID, isGood, classWhenBad)
{
	var obj = findObj('lbl_' + frmID + '_' + fldID);
	if (obj)
		obj.className = isGood ? '' : classWhenBad;
	return isGood;
}

function trim(txt)
{
	return txt.replace(/^\s+|\s+$/g, '');
}

function hasData(val)
{
	return (trim(val).length > 0);
}

function maxLen(txt,max)
{
	return (trim(txt).length <= max);
}

function isEmail(txt)
{
	txt = txt.replace('+','.');
	var re = /^[A-Za-z0-9_\.\-]+@([A-Za-z0-9]([A-Za-z0-9\-]*[A-Za-z0-9])?\.)+[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]$/;
	return re.test(txt);
}

function isNumber(txt,allowNeg,allowDec)
{
	var ex = '^';
	if (allowNeg) ex += '-?';
	ex += '(0|[1-9][0-9]*)';
	if (allowDec)
		ex += '(\.[0-9]+)?';
	ex += '$';
	var re = new RegExp(ex);
	return re.test(txt);
}

function checkBoxes(name,count,extraVal,extraReq)
{
	var selCount = 0, showExtra = false;
	for (var fldNum = 1; fldNum <= count; ++fldNum) {
		var fld = findObj(name + '_' + fldNum);
		if (fld) {
			if (fld.checked)
			{
				++selCount;
				if (extraVal != null && fld.value == extraVal)
					showExtra = true;
			}
		}
	}
	if (extraVal != null) {
		var extra = findObj(name + '_disp');
		if (extra != null) {
			if (showExtra) {
				extra.style.display = '';
				var extraFld = findObj(name + '_other');
				if (extraFld && extraReq && extraFld.value == '') return -1;
			} else {
				extra.style.display = 'none';
				var extraFld = findObj(name + '_other');
				if (extraFld != null) extraFld.value = '';
			}
		}
	}
	return selCount;
}

function listItems(name,extraVal,extraReq)
{
	var fld = findObj(name + '_list');
	if (!fld) return 0;
	
	var selCount = 0, showExtra = false;
	for (var i = 0; i < fld.options.length; ++i) {
		var opt = fld.options[i];
		if (opt.selected) {
			++selCount;
			if (extraVal != null && opt.value == extraVal)
				showExtra = true;
		}
	}

	if (extraVal != null) {
		var extra = findObj(name + '_disp');
		if (extra != null) {
			if (showExtra) {
				extra.style.display = '';
				var extraFld = findObj(name + '_other');
				if (extraFld && extraReq && extraFld.value == '') return -1;
			} else {
				extra.style.display = 'none';
				var extraFld = findObj(name + '_other');
				if (extraFld != null) extraFld.value = '';
			}
		}
	}
	return selCount;
}

function swapShow(toHide, toShow)
{
	var obj = findObj(toHide);
	if (obj != null)
		obj.style.display = 'none';
	
	obj = findObj(toShow);
	if (obj != null)
		obj.style.display = '';
}
