<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- saved from url=(0014)about:internet -->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_19) on Sun Mar 20 20:56:36 PKT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
DateField (Click Extras API - v2.3.0)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.click.extras.control.DateField class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="DateField (Click Extras API - v2.3.0)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/CreditCardField.html" title="class in org.apache.click.extras.control"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/DoubleField.html" title="class in org.apache.click.extras.control"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/click/extras/control/DateField.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="DateField.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.click.extras.control</FONT>
<BR>
Class DateField</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html" title="class or interface in org.apache.click.control">org.apache.click.control.AbstractControl</A>
      <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">org.apache.click.control.Field</A>
          <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html" title="class or interface in org.apache.click.control">org.apache.click.control.TextField</A>
              <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.click.extras.control.DateField</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html" title="class or interface in org.apache.click">Control</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html" title="class or interface in org.apache.click">Stateful</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>DateField</B><DT>extends <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html" title="class or interface in org.apache.click.control">TextField</A></DL>
</PRE>

<P>
Provides a Date Field control:   &lt;input type='text'&gt;&lt;img&gt;.

 <table class='htmlHeader' cellspacing='6'>
 <tr>
 <td style="vertical-align:baseline">Date Field</td>
 <td style="vertical-align:baseline"><input type='text' size='20' title='DateField Control' value='12 May 2009'/><img align='top' hspace='2' style='cursor:hand' src='calendar.gif' title='Calendar'/></td>
 </tr>
 </table>

 The DateField control provides a Date entry field and a popup Calendar
 &lt;div&gt;. Users can either key in a Date value or select a Date using the
 Calendar.
 <p/>
 Example:
 <pre class="prettyprint">
 public MyPage extends Page {

     public void onInit() {
         Form form = new Form("form");

         // Create new DateField with default date format: 'dd MMM yyyy'
         DateField dateField = new DateField("date");

         // You can change the format to: 'yyyy-MM-dd'
         dateField.setFormatPattern("yyyy-MM-dd");

         // Finally add dateField to form
         form.add(dateField);

         addControl(form);
     }
 } </pre>

 <a name="resources"></a>
 <h3>CSS and JavaScript resources</h3>

 The Calendar popup is provided by the <a target="_blank" class="external" href="http//www.prototypejs.org">Prototype</a>
 based <a target="_blank" class="external" href="http://code.google.com/p/calendardateselect/">CalendarDateSelect</a>
 library.
 <p/>
 <b>Please note:</b> if you don't want to have a dependency on the
 Prototype library you can use the <a class="external" target="_blank" href="http://code.google.com/p/click-calendar/">Click Calendar</a>
 CalendarField which is based on the <a class="external" target="_blank" href="http://www.dynarch.com/">Dynarch.com</a>
 library. Consider this option when using an alternative JavaScript library
 than Prototype, such as <a class="external" target="_blank" href="http://jquery.com">JQuery</a>.
 <p/>
 Alternatively you can switch off the Calendar popup by setting the
 <A HREF="../../../../../org/apache/click/extras/control/DateField.html#setShowCalendar(boolean)"><CODE>setShowCalendar(boolean)</CODE></A> to false. No JavaScript and CSS will be
 included when this option is false.
 <p/>
 The DateField control makes use of the following resources
 (which Click automatically deploys to the application directories,
 <tt>/click/calendar</tt> and <tt>/click/prototype</tt>):

 <ul>
 <li><tt>click/calendar/{style}.css</tt> - where {style} is a specific Calendar style e.g. <tt>default</tt>, <tt>red</tt>, <tt>blue</tt> etc.</li>
 <li><tt>click/prototype/prototype.js</tt></li>
 <li><tt>click/calendar/calendar_date_select.js</tt></li>
 </ul>

 The Calendar popup is created as a &lt;div&gt; element using JavaScript.
 To enable the Calendar popup, reference <span class="blue">$headElements</span>
 and <span class="blue">$jsElements</span> in the page template. For example:

 <pre class="codeHtml">
 &lt;html&gt;
 &lt;head&gt;
 <span class="blue">$headElements</span>
 &lt;/head&gt;
 &lt;body&gt;

 <span class="red">$form</span>

 <span class="blue">$jsElements</span>
 &lt;/body&gt;
 &lt;/html&gt; </pre>

 <a name="styles"></a>
 <h3>Calendar Styles</h3>

 The default Calendar style is 'default' which has a gray theme.
 The Calendar styles include:
 <ul style="margin-top: 0.5em;">
 <li>blue</li>
 <li>default</li>
 <li>plain</li>
 <li>red</li>
 <li>silver</li>
 </ul>

 <h3>Default date format pattern</h3>
 The default date format pattern is set to the message <tt>"date-format-pattern"</tt>
 defined in the resource bundle <tt>/org/apache/click/extras/control/DateField.properties</tt>.
 <p/>
 You can easily customize the default date format pattern by overriding the
 <tt>"date-format-pattern"</tt> in your <tt>click-page<lang>.properties</tt>
 files.
 <p/>
 An example src/click-page.properties file is shown below:
 <pre class="prettyprint">
 date-format-pattern=dd-MM-yyyy </pre>

 <h3>Localization</h3>
 The following localization messages are available in the resource bundle:
 <tt>/org/apache/click/extras/control/DateField.properties</tt>.
 <ul>
   <li><tt>date-title</tt> - the <tt>title</tt> attribute of the input field.</li>
   <li><tt>calendar-image-title</tt> - the <tt>title</tt> attribute of the
       calendar image icon</tt></li>
   <li><tt>calendar-weekdays-heading</tt> - a comma separated list of
       abbreviated week day names starting with Sunday. The default value is
       <tt>"S,M,T,W,T,F,S"</tt>. If not defined for a locale, the abbreviated
       week day names from the JDK is used. The names are used as the column
       heading in the popup.</li>
   <li><tt>calendar-ok</tt> - the label on the "OK" button.</li>
   <li><tt>calendar-now</tt> - the label on the "Now" button.</li>
   <li><tt>calendar-today</tt> - the label on the "Today" button.</li>
   <li><tt>calendar-clear</tt> - the label on the "Clear" button.</li>
 </ul>
 The buttons are only shown when DateField popup also contains time:
 <tt>field.setShowTime(true);</tt>
 <p/>
 See also W3C HTML reference
 <a class="external" target="_blank" title="W3C HTML 4.01 Specification"
    href="http://www.w3.org/TR/html401/interact/forms.html#h-17.4">INPUT</a>
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../../serialized-form.html#org.apache.click.extras.control.DateField">Serialized Form</A></DL>
<HR>

