public function configure()
 {
     self::$years = range(2010, 2015);
     $sfWidegetFormDate = new sfWidgetFormDate(array('format' => '%year%年%month%月%day%日', 'years' => array_combine(self::$years, self::$years), 'can_be_empty' => false));
     //$sfWidegetFormDate->render('start_date', array('year' => date('Y'), 'month' => date('n'), 'day' => date('j')));
     $sfWidegetFormDate->render('date');
     $this->setWidgets(array('from_address' => new sfWidgetFormInputText(), 'from_lat' => new sfWidgetFormInputText(), 'from_lon' => new sfWidgetFormInputText(), 'to_address' => new sfWidgetFormInputText(), 'to_lat' => new sfWidgetFormInputText(), 'to_lon' => new sfWidgetFormInputText(), 'add_event_depart_date' => $sfWidegetFormDate, 'add_event_depart_time' => new sfWidgetFormTime(), 'detail' => new sfWidgetFormTextarea()));
     $this->widgetSchema->setLabels(array('from_address' => '出発地', 'from_lat' => '出発地の緯度', 'from_lon' => '出発地の経度', 'to_address' => '目的地', 'to_lat' => '目的地の緯度', 'to_lon' => '目的地の経度', 'add_event_depart_date' => '出発日', 'add_event_depart_time' => '出発時刻', 'detail' => '詳細'));
     $this->setValidators(array('from_address' => new sfValidatorString(array(), array('required' => '出発地を入力してください。')), 'from_lat' => new sfValidatorString(array(), array('required' => '出発地の緯度を入力してください。')), 'from_lon' => new sfValidatorString(array(), array('required' => '出発地の経度を入力してください。')), 'to_address' => new sfValidatorString(array(), array('required' => '目的地を入力してください。')), 'to_lat' => new sfValidatorString(array(), array('required' => '目的地の緯度を入力してください。')), 'to_lon' => new sfValidatorString(array(), array('required' => '目的地の経度を入力してください。')), 'add_event_depart_date' => new sfValidatorDate(array(), array('required' => '日付を選択してください。')), 'add_event_depart_time' => new sfValidatorTime(array(), array('required' => '時刻を選択してください。')), 'detail' => new sfValidatorString(array(), array('required' => '詳細を入力してください。'))));
     $this->validatorSchema->setOption('allow_extra_fields', true);
 }
 public function configure()
 {
     $year = (int) date('Y');
     self::$years = range($year, $year + 1);
     $sfWidegetFormDate = new sfWidgetFormDate(array('format' => '%year%年<br>%month%月%day%日', 'years' => array_combine(self::$years, self::$years), 'can_be_empty' => false));
     $min = array('00' => '00', '15' => 15, '30' => 30, '45' => 45);
     //$sfWidegetFormDate->render('start_date', array('year' => date('Y'), 'month' => date('n'), 'day' => date('j')));
     $sfWidegetFormDate->render('date');
     $this->setWidgets(array('from_address' => new sfWidgetFormInputText(), 'from_lat' => new sfWidgetFormInputHidden(), 'from_lon' => new sfWidgetFormInputHidden(), 'to_address' => new sfWidgetFormInputText(), 'to_lat' => new sfWidgetFormInputHidden(), 'to_lon' => new sfWidgetFormInputHidden(), 'depart_date' => $sfWidegetFormDate, 'depart_time' => new sfWidgetFormTime(array('can_be_empty' => false, 'minutes' => $min)), 'category' => new sfWidgetFormChoice(array('choices' => self::$categories))));
     $this->widgetSchema->setLabels(array('from_address' => '出発地', 'from_lat' => '出発地の緯度', 'from_lon' => '出発地の経度', 'to_address' => '目的地', 'to_lat' => '目的地の緯度', 'to_lon' => '目的地の経度', 'depart_date' => '出発日', 'depart_time' => '出発時刻', 'category' => 'タクシー選択'));
     $this->setValidators(array('from_address' => new sfValidatorString(array(), array('required' => '出発地を入力してください。')), 'from_lat' => new sfValidatorString(array(), array('required' => '出発地の緯度を入力してください。')), 'from_lon' => new sfValidatorString(array(), array('required' => '出発地の経度を入力してください。')), 'to_address' => new sfValidatorString(array(), array('required' => '目的地を入力してください。')), 'to_lat' => new sfValidatorString(array(), array('required' => '目的地の緯度を入力してください。')), 'to_lon' => new sfValidatorString(array(), array('required' => '目的地の経度を入力してください。')), 'depart_date' => new sfValidatorDate(array(), array('required' => '日付を選択してください。')), 'depart_time' => new sfValidatorTime(array(), array('required' => '時刻を選択してください。')), 'category' => new sfValidatorChoice(array('choices' => array_keys(self::$categories)), array('required' => 'タクシーを選択してください。'))));
     $this->validatorSchema->setOption('allow_extra_fields', true);
 }
    /**
     * @param  string $name        The element name
     * @param  string $value       The date displayed in this widget
     * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
     * @param  array  $errors      An array of errors for the field
     *
     * @return string An HTML tag string
     *
     * @see sfWidgetForm
     */
    public function render($name, $value = null, $attributes = array(), $errors = array())
    {
        $prefix = $this->generateId($name);
        $image = '';
        if (false !== $this->getOption('image')) {
            $image = sprintf(', buttonImage: %s, buttonImageOnly: true', $this->getOption('image'));
        }
        return parent::render($name, $value, $attributes, $errors) . $this->renderTag('input', array('type' => 'hidden', 'size' => 10, 'id' => $id = $this->generateId($name) . '_jquery_control', 'disabled' => 'disabled')) . sprintf(<<<EOF
<script type="text/javascript">
  function %s_read_linked()
  {
    \$("#%s").val(\$("#%s").val() + "/" + \$("#%s").val() + "/" + \$("#%s").val());

    return {};
  }

  function %s_update_linked(date)
  {
    \$("#%s").val(date.substring(3, 5));
    \$("#%s").val(date.substring(0, 2));
    \$("#%s").val(date.substring(6, 10));
  }

  \$("#%s").datepicker(\$.extend({}, {
    minDate:    new Date(%s, 1 - 1, 1),
    maxDate:    new Date(%s, 12 - 1, 31),
    beforeShow: %s_read_linked,
    onSelect:   %s_update_linked,
    showOn:     "both"
    %s
  }, \$.datepicker.regional["%s"], %s));
</script>
EOF
, $prefix, $id, $this->generateId($name . '[day]'), $this->generateId($name . '[month]'), $this->generateId($name . '[year]'), $prefix, $this->generateId($name . '[day]'), $this->generateId($name . '[month]'), $this->generateId($name . '[year]'), $id, min($this->getOption('years')), max($this->getOption('years')), $prefix, $prefix, $image, $this->getOption('culture'), $this->getOption('config'));
    }
    /**
     * @param  string $name        The element name
     * @param  string $value       The date displayed in this widget
     * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
     * @param  array  $errors      An array of errors for the field
     *
     * @return string An HTML tag string
     *
     * @see sfWidgetForm
     */
    public function render($name, $value = null, $attributes = array(), $errors = array())
    {
        $prefix = $this->generateId($name);
        $image = '';
        if (false !== $this->getOption('image')) {
            $image = sprintf(', buttonImage: "%s", buttonImageOnly: true', $this->getOption('image'));
        }
        return parent::render($name, $value, $attributes, $errors) . $this->renderTag('input', array('type' => 'hidden', 'size' => 10, 'id' => $id = $this->generateId($name) . '_jquery_control', 'disabled' => 'disabled')) . sprintf(<<<EOF
<script type="text/javascript">
  function wfd_%s_read_linked()
  {
    jQuery("#%s").val(jQuery("#%s").val() + "-" + jQuery("#%s").val() + "-" + jQuery("#%s").val());

    return {};
  }

  function wfd_%s_update_linked(date)
  {  \t
    
    jQuery("#%s").val(parseInt(date.substring(0, 4),10));   
    jQuery("#%s").val(parseInt(date.substring(5, 7),10));
    jQuery("#%s").val(parseInt(date.substring(8),10));          \t
  }

  function wfd_%s_check_linked_days()
  {
   // var daysInMonth = 32 - new Date(jQuery("#%s").val(), jQuery("#%s").val() - 1, 32).getDate();    
   // jQuery("#%s option").attr("disabled", "");
   // jQuery("#%s option:gt(" + (%s) +")").attr("disabled", "disabled");    
    
   // if (jQuery("#%s").val() > daysInMonth)
   // {
   //   jQuery("#%s").val(daysInMonth);
   // }
  }

  jQuery(document).ready(function() {
    jQuery("#%s").datepicker(jQuery.extend({}, {
      flat: true,
      mode: 'multiple',
      minDate:    new Date(%s, 1 - 1, 1),
      maxDate:    new Date(%s, 12 - 1, 31),
      beforeShow: wfd_%s_read_linked,
      onSelect:   wfd_%s_update_linked,
      showOn:     "button"
      %s
    }, jQuery.datepicker.regional["%s"], %s, {dateFormat: "yy-mm-dd"}));
  });

  jQuery("#%s, #%s, #%s").change(wfd_%s_check_linked_days);
</script>
EOF
, $prefix, $id, $this->generateId($name . '[year]'), $this->generateId($name . '[month]'), $this->generateId($name . '[day]'), $prefix, $this->generateId($name . '[year]'), $this->generateId($name . '[month]'), $this->generateId($name . '[day]'), $prefix, $this->generateId($name . '[year]'), $this->generateId($name . '[month]'), $this->generateId($name . '[day]'), $this->generateId($name . '[day]'), $this->getOption('can_be_empty') ? 'daysInMonth' : 'daysInMonth - 1', $this->generateId($name . '[day]'), $this->generateId($name . '[day]'), $id, min($this->getOption('years')), max($this->getOption('years')), $prefix, $prefix, $image, $this->getOption('culture'), $this->getOption('config'), $this->generateId($name . '[day]'), $this->generateId($name . '[month]'), $this->generateId($name . '[year]'), $prefix);
    }
 /**
  * Constructor.
  *
  * Available options:
  *
  *  * culture:      The culture to use for internationalized strings (required)
  *  * month_format: The month format (name - default, short_name, number)
  *
  * @param array $options     An array of options
  * @param array $attributes  An array of default HTML attributes
  *
  * @see sfWidgetFormDate
  */
 protected function configure($options = array(), $attributes = array())
 {
     parent::configure($options, $attributes);
     $this->addRequiredOption('culture');
     $this->addOption('month_format');
     $culture = isset($options['culture']) ? $options['culture'] : 'en';
     $monthFormat = isset($options['month_format']) ? $options['month_format'] : 'name';
     // format
     $this->setOption('format', $this->getDateFormat($culture));
     // months
     $this->setOption('months', $this->getMonthFormat($culture, $monthFormat));
 }
