<?xml version="1.0"?>
<!-- $Id$ -->
<!DOCTYPE script PUBLIC
  "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
	"http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">

<script>
<!-- 

input symbols:

  select: The PropertySelection component
  field: The matching TextField component
  
Both are assumed to be in the same form.

-->

<input-symbol key="select" class="org.apache.tapestry.form.PropertySelection" required="yes"/>
<input-symbol key="field" class="org.apache.tapestry.form.AbstractTextField" required="yes"/>

<let key="formObject">
	document.${select.form.name}
</let>

<let key="selectObject">
	${formObject}.${select.name}
</let>

<let key="fieldObject">
	${formObject}.${field.name}
</let>

<let key="functionName" unique="yes">
	onChange_${select.name}
</let>

<body>

function ${functionName}()
{
  var select = ${selectObject};
  var field = ${fieldObject};
	
	// Index 0 is the null value option, meaning enable the text field
	
  if (select.selectedIndex == 0)
  {
    field.disabled = false;
    field.focus();
    field.select();
  }
  else
  {
	// disabled only works with IE, not NN
    field.disabled = true;
    field.blur();
    field.value = "";
  }
}

</body>

<initialization>
<!-- Navigator is not documented to respond to the onChange event, but this works,
	 so my documentation must be wrong. -->
	 
${selectObject}.onchange = ${functionName};

<!-- Disable the text field unless the select is set for index 0 (the null value). -->

if (${selectObject}.selectedIndex != 0)
  ${fieldObject}.disabled = true;

</initialization>

</script>