<P>
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#calendarPattern">calendarPattern</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The JavaScript Calendar pattern.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#date">date</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The DateField's date value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" title="class or interface in java.text">SimpleDateFormat</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#dateFormat">dateFormat</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The date format.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#formatPattern">formatPattern</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The date format pattern value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#maximumYear">maximumYear</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The maximum year of the calendar, default value is 2050.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#minimumYear">minimumYear</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The minimum year of the calendar, default value is 1930.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#showCalendar">showCalendar</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flag indicating if the Calendar popup is displayed or not,
 default value is true.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#showTime">showTime</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Calendar popup show time display bar flag.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#style">style</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Calendar CSS style, default value: <tt>default</tt>.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.click.control.TextField"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html" title="class or interface in org.apache.click.control">TextField</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#maxLength" title="class or interface in org.apache.click.control">maxLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#minLength" title="class or interface in org.apache.click.control">minLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#size" title="class or interface in org.apache.click.control">size</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#VALIDATE_TEXTFIELD_FUNCTION" title="class or interface in org.apache.click.control">VALIDATE_TEXTFIELD_FUNCTION</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.click.control.Field"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#disabled" title="class or interface in org.apache.click.control">disabled</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#error" title="class or interface in org.apache.click.control">error</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#focus" title="class or interface in org.apache.click.control">focus</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#form" title="class or interface in org.apache.click.control">form</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#help" title="class or interface in org.apache.click.control">help</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#label" title="class or interface in org.apache.click.control">label</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#labelStyle" title="class or interface in org.apache.click.control">labelStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#labelStyleClass" title="class or interface in org.apache.click.control">labelStyleClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#parentStyleClassHint" title="class or interface in org.apache.click.control">parentStyleClassHint</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#parentStyleHint" title="class or interface in org.apache.click.control">parentStyleHint</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#readonly" title="class or interface in org.apache.click.control">readonly</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#required" title="class or interface in org.apache.click.control">required</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#tabindex" title="class or interface in org.apache.click.control">tabindex</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#title" title="class or interface in org.apache.click.control">title</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#trim" title="class or interface in org.apache.click.control">trim</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#validate" title="class or interface in org.apache.click.control">validate</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#value" title="class or interface in org.apache.click.control">value</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.click.control.AbstractControl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html" title="class or interface in org.apache.click.control">AbstractControl</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#actionListener" title="class or interface in org.apache.click.control">actionListener</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#attributes" title="class or interface in org.apache.click.control">attributes</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#behaviors" title="class or interface in org.apache.click.control">behaviors</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#headElements" title="class or interface in org.apache.click.control">headElements</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#listener" title="class or interface in org.apache.click.control">listener</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#listenerMethod" title="class or interface in org.apache.click.control">listenerMethod</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#messages" title="class or interface in org.apache.click.control">messages</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#name" title="class or interface in org.apache.click.control">name</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#parent" title="class or interface in org.apache.click.control">parent</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#styles" title="class or interface in org.apache.click.control">styles</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.click.Control"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface org.apache.click.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html" title="class or interface in org.apache.click">Control</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html#CONTROL_MESSAGES" title="class or interface in org.apache.click">CONTROL_MESSAGES</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#DateField()">DateField</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a Date Field with no name defined.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#DateField(java.lang.String)">DateField</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct the Date Field with the given name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#DateField(java.lang.String, boolean)">DateField</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
          boolean&nbsp;required)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct the Date Field with the given name and required status.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#DateField(java.lang.String, java.lang.String)">DateField</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct the Date Field with the given name and label.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#DateField(java.lang.String, java.lang.String, boolean)">DateField</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label,
          boolean&nbsp;required)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct the Date Field with the given name, label and required status.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#DateField(java.lang.String, java.lang.String, int)">DateField</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label,
          int&nbsp;size)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct the Date Field with the given name, label and size.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#DateField(java.lang.String, java.lang.String, int, boolean)">DateField</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
          <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label,
          int&nbsp;size,
          boolean&nbsp;required)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct the Date Field with the given name, label, size and
 required status.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#addCalendarOptions(java.util.List)">addCalendarOptions</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html" title="class or interface in org.apache.click.element">Element</A>&gt;&nbsp;headElements)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add the calendar options as a script to the list of head elements.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#addCalenderTranslations(java.util.List)">addCalenderTranslations</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html" title="class or interface in org.apache.click.element">Element</A>&gt;&nbsp;headElements)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the names of months and weekdays as a script.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getCalendarPattern()">getCalendarPattern</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the JavaScript Calendar pattern.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getDate()">getDate</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the field Date value, or null if value was empty or a parsing
 error occurred.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" title="class or interface in java.text">SimpleDateFormat</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getDateFormat()">getDateFormat</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the SimpleDateFormat for the <A HREF="../../../../../org/apache/click/extras/control/DateField.html#formatPattern"><CODE>formatPattern</CODE></A> property.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getFirstDayOfWeek()">getFirstDayOfWeek</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the first day of the week.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getFormatPattern()">getFormatPattern</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the date format pattern.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html" title="class or interface in org.apache.click.element">Element</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getHeadElements()">getHeadElements</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the DateField HTML head imports statements for the following
 resources:

 
 <tt>click/calendar/{style}.css</tt> - where {style} is a specific
 Calendar style e.g.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getHelp()">getHelp</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the field help text.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Locale.html" title="class or interface in java.util">Locale</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getLocale()">getLocale</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the <tt>Locale</tt> that should be used in this control.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getMaximumYear()">getMaximumYear</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the maximum year of the Calendar, default value is 2050.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getMinimumYear()">getMinimumYear</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the minimum year of the Calendar, default value is 1930.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getStyle()">getStyle</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the Calendar CSS style.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Timestamp.html" title="class or interface in java.sql">Timestamp</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getTimestamp()">getTimestamp</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the Timestamp value, or null if value was empty
 or a parsing error occurred.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#getValueObject()">getValueObject</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the field Date value, or null if value was empty or a parsing
 error occurred.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#isShowCalendar()">isShowCalendar</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true if the Calendar popup will be displayed, false otherwise.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#isShowTime()">isShowTime</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true if the Calendar popup will show the time display bar.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#loadFormatPattern()">loadFormatPattern</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Load the default date format pattern.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#parseDateFormatPattern(java.lang.String)">parseDateFormatPattern</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;pattern)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the JavaScript Calendar pattern for the given Java DateFormat
 pattern.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#render(org.apache.click.util.HtmlStringBuffer)">render</A></B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/util/HtmlStringBuffer.html" title="class or interface in org.apache.click.util">HtmlStringBuffer</A>&nbsp;buffer)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Render the HTML representation of the DateField.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#renderCalendarButton(org.apache.click.util.HtmlStringBuffer)">renderCalendarButton</A></B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/util/HtmlStringBuffer.html" title="class or interface in org.apache.click.util">HtmlStringBuffer</A>&nbsp;buffer)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Render the calendar button HTML representation to the buffer.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setDate(java.util.Date)">setDate</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A>&nbsp;date)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the field Date value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setFormatPattern(java.lang.String)">setFormatPattern</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;pattern)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the SimpleDateFormat pattern.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setMaximumYear(int)">setMaximumYear</A></B>(int&nbsp;maximumYear)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the maximum year of the Calendar.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setMinimumYear(int)">setMinimumYear</A></B>(int&nbsp;minimumYear)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the minimum year of the Calendar.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setName(java.lang.String)">setName</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setShowCalendar(boolean)">setShowCalendar</A></B>(boolean&nbsp;showCalendar)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set whether the Calendar popup is displayed or not.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setShowTime(boolean)">setShowTime</A></B>(boolean&nbsp;showTime)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the Calendar popup show the time display bar flag.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setStyle(java.lang.String)">setStyle</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;style)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the Calendar CSS style.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setValue(java.lang.String)">setValue</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the DateField value.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#setValueObject(java.lang.Object)">setValueObject</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the date value of the field using the given object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/click/extras/control/DateField.html#validate()">validate</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Validate the DateField request submission.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.click.control.TextField"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html" title="class or interface in org.apache.click.control">TextField</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#getControlSizeEst()" title="class or interface in org.apache.click.control">getControlSizeEst</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#getMaxLength()" title="class or interface in org.apache.click.control">getMaxLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#getMinLength()" title="class or interface in org.apache.click.control">getMinLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#getSize()" title="class or interface in org.apache.click.control">getSize</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#getTag()" title="class or interface in org.apache.click.control">getTag</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#getType()" title="class or interface in org.apache.click.control">getType</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#getValidationJavaScript()" title="class or interface in org.apache.click.control">getValidationJavaScript</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#setMaxLength(int)" title="class or interface in org.apache.click.control">setMaxLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#setMinLength(int)" title="class or interface in org.apache.click.control">setMinLength</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#setSize(int)" title="class or interface in org.apache.click.control">setSize</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.click.control.Field"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#bindRequestValue()" title="class or interface in org.apache.click.control">bindRequestValue</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getError()" title="class or interface in org.apache.click.control">getError</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getErrorLabel()" title="class or interface in org.apache.click.control">getErrorLabel</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getFocus()" title="class or interface in org.apache.click.control">getFocus</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getFocusJavaScript()" title="class or interface in org.apache.click.control">getFocusJavaScript</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getForm()" title="class or interface in org.apache.click.control">getForm</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getId()" title="class or interface in org.apache.click.control">getId</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getLabel()" title="class or interface in org.apache.click.control">getLabel</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getLabelStyle()" title="class or interface in org.apache.click.control">getLabelStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getLabelStyleClass()" title="class or interface in org.apache.click.control">getLabelStyleClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getParentStyleClassHint()" title="class or interface in org.apache.click.control">getParentStyleClassHint</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getParentStyleHint()" title="class or interface in org.apache.click.control">getParentStyleHint</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getRequestValue()" title="class or interface in org.apache.click.control">getRequestValue</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getState()" title="class or interface in org.apache.click.control">getState</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getTabIndex()" title="class or interface in org.apache.click.control">getTabIndex</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getTextAlign()" title="class or interface in org.apache.click.control">getTextAlign</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getTitle()" title="class or interface in org.apache.click.control">getTitle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getValidate()" title="class or interface in org.apache.click.control">getValidate</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getValue()" title="class or interface in org.apache.click.control">getValue</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getWidth()" title="class or interface in org.apache.click.control">getWidth</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#isDisabled()" title="class or interface in org.apache.click.control">isDisabled</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#isHidden()" title="class or interface in org.apache.click.control">isHidden</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#isReadonly()" title="class or interface in org.apache.click.control">isReadonly</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#isRequired()" title="class or interface in org.apache.click.control">isRequired</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#isTrim()" title="class or interface in org.apache.click.control">isTrim</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#isValid()" title="class or interface in org.apache.click.control">isValid</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#onProcess()" title="class or interface in org.apache.click.control">onProcess</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#removeState(org.apache.click.Context)" title="class or interface in org.apache.click.control">removeState</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#renderTagBegin(java.lang.String, org.apache.click.util.HtmlStringBuffer)" title="class or interface in org.apache.click.control">renderTagBegin</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#restoreState(org.apache.click.Context)" title="class or interface in org.apache.click.control">restoreState</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#saveState(org.apache.click.Context)" title="class or interface in org.apache.click.control">saveState</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setDisabled(boolean)" title="class or interface in org.apache.click.control">setDisabled</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setError(java.lang.String)" title="class or interface in org.apache.click.control">setError</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setErrorMessage(java.lang.String)" title="class or interface in org.apache.click.control">setErrorMessage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setErrorMessage(java.lang.String, T)" title="class or interface in org.apache.click.control">setErrorMessage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setFocus(boolean)" title="class or interface in org.apache.click.control">setFocus</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setForm(org.apache.click.control.Form)" title="class or interface in org.apache.click.control">setForm</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setHelp(java.lang.String)" title="class or interface in org.apache.click.control">setHelp</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabel(java.lang.String)" title="class or interface in org.apache.click.control">setLabel</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyle(java.lang.String)" title="class or interface in org.apache.click.control">setLabelStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyleClass(java.lang.String)" title="class or interface in org.apache.click.control">setLabelStyleClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setListener(java.lang.Object, java.lang.String)" title="class or interface in org.apache.click.control">setListener</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParent(java.lang.Object)" title="class or interface in org.apache.click.control">setParent</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleClassHint(java.lang.String)" title="class or interface in org.apache.click.control">setParentStyleClassHint</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleHint(java.lang.String)" title="class or interface in org.apache.click.control">setParentStyleHint</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setReadonly(boolean)" title="class or interface in org.apache.click.control">setReadonly</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setRequired(boolean)" title="class or interface in org.apache.click.control">setRequired</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setState(java.lang.Object)" title="class or interface in org.apache.click.control">setState</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTabIndex(int)" title="class or interface in org.apache.click.control">setTabIndex</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTextAlign(java.lang.String)" title="class or interface in org.apache.click.control">setTextAlign</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTitle(java.lang.String)" title="class or interface in org.apache.click.control">setTitle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTrim(boolean)" title="class or interface in org.apache.click.control">setTrim</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setValidate(boolean)" title="class or interface in org.apache.click.control">setValidate</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setWidth(java.lang.String)" title="class or interface in org.apache.click.control">setWidth</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.click.control.AbstractControl"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.click.control.<A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html" title="class or interface in org.apache.click.control">AbstractControl</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#addBehavior(org.apache.click.Behavior)" title="class or interface in org.apache.click.control">addBehavior</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#addStyleClass(java.lang.String)" title="class or interface in org.apache.click.control">addStyleClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#appendAttributes(org.apache.click.util.HtmlStringBuffer)" title="class or interface in org.apache.click.control">appendAttributes</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#dispatchActionEvent()" title="class or interface in org.apache.click.control">dispatchActionEvent</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getActionListener()" title="class or interface in org.apache.click.control">getActionListener</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getAttribute(java.lang.String)" title="class or interface in org.apache.click.control">getAttribute</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getAttributes()" title="class or interface in org.apache.click.control">getAttributes</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getBehaviors()" title="class or interface in org.apache.click.control">getBehaviors</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getContext()" title="class or interface in org.apache.click.control">getContext</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getHtmlImports()" title="class or interface in org.apache.click.control">getHtmlImports</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getMessage(java.lang.String)" title="class or interface in org.apache.click.control">getMessage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getMessage(java.lang.String, java.lang.Object...)" title="class or interface in org.apache.click.control">getMessage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getMessages()" title="class or interface in org.apache.click.control">getMessages</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getName()" title="class or interface in org.apache.click.control">getName</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getPage()" title="class or interface in org.apache.click.control">getPage</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getParent()" title="class or interface in org.apache.click.control">getParent</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getStyle(java.lang.String)" title="class or interface in org.apache.click.control">getStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getStyles()" title="class or interface in org.apache.click.control">getStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#hasAttribute(java.lang.String)" title="class or interface in org.apache.click.control">hasAttribute</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#hasAttributes()" title="class or interface in org.apache.click.control">hasAttributes</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#hasBehaviors()" title="class or interface in org.apache.click.control">hasBehaviors</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#hasStyles()" title="class or interface in org.apache.click.control">hasStyles</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#isAjaxTarget(org.apache.click.Context)" title="class or interface in org.apache.click.control">isAjaxTarget</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#onDeploy(javax.servlet.ServletContext)" title="class or interface in org.apache.click.control">onDeploy</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#onDestroy()" title="class or interface in org.apache.click.control">onDestroy</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#onInit()" title="class or interface in org.apache.click.control">onInit</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#onRender()" title="class or interface in org.apache.click.control">onRender</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#removeBehavior(org.apache.click.Behavior)" title="class or interface in org.apache.click.control">removeBehavior</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#removeStyleClass(java.lang.String)" title="class or interface in org.apache.click.control">removeStyleClass</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#renderTagEnd(java.lang.String, org.apache.click.util.HtmlStringBuffer)" title="class or interface in org.apache.click.control">renderTagEnd</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#setActionListener(org.apache.click.ActionListener)" title="class or interface in org.apache.click.control">setActionListener</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#setAttribute(java.lang.String, java.lang.String)" title="class or interface in org.apache.click.control">setAttribute</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#setId(java.lang.String)" title="class or interface in org.apache.click.control">setId</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#setStyle(java.lang.String, java.lang.String)" title="class or interface in org.apache.click.control">setStyle</A>, <A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#toString()" title="class or interface in org.apache.click.control">toString</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="date"><!-- --></A><H3>
