var m_oSavedForm = new Object;
var m_FLD_TEXT = 0;
var m_FLD_SELECT = 1;
var m_FLD_CHECK = 2;

/*------------------------------------------------------------------------
	Save form state to object
	Date:		Name:	Description:
	07/23/02	JEA		Creation
------------------------------------------------------------------------*/
function SaveFormState(r_oForm) {
	m_oSavedForm[r_oForm.name] = new Array(r_oForm.length);
	var oThisForm = m_oSavedForm[r_oForm.name];
	for (var x = 0; x < r_oForm.length; x++) {
		switch (r_oForm.elements[x].type) {
			case "text": oThisForm[x] = new SavedField(m_FLD_TEXT, r_oForm.elements[x].value); break;
			case "textarea": oThisForm[x] = new SavedField(m_FLD_TEXT, r_oForm.elements[x].value); break;
			case "hidden": oThisForm[x] = new SavedField(m_FLD_TEXT, r_oForm.elements[x].value); break;
			case "checkbox": oThisForm[x] = new SavedField(m_FLD_CHECK, r_oForm.elements[x].checked); break;
			case "radio": oThisForm[x] = new SavedField(m_FLD_CHECK, r_oForm.elements[x].checked); break;
			case "select-one": oThisForm[x] = new SavedField(m_FLD_SELECT, r_oForm.elements[x].selectedIndex); break;
		}
	}
}

/*------------------------------------------------------------------------
	Load form state from object
	Date:		Name:	Description:
	07/23/02	JEA		Creation
	08/09/02	JEA		Handle possibility of field types changing
------------------------------------------------------------------------*/
function LoadFormState(r_oForm) {
	var oThisForm = m_oSavedForm[r_oForm.name];
	var oThisField;
	var sType;
	for (var x = 0; x < oThisForm.length; x++) {
		oThisField = r_oForm.elements[x];
		sType = oThisField.type;
		switch (oThisForm[x].type) {
			case 0:
				if (sType == "text" || sType == "textarea" || sType == "hidden") {
					oThisField.value = oThisForm[x].value;
				}
				break;
			case 1:
				if (sType == "select-one") {
					oThisField.selectedIndex = oThisForm[x].value;
				}
				break;
			case 2:
				if (sType == "radio" || sType == "checkbox") { 
					oThisField.checked = oThisForm[x].value;
				}
				break;
		}
	}
	delete m_oSavedForm[r_oForm.name];
}

/*------------------------------------------------------------------------
	Form and field object constructors
	Date:		Name:	Description:
	07/23/02	JEA		Creation
------------------------------------------------------------------------*/
function SavedField(v_lType, v_sValue) { this.type = v_lType; this.value = v_sValue; }