(function ($) {
  $.fn.loadMoreWithAjax = function () {
    return this.each(function () {
      var loadMore = $(this),
          link     = loadMore.find('a'),
          dataSelector = loadMore.attr('data-selector'),
          addToSelector = dataSelector.split('|')[1],
          addWhere = dataSelector.split('|')[0];

      if (loadMore.data('initialized.loadMoreWithAjax') === true) {
        return;
      }

      loadMore.data('initialized.loadMoreWithAjax', true);

      link.bind('click.loadMoreWithAjax', function (evt) {
        var href = $(this).attr('href');

        evt.preventDefault();

        $.getJSON(href, function (data) {
          var jAddToSelector = $(addToSelector),
              html = data.html,
              newUrl = data.moreUrl || '';

          switch (addWhere) {
            case 'after':
              jAddToSelector.after(html);
              break;
            case 'end':
              jAddToSelector.append(html);
              break;
            case 'before':
              jAddToSelector.before(html);
              break;
            case 'begin':
              jAddToSelector.prepend(html);
              break;
          }

          if (addToSelector == '.full-width') {
            twttr.widgets.load();            
          }

          //----------------------------------
          // LEFTOVER SEARCH RESULTS
          if (addToSelector == '.search-results') {
            var leftOverResult = $('.leftover_results').last().val();

            $('.load-more-link span').html('('+leftOverResult+')');
            $('.leftover_results:not(:last-child)').remove();
            
          }

          if (newUrl != '') {
            link.attr('href', newUrl);
          } else {
            loadMore.remove();
          }
        });
      });
    });
  }
})(jQuery);