date</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A> <B>date</B></PRE>
<DL>
<DD>The DateField's date value.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="dateFormat"><!-- --></A><H3>
dateFormat</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" title="class or interface in java.text">SimpleDateFormat</A> <B>dateFormat</B></PRE>
<DL>
<DD>The date format.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="formatPattern"><!-- --></A><H3>
formatPattern</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>formatPattern</B></PRE>
<DL>
<DD>The date format pattern value.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="calendarPattern"><!-- --></A><H3>
calendarPattern</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>calendarPattern</B></PRE>
<DL>
<DD>The JavaScript Calendar pattern.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="showTime"><!-- --></A><H3>
showTime</H3>
<PRE>
protected boolean <B>showTime</B></PRE>
<DL>
<DD>The Calendar popup show time display bar flag.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="showCalendar"><!-- --></A><H3>
showCalendar</H3>
<PRE>
protected boolean <B>showCalendar</B></PRE>
<DL>
<DD>Flag indicating if the Calendar popup is displayed or not,
 default value is true.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="minimumYear"><!-- --></A><H3>
minimumYear</H3>
<PRE>
protected int <B>minimumYear</B></PRE>
<DL>
<DD>The minimum year of the calendar, default value is 1930.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="maximumYear"><!-- --></A><H3>
maximumYear</H3>
<PRE>
protected int <B>maximumYear</B></PRE>
<DL>
<DD>The maximum year of the calendar, default value is 2050.
<P>
<DL>
</DL>
</DL>
<HR>

