function Portfolio(id, lBtnId, rBtnId)
{
	var scrollArea;
	var scrollAreaWidth;
	var scrolledBlock;
	var scrolledBlockWidth;
	var itemWidth = 0;
	var scrollXPos = 0;
	var scrollXTarget;
	
	var items = new Array();
	var lBtn = document.getElementById(lBtnId);
	var rBtn = document.getElementById(rBtnId);
	
	var currentSpeed = 0;
	var a = 1;
	var maxSpeed = 20;
	var aK = 1;
	
	var rInt;
	
	scrollArea = document.getElementById(id);
	if(scrollArea == null)
	{
		return;
	}
	init();
	
	function init()
	{
		var i;
		for(i=0; i<scrollArea.childNodes.length; i++)
		{
			if(scrollArea.childNodes[i].tagName == "UL")
			{
				scrolledBlock = scrollArea.childNodes[i];
			}
		}
		for(i=0; i<scrolledBlock.childNodes.length; i++)
		{
			if(scrolledBlock.childNodes[i].tagName == "LI")
			{
				items.push(scrolledBlock.childNodes[i]);
			}
		}
		rInt = setInterval(resizeInterval, 500);
		
		lBtn.onclick = _lBtnClickHandler;
		rBtn.onclick = _rBtnClickHandler;
		itemWidth = items[0].offsetWidth;
		scrolledBlockWidth = itemWidth*items.length;
		scrolledBlock.style.width = scrolledBlockWidth+"px";
		scrollAreaWidth = scrollArea.offsetWidth;
		render();
	}
	function resizeInterval()
	{
		if(scrollArea.offsetWidth != scrollAreaWidth)
		{
			render();
		}
	}
	function render()
	{
		if(scrolledBlock.offsetLeft>=0)
		{
			lBtn.className = "passive";
			lBtn.onclick = function () {return false};
		}
		else
		{
			lBtn.className = "active";
			lBtn.onclick = _lBtnClickHandler;
		}
		if(scrollAreaWidth-(scrolledBlockWidth-Math.abs(scrolledBlock.offsetLeft)) >= 0)
		{
			rBtn.className = "passive";
			rBtn.onclick = function () {return false};
		}
		else
		{
			rBtn.className = "active";
			rBtn.onclick = _rBtnClickHandler;
		}
	}
	function startMoveLeft()
	{
		setTimeout(moveLeft, 30);
		currentSpeed = 0;
		aK=1;
		
	}
	function moveLeft()
	{
		if(currentSpeed<maxSpeed || aK<0)
		{
			currentSpeed=currentSpeed+a*aK;
		}
		stopDist = -(scrollXTarget-scrollXPos);
		if(stopDist <= (0-Math.pow(currentSpeed,2))/(-2*a))
		{
			//alert(stopDist);
			aK = -1;
		}
		scrollXPos -= currentSpeed;
		scrolledBlock.style.left = scrollXPos+"px";
		if(scrollXPos<=scrollXTarget)
		{
			scrollXPos = scrollXTarget;
			scrolledBlock.style.left = scrollXPos+"px";
			render();
			return false;
		}
		setTimeout(moveLeft, 30);
	}
	
	function startMoveRight()
	{
		setTimeout(moveRight, 30);
		currentSpeed = 0;
		aK=1;
	}
	function moveRight()
	{
		if(currentSpeed<maxSpeed || aK<0)
		{
			currentSpeed=currentSpeed+a*aK;
		}
		stopDist = scrollXTarget-scrollXPos;
		if(stopDist <= (0-Math.pow(currentSpeed,2))/(-2*a))
		{
			aK = -1;
		}
		scrollXPos += currentSpeed;
		scrolledBlock.style.left = scrollXPos+"px";
		if(scrollXPos>=scrollXTarget)
		{
			scrollXPos = scrollXTarget;
			scrolledBlock.style.left = scrollXPos+"px";
			render()
			return false;
		}
		setTimeout(moveRight, 30);
	}
	
	function _windowResizeHandler()
	{
		alert(this);
		render();
	}
	function _lBtnClickHandler()
	{
		var tempWidth;
		scrollAreaWidth = scrollArea.offsetWidth;
		tempWidth = Math.floor(scrollAreaWidth/itemWidth)*itemWidth;
		scrollXTarget = scrollXPos+tempWidth;
		if(Math.ceil(scrollXTarget/itemWidth)>(scrollXTarget/itemWidth))
		{
			scrollXTarget = itemWidth*Math.ceil(scrollXTarget/itemWidth);
		}
		if(scrollXTarget>0)
		{
			scrollXTarget = 0;
 		}
		
		startMoveRight();
		return false;
	}
	function _rBtnClickHandler()
	{
		var tempWidth;
		scrollAreaWidth = scrollArea.offsetWidth;
		tempWidth = Math.floor(scrollAreaWidth/itemWidth)*itemWidth;
		scrollXTarget = scrollXPos-tempWidth;
		
		if((scrolledBlockWidth-Math.abs(scrollXTarget)) < scrollAreaWidth)
		{
			//alert(scrolledBlockWidth-Math.abs(scrollXTarget));
			scrollXTarget+= scrollAreaWidth-(scrolledBlockWidth-Math.abs(scrollXTarget));
 		}
		
		startMoveLeft();
		return false;
	}
}
