$(function() {
    initScroll();
});

function initScroll() {

    $('.catalog-list ul').css({width: ($('.catalog-list ul').find('li').length * $('.catalog-list ul li').width())+'px'})
    $('.scroll-pane').jScrollHorizontalPane({
        scrollbarHeight :	10,
        scrollbarMargin :	0,
        dragMinWidth :		130,
        dragMaxWidth :		130
    });
    $('.catalog-list .jScrollPaneDrag').disableTextSelect();

    $('.catalog-list .arrow-next').click(function(){
        scrollArrowClick(1);
        return false;
    });
    $('.catalog-list .arrow-prev').click(function(){
        scrollArrowClick(-1);
        return false;
    });


    $('.catalog-list ul li div').click(function() {
        //$('.catalog-list ul li').removeClass('cur');
        //$(this).parent().addClass('cur');
        document.location.href = ($(this).parent().find('a').attr('href')); //emulate link click
    });
    $('.catalog-list ul li a').click(function() {
        //$('.catalog-list ul li').removeClass('cur');
        //$(this).parent().addClass('cur');
    });
    $('.button-checkall').click(function() {
        $('.catalog-checkboxes input').attr('checked', true);
    });

    var i = 1;
    $('.catalog-list ul li').each(function() {
      var scrollPane = $('.scroll-pane');
      if ($(this).hasClass('cur')) {
         scrollPane[0].scrollTo('li:eq('+(i-1)+')');
         return true;
      }
      i++;
    });
}


var scrollPosition = 0;

function scrollArrowClick(scrollDir) {
    var elementWidth = $('.catalog-list ul li').width();
    var currentCoord = -parseInt($('.scroll-pane').css('left')) || 0;
    var currentPosition = parseInt(currentCoord / elementWidth);
    if ( ((currentCoord / elementWidth) - currentPosition) > 0.3 ) {
        currentPosition += 1;
    }
    scrollPosition = currentPosition;
    scrollPosition += scrollDir;

    var scrollPane = $('.scroll-pane');
    if (scrollDir > 0) {
        var visibleElements = parseInt($('.catalog-list').width() / elementWidth);
        var maxScrollPos = scrollPane.find('li').length - visibleElements;
        if (scrollPosition > maxScrollPos) scrollPosition = maxScrollPos;
    } else {
        if (scrollPosition < 0) scrollPosition = 0;
    }

    scrollPane[0].scrollTo('li:eq('+(scrollPosition)+')');
}

