function _pf_ValidateForm(Form)
{
	var Statement = "";
	var UserSubmitFunc = "";
	var ValidateFunc = "";
	var RetVal = true;
	var Item = null;
	var i = 0;
	var Required = false;

	RetVal = _pf_CallUserSubmit(Form);	

	i = 0;
	while (RetVal == true && i < Form.elements.length)
	{
		Item = Form.elements[i];

		RetVal = 
			_pf_CheckRequired(Item) &&
			_pf_ValidateConfirm(Item) &&
			_pf_ValidateField(Item);

		i++;
	}
	return RetVal;
}

//---------------------------------------------------------------------------

function _pf_ValidateConfirm(Item)
{
	var RetVal = true;
	var ConfirmAttr = "";
	var ConfirmId = "";
	var ConfirmItem = null;
	var Label = "";

	try
	{
		ConfirmId = Item.attributes.getNamedItem("confirm").value;
		ConfirmItem = document.getElementById(ConfirmId);
		if (Item.value != ConfirmItem.value)
		{
			Label = _pf_GetFieldLabel(Item);

			alert(Label + " and confirmation must match.");
			RetVal = false;
		}

	}
	catch(err)
	{
	}
	return RetVal;
}

//---------------------------------------------------------------------------

function _pf_ValidateField(Item)
{
	var RetVal = true;
	var ValidateFunc = "";
	var Statement = "";

	try
	{
		ValidateFunc = Item.attributes.getNamedItem("validate").value;
	}
	catch(err) { }
	if (ValidateFunc > "")
	{
		if (RetVal == true)
		{
			Statement = ValidateFunc + "(Item)";
			RetVal = eval(Statement);
		}
	}
	return RetVal;
}

//---------------------------------------------------------------------------

function _pf_CallUserSubmit(Form)
{
	var RetVal = true;
	var UserSubmitFunc = "";

	try
	{
		UserSubmitFunc = Form.attributes.getNamedItem("usersubmit").value;
	}
	catch(err)
	{
	}
	if (UserSubmitFunc > "")
	{
		Statement = UserSubmitFunc + "(Form)";
		RetVal = eval(Statement);
	}
	return RetVal;
}

//---------------------------------------------------------------------------

function _pf_GetFieldLabel(Item)
{
	var Label = "";
	var LabelId = "";
	var LabelItem = null;

	try
	{
		LabelId = Item.attributes.getNamedItem("label").value;
		LabelItem = document.getElementById(LabelId);
		Label = LabelItem.innerHTML;
	}
	catch (err)
	{
	}
	return Label;
}

//---------------------------------------------------------------------------

function _pf_GetSelectValue(Item)
{
	var i;
	var Value = "";
	var Option;

	for (i = 0; i < Item.options.length; i++)
	{
		if (Item.options[i].selected)
		{
			Value = Item.options[i].value;
		}
	}
	return Value;
}

//---------------------------------------------------------------------------

function _pf_GetItemValue(Item)
{
	var Value = "";

	if (Item.tagName == "SELECT")
	{
		Value = _pf_GetSelectValue(Item);
	}
	else
	{
		Value = Item.value;
	}
	return Value;
}

//---------------------------------------------------------------------------

function _pf_CheckRequired(Item)
{
	var RetVal = true;
	var Label = "";
	var Required = "";

	try
	{
		Required = Item.attributes.getNamedItem("required").value;
		Label = _pf_GetFieldLabel(Item);
		if (Item.value == "")
		{
			alert(Label + " is empty.");
			Item.focus();
			RetVal = false;
		}

	}
	catch(err)
	{
	}
	return RetVal;
}

//---------------------------------------------------------------------------

function _pf_SetFieldFocus(ItemId)
{
	var Field = null;

	try
	{
		Field = document.getElementById(ItemId);	
		Field.focus();
	}
	catch (err)
	{
	}
}
