/* 
карусель v 0.3b.

параллельная версия co скроллингом картинок по пачке

Webrover IS, Самара
www.webrover.ru

Kir V
http://blog.webrover.ru/kirvblog/
*/

var global_is_move = false;
var global_move_event = true;

jQuery.wbr = { 
	margin: 40,
	width: 1, // ширина в дробном виде
	marginRight: 20, // и отступ от правого края
	reset: false, //сбросить?
	isautoresize: true, // настраивать ширину автоматически?
	isdelay: true, // задержка перед реализацией авторезайза
	delay_value: 250,
	is_revolver: true, // зациклено?
	is_new: false, // конструирование карусели
	move_delay: 300,
	this_obj: 0
}

jQuery.fn.wbrcarousel = function(options)
{
	var _function;
	
	
	if (this.find("ul").length==0) return 0;
	var obj = this;
	
	// настройки по умолчанию
	var current = jQuery.extend({},jQuery.wbr,options);
	current.this_obj = this;
		
	if (current.reset)
	// сброс карусели в текущем контейнере
		obj.find("ul").css("left",0);
	
	//alert(this.find("li").width());
	
	// конструируем карусель
	if (current.is_new)
	{
		obj.find(".carousel-button-next").unbind();
		obj.find(".carousel-button-prev").unbind();
		
		if (current.is_revolver) // если зациклено, то добавляем элементы
		{
			obj.addClass("full-cicle");			
			var lng = obj.find("li").length;
			for (i=0;i<lng;i++)
			{
				obj.find("li:eq("+(i+lng-1)+")").after("<li>"+obj.find("li:eq("+i+")").html()+"</li>");
			}
		}
	}
	else // или переконфигурируем
	{
		service_config();
		// вешаем события
		var timer_id = 0;
		if (current.isautoresize)
		{
			// 1. автоподстройка ширины по резайзу
			$(window).resize(function()
			{
				if (timer_id==0)
					timer_id = setTimeout(service_config, current.delay_value);			
			});
		}
		
		// листание
		obj.find(".carousel-button-next").bind("click",function()
		{
			service_move(-1);
		});
		obj.find(".carousel-button-prev").bind("click",function()
		{
			service_move(1);
		});
		//obj.mousewheel(function(event, delta){
		//	return service_move(delta);
		//});
	}

	// конфиг карусели		
	function service_config()
	{
		car_obj = obj.find(".carousel");		
		// рассчетная ширина 
		wdth_ = current.width*obj.parent().width()-current.margin*2-current.marginRight; // устанавливаем ширину контейнера карусели

		// число элементов карусели
		if (obj.attr("class").indexOf("full-cicle")>0)
			elem_count = obj.find("li").length/2;
		else
			elem_count = obj.find("li").length;

		count = Math.floor(wdth_/car_obj.find("li").width());
		obj.find("ul").css("left",0);
		if (count<elem_count)		
			car_obj.width(count*car_obj.find("li").width());
		else
		{			
			car_obj.width(elem_count*car_obj.find("li").width());
		}
		// ширина контейнера-родителя
		obj.width(car_obj.width()+current.margin*2);

		// устанавливаем ширину содержимого карусели
		car_obj.find("ul").width(obj.find("li").length*car_obj.find("li").width());

		// помещаются ли все элементы по ширине родителя?
		global_is_move = (count<elem_count);
		if (!global_is_move)
		{
			// прячем кнопки
			obj.find(".carousel-button").hide();
			//car_obj.css("margin-left",0);// отступ для кнопки
			obj.attr("nocarousel","true");
		}
		else
		{			
			car_obj.css("margin-left",current.margin+'px');// отступ для кнопки
			obj.find(".carousel-button").show();
			obj.attr("nocarousel","");
		}

		// сбрасываем таймер резайса
		if (timer_id!=0)
		{
			clearTimeout(timer_id); 
			timer_id=0; 
		}
	}
	
	function service_move(direction)
	{
		if (!global_move_event) return false;
		global_move_event = 0;

			wdth_ = current.width*obj.parent().width()-current.margin*2-current.marginRight; // устанавливаем ширину контейнера карусели
			car_obj = obj.find(".carousel");
			count = Math.floor(wdth_/car_obj.find("li").width());

			left_ = obj.find("ul").css("left");
			left_ = 1*left_.substr(0,left_.length-2);
			if (left_!=left_) left_=0;

			if (obj.attr("class").indexOf("full-cicle")>0)
				elem_count = obj.find("li").length/2;
			else
				elem_count = obj.find("li").length;			
				
			if (direction<0)
				car_offset = left_-count*obj.find("li").width();
			else
			{
				car_offset = left_+count*obj.find("li").width();
				if ((car_offset>0) && (current.is_revolver))
				{
					obj.find("ul").css("left",-elem_count*obj.find("li").width()+'px');
					car_offset = -(elem_count-1)*obj.find("li").width();
				}
			}

			maxOff_2 = obj.find(".carousel").width()-obj.find("ul").width();//-2*obj.find("li").width();
	
			if ((direction>0) && !current.is_revolver && (car_offset>0))
			{
				car_offset = 0;
				//global_move_event = true;
				//return false;
			}
			if ((direction<0) && !current.is_revolver && (car_offset<=maxOff_2))
			{
				car_offset=maxOff_2;
				//global_move_event = true;
				//return false;
			}

			obj.find("ul").animate({left: car_offset},current.move_delay,function()
			{
				global_move_event = true;
				// тест на край
				if (direction<0)
				{
					maxOff = -elem_count*obj.find("li").width();
					if (car_offset<=maxOff)
						obj.find("ul").css("left",0);
				}
				return false;
			});		
		return !((car_offset!=maxOff_2) && (car_offset!=0));
	}
	
	// колесо мыши	
}
