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

<include-script resource-path="DatePicker.js"/>

<input-symbol key="name"  class="java.lang.String" required="yes"/>
<input-symbol key="formName" class="java.lang.String" required="yes"/>
<input-symbol key="monthNames"  required="yes"/>
<input-symbol key="shortMonthNames" required="yes"/>
<input-symbol key="weekDayNames" required="yes"/>
<input-symbol key="shortWeekDayNames"  required="yes"/>
<input-symbol key="firstDayInWeek" required="yes"/>
<input-symbol key="minimalDaysInFirstWeek" required="yes"/>
<input-symbol key="format" required="yes"/>
<input-symbol key="includeWeek" required="yes"/>
<input-symbol key="value" required="no"/>

<let key="calendarObject" unique="yes">
	calendar_${name}	
</let>

<let key="buttonOnclickHandler">
  javascript:${calendarObject}.toggle(document.${formName}.${name});	
</let>

<body>
var ${calendarObject};
</body>

<initialization>
	
<if expression="value == null">
${calendarObject} = new Calendar();
</if>
<if expression="value != null">
${calendarObject} = new Calendar(${value.time});
</if>
		
${calendarObject}.setMonthNames(new Array(${monthNames}));
${calendarObject}.setShortMonthNames(new Array(${shortMonthNames}));
${calendarObject}.setWeekDayNames(new Array(${weekDayNames}));
${calendarObject}.setShortWeekDayNames(new Array(${shortWeekDayNames}));
${calendarObject}.setFormat("${format}");
${calendarObject}.setFirstDayOfWeek(${firstDayInWeek});
${calendarObject}.setMinimalDaysInFirstWeek(${minimalDaysInFirstWeek});
${calendarObject}.setIncludeWeek(${includeWeek});

${calendarObject}.create();

${calendarObject}.onchange = function() {
  var field = document.${formName}.${name};
  var value = ${calendarObject}.formatDate();
  if (field.value != value) {
    field.value = value;
    if (field.onchange) {
      field.onchange();
    }
  }
}

</initialization>
</script>
