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


<script type="text/javascript">
	dojo.require("dojo.event.*");
	var containingForm = document.getElementById("myAction");
	dojo.event.connect(containingForm, "onsubmit", 
			function(evt) {
				var updownselectObj = document.getElementById("myAction_myUpDownSelectTag");
				selectAllOptionsExceptSome(updownselectObj, "key", "");
			});
</script>

<script type="text/javascript">
    function validateForm_myAction() {
        form = document.getElementById("myAction");
        clearErrorMessages(form);
        clearErrorLabels(form);
        var errors = false;
        return !errors; }
</script>

