$(document).ready(function() {

  /**
   * Bind a click handler to external links so
   * that we can track them.
   */
  $('.link-track').click(function(event) {
    token = $(this).attr('token');
    external_url = $(this).attr('href');
    url = '/log/click/' + token;
    $.ajax({
      url: url,
      dataType: 'json',
      success: function(data, textStatus, jqXHR) {
        console.log(data);
      },
      error: function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus);
      },
    });
  });

  /**
   * Infinte scrolling.
   */
  var $loading = $("<div class='loading'><p>Loading more items&hellip;</p></div>"),
    $footer = $('#pager'),
    opts = {
      offset: '100%'
    };

    $footer.waypoint(function(event, direction) {
      $footer.waypoint('remove');
      $('#page-content').append($loading);
      $.get($('.pager-next a').attr('href'), function(data) {
      var $data = $(data);
      $('#link-list').append($data.find('#link-list li'));
      $loading.detach();
      $('.pager-next').replaceWith($data.find('.pager-next'));
      $footer.waypoint(opts);
    });
  }, opts);

  var drawer_width = $('#form-item-imageurl').width();
  $('#image-drawer').width((drawer_width - 10));
  $('#image-drawer').hide();

  // Get some basic information about the linked page
  // to speed up entry.
  $('#form-item-url').blur(function() {
    $('#form-item-title').after('&nbsp;<span class="loader"><img src="/public/images/loading.gif" border="0" alt="loading" /> Locating Title</span>');
    $('#form-item-imageurl').after('&nbsp;<span class="loader"><img src="/public/images/loading.gif" border="0" alt="loading" /> Locating Images</span>');
    url = $(this).val();

    $.ajax({
      type: 'POST',
      url: '/link-dom',
      data: {'url': url},
      success: function(data, textStatus, jqXHR) {
        $('#image-drawer').slideUp('fast');
        if (typeof(data) != 'undefined') {
          if (data.title != '' && $('#form-item-title').val() == '') {
            var decoded = $("<div/>").html(data.title).text();
            $('#form-item-title').val(decoded);
          }
          if (data.img.length > 0) {
            $('#image-options').remove();
            var image_options = '';
            for (i in data.img) {
              image_options += '<img src="' + data.img[i] + '" class="image-option" width="70" height="70" />';
            }
            $('#image-drawer').html('<div id="image-options">Choose an image: ' + image_options + '</div>');
            bind_image_options();
            $('#image-drawer').slideDown('fast');
          }
        }
        $('.loader').remove();
      },
      error: function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus);
        $('.loader').remove();
      },
      dataType: 'json'
    });
  });

  // Lightbox for gallery images.
  $('.gallery').colorbox({
    rel: 'gal',
    overlayClose: 'true'
  });

});

function bind_image_options() {
  $('.image-option').click(function() {
    var src = $(this).attr('src');
    $('#form-item-imageurl').val(src);
  });
}

var storyImages = {
  images: [],
  print_selected: function() {
    $('#story-add-image-selected div').remove();
    var index = 0;
    for (i in storyImages.images) {
      id = storyImages.images[i].id;
      src = storyImages.images[i].src;
      $('#story-add-image-selected').append('<div id="img-' + id + '"><img src="' + src + '" /> [img' + index + '] <a href="#" class="story-image-remove" image_id="' + id + '" image_index=' + index + '>[remove]</a></div>');
      index++;
    }
    storyImages.bind_image_remove_link();
  },
  // Bind a removal link to all added images.
  bind_image_remove_link: function() {
    $('.story-image-remove').unbind();
    $('.story-image-remove').click(function(event) {
      event.preventDefault();
      var remove_id = 'img-' + $(this).attr('image_id'),
          image_index = $(this).attr('image_index'),
          found = false;
      for (i in storyImages.images) {
        if (!found && i == image_index) {
          storyImages.images.splice(i,1);
          storyImages.print_selected();
          found = true;
        }
      }
    });
  },
  // Get images from the list page and bind an 
  // "add" link to them.
  bind_add_image_link: function(url) {
    $.get(url, function(data) {
      var $data = $(data);
      $('#story-add-image-selector').html($data.find('#page-content'));
  
      $('#story-add-image-selector .image-list-link').click(function(event) {
        event.preventDefault();
        var href = $(this).attr('href').match(/\/image\/(.*)/),
            img = $(this).find('img').attr('src'),
            new_image = {id: href[1], src: img};

        storyImages.images.push(new_image);
        storyImages.print_selected();

        storyImages.bind_image_remove_link();

      });

      $('#story-add-image-selector #pager a').click(function(event) {
        event.preventDefault();
        storyImages.bind_add_image_link($(this).attr('href'));
      });
    });
  },
  setup_add_image: function() {
    storyImages.bind_add_image_link('/image/list');

    // Make sure that we can dump all of our images
    // into the textarea on form submission.
    $('#story-form form').submit(function(event) {
      var val = '';
      for (i in storyImages.images) {
        val += storyImages.images[i]['id'] + "\n";
      }
      $('#form-item-images').val(val);
      return true;
    });
  }
}

