var Slider = function( holder, elements, current, index, clickCallback ) {

	// ** Свойства объекта
	
	// Идентификатор контейнера для слайдера
	this.holder = holder;
	
	// Массив элементов-слайдов в формате {id, depth, title}
	this.elements = elements;
	
	// Идентификатор текущего активного элемента
	this.current = current;

	// Функция-обработчик клика по элементу
	this.clickCallback = clickCallback;

	// Глубина слайдера, т.к. его уровень по отношению к остальным
	this.index = index;
	
	// Количество показываемых слайдов в слайдере
	this.slidesLimit = 5;

	// Если всего элементов меньше, чем количество слайдов, то ограничиваем количество слайдов
	if( this.slidesLimit > elements.length ) {
		this.slidesLimit = elements.length;
	}

	// Формируем таблицу с элементами и помещаем ее в контейнер слайдера
	var html = '';
	html += '<table>';
	html += '<tr>';
	for( var i = 0 ; i < this.slidesLimit; i++ ) {
		html += '<td class="slide" ></td>';
	}
	html += '</tr>';
	html += '</table>';

	// Бегунок показываем только тогда, когда в нем есть необходимость
	if( elements.length > this.slidesLimit ) {
		html += '<div class="sliderLine" id="sliderLine_' + this.index + '"></div>';
	}
	
	$('#' + this.holder).html(html);

	// Ссылка на себя, чтобы использовать во вложенных безымянных функциях
	var object = this;

	// Инициализируем jQuerySlider
	$('#sliderLine_' + this.index).slider({
		min: 0,
		max: (this.elements.length - this.slidesLimit) * 50,
		animate: true,
		slide: function(e, ui) {
			object.draw( parseInt(ui.value/50), index);
		}
	});

	// Заполняем кнопки значениями
	if( this.current == null ) {
		this.draw(0, index);
	} else {
		this.draw(this.current, index);
	}

}


// Заполняет ячейки слайдера значениями в зависимости от выбранной текущей позиции слайдера
Slider.prototype.draw = function(start, index) {

	// Получаем объект-ссылку на сам слайдер
	var object = this;

	// Цикл по количеству слайдов
	for( var i = 0 ; i < this.slidesLimit; i++ ) {

		// Помещаем в текущую ячейку текущее значение элемента
		$('#' + this.holder + ' td.slide:eq(' + i + ')')
			.text(this.elements[start + i].title)
			.unbind('click')
			.bind(
				'click',
				{
					id: this.elements[start + i].id,
					index: this.elements[start + i].depth
				},
				function(e){

					// Вызываем загрузку информации по выбранной категории
					object.clickCallback(e.data.id, e.data.index);
				}
			);

	}

}

