jQuery.fn.glebsn_carousel = function(param){
	// потом по другому сделать как в автокоплите, все через объект
	//var param = param;
	var carousel_items = $("#carousel-list").find("li").length;
	var item_width = $("#carousel-list").find("li").width() + 8; // margin: 0 - may change
	var carousel_width = item_width*carousel_items;
	
	var clip_width = $("#carousel-clip").width();
	var carousel_list = $("#carousel-list");

	var first_delta = 0;
	var last_delta = 0;
	var current = $('#current').length ? $('#current').attr('value'):0;
	var speed = 2000;
	var left = 0;
	
	var parent_next = $("#next");
	var parent_prev = $("#prev");
	
	if(clip_width<carousel_width) {
		parent_next.removeClass("disabled");
	}
	
	var ie6 = ($.browser.msie && $.browser.version=='6.0');	
	
	var can_move = (clip_width) < (carousel_width - first_delta + last_delta);
	
	/* we can move if carousel width minus deltas is bigger than carousel clip */
	/*
	if (current && can_move) {
		
		move_carousel_to_position(current);
	}
	*/
	
	/* functions */
	parent_next.click( function() {
		if(!parent_next.hasClass('disabled')) {
			left = left - item_width;
			var number = (-left/item_width)+1;
			var number_ = number-1;
		
			if(can_move && (left > -carousel_width)) {
			
				var how_long = Math.min(item_width,carousel_width-clip_width-last_delta);
				
				var desctination = -how_long+last_delta;
				last_delta = last_delta - how_long;
				var current_speed = change_speed(desctination);
			
				// ограничение на некс зависит от той области, которую мы видим
				if ((left - clip_width) <= -carousel_width) {
					parent_next.addClass("disabled");
				}
				carousel_list.animate({"left": desctination},/*current_speed*/"fast", function() {});
				parent_prev.removeClass("disabled");
			}	
		}	
		
		return false;
	})
	
	parent_prev.click( function() {
		
		if(!parent_prev.hasClass('disabled')) {
			left = left + item_width;
			var number = (-left/item_width)+1;
			var number_ = number+1;

			if(can_move && (-left >= 0)) {
			
				var how_long = Math.min(item_width, -last_delta);
				var desctination =  how_long+last_delta;
				last_delta = last_delta + how_long;
				var current_speed = change_speed(desctination);
			
				if (left == 0) {
					parent_prev.addClass("disabled");
				}
			
				carousel_list.animate({"left": desctination},/*current_speed*/"fast", function() {
					if (desctination == first_delta) parent_prev.addClass("disabled");
				});
				parent_next.removeClass("disabled");
			}
		}
		
		return false;
	});
	
	/* this function moves carousel list to the defined position */
	function move_carousel_to_position(number, number_, param) {
		
		var delta = -(item_width*(number-1)) + first_delta;
		
		if (delta > first_delta) delta = first_delta; // не левее левого
		
		var right_border = delta + carousel_width - last_delta;
		
		if (right_border < clip_width) {
			delta = clip_width-carousel_width+last_delta;
		}
		left = delta;
		last_delta = delta;
		
		if(last_delta==0) {
			parent_prev.addClass("disabled");
			title_prev.empty();
		}
		else {
			parent_prev.removeClass("disabled");
			title_prev.html(carousel_items_array[(-left/item_width)-1].innerHTML);
		}
		
		if(last_delta==-carousel_width+item_width) {
			parent_next.addClass("disabled");
			title_next.empty();
		}
		else {
			parent_next.removeClass("disabled");
			title_next.html(carousel_items_array[(-left/item_width)+1].innerHTML);
		}
		
		change_kitchen(number, number_,param);
		
		
		//var current_speed = change_speed(delta);
		
		carousel_list.animate({"left": delta}, "fast");
	}
	
	function change_speed(destination) {
		var current_left = parseInt(carousel_list.css("left"));
		var distance = Math.abs(destination-current_left);
		
		var current_speed = parseInt(speed * Math.pow(distance / parseInt(item_width), 1/1.3) );
		//current_speed = current_speed < 2000 ? 2000:current_speed;
		
		current_speed = Math.round(current_speed/1000)*1000;
		
		return current_speed; 
	}
};
