


function structureManager(settings)
  {
    settings = jQuery.extend({
      
      con: new Object(),
      type: "structure",
      multiple: false,
      session_id: '',
      selectedItem: '',
      disabledItem: new Array(),
      Parent: 1,
      script: '/index.php',
      scriptManager: './scripts/components/system/pages/ajax/ajax.StructureManager.php',
      pathLoader: '/templates/admin/common/images/filemanager/spinner.gif',
      corrector: false,
      
      classLoading: 'sm_loader',
      classActive: 'sm_active',
      classSelected: 'item_selected',
      classHover: 'item_hover',
      
      labelLoading: 'Načítání ...',
      
      itemNo: 0
    
    },settings);
		
		show();
		
		function show()
      {
        settings.Id = "default_manager";
        resizeManager();
        settings.con.append('<div class="structuremanager" id="'+settings.Id+'"></div>')
        $("#"+settings.Id).append('<div id="basement"></div>');
        showLevel($("#basement"), 0, 0);
        
        $(window).resize(function(){resizeManager();});
      }
		
		/*function showPath(path)
		  {
        var level = 0;
        for (x in path)
          {
            showLevel($("#structure_sub_"+settings.itemNo).find(".item"), path[x], level);
            level++;
          }
      }*/
		
		function showLoading()
      {
        return '<div class="'+settings.classLoading+'"><img src="'+settings.pathLoader+'" /><span>' + settings.labelLoading + '</span></div>';
      }
    
    function showLevel(in_obj, parent, level)
      {
        in_obj.after("<div id=\"structure_sub_"+settings.itemNo+"\" style=\"display: none;\">"+showLoading()+"</div>");
        $("#structure_sub_"+settings.itemNo).slideDown("fast", function(){
        $.post(settings.script, {'PHPSESSID':settings.session_id, initialize_for_ajax: '1', file: settings.scriptManager,  sm_parent: parent, sm_level: level}, function(data) {
						$("#structure_sub_"+settings.itemNo).slideUp("fast", function(){
            
            $("#structure_sub_"+settings.itemNo).html(data);
            $("#structure_sub_"+settings.itemNo).slideDown("fast");
						
						
						
						$("#structure_sub_"+settings.itemNo).find(".item")
              .mouseout(function(){$(this).removeClass(settings.classHover);})
              .mouseover(function(){$(this).addClass(settings.classHover);})
              .each(function()
                {
						      $(this).attr("id", "structure_item_"+settings.itemNo);
						      $(this).find("input:checkbox").attr("name", "structure_id["+settings.itemNo+"]");
						      if($(this).find("input:checkbox").attr("value") == settings.selectedItem)
						        {
                      selectItem($(this));
                    }
						      $(this).find("input:hidden").attr("name", "structure_path["+settings.itemNo+"]");
                  var obj = $(this);
                  $(this).click(function(){if(!settings.corrector){if($(this).find("input:checkbox").attr("disabled") == false){selectItem($(this));}}else{settings.corrector = false;}});
                  $(this).find("a.bs_explode").click(function()
                    {
                      settings.corrector=true;
                      if($(this).hasClass(settings.classActive))
                        {
                          $("#"+$(this).attr("container")).slideUp("fast");
                        }
                      else
                        {
                          $(this).attr("container", "structure_sub_"+settings.itemNo);
                          showLevel(obj, obj.find("input:checkbox").attr("value"), (level+1));
                        }
                      $(this).toggleClass(settings.classActive);
                    });
                  settings.itemNo++;
					     });
				    });
				  });
				});
			}
    
    function selectItem(obj)
      {
        if(!settings.multiple)
          {
            settings.con.find("input:checkbox").attr("checked", false);
            settings.con.find(".item").removeClass(settings.classSelected);
          }
        obj.find("input:checkbox").attr("checked", true);
        obj.addClass(settings.classSelected);
        settings.selectedItem = obj.find("input:checkbox").val();
      }
    
    //**********************************************************************************************************************************
		
    function resizeManager()
      {
        settings.width = settings.con.width();
        settings.height = settings.con.height();
      }
   
    //**********************************************************************************************************************************
		    
    function showHiddenList()
      {
        settings.oHidden.html('');
        for(x in settings.selectedFile)
          {
            if(settings.selectedFile[x].length)
              {
                settings.oHidden.append('<input type="hidden" name="selected_file" value="' + settings.Root + settings.selectedFile[x] + '" />');
              }
          }
      }
  }