Может как-то так?
var galleryArray = [
"image/test/test_01.png",
"image/test/test_02.png",
"image/test/test_03.png",
"image/test/test_04.png",
"image/test/test_05.png",
"image/test/test_06.png",
"image/test/test_07.png",
"image/test/test_08.png",
"image/test/test_09.png",
"image/test/test_10.png",
];
$(function(){
var position = counter(); // используем замыкание
setImage($('.gallery img'), galleryArray);
$('.gl_next').bind('click', function(){nextImage($('.gallery img'), galleryArray, position(1))});
$('.gl_back').bind('click', function(){nextImage($('.gallery img'), galleryArray, position(-1))});
});
function counter () { // функция, возвращающая текущую позицию первого показываемого элемента
var len = galleryArray.length;
var count = 0; // текущая позиция первого показываемого элемента
return function (direction) { // direction - направление перелистывания (1 вперёд : -1 назад)
if (count + direction < len) {
(count + direction > 0) ? count = count + direction: count = len - 1;
// если не понятна сокращённая запись, вот полная:
// if (count + direction > 0) {
// count = count + direction;
// } else {
// count = len - 1; //последний элемент массива galleryArray
// }
} else {
count = 0;
}
return count;
}
}
function setImage(elemArray, array) {
var i, len;
for (i = 0, len = elemArray.length; i < len; i++){
elemArray[i].src = array[i]
};
};
function nextImage(elemArray, array, counter) {
var lastElement = galleryArray.length - 1;
var i = counter;
for (var j = 0; j < elemArray.length; j++){
elemArray[j].src = array[i]
(i < lastElement) ? i++ : i = 0;
};
};