Я думаю, возможно, проблема в том, что способ, которым ползунок считает, когда вы идете вперед и назад, он думает, что это начало ползунка, а не выполнение перехода. Попробуйте изменить свой третий случай
case 3:
var previous_index = 2;
var next_index = 1;
break;
что произойдет, если вы измените переменную next_index? Это исправит это?