Exemplo n.º 6
0
 public static function renderFormFieldByType($f, $values)
 {
     $value = isset($values[$f['id']]) ? $values[$f['id']] : '';
     $attributes = array();
     switch ($f['type']) {
         case 'file':
             $html = '';
             if ($value > 0) {
                 if ($a = Doctrine_Core::getTable('Attachments')->find($value)) {
                     $html = '<br>' . Attachments::getLink($a) . input_hidden_tag('extra_fields_files[' . $f['id'] . ']', $value) . '<br>' . input_checkbox_tag('extra_fields_files_delete[' . $f['id'] . ']', $value) . ' <label for="extra_fields_files_delete_' . $f['id'] . '">' . __('Delete') . '</label>';
                     $attributes['class'] = '';
                 }
             }
             return input_file_tag('extra_fields[' . $f['id'] . ']', '', $attributes) . $html;
             break;
         case 'number':
             return input_tag('extra_fields[' . $f['id'] . ']', $value, $attributes);
             break;
         case 'text':
         case 'url':
             $attributes['size'] = '40';
             return input_tag('extra_fields[' . $f['id'] . ']', $value, $attributes);
             break;
         case 'textarea':
             return textarea_tag('extra_fields[' . $f['id'] . ']', $value, $attributes);
             break;
         case 'textarea_wysiwyg':
             if (isset($attributes['class'])) {
                 $attributes['class'] .= ' editor';
             } else {
                 $attributes['class'] = 'editor';
             }
             return textarea_tag('extra_fields[' . $f['id'] . ']', $value, $attributes);
             break;
         case 'date':
             if (isset($attributes['class'])) {
                 $attributes['class'] .= ' datepicker';
             } else {
                 $attributes['class'] = 'datepicker';
             }
             $attributes['size'] = '11';
             return input_tag('extra_fields[' . $f['id'] . ']', $value, $attributes);
             break;
         case 'date_range':
             if (isset($attributes['class'])) {
                 $attributes['class'] .= ' datepicker';
             } else {
                 $attributes['class'] = 'datepicker';
             }
             $attributes['size'] = '11';
             if (strlen($value) > 0) {
                 $value = explode('|', $value);
             } else {
                 $value = array('', '');
             }
             return __('From') . ': ' . input_tag('extra_fields[' . $f['id'] . '][from]', $value[0], $attributes) . ' ' . __('To') . ': ' . input_tag('extra_fields[' . $f['id'] . '][to]', $value[1], $attributes);
             break;
         case 'date_time':
             if (isset($attributes['class'])) {
                 $attributes['class'] .= ' datetimepicker';
             } else {
                 $attributes['class'] = 'datetimepicker';
             }
             $attributes['size'] = '17';
             return input_tag('extra_fields[' . $f['id'] . ']', $value, $attributes);
             break;
         case 'date_dropdown':
             $years = range(date('Y') - 100, date('Y') + 20);
             $w = new sfWidgetFormDate(array('years' => array_combine($years, $years), 'format' => __('Year') . ':%year% ' . __('Month') . ':%month% ' . __('Day') . ':%day%'));
             return $w->render('extra_fields[' . $f['id'] . ']', $value, $attributes);
             break;
         case 'pull_down':
             $choices = array();
             foreach (explode("\n", $f['default_values']) as $v) {
                 $choices[trim($v)] = trim($v);
             }
             return select_tag('extra_fields[' . $f['id'] . ']', $value, array('choices' => $choices), $attributes);
             break;
         case 'checkbox':
             $choices = array();
             foreach (explode("\n", $f['default_values']) as $v) {
                 $choices[trim($v)] = trim($v);
             }
             return '<div id="checkboxesList' . $f['id'] . '" class="checkboxesList">' . select_tag('extra_fields[' . $f['id'] . ']', explode("\n", $value), array('choices' => $choices, 'expanded' => true, 'multiple' => true), $attributes) . '</div>';
             break;
         case 'radiobox':
             $choices = array();
             foreach (explode("\n", $f['default_values']) as $v) {
                 $choices[trim($v)] = trim($v);
             }
             return select_tag('extra_fields[' . $f['id'] . ']', $value, array('choices' => $choices, 'expanded' => true), $attributes);
             break;
     }
 }