<A NAME="style"><!-- --></A><H3>
style</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>style</B></PRE>
<DL>
<DD>The Calendar CSS style, default value: <tt>default</tt>.
 Available styles include:
 <tt>[blue, default, plain, red, silver]</tt>
<P>
<DL>
</DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="DateField(java.lang.String)"><!-- --></A><H3>
DateField</H3>
<PRE>
public <B>DateField</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</PRE>
<DL>
<DD>Construct the Date Field with the given name.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the field</DL>
</DL>
<HR>

<A NAME="DateField(java.lang.String, java.lang.String)"><!-- --></A><H3>
DateField</H3>
<PRE>
public <B>DateField</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label)</PRE>
<DL>
<DD>Construct the Date Field with the given name and label.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the field<DD><CODE>label</CODE> - the label of the field</DL>
</DL>
<HR>

<A NAME="DateField(java.lang.String, boolean)"><!-- --></A><H3>
DateField</H3>
<PRE>
public <B>DateField</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                 boolean&nbsp;required)</PRE>
<DL>
<DD>Construct the Date Field with the given name and required status.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the field<DD><CODE>required</CODE> - the field required status</DL>
</DL>
<HR>

<A NAME="DateField(java.lang.String, java.lang.String, boolean)"><!-- --></A><H3>
DateField</H3>
<PRE>
public <B>DateField</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label,
                 boolean&nbsp;required)</PRE>
