

$(document).ready(function() {
  $(".f_structure").each(function(){
    fieldType_Structure({showField: !$(this).hasClass("field_disabled"), fieldName: $(this).attr("id"),fieldType: "structure",containerId: "container_"+$(this).attr("id"),fieldItem: Structure[$(this).attr("id")]});
  });
  $(".f_relations").each(function(){
    fieldType_Structure({showField: !$(this).hasClass("field_disabled"), fieldName: $(this).attr("id"),fieldType: "relations",containerId: "container_"+$(this).attr("id"),fieldItem: Structure[$(this).attr("id")]});
  });
}); 

var Structure = new Array();
var StructureField = new Array();

function fieldType_Structure(settings)
  {
    settings = jQuery.extend({
      
      fieldName: '',
      fieldType: 'structure',
      containerId: '',
      fieldItem: new Array(),
      hiddenFields: '',
      showField: true,
      saveOneRow: false,
      
      labelManager: 'Stránky', 
      labelNoItemsSelected: 'Nejsou vybrána žádná zařazení',  
      labelRemoveThisItem: 'Odebrat toto zařazení',
      labelRemove: 'Odebrat',
      labelAddItem: 'Přidat zařazení',
      labelEditThisItem: 'Upravit toto zařazení',
      labelOpenManager: 'Otevřít průzkumník stránek'
      
    },settings);
		
		initialize();
		
    if(settings.showField){show();}
    else{remove();}
    
    function initialize()
      {
        $('#' + settings.fieldName + ' label input').unbind("click").click(function(){
          if($(this).attr("checked")){show();}
          else{remove();}
          //$('#' + settings.fieldName).toggleClass("field_disabled");
        });
        
        settings.container = $('#' + settings.containerId);
        settings.idList = settings.containerId + '_list';
        settings.idButton = settings.fieldName + '_buttonManager';
        settings.saveOneRow = (settings.fieldType == "structure") ? true : false;
      }
      
    function show()
      {
        settings.container.append('<a class="butt_text bt_structuremanager" id="' + settings.idButton + '" title="' + settings.labelOpenManager+ '" href="javascript: void(0);">'+settings.labelAddItem+'</a>');
        settings.container.append('<div class="block_structurelist" id="'+settings.idList+'"></div>');
        $('#'+settings.idButton).click(function(){showManager();});
        showList();
      }
    
    function showManager(x)
      {
        var x = x || ''; 
        var selected = x.length ? settings.fieldItem[x]["key"] : '';
        var disabled = [settings.fieldItem[x]["id"]];
        
        ShowDialogWindow({
          windowID: 'dlg_manager', 
          title: settings.labelManager, 
          width: 800, 
          height: 500, 
          callin: function(win){
          
          structureManager({
            con: win,
            selectedItem: selected,
            disabledItem: disabled,
            multiple: false,
            type: "structure"
          });
          
          }, 
          callback: function(win){
            win.find('.item').each(function(){
              
              if($(this).find('input:checkbox').attr("checked"))
                {
                  var record = new Array();
                  if(!x.length){record["id"] = 0;}
                  record["id"] = settings.fieldItem[x]["id"];
                  record["key"] = $(this).find("input[name^=structure_id]").attr("value");
                  record["label"] = $(this).find("input[name^=structure_path]").attr("value");
                  returnItem(x, record);
                }
              });
              showList(); 
          }
          });
      }
    
    
    
    function remove()
      {
        settings.container.html('');
      }
    
    function showList()
      {
        settings.hiddenFields = '';
        $("#" + settings.idList).html('');
        $("#" + settings.idList).append('\n<table cellspacing="0"></table>');
        if(arrayLength(settings.fieldItem))
          { 
            for(x in settings.fieldItem)
              {
                showRow(x);
              }
            $("#" + settings.idList).append(settings.hiddenFields);
          }
        else
          {
            $('#' + settings.idList + ' table').append('<tr><td class="td_empty_note"><strong class="empty_note">' + settings.labelNoItemsSelected + '</strong></td></tr>');
          }
      }
    
    function showRow(x)
      {
        id_blockItem = settings.fieldName + '_item_' + x;
        
        $("#" + settings.idList + ' table').append(
          '<tr id="' + id_blockItem + '">' +
          '<td class="td_structure_link"><a href="javascript:void(0);" title="' + settings.labelEditThisItem + '">' + settings.fieldItem[x]["label"] + '</a></td>' + 
          '<td class="td_structure_toolbar">' +
          (
            (settings.saveOneRow && arrayLength(settings.fieldItem)>1) || !settings.saveOneRow ?
             '<a class="butt_small bs_remove" title="' + settings.labelRemoveThisItem + '" href="javascript:void(0);">' + settings.labelRemove + '</a>'
             :
             '&nbsp;'
          ) +
          '</td>' + 
          //'<td class="td_empty_note"><strong class="empty_note">' + settings.labelNoItemsSelected + '</strong></td>' + 
          '</tr>'
        ); 
        
        $('#' + id_blockItem + ' .td_structure_link a').click(function(){showManager(x);});
        $('#' + id_blockItem + ' .bs_remove').click(function(){removeItem(x);});
            
        settings.hiddenFields += 
              '<input class="input_hidden" type="hidden" name="' + settings.fieldName + '_id['+x+']" value="' + settings.fieldItem[x]["id"] + '" />' + 
              '<input class="input_hidden" type="hidden" name="' + settings.fieldName + '_key['+x+']" value="' + settings.fieldItem[x]["key"] + '" />';
      }
      
    function returnItem(x, record)
      {
        settings.fieldItem[(x.length ? x : settings.fieldItem.length)] = record;
      }
      
    function removeItem(x)
      {
        delete settings.fieldItem[x];
        showList();
      }
    
  }