var mycarousel_itemList = [];

var mycarousel_initCallback = function(carousel) {
  $('ul#home_carousel').children().each(function() {
      mycarousel_itemList.push({ title: this.firstChild.title, html: this.innerHTML });
  });
  $('ul#home_carousel').html('');
  $('#heading').show();
}

var mycarousel_itemVisibleInCallback = function(carousel, item, i, state, evt) {
    // The index() method calculates the index from a
    // given index who is out of the actual item range.
    var idx = carousel.index(i, mycarousel_itemList.length);
    carousel.add(i, mycarousel_itemList[idx - 1]['html']);
};

mycarousel_itemVisibleOutCallback = function(carousel, item, i, state, evt) {
    carousel.remove(i);
};

var update_buttons = function(carousel, item, i, state) {
  var pidx = carousel.index(i-1, mycarousel_itemList.length);
  var nidx = carousel.index(i+1, mycarousel_itemList.length);
  $('.jcarousel-skin-home .jcarousel-prev-horizontal').html('<p>' + mycarousel_itemList[pidx - 1]['title'] + '</p>');
  $('.jcarousel-skin-home .jcarousel-next-horizontal').html('<p>' + mycarousel_itemList[nidx - 1]['title'] + '</p>');
}

$(function() {
  $('#home_carousel').jcarousel({
    scroll: 1,
    initCallback: mycarousel_initCallback,
    itemFirstInCallback: { onAfterAnimation: update_buttons },
    wrap: 'circular',
    itemVisibleInCallback: {onBeforeAnimation: mycarousel_itemVisibleInCallback},
    itemVisibleOutCallback: {onAfterAnimation: mycarousel_itemVisibleOutCallback}
  });
  $('a').focus(function() { $(this).blur(); });
});