<DL>
<DD>Construct the Date Field with the given name, label and required status.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the field<DD><CODE>label</CODE> - the label of the field<DD><CODE>required</CODE> - the field required status</DL>
</DL>
<HR>

<A NAME="DateField(java.lang.String, java.lang.String, int)"><!-- --></A><H3>
DateField</H3>
<PRE>
public <B>DateField</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label,
                 int&nbsp;size)</PRE>
<DL>
<DD>Construct the Date Field with the given name, label and size.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the field<DD><CODE>label</CODE> - the label of the field<DD><CODE>size</CODE> - the size of the field</DL>
</DL>
<HR>

<A NAME="DateField(java.lang.String, java.lang.String, int, boolean)"><!-- --></A><H3>
DateField</H3>
<PRE>
public <B>DateField</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name,
                 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;label,
                 int&nbsp;size,
                 boolean&nbsp;required)</PRE>
<DL>
<DD>Construct the Date Field with the given name, label, size and
 required status.
<P>
<DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - the name of the field<DD><CODE>label</CODE> - the label of the field<DD><CODE>size</CODE> - the size of the field<DD><CODE>required</CODE> - the field required status</DL>
</DL>
<HR>

<A NAME="DateField()"><!-- --></A><H3>
DateField</H3>
<PRE>
public <B>DateField</B>()</PRE>
<DL>
<DD>Create a Date Field with no name defined.
 <p/>
 <b>Please note</b> the control's name must be defined before it is valid.
<P>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="getDate()"><!-- --></A><H3>
getDate</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A> <B>getDate</B>()</PRE>
<DL>
<DD>Return the field Date value, or null if value was empty or a parsing
 error occurred.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the field Date value</DL>
</DD>
</DL>
<HR>

<A NAME="setDate(java.util.Date)"><!-- --></A><H3>
setDate</H3>
<PRE>
public void <B>setDate</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html" title="class or interface in java.util">Date</A>&nbsp;date)</PRE>
<DL>
<DD>Set the field Date value.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>date</CODE> - the Date value to set</DL>
</DD>
</DL>
<HR>

<A NAME="getDateFormat()"><!-- --></A><H3>
getDateFormat</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" title="class or interface in java.text">SimpleDateFormat</A> <B>getDateFormat</B>()</PRE>
<DL>
<DD>Return the SimpleDateFormat for the <A HREF="../../../../../org/apache/click/extras/control/DateField.html#formatPattern"><CODE>formatPattern</CODE></A> property.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the SimpleDateFormat for the formatPattern</DL>
</DD>
</DL>
<HR>

<A NAME="getFormatPattern()"><!-- --></A><H3>
getFormatPattern</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getFormatPattern</B>()</PRE>
<DL>
<DD>Return the date format pattern. If the date format pattern is not defined
 it will be loaded through the method, <A HREF="../../../../../org/apache/click/extras/control/DateField.html#loadFormatPattern()"><CODE>loadFormatPattern()</CODE></A>.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the date format pattern</DL>
</DD>
</DL>
<HR>

