bh.trender = function() {
  var that  = {},
      my    = {},
      index = 0,
      selector = '>*:not(h2, div)',
      timeout  = 7000,

  init = function(data) {
    my.items = data.items;
    my.container = $('#' + data.container);

    my.container.css({overflow:'hidden'})

    add_arrow(data.container, timeout);
    show_item(my.items[index]);

  },

  share_this = function(item) {
    var button = $('<div class="share_this"></div>').append('<a>Share</a>'),
        loc    = document.location,
        share  = '';

    my.container.find('div.share_this').remove();

    button.appendTo(my.container);

    share = SHARETHIS.addEntry({
      title:item.page_header,
      url:"http://" + loc.host + "/" + item.slug
    }, {button:false, offsetLeft:-149, offsetTop:-5});

    share.attachButton(button[0]);

  },

  add_item = function(item) {
    my.container.find(selector).remove();

    var css = {
      position: 'relative',
      left: '400px',
      opacity: 0
    };

    $('<a></a>', {
      text: item.page_header,
      href: item.slug,
      css: css
    }).appendTo(my.container);

    $('<p></p>', {
      text: item.short_description.truncate_at_word(60),
      css: css
    }).appendTo(my.container);

    next_index();

    share_this(item);

    return my.container.find(selector);
  },

  show_item = function(item) {

    var this_item = add_item(item);

    this_item.css({left:0, opacity:1});
    this_item.each(function() {
      this.style.removeAttribute && this.style.removeAttribute("filter");
    });

  },

  animate_item = function(item) {
    my.container.find(selector)
                .animate({top:'150px', opacity:-2}, 500, 'easeInSine',
                          function() {
                            add_item(item).animate({left:0, opacity:1}, 500, 'easeOutSine', function() {
                              this.style.removeAttribute && this.style.removeAttribute("filter");
                            });
                          });
    fill_spinner();

  },

  next_index = function() {
    index < my.items.length-1 ? index++ : index = 0;
  },

  add_arrow = function(container, timeout) {
    var svg_container = $('<div class="spinner"></div>')
        .prependTo('#' + container);

    var arrow_path = "M7.262,5.355c1.937-1.177,4.67-0.92,6.492,0.902c2.121,2.122,2.122,5.575,0,7.696c-2.122,2.123-5.576,2.124-7.697,0.001c-0.632-0.632-0.939-1.429-1.194-2.284l-0.175-0.587l-3.526,0.96l0.176,0.611c0.424,1.455,1.056,2.808,2.133,3.885c3.547,3.547,9.32,3.548,12.869,0.001c3.547-3.548,3.546-9.32-0.001-12.868C13.117,0.45,8.394,0.307,4.746,2.866L3.208,1.302L0.933,8.616l7.5-2.09M25.659,25.928H-5.658V-5.718h31.317V25.928z"

    my.canvas = Raphael(svg_container[0], 20, 20);

    var background = my.canvas.rect(1,1,18,18).attr({fill:"#ccc", "stroke-width":0}),
        arrow = my.canvas.path(arrow_path);


    my.spinner = my.canvas.set();

    my.spinner.push(arrow, background);

    fill_spinner();

    arrow.attr({fill:"#fff", "stroke-width":0});

    my.spinner
      .click(function() {
        clear_spinner();
      });

  },

  fill_spinner = function() {
    var radius = 12,
        attributes = {fill:"none", stroke:"#1b6fb4", "stroke-width":1},
        center = 10 + " " + 10,
        radians = 0,
        paper = my.canvas,
        arrow = my.spinner[0],
        background = my.spinner[1],
        x = 0,
        y = 0,
        i = 0;

    my.spinner.fill = [];

    $(document).everyTime(timeout/72, function() {
      if(i < 360) {
        radians = i * Math.PI/180
        x = radius * Math.sin(radians - (1/2) * Math.PI);
        y = -1 * (radius * Math.cos(radians - (1/2) * Math.PI));
        my.spinner.fill.push(paper.path("M" + center + "l" + x + ' ' + -y).attr(attributes));
        i = i + 5;
        arrow.toFront();
      }
      else {
        clear_spinner();
      }

    });

  },

  clear_spinner = function() {
    var background = my.spinner[1];

    $(document).stopTime(timeout/72);
    background.attr({fill:"#1b6fb4"});
    for(var c = 0; c < my.spinner.fill.length; c++){
      my.spinner.fill[c].remove();
    }
    background.animate({fill:"#ccc"}, 500);
    animate_item(my.items[index]);
  };


  that.init = init;

  return that;
}();

