function FindForm(evt, fieldName)
{
	var theForm = null;
	
	if (document.layers || !evt.srcElement)
	{
		if (evt.target)
			if (evt.target.form)
				theForm = evt.target.form;
	}
	else
	{

		var el = evt.srcElement;
		while (el != null && el.tagName.toUpperCase() != "FORM")
			el = el.parentElement;
		if (el != null)
			theForm = el;
	}
	
	if (theForm==null)
	{
		for (var i = 0, len = document.forms.length; i<len; i++)
			if (document.forms[i][fieldName])
				theForm = document.forms[i];
	}

	return theForm;
}

function GetFormStateString()
{
	var theForm = document.forms[0];
	
	if (theForm==null ||
		theForm["__FORMSTATEFIELDS"]==null || 
		theForm["__FORMSTATEFIELDS"].value.length==0)
	{
		return "";
	}
	
	var formStateFields = theForm["__FORMSTATEFIELDS"].value.split(",");

	var generatedPrefix = theForm["__GENERATED_PREFIX"] != null && theForm["__GENERATED_PREFIX"].value.length > 0
		? theForm["__GENERATED_PREFIX"].value + "_"
		: "";
	
	var formField;
	var fieldType;
	var formFieldState=new String();
	
	for (var i=0, len=formStateFields.length;i<len;++i)
	{
		formField = theForm[generatedPrefix + formStateFields[i]];
		
		if (!formField && document.getElementById)
		{
			formField = document.getElementById(generatedPrefix + formStateFields[i]);
		}
		
		if (!formField)
		{
			continue;
		}
		
		if (formField.type)
		{
			fieldType = formField.type ? formField.type : "";
		}
		else
		{
			fieldType = formField.tagName ? formField.tagName.toLowerCase() : "";
		}

		switch (fieldType)
		{
			case "select-one":
				if (formField.selectedIndex >= 0)
					formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(formField[formField.selectedIndex].value) + '&';
				break;
			case "text":
				if (formField.value.length > 0)
					formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(formField.value) + '&';
				break;
			case "hidden":
				if (formField.value.length > 0)
					formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(formField.value) + '&';
				break;
			case "radio":
				if (formField.checked)
					formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(formField.value) + '&';
				break;
			case "checkbox":
				if (formField.checked)
					formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(formField.value) + '&';
				break;
			case "table":
				// this is either a CheckBoxList or RadioButtonList
				var inputs = document.getElementsByTagName("input");
				var values = "";
				items = "";
				for (var k = 0, len2 = inputs.length; k < len2; k++)
				{
					if (inputs[k].id && 
						(inputs[k].id.indexOf(formField.id) >= 0) &&
						inputs[k].type &&
						(inputs[k].type == "radio" || inputs[k].type == "checkbox") &&
						inputs[k].checked)
					{
						var label = inputs[k].nextSibling;
						if (label)
						{
							values += label.innerHTML + ",";
						}
					}
				} 
				formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(values) + '&';
			default:
				if (formField.length)
				{
					if (formField[0].type == "radio")
					{
						for (var j = 0, len2 = formField.length; j < len; ++j)
						{
							if (formField[j].checked)
							{
								formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(formField[j].value) + '&';
								break;
							}
						}
					}
					else
					{
						for (var j = 0, len2 = formField.length; j < len; ++j)
						{
							if (formField[j].checked)
							{
								formFieldState+=URLEncode(formStateFields[i] + '=') + URLEncode(formField[j].value) + '&';
							}
						}
					}
				}
		}
	}
	return "formState" + "=" + URLEncode(formFieldState);
}

function URLEncode(s)
{
	return (s!=null) ? escape(s).replace(/\+/, "%2B") : '';
}