/**
 * @author: Miroslav Kvasnica - niwi - miradrda@volny.cz, niwiweb.wz.cz
 * @date: 31.5.2010
 */
var SEARCH_DISPLAY_TYPES = new Array(  // DUPLICATE WITH system/tools/Field.class.php
  new Array(new Array('string', 'html', 'text', 'email', 'image', 'file'),
    {'IS' : 'je', 'NO' : 'není', 'CT' : 'obsahuje', 'ST' : 'začíná', 'EN' : 'končí', 'RE' : 'regexp'},
    {'IS' : 'je', 'NO' : 'není'}  // when possibilities exists
    ),
  new Array(new Array('int', 'float', 'rank', 'date', 'datetime', 'time', 'timestamp', 'selector'),
    {'EQ' : '=', 'NE' : '!=', 'LT' : '<', 'LE' : '<=', 'GE' : '>=', 'GT' : '>'}),
  new Array(new Array('bool'),
    {'TR' : 'je', 'FS' : 'není'})
);


$(function()
{
  // add filter action
  $("#add-filter a").click(addFilter);
  // handle search action link
  $("#gsf-action-search").click(function(){$('#gs-search').slideDown('fast');return false});
  treatFilterElements();
  // handle mouse over lines
 $(".gs-formListTable tbody tr:has(.gs_clickableTableLink)").hover(rowMouseIn, rowMouseOut);
 $(".gs-formListTable tbody tr:has(.gs_clickableTableLink)").click(rowClicked);
 // auto focus for the first input in the insert form
 $('form.gs-insert :input:visible:first').focus();
});

var addFilter = function ()
{
  var name = $(this).attr('href').substring(1);

  // add filter box?
  if ($('#filter-box').length == 0)
  {
    // duplicate with Lister.class.php@forms-base
    var filterBox = '  <div id="filter-box">\
    <h3>Filtrování záznamů</h3>\
    <form method="GET" accept-charset="utf-8" action="'+ baseUrl +'" enctype="application/x-www-form-urlencoded">\
    <a href="#" title="Přidat další filtr" id="filters-add"><img src="/images/system/icons/add.png" title="Přidat další filtr" />Přidat další filtr</a>\
    <a href="#" title="Zrušit všechny filtry" id="filters-cancel"><img src="/images/system/icons/cancel.png" title="Zrušit všechny filtry" />Zrušit všechny filtry</a>\
    Význam spojování filtrů: <select name="andOr" id="andOr">\
      <option value="AND" selected="selected">A ZÁROVEŇ</option>\
      <option value="OR">NEBO</option>\
    </select>\
    <hr class="clear hidden" />\
    <hr class="clear hidden" id="filters-end" />\
    <input type="submit" class="button" value="Vyhledat">\
    </form>\
  </div>';
    $("#add-filter").after(filterBox);
  }

  // add search tools
  var title = $(this).text();
  var type = searchData[name][0];
  var options = {};
  var html = '<div class="gsfilter">' + title + ': <select name="gsfo-'+ name +'[]">';
  for (var i in SEARCH_DISPLAY_TYPES)
  {
    for (var j in SEARCH_DISPLAY_TYPES[i][0])
    {
      if (SEARCH_DISPLAY_TYPES[i][0][j] == type)
      {
        if (searchData[name][2] && i == 0)
          options = SEARCH_DISPLAY_TYPES[i][2]; // restrict when possibilities
        else
          options = SEARCH_DISPLAY_TYPES[i][1];
      }
    }
  }

  // add options to filter NULL and NOT NULL (if field is not required)
  if (!searchData[name][1])
  {
    options['NN'] = 'zadáno';
    options['NU'] = 'nezadáno';
  }
  for (var i in options)
    html += '<option value="' + i + '"> ' + options[i] + '</option>';
  html += '</select>';
  if (searchData[name][2])
  {
    html += '<select name="gsfv-'+ name +'[]">';
    for (var i in searchData[name][2])
      html += '<option value="' + searchData[name][2][i] + '">' + searchData[name][2][i] + '</option>';
    html += '</select>';
  }
  else
    html += '<input name="gsfv-'+ name +'[]" type="textfield" />';
  html += '<img class="remove-filter" src="/images/system/icons/cancel-gray.png" title="Odstranit tento filtr" />' + "</div>\n";

  // append code to the form
  $('#filters-end').before(html);
  actualizeAndOrs();
  treatFilterElements();

  $('#add-filter').hide();  // hide box for selecting
  
  return false;
}

/**
 * Comment
 */
function treatFilterElements ()
{
  $('#filters-add').click(function(){$('#add-filter').show()});
  $('#filters-cancel').click(function(){window.location = URL});
  $('#andOr').change(function(){actualizeAndOrs()});
  // treat deletion filter
  $('#filter-box img.remove-filter').click(function(){$(this).parent().remove();actualizeAndOrs()});
  $('#filter-box img.remove-filter').mouseover(function(){$(this).attr('src', '/images/system/icons/cancel.png')});
  $('#filter-box img.remove-filter').mouseout(function(){$(this).attr('src', '/images/system/icons/cancel-gray.png')});
}
/**
 * Comment
 */
function actualizeAndOrs ()
{
  // add AND/OR text
  var andOr = $('#andOr').val() == 'AND' ? 'A ZÁROVEŇ' : 'NEBO';
  $('#filter-box .andOr').remove();
  $('#filter-box .gsfilter:not(:last)').after('<div class="andOr">'+andOr+'</div>');
}

