var smap = new ScrollMap();

document.observe("dom:loaded", function() {
  var currentItem = null;
  var kb = new HotKey;
  var itemElements = $$('.item_container');
  var firstItem = itemElements[0];
  var lastItem = itemElements[itemElements.length - 1];
  var currentPage = $('page').value;

  if (itemElements.length) {
    smap.calc(itemElements);
  }
  
  kb.add('j', function() { move(1); });
  kb.add('k', function() { move(-1); });
  kb.add('o', function() { openItem(currentItem); });
  kb.add('i', function() { heartItem(currentItem); });

  function move(direction) {
    if (direction == 1 && currentItem == lastItem) {
      window.location = 'http://www.bordom.net/?page=' + ++currentPage;
    }

    if (direction == -1 && currentItem == firstItem && currentPage != 1) {
      window.location = 'http://www.bordom.net/?page=' + --currentPage;
    }

    currentItem = (direction == 1) ? smap.getNextNode(currentY()) : smap.getPrevNode(currentY());
    if (!currentItem) return;
    currentItem.scrollTo();
  }

  function openItem(item) {
    window.open('http://www.bordom.net/item/click/' + getItemId(item), '_tab');
  }

  function heartItem(item) {
    itemId = getItemId(item);
    if (!itemId) return;
    new Ajax.Updater('heart_item_' + itemId, 'http://www.bordom.net/item/heart/' + itemId, {asynchronous:true,evalScripts:true});  
  }

  function getItemId(el) {
    return (el) ? el.id.replace(/[^0-9]/g,'') : null;
  }

});