[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
  #
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
  #%]
  
[% SWITCH field.type %]
  [% CASE [ constants.FIELD_TYPE_FREETEXT,
            constants.FIELD_TYPE_TEXTAREA, 
            constants.FIELD_TYPE_UNKNOWN ] %]
    [% INCLUDE "bug/field-label.html.tmpl"
      field = field
      tag_name = "span"
      editable = 1
    %]
    [% INCLUDE "search/type-select.html.tmpl"
       name = field.name _ "_type",
       types = types, 
       selected = type_selected
    %]    
    <input name="[% field.name FILTER html %]" 
           id="[% field.name FILTER html %]" size="40"
           [% IF onchange %] onchange="[% onchange FILTER html %]"[% END %]
           value="[% value FILTER html %]">              
  [% CASE constants.FIELD_TYPE_KEYWORDS %]
    [% INCLUDE "bug/field-label.html.tmpl"
      field = field
      tag_name = "span"
      editable = 1
    %]
    [% INCLUDE "search/type-select.html.tmpl"
       name = field.name _ "_type",
       types = types, 
       selected = type_selected
    %]
    <div id="[% field.name FILTER html %]_container">
       <input name="[% field.name FILTER html %]" 
              id="[% field.name FILTER html %]" size="40"
              [% IF onchange %] onchange="[% onchange FILTER html %]"[% END %]
              value="[% value FILTER html %]">
       <div id="[% field.name FILTER html %]_autocomplete"></div>
    </div>
    <script type="text/javascript" defer="defer">
      if (typeof YAHOO.bugzilla.field_array === "undefined")
        YAHOO.bugzilla.field_array = [];
      YAHOO.bugzilla.field_array["[% field.name FILTER js %]"] = [
        [%- FOREACH val = possible_values %]
          [%-# %]"[% val FILTER js %]"
          [%- "," IF NOT loop.last %][% END %]];
      YAHOO.bugzilla.fieldAutocomplete.init('[% field.name FILTER js %]',
                                            '[% field.name FILTER js %]_autocomplete');
    </script>
  [% CASE constants.FIELD_TYPE_DATETIME %]
    [% INCLUDE "bug/field-label.html.tmpl"
      field = field
      tag_name = "span"
      editable = 1
    %]
    from <input name="[% field.name FILTER html %]from" 
                id="[% field.name FILTER html %]" 
                size="10" maxlength="10"
                value="[% value.0 FILTER html %]" 
                onchange="updateCalendarFromField(this);[% onchange FILTER html %]">
         <button type="button" class="calendar_button"
                        id="button_calendar_[% field.name FILTER html %]"
                        onclick="showCalendar('[% field.name FILTER js %]')">
           <span>Calendar</span>
         </button>
         <span id="con_calendar_[% field.name FILTER html %]"></span>               
    to <input name="[% field.name FILTER html %]to" 
              id="[% field.name FILTER html %]to" size="10" maxlength="10"
              value="[% value.1 FILTER html %]" 
              onchange="updateCalendarFromField(this);[% onchange FILTER html %]">
       <button type="button" class="calendar_button"
                      id="button_calendar_[% field.name FILTER html %]to"
                      onclick="showCalendar('[% field.name FILTER js %]to')">
         <span>Calendar</span>
       </button>
    <small>(YYYY-MM-DD or relative dates)</small>
    
    <span id="con_calendar_[% field.name FILTER html %]to"></span>
    <script type="text/javascript">
      <!--
        [%+ PROCESS "global/calendar.js.tmpl" id = field.name %]
        [% PROCESS "global/calendar.js.tmpl" id = field.name _ 'to' %]
      //--></script>
  [% CASE [ constants.FIELD_TYPE_SINGLE_SELECT, 
            constants.FIELD_TYPE_MULTI_SELECT ] %]
    <div id="container_[% field.name FILTER html %]" class="search_field_grid">      
      [% INCLUDE "bug/field-label.html.tmpl"
        field = field
        editable = 1
        tag_name = "span"
      %]
      <select name="[% field.name FILTER html%]" 
              id="[% field.name FILTER html %]" 
        [% IF onchange %] onchange="[% onchange FILTER html %]"[% END %]
        multiple="multiple" size="7">
        [% legal_values = ${field.name} %]
        [% IF field.name == "component" %]
          [% legal_values = ${"component_"} %]
        [% END %]
        [% FOREACH current_value = legal_values %]
          [% SET v = current_value.name OR '---' -%]
          [% SET display = display_value(field.name, current_value.name) %]
          <option value="[% v FILTER html %]"
            id="v[% current_value.id FILTER html %]_[% field.name FILTER html %]"
            [% ' selected="selected"' IF value.contains( v ) %]>
            [%~ display FILTER html ~%]
          </option>
        [% END %]
      </select>
    </div>

    [% IF value_controllers.${field.name}.defined %]
      <script type="text/javascript"><!--
        [%+ FILTER collapse %]
          [% FOREACH accessor = value_controllers.${field.name}.keys %]
            [% PROCESS controller_js %]
          [% END %]
        [%~ END ~%]
      // --></script>
    [% END %]
    [% IF duplicates.${field.name}.keys.size %]
      [% SET field_dups = duplicates.${field.name} %]
      [% SET dup_counts = duplicate_count.${field.name} %]
      <script type="text/javascript">
       [%+ FILTER collapse %]
          bz_option_duplicates['[% field.name FILTER js %]'] = {
            [% FOREACH dup = field_dups.keys %]
              [% dup FILTER js %]:[% field_dups.$dup.id FILTER js %]
              [%~ ',' UNLESS loop.last %]
            [% END ~%]
          };
          bz_option_duplicate_count['[% field.name FILTER js %]'] = {
            [% FOREACH dup_target = dup_counts.keys %]
              [% dup_target FILTER js %]:[% dup_counts.$dup_target FILTER js %]
              [%~ ',' UNLESS loop.last %]
            [% END %]
          };
        [% END %]
      </script>
    [% END %]

  [% END %]
[%# END OF SWITCH %]

[% BLOCK controller_js %]
  [%# If there are selected values already, we need to fire the
    # "change" event once the page has loaded, so we can set all
    # the values in all the other <select>s properly.
    #%]
  YAHOO.util.Event.onDOMReady(function() {
      var field = document.getElementById('[% field.name FILTER js %]');
      if (field.selectedIndex != -1) bz_fireEvent(field, 'change');
  });

  [% SET sub_field = value_controllers.${field.name}.$accessor %]
  [% SET prod_per_class = {} %]
  [% IF field.name == "classification" %]
    [% FOREACH p = product %]
      [% prod_per_class.${p.classification_id}.${p.id} = 1 %]
    [% END %]
  [% END %]

  [% FOREACH legal_value = legal_values %]
    [% SET controlled_ids = [] %]
    [% IF field.name == "classification" %]
      [% controlled_ids = prod_per_class.${legal_value.id}.keys %]
    [% ELSE %]
      [% FOREACH sub_value = legal_value.$accessor %]
        [% controlled_ids.push(sub_value.id) %]
      [% END %]
    [% END %]
    [% NEXT IF !controlled_ids.size %]
      showValueWhen('[% sub_field.name FILTER js %]',
                    [[% controlled_ids.join(',') FILTER js %]],
                    '[% field.name FILTER js %]',
                    [% legal_value.id FILTER js %],
                    true);
  [% END %]
[% END %]
