// $Id: reset.js,v 1.2.2.2 2007/08/08 06:12:37 max Exp $



function reset_form(formname, localDef) {

	var x, y, z, localDef, hash_radio;

	var form = document.forms.namedItem(formname);

	if (!form)

		return false;



	var hash_radio = [];



	for (x = 0; x < form.elements.length; x++) {

		var obj = form.elements[x];

		if ((obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA') && obj.name != '' && obj.type != 'hidden') {

			var changed = false;

			var reset_value = '';

			var found = false;

			for (y = 0; y < localDef.length && !found; y++) {

				if (obj.name == localDef[y][0] || obj.id == localDef[y][0]) {

					reset_value = localDef[y][1];

					found = true;

				}

			}



			if (!found)

				continue;



			if (obj.tagName == 'SELECT') {

				reset_value = reset_value.valueOf();

				var selectedItems = [];

				if (reset_value.length > 0)

					selectedItems = reset_value.split(',');



                for (z = 0; z < obj.options.length && !changed; z++) {

                    for (y = 0; y < selectedItems.length && !changed; y++) {

                        if ((obj.options[z].value == selectedItems[y] || obj.options[z].text == selectedItems[y]) && !obj.options[z].selected)

							changed = true;

					}

				}



				obj.selectedIndex = obj.multiple ? -1 : 0;



				for (z = 0; z < obj.options.length; z++) {

					for (y = 0; y < selectedItems.length; y++) {

						if (obj.options[z].value == selectedItems[y] || obj.options[z].text == selectedItems[y]) {

							obj.options[z].selected = true;

						}

					}

				}



			} else if (obj.tagName == 'INPUT' && obj.type == 'radio') {

				var is_found = false;

				for (z = 0; z < hash_radio.length; z++) {

					if (hash_radio[z][0] == obj.name) {

						is_found = hash_radio[z][1];

						break;

					}

				}

				if (is_found == 'F')

					continue;



				if ((obj.value == reset_value || is_found === false) && !obj.checked)

					changed = true;



				obj.checked = (obj.value == reset_value || is_found === false);

				hash_radio[hash_radio.length] = [obj.name, (obj.value == reset_value) ? "F" : ""];



			} else if (obj.tagName == 'INPUT' && obj.type == 'checkbox') {

				if (obj.checked != reset_value)

					changed = true;



				obj.checked = reset_value;

				

			} else {

				if (obj.value != reset_value)

					changed = true;



				obj.value = reset_value;

			}



			if (!obj.disabled && changed) {

				if (obj.onclick)

					obj.onclick.call(obj);

				if (obj.onchange)

					obj.onchange.call(obj);

			}

		}

	}

}

