var clicked = 1;
var prev_idx = 0;

function mycarousel_initCallback(carousel) {
    $('.navigation a').bind('click', function() {
        carousel.scroll(jQuery.jcarousel.intval($(this).text()));
        $('.navigation .selected').removeClass('selected');    
        $(this).addClass('selected');
        clicked = 0;
        return false;
    });
    $('.carousel-next').bind('click', function() {
        carousel.next();
        clicked = 1;
        return false;
    });
    $('.carousel-prev').bind('click', function() {
        carousel.prev();
        clicked = 1;
        return false;
    });
}
$(document).ready(function () {
    // first carousel (coda)
    $('.carousel-first').jcarousel({
        auto: 3,
        visible: 1,
        scroll: 1,
        initCallback: mycarousel_initCallback,
        buttonNextHTML: null,
        buttonPrevHTML: null,
        wrap: 'both',
        itemVisibleInCallback: mycarousel_itemVisibleInCallback
    });
    // second carousel (image)
    $('.carousel-second').jcarousel({
        auto: 3,
        visible: 1,
        scroll: 1,
        vertical:true,
        initCallback: mycarousel_initCallback,
        buttonNextHTML: null,
        buttonPrevHTML: null,
        wrap: 'both'
    });
    $('.navigation a:first').addClass('selected');
});
// hacking navigation to follow 'next' and 'previous'
function mycarousel_itemVisibleInCallback(carousel, item, idx, state) {
    if((prev_idx-idx)>1 && state=='prev') {
        state="next";
    }        
    if((idx-prev_idx)>1 && state=='next') {
        state="prev";
    }  
    if (clicked == 1) { 
        if (state == 'next') {
            next_nav();
        }
        else {
            previous_nav();
        }
    }
    prev_idx = idx;
    clicked = 1;
}
function next_nav(){
    if ($('.navigation li:has(.selected) + li').length!=0) {
        $('.navigation li:has(.selected) + li')
            .children()
                .addClass('selected');
        $('.navigation .selected:first').removeClass('selected'); }
    else {
        $('.navigation li:first')
            .children()
                .addClass('selected');
        $('.navigation .selected:last').removeClass('selected');
    }
}
function previous_nav(){
  if (!$('.navigation li:first').children().hasClass('selected')) {
    $('.navigation li:has(.selected)')
      .prev()
        .children()
          .addClass('selected');
   $('.navigation .selected:last').removeClass('selected');
  }
  else {
    $('.navigation li:last')
      .children()
        .addClass('selected');
    $('.navigation .selected:first').removeClass('selected');
  }
}