Exemplo n.º 7
0
$dom = new DomDocument('1.0', 'utf-8');
$dom->validateOnParse = true;
// ->render()
$t->diag('->render()');
foreach (array($year . '-10-15' => array('year' => $year, 'month' => 10, 'day' => 15), time() => array('year' => date('Y'), 'month' => date('m'), 'day' => date('d')), 'tomorrow' => array('year' => date('Y', time() + 86400), 'month' => date('m', time() + 86400), 'day' => date('d', time() + 86400))) as $date => $values) {
    $dom->loadHTML($w->render('foo', $date));
    $css = new sfDomCssSelector($dom);
    // selected date
    $t->is($css->matchSingle('#foo_year option[value="' . $values['year'] . '"][selected="selected"]')->getValue(), $values['year'], '->render() renders a select tag for the year');
    $t->is($css->matchSingle('#foo_month option[value="' . $values['month'] . '"][selected="selected"]')->getValue(), $values['month'], '->render() renders a select tag for the month');
    $t->is($css->matchSingle('#foo_day option[value="' . $values['day'] . '"][selected="selected"]')->getValue(), $values['day'], '->render() renders a select tag for the day');
}
// pre-epoch date
$t->diag('pre-epoch date');
$years = range(1901, 1920);
$w1 = new sfWidgetFormDate(array('years' => array_combine($years, $years)));
$dom->loadHTML($w1->render('foo', '1910-01-15'));
$css = new sfDomCssSelector($dom);
$t->is($css->matchSingle('#foo_year option[value="1910"][selected="selected"]')->getValue(), 1910, '->render() renders a select tag for the year');
$t->is($css->matchSingle('#foo_month option[value="01"][selected="selected"]')->getValue(), 01, '->render() renders a select tag for the month');
$t->is($css->matchSingle('#foo_day option[value="15"][selected="selected"]')->getValue(), 15, '->render() renders a select tag for the day');
// date as an array
$t->diag('date as an array');
$values = array('year' => $year, 'month' => 10, 'day' => 15);
$dom->loadHTML($w->render('foo', $values));
$css = new sfDomCssSelector($dom);
$t->is($css->matchSingle('#foo_year option[value="' . $values['year'] . '"][selected="selected"]')->getValue(), $values['year'], '->render() renders a select tag for the year');
$t->is($css->matchSingle('#foo_month option[value="' . $values['month'] . '"][selected="selected"]')->getValue(), $values['month'], '->render() renders a select tag for the month');
$t->is($css->matchSingle('#foo_day option[value="' . $values['day'] . '"][selected="selected"]')->getValue(), $values['day'], '->render() renders a select tag for the day');
// invalid date
$t->diag('invalid date');
    /**
     * @param  string $name        The element name
     * @param  string $value       The date displayed in this widget
     * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
     * @param  array  $errors      An array of errors for the field
     *
     * @return string An HTML tag string
     *
     * @see sfWidgetFormJQueryDate
     * @see sfWidgetForm
     */
    public function render($name, $value = null, $attributes = array(), $errors = array())
    {
        $prefix = $this->generateId($name);
        $image = '';
        if (false !== $this->getOption('image')) {
            $image = sprintf(', buttonImage: "%s", buttonImageOnly: true', $this->getOption('image'));
        }
        $time_str = '';
        if ($this->getOption('with_time')) {
            $widget = new sfWidgetFormTime(array('empty_values' => array_merge(array('hour' => '', 'minute' => '', 'second' => ''), $this->getOption('empty_values')), 'with_seconds' => $this->getOption('with_seconds')));
            $time_str = $widget->render($name, $value, $attributes, $errors);
        }
        $script_to_format = '<script type="text/javascript">
                           function wfd_%1$s_read_linked()
                           {
                             var day = 1;
                             var month = 1;
                             var year = %2$s;
                             if (jQuery("#%3$s").val() != "")
                             {
                               year = jQuery("#%3$s").val();
                             }
                             else if (jQuery("#%3$s").hasClass("to_date"))
                             {
                               year = %4$s;
                             }
                         
                             if (jQuery("#%5$s").val() != "")
                             {
                               month = jQuery("#%5$s").val();
                             }
                             else if (jQuery("#%5$s").hasClass("to_date"))
                             {
                               month = 12;
                             }
                             
                             if (jQuery("#%5$s").val() == "")
                             {
                               jQuery("#%6$s").val("");
                             }
                         
                             var daysInMonth = 32 - new Date(year, month - 1, 32).getDate();
                         
                             if ((jQuery("#%3$s").val() != "") && (jQuery("#%5$s").val() != "") && (jQuery("#%6$s").val() != ""))
                             {
                               day = jQuery("#%6$s").val();
                             }
                             else if (jQuery("#%3$s").hasClass("to_date"))
                             {
                               day = daysInMonth;
                             }

                             jQuery("#%7$s").val(year + "-" + month + "-" + day);

                             if(jQuery("#%7$s").val() == "%4$s-12-31")
                             {
                               jQuery("#%7$s").val(
                               jQuery(".from_date[id$=\\"_year\\"]").val() + "-" +
                               jQuery(".from_date[id$=\\"_month\\"]").val() + "-" +
                               jQuery(".from_date[id$=\\"_day\\"]").val()
                               );
                             }                         
                             return {};
                           }
                         
                           function wfd_%1$s_update_linked(date)
                           {
                             a_date = date.split("-");
                             jQuery("#%3$s").val(parseInt(a_date[0],10));
                             jQuery("#%5$s").val(parseInt(a_date[1],10));
                             jQuery("#%6$s").val(parseInt(a_date[2],10));
                           }
                         
                           function wfd_%1$s_check_linked_days()
                           {
                             var daysInMonth = 32 - new Date(jQuery("#%3$s").val(), jQuery("#%5$s").val() - 1, 32).getDate();
                             jQuery("#%6$s option").removeAttr("disabled");
                             jQuery("#%6$s option:gt(" + (%8$s) +")").attr("disabled", "disabled");
                         
                             if (jQuery("#%6$s").val() > daysInMonth)
                             {
                               jQuery("#%6$s").val(daysInMonth);
                             }
                           }
                         
                           jQuery(document).ready(function() {
                             jQuery("#%7$s").datepicker(jQuery.extend({}, {
                               minDate:    new Date(%2$s, 1 - 1, 1),
                               maxDate:    new Date(%9$s, 12 - 1, 31),
                               yearRange:  "%2$s:%9$s",
                               beforeShow: wfd_%1$s_read_linked,
                               onSelect:   wfd_%1$s_update_linked,
                               changeMonth: true,
                               changeYear: true,
                               showButtonPanel: false,
                               beforeShow: function(input, inst) { 
                                 var newclass = "%13$s"; 
                                 if (newclass != "" && !inst.dpDiv.parent().hasClass(newclass) && jQuery("#%7$s").closest("form").hasClass(newclass)){ 
                                   inst.dpDiv.wrap("<div class=\\""+newclass+"\\"></div>") 
                                 }
                               },
                               showOn:     "button"
                               %10$s
                             }, jQuery.datepicker.regional["%11$s"], %12$s, {dateFormat: "yy-mm-dd"}));
                           });
                           jQuery("#%6$s, #%5$s, #%3$s").change(wfd_%1$s_check_linked_days);
                         </script>';
        return parent::render($name, $value, $attributes, $errors) . $this->renderTag('input', array('type' => 'hidden', 'size' => 10, 'id' => $id = $this->generateId($name) . '_jquery_control', 'disabled' => 'disabled')) . sprintf($script_to_format, $prefix, min($this->getOption('years')), $this->generateId($name . '[year]'), date('Y'), $this->generateId($name . '[month]'), $this->generateId($name . '[day]'), $id, $this->getOption('can_be_empty') ? 'daysInMonth' : 'daysInMonth - 1', max($this->getOption('years')), $image, $this->getOption('culture'), $this->getOption('config'), $this->getOption('wrap_class')) . $time_str;
    }