<A NAME="setFormatPattern(java.lang.String)"><!-- --></A><H3>
setFormatPattern</H3>
<PRE>
public void <B>setFormatPattern</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;pattern)</PRE>
<DL>
<DD>Set the SimpleDateFormat pattern.

 <h4>SimpleDateFormat Pattern Characters</h4>

  <table border="1" cellspacing="0" cellpadding="3">
  <tr bgcolor="#ccccff">
           <th align=left>Letter
           <th align=left>Date or Time Component
           <th align=left>Presentation
           <th align=left>Examples
       <tr>
           <td><code>G</code>
           <td>Era designator
           <td>Text
           <td><code>AD</code>
       <tr bgcolor="#eeeeff">
           <td><code>y</code>
           <td>Year
           <td>Year
           <td><code>1996</code>; <code>96</code>
       <tr>
           <td><code>M</code>
           <td>Month in year
           <td>Month
           <td><code>July</code>; <code>Jul</code>; <code>07</code>
       <tr bgcolor="#eeeeff">
           <td><code>w</code>
           <td>Week in year
           <td>Number
           <td><code>27</code>
       <tr>
           <td><code>W</code>
           <td>Week in month
           <td>Number
           <td><code>2</code>
       <tr bgcolor="#eeeeff">
           <td><code>D</code>
           <td>Day in year
           <td>Number
           <td><code>189</code>
       <tr>
           <td><code>d</code>
           <td>Day in month
           <td>Number
           <td><code>10</code>
       <tr bgcolor="#eeeeff">
           <td><code>F</code>
           <td>Day of week in month
           <td>Number
           <td><code>2</code>
       <tr>
           <td><code>E</code>
           <td>Day in week
           <td>Text
           <td><code>Tuesday</code>; <code>Tue</code>
       <tr bgcolor="#eeeeff">
           <td><code>a</code>
           <td>Am/pm marker
           <td>Text
           <td><code>PM</code>
       <tr>
           <td><code>H</code>
           <td>Hour in day (0-23)
           <td>Number
           <td><code>0</code>
       <tr bgcolor="#eeeeff">
           <td><code>k</code>
           <td>Hour in day (1-24)
           <td>Number
           <td><code>24</code>
       <tr>
           <td><code>K</code>
           <td>Hour in am/pm (0-11)
           <td>Number
           <td><code>0</code>
       <tr bgcolor="#eeeeff">
           <td><code>h</code>
           <td>Hour in am/pm (1-12)
           <td>Number
           <td><code>12</code>
       <tr>
           <td><code>m</code>
           <td>Minute in hour
           <td>Number
           <td><code>30</code>
       <tr bgcolor="#eeeeff">
           <td><code>s</code>
           <td>Second in minute
           <td>Number
           <td><code>55</code>
       <tr>
           <td><code>S</code>
           <td>Millisecond
           <td>Number
           <td><code>978</code>
       <tr bgcolor="#eeeeff">
           <td><code>z</code>
           <td>Time zone
           <td>General time zone
           <td><code>Pacific Standard Time</code>; <code>PST</code>; <code>GMT-08:00</code>
       <tr>
           <td><code>Z</code>
           <td>Time zone
           <td>RFC 822 time zone
           <td><code>-0800</code>
   </table>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pattern</CODE> - the SimpleDateFormat pattern</DL>
</DD>
</DL>
<HR>

<A NAME="setName(java.lang.String)"><!-- --></A><H3>
setName</H3>
<PRE>
public void <B>setName</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;name)</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html#setName(java.lang.String)" title="class or interface in org.apache.click">setName</A></CODE> in interface <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html" title="class or interface in org.apache.click">Control</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#setName(java.lang.String)" title="class or interface in org.apache.click.control">setName</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html" title="class or interface in org.apache.click.control">AbstractControl</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>name</CODE> - of the control
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/IllegalArgumentException.html" title="class or interface in java.lang">IllegalArgumentException</A></CODE> - if the name is null<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#setName(java.lang.String)" title="class or interface in org.apache.click.control"><CODE>AbstractControl.setName(String)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getTimestamp()"><!-- --></A><H3>
getTimestamp</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Timestamp.html" title="class or interface in java.sql">Timestamp</A> <B>getTimestamp</B>()</PRE>
<DL>
<DD>Return the Timestamp value, or null if value was empty
 or a parsing error occurred.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the Timestamp value</DL>
</DD>
</DL>
<HR>

<A NAME="setValue(java.lang.String)"><!-- --></A><H3>
setValue</H3>
<PRE>
public void <B>setValue</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;value)</PRE>
<DL>
<DD>Set the DateField value.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setValue(java.lang.String)" title="class or interface in org.apache.click.control">setValue</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the DateField value</DL>
</DD>
</DL>
<HR>

<A NAME="getValueObject()"><!-- --></A><H3>
getValueObject</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>getValueObject</B>()</PRE>
<DL>
<DD>Return the field Date value, or null if value was empty or a parsing
 error occurred.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getValueObject()" title="class or interface in org.apache.click.control">getValueObject</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the Date object representation of the Field value</DL>
</DD>
</DL>
<HR>

<A NAME="setValueObject(java.lang.Object)"><!-- --></A><H3>
setValueObject</H3>
<PRE>
public void <B>setValueObject</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;object)</PRE>
<DL>
<DD>Set the date value of the field using the given object.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setValueObject(java.lang.Object)" title="class or interface in org.apache.click.control">setValueObject</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - the object value to set</DL>
</DD>
</DL>
<HR>

<A NAME="getCalendarPattern()"><!-- --></A><H3>
getCalendarPattern</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getCalendarPattern</B>()</PRE>
<DL>
<DD>Return the JavaScript Calendar pattern. The Calendar pattern is defined
 when you set the <A HREF="../../../../../org/apache/click/extras/control/DateField.html#getFormatPattern()"><CODE>format pattern</CODE></A>.
 <p/>
 If the date format pattern is not defined it will be loaded through the
 method <A HREF="../../../../../org/apache/click/extras/control/DateField.html#loadFormatPattern()"><CODE>loadFormatPattern()</CODE></A>.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the JavaScript Calendar pattern</DL>
</DD>
</DL>
<HR>

