/**
* Плагин скроллинга
*/
jQuery.fn.scroll = function(options) {

	var options = jQuery.extend({
		prevButton : '.prev', // селектор кнопки "назад"
		nextButton : '.next', // селектор кнопки "вперед"
		content : '.scrollContent', // селектор контейнера, содержимое которого скроллится, UL 
		speed : 400, // скорость анимации
		postAction : '' // функция, запускаемая после выполнения основных действий
	}, options);
	
	$(this).each(function(){
		var container = this;
		var elList = $(container).find(options.content).find('li');
			// Скроллинг возможен только если эл-ты выходят за рамки контейнера		
		if ( $(this).find(options.content).parent().width() < $(elList).first().outerWidth() * $(elList).length ) {
			$(this).find(options.prevButton).scroll_bindPrevHandler(container, options);
			$(this).find(options.nextButton).scroll_bindNextHandler(container, options);
		}
	});
	
	return false;
}

// Выделение функционала в отдельные функции scroll_bindPrevHandler() и scroll_bindNextHandler() связвно с необходимостью 
// запрета выполнения следующего клика, пока не выполнился предыдущий (актуально при быстрых последовательных кликах)

/**
* Вешает обработчик нажатия кнопки prev
*/
jQuery.fn.scroll_bindPrevHandler = function(container, options) {
	$(this).one('click', function(){
		var t = this;
		var last = $(container).find(options.content).children().last();
		$(options.content).find('*').unbind();
		$(container).find(options.content).prepend( $(last).clone() ).css("margin-left", -$(last).outerWidth());
		$(container).find(options.content).first().animate({"margin-left": 0}, options.speed, function(){
			$(last).remove();
			$(t).scroll_bindPrevHandler(container, options);
			eval(options.postAction + '()');
		});	
	}).mousedown(function(event){event.preventDefault()}); // Предотвращаем паразитное выделение текста на странице
}

/**
* Вешает обработчик нажатия кнопки next
*/
jQuery.fn.scroll_bindNextHandler = function(container, options) {	
	$(this).one('click', function(){
		var t = this;
		var first = $(container).find(options.content).children().first();
		$(options.content).find('*').unbind();
		$(container).find(options.content).append( $(first).clone() );
		$(first).animate({"margin-left": -$(first).outerWidth()}, options.speed, function(){
			$(this).remove();
			$(t).scroll_bindNextHandler(container, options);
			eval(options.postAction + '()');
		});			
	}).mousedown(function(event){event.preventDefault()});
}