Exemplo n.º 9
0
    /**
     * @param  string $name        The element name
     * @param  string $value       The date displayed in this widget
     * @param  array  $attributes  An array of HTML attributes to be merged with the default HTML attributes
     * @param  array  $errors      An array of errors for the field
     *
     * @return string An HTML tag string
     *
     * @see sfWidgetForm
     */
    public function render($name, $value = null, $attributes = array(), $errors = array())
    {
        $prefix = $this->generateId($name);
        // Spike Broehm: hyphens are not valid in function names
        $prefix = str_replace('-', '_', $prefix);
        $image = '';
        if (false !== $this->getOption('image')) {
            $image = sprintf(', buttonImage: "%s", buttonImageOnly: true', $this->getOption('image'));
        }
        return '<div class="a-date-wrapper" id="' . $prefix . '-date">' . '<span style="display: none">' . parent::render($name, $value, $attributes, $errors) . '</span>' . $this->renderTag('input', array('type' => 'text', 'size' => 10, 'id' => $id = $this->generateId($name) . '_jquery_control', 'class' => isset($attributes['class']) ? $attributes['class'] : '', 'onBlur' => $prefix . "_update_linked(\$('#{$id}').val())")) . sprintf(<<<EOF
<script type="text/javascript">

function %s_read_linked()
{
  var sel = '#%s';
  var month = '#%s';
  var day = '#%s';
  var year = '#%s';
  val = \$(month).val() + "/" + \$(day).val() + "/" + \$(year).val();
  if (val === '//')
  {
    val = '';
  }
  \$(sel).val(val);
  return {};
}

function %s_update_linked(date)
{
  var components = date.match(/(\\d+)\\/(\\d+)\\/(\\d\\d\\d\\d)/);
  var month = "#%s";
  var day = "#%s";
  var year = "#%s";
  if (!components)
  {
    if (date.length)
    {
      alert("The date must be in MM/DD/YYYY format. Example: 09/29/2009. Hint: select a date from the calendar.");
      \$('#{$id}').focus();
    }
    // TODO: an option to make it mandatory
    \$(month).val('');
    \$(day).val('');
    \$(year).val('');
    return;
  }
  \$(month).val(components[1]);
  \$(day).val(components[2]);
  \$(year).val(components[3]);
  // Something we can bind to update other fields 
  \$('#{$id}').trigger('aDateUpdated');
}

\$(function()
{

  %s_read_linked();
  
  \$("#%s").datepicker(\$.extend({}, {
    dateFormat: "mm/dd/yyyy",
    minDate:    new Date(%s, 1 - 1, 1),
    maxDate:    new Date(%s, 12 - 1, 31),
    beforeShow: %s_read_linked,
    onSelect:   %s_update_linked,
    showOn:     "both",
\t\tshowAnim: \t"fadeIn"
    %s
  }, \$.datepicker.regional["%s"], %s));

\t// General useability stuff that the original date widget was lacking because it was made by robots and not actual human beings
\t\$('.ui-datepicker-trigger').attr('title','Choose A Date').hover(function(){
\t\t\$(this).fadeTo(0,.5);
\t},function(){
\t\t\$(this).fadeTo(0,1);\t
\t});
\t\t
});

</script>

EOF
, $prefix, $id, $this->generateId($name . '[month]'), $this->generateId($name . '[day]'), $this->generateId($name . '[year]'), $prefix, $this->generateId($name . '[month]'), $this->generateId($name . '[day]'), $this->generateId($name . '[year]'), $prefix, $id, min($this->getOption('years')), max($this->getOption('years')), $prefix, $prefix, $image, $this->getOption('culture'), $this->getOption('config')) . '</div>';
    }
 public function getJavaScripts()
 {
     return array_merge(parent::getJavaScripts(), array('lib.ui-core', 'lib.ui-datepicker', 'lib.ui-i18n', 'dmDateTimePickerPlugin.date-picker'));
 }