
var hw = {};

/**
  * @param properties - objekt, vsechno co akceptuje $.ajax() plus neco navic:
  *   app: 'string'
  *   module: 'string'
  *   object: 'string'
  *   func: 'string'
  *   taconite: boolean
  */
hw.ajax = function (properties)
{
  if (!properties.url)
  {
    properties.url = '/?mode=3'
	
		if (!properties.data) properties.data = {};
		
		if(properties.manager) {
			properties.data['manager'] = properties.manager;
			properties.data['modul']   = properties.modul;
			
			if(properties.object){
			  properties.data['object']  = properties.object;
			}
			
			properties.data['func']    = properties.func;
		}
		else if (properties.nl_action_id) {
			properties.data['nl_action_id'] = properties.nl_action_id;
		}
	}
	
  if (properties.taconite == true)
  {
    properties.data.taconite = 1;
    properties.dataType = 'xml';
  }
  else {
    properties.dataType = 'json';
  }
  
  return $.ajax(properties);
}


hw.formElementArrayAdd = function (id)
{
  opts = hw.formElementArray[id];

  html = $(opts.template
          .replace(/%i/g, opts.count)
          .replace(/%h/g, (opts.count + 1))).hide();

  if ($(opts.row_selector + ':last').after(html).size() == 0)
  {
    aux = $(opts.arr_selector).prepend(html);
    $('.k2form-element-array-adder', aux).removeClass('k2form-element-array-adder-zero')
      .html('<span class="p">' + opts.adder_plus + '</span>');
  }

  if (opts.callback_add(id, opts.count))
  {
    if (opts.validator)
    {
      if (opts.validator.rules) eval(opts.validator.rules.replace(/%i/g, opts.count));
      if (opts.validator.messages) eval(opts.validator.messages.replace(/%i/g, opts.count));
    }

    if (opts.allow_del)
    {
      html.find('.k2form-element-array-remover').click(opts.event_del);
    }

    hw.formElementArray[id].count++;
    hw.formElementArray[id].real_count++;

    html.show();
  }
  else
  {
    html.remove();
  }
};

hw.formElementArrayDelEvent = function (id, row)
{
  opts = hw.formElementArray[id];

  if (opts.callback_del(id, row))
  {
    $(opts.row_selector + (row == 'last' ? ':last' : ':eq(' + row + ')')).hide().remove();

    hw.formElementArray[id].real_count--;

    if (hw.formElementArray[id].real_count == 0)
    {
      $(opts.arr_selector + ' .k2form-element-array-adder')
        .addClass('k2form-element-array-adder-zero')
        .html('<span class="c">' + opts.adder_caption + '</span> <span class="p">' + opts.adder_plus + '</span>');
    }
  }
};

$.fn.loadSelect = function (newContent)
{
  this.empty().append(newContent);
};

hw.chainedSelectChange = function (event)
{
  var chainedSelectChangeParams = { taconite:1, data: {modul: event.data.modul, manager: event.data.manager, object: event.data.object, func: event.data.func,'sel': event.data.sel, 'id': event.data.id}, loaderShow: event.data.loaderShow};
  pattern = '^' + event.data.name + '\\[([^\\]]+)\\].*$';
  var chainedSelectChangeRE = new RegExp(pattern);

  $('#' + event.data.id + ' select, #' + event.data.id + ' input').each(function ()
  {
    chainedSelectChangeParams.data[$(this).attr('name').replace(chainedSelectChangeRE, 'chain[$1]')] = $(this).val();
  });
  
  hw.ajax(chainedSelectChangeParams);
}; 