<A NAME="getHeadElements()"><!-- --></A><H3>
getHeadElements</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html" title="class or interface in org.apache.click.element">Element</A>&gt; <B>getHeadElements</B>()</PRE>
<DL>
<DD>Return the DateField HTML head imports statements for the following
 resources:

 <ul>
 <li><tt>click/calendar/{style}.css</tt> - where {style} is a specific
 Calendar style e.g. <tt>default</tt>, <tt>red</tt>, <tt>blue</tt> etc.</li>
 <li><tt>click/control.js</tt></li>
 <li><tt>click/prototype/prototype.js</tt></li>
 <li><tt>click/calendar/calendar_date_select.js</tt></li>
 <li><tt>click/calendar/{lang}.js</tt> - where {lang} is the language
 specified by the browser e.g. <tt>fr</tt> (French), <tt>de</tt> (German)
 etc.</li>
 </ul>

 This method delegates to <A HREF="../../../../../org/apache/click/extras/control/DateField.html#addCalendarOptions(java.util.List)"><CODE>addCalendarOptions(java.util.List)</CODE></A> to
 include the Calendar Options script.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHeadElements()" title="class or interface in org.apache.click">getHeadElements</A></CODE> in interface <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html" title="class or interface in org.apache.click">Control</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#getHeadElements()" title="class or interface in org.apache.click.control">getHeadElements</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html" title="class or interface in org.apache.click.control">AbstractControl</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the HTML head import statements for the control<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHeadElements()" title="class or interface in org.apache.click"><CODE>Control.getHeadElements()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="isShowTime()"><!-- --></A><H3>
isShowTime</H3>
<PRE>
public boolean <B>isShowTime</B>()</PRE>
<DL>
<DD>Return true if the Calendar popup will show the time display bar.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>true if the Calendar popup will show the time display bar</DL>
</DD>
</DL>
<HR>

<A NAME="setShowTime(boolean)"><!-- --></A><H3>
setShowTime</H3>
<PRE>
public void <B>setShowTime</B>(boolean&nbsp;showTime)</PRE>
<DL>
<DD>Set the Calendar popup show the time display bar flag.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>showTime</CODE> - the flag to show the Calendar time display bar</DL>
</DD>
</DL>
<HR>

<A NAME="isShowCalendar()"><!-- --></A><H3>
isShowCalendar</H3>
<PRE>
public boolean <B>isShowCalendar</B>()</PRE>
<DL>
<DD>Return true if the Calendar popup will be displayed, false otherwise.
 Default value is true.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>true if the Calendar popup will be displayed, false otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="setShowCalendar(boolean)"><!-- --></A><H3>
setShowCalendar</H3>
<PRE>
public void <B>setShowCalendar</B>(boolean&nbsp;showCalendar)</PRE>
<DL>
<DD>Set whether the Calendar popup is displayed or not. If set to false the
 DateField will not include any JavaScript or CSS.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>showCalendar</CODE> - flag indicating whether the Calendar popup is
 displayed or not</DL>
</DD>
</DL>
<HR>

<A NAME="getMinimumYear()"><!-- --></A><H3>
getMinimumYear</H3>
<PRE>
public int <B>getMinimumYear</B>()</PRE>
<DL>
<DD>Return the minimum year of the Calendar, default value is 1930.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the minimum year of the Calendar</DL>
</DD>
</DL>
<HR>

<A NAME="setMinimumYear(int)"><!-- --></A><H3>
setMinimumYear</H3>
<PRE>
public void <B>setMinimumYear</B>(int&nbsp;minimumYear)</PRE>
<DL>
<DD>Set the minimum year of the Calendar.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>minimumYear</CODE> - the minimum year of the Calendar</DL>
</DD>
</DL>
<HR>

<A NAME="getMaximumYear()"><!-- --></A><H3>
getMaximumYear</H3>
<PRE>
public int <B>getMaximumYear</B>()</PRE>
<DL>
<DD>Return the maximum year of the Calendar, default value is 2050.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the minimum year of the Calendar</DL>
</DD>
</DL>
<HR>

<A NAME="setMaximumYear(int)"><!-- --></A><H3>
setMaximumYear</H3>
<PRE>
public void <B>setMaximumYear</B>(int&nbsp;maximumYear)</PRE>
<DL>
<DD>Set the maximum year of the Calendar.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>maximumYear</CODE> - the maximum year of the Calendar</DL>
</DD>
</DL>
<HR>

<A NAME="getStyle()"><!-- --></A><H3>
getStyle</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getStyle</B>()</PRE>
<DL>
<DD>Return the Calendar CSS style.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the Calendar CSS style</DL>
</DD>
</DL>
<HR>

<A NAME="setStyle(java.lang.String)"><!-- --></A><H3>
setStyle</H3>
<PRE>
public void <B>setStyle</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;style)</PRE>
<DL>
<DD>Set the Calendar CSS style.
 <p/>
 Available styles are: <tt>[blue, default, plain, red, silver]</tt>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>style</CODE> - the Calendar CSS style</DL>
</DD>
</DL>
<HR>

<A NAME="getHelp()"><!-- --></A><H3>
getHelp</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>getHelp</B>()</PRE>
<DL>
<DD>Return the field help text.
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getHelp()" title="class or interface in org.apache.click.control">getHelp</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html" title="class or interface in org.apache.click.control">Field</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the help text of the Field<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#getHelp()" title="class or interface in org.apache.click.control"><CODE>Field.getHelp()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="validate()"><!-- --></A><H3>
validate</H3>
<PRE>
public void <B>validate</B>()</PRE>
<DL>
<DD>Validate the DateField request submission.
 <p/>
 A field error message is displayed if a validation error occurs.
 These messages are defined in the resource bundle:
 <blockquote>
 <ul>
   <li>/click-control.properties
     <ul>
       <li>field-required-error</li>
     </ul>
   </li>
   <li>/org/apache/click/extras/control/DateField.properties
     <ul>
       <li>date-format-error</li>
     </ul>
   </li>
 </ul>
 </blockquote>
