function IsValidLogin(szLogin)
{
	var nPos;
	var sVChars = 'abcsdefghijklmnopqrstuvwxyz1234567890-_@.';

	for (nPos=0; nPos<szLogin.length; nPos++)
		if (sVChars.indexOf(szLogin.substr(nPos, 1).toLowerCase()) < 0 )
			return false;
	return true;
}

function IsValidEmail(szLogin)
{
/*
	var email=/^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
	return(email.test(szLogin));
*/

	var nPos;
	var sVChars = 'abcsdefghijklmnopqrstuvwxyz1234567890-_@.';

	if ( (nPos = szLogin.indexOf('@')) < 0 )
		return false; //missing @
	if ( szLogin.indexOf('@', nPos + 1) >= 0 )
		return false; //more than one @
	if (szLogin.indexOf('.', nPos + 1) < 0)
		return false; //missing dot on the right of @
	if (szLogin.indexOf(' ') >= 0)
		return false; //found spaces
	for (nPos=0; nPos<szLogin.length; nPos++)
		if (sVChars.indexOf(szLogin.substr(nPos, 1).toLowerCase()) < 0 )
			return false; //found invalid characters
	
	return true;
}

function GetValidLogin(szLogin)
{
	var nPos, szVLogin="";
	var sVChars = 'abcsdefghijklmnopqrstuvwxyz1234567890-_@.';

	for(nPos=0; nPos<szLogin.length; nPos++)
	{
		if (sVChars.indexOf(szLogin.substr(nPos, 1).toLowerCase()) >= 0)
			szVLogin = szVLogin + szLogin.substr(nPos, 1);
	}
	return szVLogin;
}

function CheckMemoField(oField, nMaxLen)
{
	var sValue = oField.value;

	/* Firefox uses \n instead of \r\n */	
	sValue = sValue.replace(/(\r\n)/g, '\n');
	sValue = sValue.replace(/(\n)/g, '\r\n');
	if (sValue.length > nMaxLen)
	{
		alert("This field accepts no more than " + nMaxLen + " characters");
		oField.value = sValue.substr(0, nMaxLen);
		return false;
	}
}

function ElemValue(objElem) 
{
	if (objElem.type == "checkbox")
		return objElem.checked;
	return objElem.value;
}

function StoreFormValues(frmObj, arFormItems)
{
	for (nIndex = 0; nIndex < frmObj.elements.length; nIndex++)
	{
		if (frmObj.elements[nIndex].name)
			arFormItems[nIndex] = ElemValue(frmObj.elements[nIndex])
	}
}

//check if the <sFieldName> was changed since the form was loaded; if so it returns the previous/saved value
function IsFormFieldDirty(frmObj, arFormItems, sFieldName)
{
	var sPrevValue = null;
	
	for (nIndex = 0; nIndex < frmObj.elements.length; nIndex++)
	{
		if (frmObj.elements[nIndex].name == sFieldName)
		{
			if (ElemValue(frmObj.elements[nIndex]) != arFormItems[nIndex])
			{
				//alert(ElemValue(frmObj.elements[nIndex]) + ' <> ' + arFormItems[nIndex]);
				frmObj.elements[nIndex].style.border = '1px solid #FFA595';
				window.status = frmObj.elements[nIndex].name;
				sPrevValue = arFormItems[nIndex];
			}
		}
	}
	return sPrevValue;
}

function IsFormDirty(frmObj, arFormItems)
{
	var bDirty = false;
	
	for (nIndex = 0; nIndex < frmObj.elements.length; nIndex++)
	{
		if (frmObj.elements[nIndex].name)
			{
				if (ElemValue(frmObj.elements[nIndex]) != arFormItems[nIndex])
				{
					//alert(ElemValue(frmObj.elements[nIndex]) + ' <> ' + arFormItems[nIndex]);
					frmObj.elements[nIndex].style.border = '1px solid #FFA595';
					window.status = frmObj.elements[nIndex].name;
					bDirty = true;
				}
			}
	}
	return bDirty
}