var qsWidth=0;
var qsListWidth=0;
var qsLeft=0;
var qsSpeed=0;
var qsScrollTime=0;
var qsScrollValue=false;
var qsScrollDirection="next";
var qsScrollInterval;
var qsElem="";
var qsPosition=0;
var qsListArray = new Array();
var qsTargetElement;
var qsLoop=false;
var i=0;
var oldPosition=0;
var qsItemsInView=0;

var quicklinkScroller = {
	init: function(_initArray)
	{
		qsElem = _initArray.id;
		qsTargetElement = _initArray.elementTarget;
		
		$(document).ready(function()
		{
			$(qsElem).prepend('<div id="btnLeft" class="disabledLeft" onclick="quicklinkScroller.prev(\'click\')"></div>');
			$(qsElem).append('<div id="btnRight" onclick="quicklinkScroller.next(\'click\')"></div>');
			
			qsWidth = $(qsElem).width()-($("#btnLeft").width()+$("#btnRight").width());
			$(qsElem+" "+_initArray.elementTarget).each(function(i, elem)
			{
				qsListWidth += parseInt($(elem).outerWidth());
				qsListArray[i] = parseInt($(elem).outerWidth());
			});
			$(qsElem+" ul").css({ 'width': (qsListWidth)+"px" });
		});
		
		qsSpeed = _initArray.speed;
		qsScrollTime = _initArray.scrollTime * 1000;
		qsScrollValue = _initArray.autoScroll;
		qsLoop = _initArray.loop;
		qsItemsInView = _initArray.itemsInView;
		if(_initArray.autoScroll == true) qsScrollInterval = setInterval("quicklinkScroller.next()", qsScrollTime);
		
		$(qsElem).hover(function()
		{
			if(_initArray.pauseOnRoll == true) clearInterval(qsScrollInterval);
		},
		function()
		{
			if(qsScrollValue == true && _initArray.pauseOnRoll == true) qsScrollInterval = setInterval("quicklinkScroller."+qsScrollDirection+"()", qsScrollTime);
		});
	},
	next: function(_method)
	{
		if(_method == "click")
		{
			clearInterval(qsScrollInterval);
			qsScrollValue=false;
		}
		
		if(qsLoop == true)
		{
			$("#qs_buttons ul").stop(true, true).animate({ 'left': '-='+qsListArray[qsPosition]+'px' }, qsSpeed, function()
			{
				$(qsTargetElement+":first").detach().appendTo(qsElem+" #qs_buttons ul");
				$("#qs_buttons ul").css({ 'left': '0px' });
			});
			if(qsPosition >= ($(qsTargetElement).length-1)) qsPosition = 0;
			else qsPosition++;
		} else {
			var tempValue = qsListArray.length - qsPosition;
			if(tempValue > qsItemsInView)
			{
				$("#qs_buttons ul").stop(true, true).animate({ 'left': '-='+qsListArray[qsPosition]+'px' }, qsSpeed, function()
				{
					qsLeft = $("#qs_buttons ul").css("left");
					qsLeft = qsLeft.replace("px", "");
					qsLeft = qsLeft * (-1);
				});
				qsPosition++;
				$("#btnLeft").removeClass('disabledLeft');
			}
			var tempValue = qsListArray.length - qsPosition;
			if(tempValue <= qsItemsInView && qsScrollValue == false) $("#btnRight").addClass('disabledRight');
			else if(tempValue <= qsItemsInView && qsScrollValue == true)
			{
				$("#btnRight").addClass('disabledRight');
				clearInterval(qsScrollInterval);
				qsScrollDirection = "prev";
				qsScrollInterval = setInterval("quicklinkScroller."+qsScrollDirection+"()", qsScrollTime);
			}
		}
	},
	prev: function(_method)
	{
		if(_method == "click")
		{
			clearInterval(qsScrollInterval);
			qsScrollValue=false;
		}
		if(qsLoop == true)
		{
			if(qsPosition == 0) qsPosition = ($(qsTargetElement).length-1);
			else qsPosition--;
			$(qsTargetElement+":last").detach().prependTo(qsElem+" #qs_buttons ul");
			$("#qs_buttons ul").css({ 'left': '-'+qsListArray[qsPosition]+'px' });
			$("#qs_buttons ul").stop(true, false).animate({ 'left': '+='+qsListArray[qsPosition]+'px' }, qsSpeed);
		} else {
			if(qsLeft != 0)
			{
				qsPosition--;
				$("#qs_buttons ul").stop(true, true).animate({ 'left': '+='+qsListArray[qsPosition]+'px' }, qsSpeed, function()
				{
					qsLeft = $("#qs_buttons ul").css("left");
					qsLeft = qsLeft.replace("px", "");
					qsLeft = qsLeft * (-1);
				});
				
				$("#btnRight").removeClass('disabledRight');
			}
			var tempValue = qsListArray.length - qsPosition;
			if(tempValue == qsListArray.length && qsScrollValue == false) $("#btnLeft").addClass('disabledLeft');
			else if(tempValue == qsListArray.length && qsScrollValue == true)
			{
				$("#btnLeft").addClass('disabledLeft');
				clearInterval(qsScrollInterval);
				qsScrollDirection = "next";
				qsScrollInterval = setInterval("quicklinkScroller."+qsScrollDirection+"()", qsScrollTime);
			}
		}
	}
}