var json_carousel = null;

$(document).ready(function()
{
  $("#carousel").jcarousel({
    scroll: 1,
    wrap: "last",
    initCallback: carousel_initCallback,
    itemLoadCallback: carousel_itemLoadCallback,
    itemVisibleInCallback: {
        onAfterAnimation: carousel_itemVisibleInCallbackAfterAnimation
    },
    buttonNextHTML: null,
    buttonPrevHTML: null
  });
});

function carousel_initCallback(carousel) {
  $($('#carousel-control div')[0]).addClass('active');
  
  $('#carousel-control div').bind('click', function() {
    carousel.stopAuto();
	var index = $(this).text();
    carousel.scroll($.jcarousel.intval(index));
    return false;
  });
  
  // Pause autoscrolling if the user moves with the cursor over the clip.
  carousel.clip.hover(function() {
    carousel.stopAuto();
  }, function() {
    carousel.startAuto();
  });
};

function carousel_itemLoadCallback(carousel, state)
{
  // Since we get all URLs in one file, we simply add all items
  // at once and set the size accordingly.
  if (state != 'init')
    return;

  $.get('/appfiles/ajax_get_carousel.php', function(data) {
    try
    {
      json_carousel = eval(data);
      carousel_itemAddCallback(carousel, carousel.first, carousel.last, json_carousel[1]);
      $('#carousel-caption-header')[0].innerHTML = json_carousel[1][0].header;
      $('#carousel-caption-text')[0].innerHTML = json_carousel[1][0].caption;
      carousel.startAuto(json_carousel[0][0].auto / 1000);
    }
    catch(err){}
  });
};

function carousel_itemAddCallback(carousel, first, last, data)
{
  // Simply add all items at once and set the size accordingly.
  for (i = 0; i < data.length; i++) {
    carousel.add(i+1, carousel_getItemHTML(data[i].url,data[i].gourl));
  }
  carousel.size(data.length);
};

function carousel_itemVisibleInCallbackAfterAnimation(carousel, item, idx, state) {
  try
  {
    $('#carousel-control div').removeClass('active');
    $($('#carousel-control div')[idx-1]).addClass('active');
    $('#carousel-caption-header')[0].innerHTML = json_carousel[1][idx - 1].header;
    $('#carousel-caption-text')[0].innerHTML = json_carousel[1][idx - 1].caption;
  }
  catch(err){}
};

/**
 * Item html creation helper.
 */
function carousel_getItemHTML(url,gourl)
{
  return '<a href="' + gourl + '"><img src="' + url + '" alt="" /></a>';
};