function RequiredFieldToggler( fm, fds, stars ) {
	var m_this   = this;
	var m_form   = fm;
	var m_fields = fds;
	var m_stars  = stars;
	var m_dud    = 0;
	var m_formelem;
	var m_fieldelems = new Array();
	var m_starelems  = new Array();

	m_this.Toggle = function() {
		if( m_dud ) { return; }

		var gotText = 0;
		var i;

		for( i=0; i<m_fieldelems.length; i++ ) {
			var cmp;
			var equ = 'cmp = (m_fieldelems[i].elem.'+m_fieldelems[i].prop+" != '')";
			eval( equ );
			if( cmp ) {
				gotText = 1;
				break;
			}
		}

		if( gotText ) {
			m_this.SetAsterisksTo('*');
		} else {
			m_this.SetAsterisksTo('');
		}
	}

	m_this.SetAsterisksTo = function( str ) {
		var i;
		var star;

		if( m_dud ) { return; }

		for( i=0; i<m_starelems.length; i++ ) {
			m_starelems[i].innerHTML = str;
		}
	}

	// Constructor
	m_formelem = document.forms[m_form];
	if( ! m_formelem ) { m_dud = 1; return; }

	var i;
	for( i in m_fields ) {
		var fieldelem = m_formelem.elements[i];
		if( fieldelem ) {
			var fieldobj = new Object();
			fieldobj.elem = fieldelem;
			fieldobj.prop = m_fields[i];
			m_fieldelems.push( fieldobj );
		}
	}

	if( m_fieldelems.length < 1 ) { m_dud = 1; return; }

	for( i=0; i<m_stars.length; i++ ) {
		var starelem = document.getElementById(m_stars[i]);
		if( starelem ) { m_starelems.push( starelem ) }
	}

	if( m_starelems.length < 1 ) { m_dud = 1; return; }
}

function ResetForm( fm ) {
	var m_this        = this;
	var m_form        = fm;
	var m_textboxes   = new Array();
	var m_checkboxes  = new Array();
	var m_optionlists = new Array();
	var m_dud         = 0;
	var m_formelem;

	m_this.Reset = function() {
		var i, j;

		if( m_dud ) { document.forms[0].reset(); return; }

		for( i=0; i<m_textboxes.length; i++ ) {
			m_textboxes[i].value = '';
		}

		for( i=0; i<m_checkboxes.length; i++ ) {
			if( m_checkboxes[i].length ) {
				var thisCheckbox = m_checkboxes[i];
				for( j=0; j<thisCheckbox.length; j++ ) {
					thisCheckbox[j].checked = false;
				}
			} else {
				m_checkboxes[i].checked = false;
			}
		}

		for( i=0; i<m_optionlists.length; i++ ) {
			m_optionlists[i].selectedIndex = 0;
		}
	}

	m_formelem = document.forms[m_form];
	if( ! m_formelem ) { m_dud = 1; return; }

	var i;
	var str = '';
	for( i=0; i<m_formelem.elements.length; i++ ) {
		str += "(" + i + ") " + m_formelem[i].name + " is a " + m_formelem[i].type + " ";
		if( m_formelem[i].type == "checkbox" || m_formelem[i].type == "radio" ) {
			str += "saved as checkbox\n";
			m_checkboxes.push( m_formelem[i] );

		} else if( m_formelem[i] && typeof m_formelem[i].length != "undefined" && typeof m_formelem[i][0].checked != "undefined" ) {
			str += "saved as checkbox list\n";
			m_checkboxes.push( m_formelem[i] );

		} else if( m_formelem[i] && typeof m_formelem[i].options != "undefined" ) {
			str += "saved as optionlist\n";
			m_optionlists.push( m_formelem[i] );

		} else if( m_formelem[i] && typeof m_formelem[i].value != "undefined" ) {
			str += "saved as textbox\n";
			m_textboxes.push( m_formelem[i] );

		} else {
			str += "not saved\n";
		}
	}
	// alert(str);
}

