function ajaxCustomLoad(itemSelector, eventName) {
  var elements = $(itemSelector).filter(function() { return $(this).attr('polopoly:ajax'); });
  var numberOfElements = elements.length;
  elements.each(function (i) {
    var ajaxElement = this;
    
    // Detect when all ajax tags have been loaded
    $(ajaxElement).bind(eventName, function() {
      if (--numberOfElements == 0) {
        $(document).trigger('document.' + eventName);
      };
    });
    
    // Schedule ajax load
    var ajaxUrl = $(ajaxElement).attr("polopoly:ajax");
    $.get(ajaxUrl, function(data){
      $(ajaxElement).before(data);
      $(ajaxElement).trigger(eventName);
      $(ajaxElement).remove();
    });
  });
}

function ajaxLoad() {
  return ajaxCustomLoad('div', 'ajax.loaded');
}

$(document).ready(function() { ajaxLoad(); });

