jQuery.fn.topLeft = function(top, left) {
  this.css('top', top + "px").
       css('left', left + "px");

  return this;
};

jQuery.fn.fadeMove = function(top, left) {
  this.fadeOut('fast', function() {
    $(this).topLeft(top, left).
            fadeIn('slow');
  });

  return this;
};

//############################################################

var focused_book = (function() {
  var isbn;

  var select = function(target) {
    var old_isbn = isbn;
    isbn = $(target).attr('alt');

    if(target === undefined || old_isbn == isbn) {
      isbn = undefined;
      $('.statuses').fadeOut('fast');
      $('.icon').fadeOut('fast');
      return;
    }

    var tl = $(target).offset();
    var br = {"right": tl.left + $(target).width(), "bottom": tl.top + $(target).height()};

    $("#amazon-icon").fadeMove(tl.top - 8, tl.left - 8);
    $("#delete-icon").fadeMove(tl.top - 8, br.right - 8);
    $("#move-icon").fadeMove(br.bottom - 8, br.right - 8);

    $("#add-icon").fadeMove(br.bottom - 8, br.right - 8);

    $("#amazon-icon").attr("href", "http://www.amazon.com/gp/product/" + isbn);
  };

  var deselect = function() {
    select();
  }

  return {select: select, deselect: deselect, isbn: function() { return isbn; }};
})();

function activate_icons() {

  $("#delete-icon").click(function() {
    confirm_delete_book(focused_book.isbn());
    return false;
  });

  $("#move-icon").click(function(e) {
    var pos = $(e.target).offset();
    $('.statuses').topLeft(pos.top-100, pos.left).fadeIn('slow');
    return false;
  });

  $("#add-icon").click(function(e) {
    var pos = $(e.target).offset();
    $('.statuses').topLeft(pos.top-100, pos.left).fadeIn('slow');
    return false;
  });

  $('.statuses a').click(function(e) {
    var status = $(e.target).text();
    move_book(focused_book.isbn(), status);
    return false;
  });

  $(document).bind("click", function() {
    focused_book.deselect();
  });

}
