var saRequiredFields=new Array(50), saRequiredNames=new Array(50), saRequiredTypes=new Array(50), nRequiredCount=0;

function AddRequiredField(sFieldName, sFieldTitle)
{
	saRequiredFields[nRequiredCount]=sFieldName;
	saRequiredNames[nRequiredCount]=sFieldTitle;
	saRequiredTypes[nRequiredCount]='';
	nRequiredCount++;
	return nRequiredCount-1;
}

function AddRequiredMail(sFieldName, sFieldTitle)
{
	saRequiredFields[nRequiredCount]=sFieldName;
	saRequiredNames[nRequiredCount]=sFieldTitle;
	saRequiredTypes[nRequiredCount]='mail';
	nRequiredCount++;
	return nRequiredCount-1;
}

function AddRequiredNumber(sFieldName, sFieldTitle)
{
	saRequiredFields[nRequiredCount]=sFieldName;
	saRequiredNames[nRequiredCount]=sFieldTitle;
	saRequiredTypes[nRequiredCount]='number';
	nRequiredCount++;
	return nRequiredCount-1;
}

function AddRequiredPhone(sFieldName, sFieldTitle)
{
	saRequiredFields[nRequiredCount]=sFieldName;
	saRequiredNames[nRequiredCount]=sFieldTitle;
	saRequiredTypes[nRequiredCount]='phone';
	nRequiredCount++;
	return nRequiredCount-1;
}

function AddRequiredCellular(sFieldName, sFieldTitle)
{
	saRequiredFields[nRequiredCount]=sFieldName;
	saRequiredNames[nRequiredCount]=sFieldTitle;
	saRequiredTypes[nRequiredCount]='cellular';
	nRequiredCount++;
	return nRequiredCount-1;
}

function AddRequiredZIP(sFieldName, sFieldTitle)
{
	saRequiredFields[nRequiredCount]=sFieldName;
	saRequiredNames[nRequiredCount]=sFieldTitle;
	saRequiredTypes[nRequiredCount]='zip';
	nRequiredCount++;
	return nRequiredCount-1;
}

function RemoveRequiredField(sFieldName)
{
	var j=nRequiredCount;
	for (var i=0;i<nRequiredCount;i++) if (saRequiredFields[i]==sFieldName) j=i;
	if (j<nRequiredCount)
	{
		saRequiredFields[nField]=saRequiredFields[nRequiredCount-1];
		saRequiredNames[nField]=saRequiredNames[nRequiredCount-1];
		saRequiredTypes[nField]=saRequiredTypes[nRequiredCount-1];
		nRequiredCount--;
	}
	return (j<nRequiredCount+1);
}

function DeleteRequiredField(nIndex)
{
	if (nIndex>=nRequiredCount) return false;
	saRequiredFields[nField]=saRequiredFields[nRequiredCount-1];
	saRequiredNames[nField]=saRequiredNames[nRequiredCount-1];
	saRequiredTypes[nField]=saRequiredTypes[nRequiredCount-1];
	nRequiredCount--;
	return true;
}

function ClearAllRequiredFields()
{
	nRequiredCount=0;
	return true;
}

function ValidatePassword(frmForm, sFieldName1, sFieldName2, sMessage)
{
	if (frmForm.elements[sFieldName1].value!=frmForm.elements[sFieldName2].value)
	{
		frmForm.elements[sFieldName2].focus();
		alert(sMessage);
		return false;
	}
	return true;
}

function ValidateForm(sDataMissing)
{
	return CheckForm(event.srcElement, sDataMissing);
}

function CheckForm(frmForm, sDataMissing)
{
	var sMissing=sDataMissing;
	if (sMissing=='') sMissing='Data missing in field'
	for (var i=0;i<nRequiredCount;i++)
	{
		if (frmForm.elements[saRequiredFields[i]].value=='')
		{
			alert(sMissing+' \''+saRequiredNames[i]+'\'');
			frmForm.elements[saRequiredFields[i]].focus();
			return false;
		}
		if (saRequiredTypes[i]=='number')
			{
				if (frmForm.elements[saRequiredFields[i]].value.NaN)
				{
					alert('Not a number in \''+saRequiredNames[i]+'\': '+frmForm.elements[saRequiredFields[i]].value);
					frmForm.elements[saRequiredFields[i]].focus();
					return false;
				}
			}
		if (saRequiredTypes[i]=='phone')
		{
			if ((frmForm.elements[saRequiredFields[i]].value.length!=7)||(isNaN(frmForm.elements[saRequiredFields[i]].value)))
			{
				alert('Invalid phone number - must consist of seven digits');
				frmForm.elements[saRequiredFields[i]].focus();
				return false;
			}
		}
		if (saRequiredTypes[i]=='cellular')
		{
			if ((frmForm.elements[saRequiredFields[i]].value.length!=6)||(isNaN(frmForm.elements[saRequiredFields[i]].value)))
			{
				alert('Invalid cellular phone number - must consist of six digits');
				frmForm.elements[saRequiredFields[i]].focus();
				return false;
			}
		}
		if (saRequiredTypes[i]=='zip')
		{
			if ((frmForm.elements[saRequiredFields[i]].value.length!=5)||(isNaN(frmForm.elements[saRequiredFields[i]].value)))
			{
				alert('Invalid Zip code - must consist of five digits');
				frmForm.elements[saRequiredFields[i]].focus();
				return false;
			}
		}
		if (saRequiredTypes[i]=='mail')
		{
			if ((frmForm.elements[saRequiredFields[i]].value.lastIndexOf('@')<1)||(frmForm.elements[saRequiredFields[i]].value.lastIndexOf('.')<1)||(frmForm.elements[saRequiredFields[i]].value.lastIndexOf('.')<2+frmForm.elements[saRequiredFields[i]].value.lastIndexOf('@'))||(frmForm.elements[saRequiredFields[i]].value.lastIndexOf('.')>frmForm.elements[saRequiredFields[i]].value.length-3)||(frmForm.elements[saRequiredFields[i]].value.lastIndexOf('.')<frmForm.elements[saRequiredFields[i]].value.length-5)||(frmForm.elements[saRequiredFields[i]].value.lastIndexOf(' ')!=-1)||(frmForm.elements[saRequiredFields[i]].value.lastIndexOf('.@')!=-1)||(frmForm.elements[saRequiredFields[i]].value.lastIndexOf('@.')!=-1))
			{
				alert('Invalid eMail address');
				frmForm.elements[saRequiredFields[i]].focus();
				return false;
			}
		}
	}
	return true;
}