<P>
<DD><DL>
<DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#validate()" title="class or interface in org.apache.click.control">validate</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html" title="class or interface in org.apache.click.control">TextField</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="render(org.apache.click.util.HtmlStringBuffer)"><!-- --></A><H3>
render</H3>
<PRE>
public void <B>render</B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/util/HtmlStringBuffer.html" title="class or interface in org.apache.click.util">HtmlStringBuffer</A>&nbsp;buffer)</PRE>
<DL>
<DD>Render the HTML representation of the DateField. Note the button label is
 rendered as the HTML "value" attribute.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html#render(org.apache.click.util.HtmlStringBuffer)" title="class or interface in org.apache.click">render</A></CODE> in interface <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/Control.html" title="class or interface in org.apache.click">Control</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html#render(org.apache.click.util.HtmlStringBuffer)" title="class or interface in org.apache.click.control">render</A></CODE> in class <CODE><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/TextField.html" title="class or interface in org.apache.click.control">TextField</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>buffer</CODE> - the specified buffer to render the control's output to<DT><B>See Also:</B><DD><A HREF="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractControl.html#toString()" title="class or interface in org.apache.click.control"><CODE>AbstractControl.toString()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="renderCalendarButton(org.apache.click.util.HtmlStringBuffer)"><!-- --></A><H3>
renderCalendarButton</H3>
<PRE>
protected void <B>renderCalendarButton</B>(<A HREF="http://click.apache.org/docs/click-api/org/apache/click/util/HtmlStringBuffer.html" title="class or interface in org.apache.click.util">HtmlStringBuffer</A>&nbsp;buffer)</PRE>
<DL>
<DD>Render the calendar button HTML representation to the buffer.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>buffer</CODE> - the buffer to render the calendar button HTML
 representation to</DL>
</DD>
</DL>
<HR>

<A NAME="addCalendarOptions(java.util.List)"><!-- --></A><H3>
addCalendarOptions</H3>
<PRE>
protected void <B>addCalendarOptions</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html" title="class or interface in org.apache.click.element">Element</A>&gt;&nbsp;headElements)</PRE>
<DL>
<DD>Add the calendar options as a script to the list of head elements.
 <p/>
 The default option script will render as (depending on the values):

 <pre class="prettyprint">
 Click.addLoadEvent(function() {
   Event.observe('my-calendar-button', 'click', function(){
     calendar = new CalendarDateSelect($('my-calendar'), {
       minute_interval: 1,
       popup_by: 'my-calendar-button',
       embedded: false,
       time: 'mixed',
       formatValue: 'dd MMM yyyy',
       year_range: [1930,2050]});
     });
 }); </pre>

 You can override this method to set your own options using a
 <A HREF="http://click.apache.org/docs/click-api/org/apache/click/element/JsScript.html" title="class or interface in org.apache.click.element"><CODE>JsScript</CODE></A>.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>headElements</CODE> - the list of head elements to include for this control</DL>
</DD>
</DL>
<HR>

<A NAME="addCalenderTranslations(java.util.List)"><!-- --></A><H3>
addCalenderTranslations</H3>
<PRE>
protected void <B>addCalenderTranslations</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html" title="class or interface in java.util">List</A>&lt;<A HREF="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html" title="class or interface in org.apache.click.element">Element</A>&gt;&nbsp;headElements)</PRE>
<DL>
<DD>Return the names of months and weekdays as a script.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getFirstDayOfWeek()"><!-- --></A><H3>
getFirstDayOfWeek</H3>
<PRE>
protected int <B>getFirstDayOfWeek</B>()</PRE>
<DL>
<DD>Return the first day of the week. For example e.g., Sunday in US,
 Monday in France and Australia.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the first day of the week</DL>
</DD>
</DL>
<HR>

<A NAME="getLocale()"><!-- --></A><H3>
getLocale</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Locale.html" title="class or interface in java.util">Locale</A> <B>getLocale</B>()</PRE>
<DL>
<DD>Returns the <tt>Locale</tt> that should be used in this control.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>the locale that should be used in this control</DL>
</DD>
</DL>
<HR>

<A NAME="loadFormatPattern()"><!-- --></A><H3>
loadFormatPattern</H3>
<PRE>
protected void <B>loadFormatPattern</B>()</PRE>
<DL>
<DD>Load the default date format pattern. The format pattern is set to the
 message <tt>"date-format-pattern"</tt> defined in the resource bundle
 <tt>/org/apache/click/extras/control/DateField.properties</tt>.
 <p/>
 The default date format pattern for English is: <tt>"dd MMM yyyy"</tt>.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="parseDateFormatPattern(java.lang.String)"><!-- --></A><H3>
parseDateFormatPattern</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A> <B>parseDateFormatPattern</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;pattern)</PRE>
<DL>
<DD>Return the JavaScript Calendar pattern for the given Java DateFormat
 pattern.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pattern</CODE> - the Java DateFormat pattern
<DT><B>Returns:</B><DD>JavaScript Calendar pattern</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/CreditCardField.html" title="class in org.apache.click.extras.control"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/click/extras/control/DoubleField.html" title="class in org.apache.click.extras.control"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/click/extras/control/DateField.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="DateField.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>

<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:1em;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;').replace(pr_quot,'&quot;');}function PR_textToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;');}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,"'").replace(pr_quotEnt,'"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'="',PR_attribToHtml(node.value),'"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES='                ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,"'"],[PR_STRING,/^"(?:[^\\"]|\\[\s\S])*(?:"|$)/,null,'"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,"'"],[PR_ATTRIB_VALUE,/^"[^"]*(?:"|$)/,null,'"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^["\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&&currentDecoration){openDecoration=currentDecoration;html.push('<span class="',openDecoration,'">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1&nbsp;').replace(/\r\n?|\n/g,'&nbsp;<br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script></BODY>
</HTML>
