function loadCaseCarousel(elId)
{
	if($(elId))
	{
		var o_carouselContainer = $(elId);
		o_carouselContainer.style.display = "block";
		
		o_carouselContainer.delayVision = function()
		{
			this.style.visibility = 'hidden';
			var o_loadCarousel = function() {
				this.style.visibility = 'visible';							
			}.delay(300, this);
		};

		
		
		if(!o_carouselContainer.caseCarouselLoaded)
		{
			o_carouselContainer.caseCarouselLoaded = true;

			var i_slidePos = 0;
			var i_newSlidePos = 0;
			var i_slideSteps = 3;
			var o_leftArrow = o_carouselContainer.getElement(".arrow_left");
			var o_rightArrow = o_carouselContainer.getElement(".arrow_right");
			var o_carousel = o_carouselContainer.getElement(".carousel");

			s_borderWidth = o_carousel.getStyle('borderWidth');
			var a_borderWidth = s_borderWidth.split("px ");
			var i_carouselWidth =  o_carousel.getWidth() - a_borderWidth[0] - a_borderWidth[2];
			var i_paddingOffset = o_carousel.getElements("li")[0].getStyle("padding-right").toInt();
			setTimeout(function ()
			{
				i_carouselWidth = o_carousel.getWidth() - a_borderWidth[0] - a_borderWidth[2];
				i_paddingOffset = o_carousel.getElements("li")[0].getStyle("padding-right").toInt();
			},1);

			var o_carouselList = o_carousel.getElement("ul");
			var mySlideEffect = new Fx.Morph(o_carouselList, {duration: 300, transition: Fx.Transitions.Sine.easeOut});
			mySlideEffect.onTheMove = false;
			mySlideEffect.addEvent("complete", function() {
				i_slidePos += i_direction;
				mySlideEffect.onTheMove = false;
				slideCarousel();
			});


			var changeSlidePos = function(i_direction)
			{
				if((i_slidePos + i_direction) >= 0)
				{
					o_leftArrow.setStyle("visibility","hidden");
				}
				else
				{
					o_leftArrow.setStyle("visibility","visible");
				}

				if((i_slidePos + i_direction) <= ((o_carouselList.getElements("li").length / i_slideSteps)*-1)+1)
				{
					o_rightArrow.setStyle("visibility","hidden");
				}
				else
				{
					o_rightArrow.setStyle("visibility","visible");
				}

				if((i_slidePos + i_direction) <= 0 && (i_slidePos + i_direction) >= ((o_carouselList.getElements("li").length / i_slideSteps)*-1))
				{
					i_newSlidePos = (i_slidePos + i_direction);
				}

				slideCarousel();
			};

			var slideCarousel = function()
			{
				i_direction = 0;
				if(i_slidePos < i_newSlidePos)
				{
					i_direction = 1;
				}
				else if(i_slidePos > i_newSlidePos)
				{
					i_direction = -1;
				}
				else
				{
					return false;
				}
				if(!mySlideEffect.onTheMove)
				{
					i_newX = i_carouselWidth * i_direction;
					i_carouselPos = o_carouselList.getCoordinates(o_carousel).left;

					if(/*i_newSlidePos  0 && */i_direction == 1)
					{
						i_newX += i_paddingOffset;
					}
					if(i_newSlidePos < 0 && i_direction == -1)
					{
						i_newX -= i_paddingOffset;
					}
					i_newX = (i_carouselPos + i_newX);

					if(i_direction == 1)
					{
						//i_newX --;
					}
					if(i_direction == -1)
					{
						//i_newX += 6;
					}

					if(i_newX == 1) i_newX = 0;
					if(i_newX == 21) i_newX = 20;

					if(i_newX == -1 || i_newX == -2) i_newX = 0;
					if(i_newX == -21 || i_newX == -22) i_newX = -20;

					mySlideEffect.onTheMove = true;
					mySlideEffect.start({'left': [i_carouselPos, i_newX]});
				}
			};

			o_leftArrow.addEvent("click", function() { changeSlidePos(1); });
			o_leftArrow.setStyle("visibility","hidden");
			o_rightArrow.addEvent("click", function() { changeSlidePos(-1); });
			if((o_carouselList.getElements("li").length / i_slideSteps) <= 1)
			{
				o_rightArrow.setStyle("visibility","hidden");
			}
		}
		
		return o_carouselContainer;
	}
}
