var newsManager = false;
var jobManager = false;

function ItemManager(config)
{
  var obj = this;

  obj.isLocked = false;

  obj.config      = {
    itemsCount:   1,
    itemsMin:     1,
    itemsMax:     6
  };

  //объединим конфиги
  for(var i in config) {
    obj.config[i] = config[i];
  }
  /////////////////////
  obj.itemsCount = config.itemsCount;
  
  //добавим кнопкам функционал для активации/деактивации
  for(var i in config.$buttons) {
    $.extend(config.$buttons[i], {
      isLocked: false,
      lock:     function() {
        this.isLocked = true;
        $(this).addClass('inactive');
      },
      unlock:   function() {
        this.isLocked = false;
        $(this).removeClass('inactive');
      }
    });
  }
    
  //навесим обработчики на кнопки
  obj.config.$buttons.add.mousedown(function(e){
    if(config.$buttons.add.isLocked) { return; }
    obj.addItem()
    return false;
  });
  
  obj.config.$buttons.remove.mousedown(function(e) {
    if(config.$buttons.remove.isLocked) { return; }
    obj.removeItem();
    return false;
  });

  /////////////////////
  unlockButtons();

  /////////////////////
  function ajaxCallback_AddItem_Success(data, status) {
    if(!obj.isLocked) { return; }

    if(data.isFound) {
      config.$list.append($(data.html));
      //config.$list.append($( generateHtmlItem(data.item) ));
      obj.itemsCount++;
    }
    unlock();
  }

  //function generateHtmlItem(data) {}
  
  function lockButtons() {
    config.$buttons.add.lock();
    config.$buttons.remove.lock();
  }
  
  function unlockButtons() {
    if(obj.config.itemsMax > obj.itemsCount) {
      config.$buttons.add.unlock();
    } else {
      config.$buttons.add.lock();
    }

    if(obj.config.itemsMin >= obj.itemsCount) {
      config.$buttons.remove.lock();
    } else {
      config.$buttons.remove.unlock();
    }
  }

  function lock() {
    obj.isLocked = true;
    lockButtons();
  }

  function unlock() {
    obj.isLocked = false;
    unlockButtons();
  }


  this.addItem    = function() {
    if(obj.isLocked) { return; }
    lock();
    $.post(config.url, { item_count: parseInt(obj.itemsCount + 1)}, ajaxCallback_AddItem_Success, 'json');

  };

  this.removeItem = function() {
    if(obj.isLocked) { return; }
    lock();
    obj.itemsCount--;
    config.$list.children('div:last').remove();
    unlock();
  }

}
