<script type="text/javascript" src="/struts/xhtml/validation.js"></script>
<script type="text/javascript" src="/struts/utils.js"></script>
<form id="testAction" name="myForm" onsubmit="submitMe(); return validateForm_testAction();" action="/testAction.action" method="post" enctype="myEncType" title="mytitle" accept-charset="UTF-8" onreset="clearErrorMessages(this);clearErrorLabels(this);">
<table class="wwFormTable"> <tr>
    <td class="tdLabel"></td>
    <td class="tdInput">	<script type="text/javascript" src="/struts/optiontransferselect.js"></script>
<table>
<tr><td>
<select name="myUpDownSelectTag" size="5" id="testAction_myUpDownSelectTag" multiple="multiple">
</select>
<input type="hidden" id="__multiselect_testAction_myUpDownSelectTag" name="__multiselect_myUpDownSelectTag"value=""/>
</td></tr>
<tr><td>
		&nbsp;<input type="button" value="^" onclick="moveOptionUp(document.getElementById('testAction_myUpDownSelectTag'), 'key', '');" />&nbsp;
		&nbsp;<input type="button" value="v" onclick="moveOptionDown(document.getElementById('testAction_myUpDownSelectTag'), 'key', '');" />&nbsp;
		&nbsp;<input type="button" value="*" onclick="selectAllOptions(document.getElementById('testAction_myUpDownSelectTag'), 'key', '');" />&nbsp;
</td></tr>
</table>
</td>
</tr>
</table>
</form>


<script type="text/javascript">
	var containingForm = document.getElementById("testAction");
	StrutsUtils.addEventListener(containingForm, "submit",
			function(evt) {
				var updownselectObj = document.getElementById("testAction_myUpDownSelectTag");
				selectAllOptionsExceptSome(updownselectObj, "key", "");
			}, true);
</script>
