function Portfolio(id, lBtnId, rBtnId)
{
	var scrollArea = document.getElementById(id);
	var scrollAreaWidth;
	var scrolledBlock;
	var scrolledBlockWidth;
	var scrollXPos = 0;
	var scrollXTarget;
	var fps = 31;
	
	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;
	
	init();
	
	function init()
	{
		//alert("111");
		//var temp = scrollArea.parentNode.parentNode.parentNode.parentNode.className;
		//scrollArea.parentNode.parentNode.parentNode.parentNode.className = "PortfolioScrollTable";
		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]);
			}
		}
		//window.onresize = _windowResizeHandler;
		rInt = setInterval(resizeInterval, 500);
		
		lBtn.onclick = _lBtnClickHandler;
		rBtn.onclick = _rBtnClickHandler;
		
		render();
		//scrollArea.parentNode.parentNode.parentNode.parentNode.className = temp;
	}
	function resizeInterval()
	{
		if(scrollArea.offsetWidth != scrollAreaWidth)
		{
			render();
		}
	}
	function render()
	{
		var i;
		
		scrollAreaWidth = scrollArea.offsetWidth;
		scrollCapacity = Math.floor(scrollAreaWidth/126);
		
		itemWidth = Math.floor(scrollAreaWidth/scrollCapacity);
		
		scrolledBlockWidth = itemWidth*items.length;
		
		if(isNaN(scrolledBlockWidth))
		{
			return;
		}
		scrolledBlock.style.width = scrolledBlockWidth+"px";
		
		for(i = 0; i < items.length; i++)
		{
			items[i].style.width = itemWidth+"px";
		}
		scrollXPos = 0;
		scrolledBlock.style.left = scrollXPos+"px";
		checkEdges();
	}
	function checkEdges()
	{
		if(scrolledBlock.offsetLeft == 0)
		{
			lBtn.className = "pas";
			lBtn.onclick = function () {return false;};
		}
		else
		{
			lBtn.className = "";
			lBtn.onclick = _lBtnClickHandler;
		}
		if(Math.abs(scrolledBlock.offsetLeft) >= scrolledBlock.offsetWidth-scrollArea.offsetWidth)
		{
			rBtn.className = "pas";
			rBtn.onclick = function () {return false;};
		}
		else
		{
			rBtn.className = "";
			rBtn.onclick = _rBtnClickHandler;
		}
	}
	function startMoveLeft()
	{
		setTimeout(moveLeft, fps);
		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))
		{
			aK = -1;
		}
		scrollXPos -= currentSpeed;
		scrolledBlock.style.left = scrollXPos+"px";
		if(scrollXPos<=scrollXTarget)
		{
			scrollXPos = scrollXTarget;
			scrolledBlock.style.left = scrollXPos+"px";
			checkEdges()
			return false;
		}
		setTimeout(moveLeft, fps);
	}
	
	function startMoveRight()
	{
		setTimeout(moveRight, fps);
		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";
			checkEdges()
			return false;
		}
		setTimeout(moveRight, fps);
	}
	
	function _windowResizeHandler()
	{
		alert(this);
		render();
	}
	function _lBtnClickHandler()
	{
		scrollXTarget = scrollXPos+scrollAreaWidth;
		if(scrollXTarget>0)
		{
			scrollXTarget = 0;
 		}
		
		startMoveRight();
		return false;
	}
	function _rBtnClickHandler()
	{
		scrollXTarget = scrollXPos-scrollAreaWidth;
		if((scrolledBlockWidth-Math.abs(scrollXTarget)) < scrollAreaWidth)
		{
			scrollXTarget+= scrollAreaWidth-(scrolledBlockWidth-Math.abs(scrollXTarget));
 		}
		
		startMoveLeft();
		return false;
	}
}

