var jsResultScroller = new Object();

jsResultScroller.curIndex = 0;
jsResultScroller.prevIndex = -1;
jsResultScroller.nextIndex = -1;
jsResultScroller.size = 0;
jsResultScroller.uidArr = null;
jsResultScroller.tickerArr = null;

/* settings */
jsResultScroller.externalOutElem = null;
jsResultScroller.containerElem = null;
jsResultScroller.callback = null;

$(document).ready(function(){
	$('#result-lister-control-first').bind('click', function(event) {
		jsResultScroller.first();
	});
	$('#result-lister-control-prev').bind('click', function(event) {
		jsResultScroller.prev();
	});
	$('#result-lister-control-next').bind('click', function(event) {
		jsResultScroller.next();
	});
	$('#result-lister-control-last').bind('click', function(event) {
		jsResultScroller.last();
	});
	$('#result-lister-prev-val').bind('click', function(event) {
		jsResultScroller.prev();
	});
	$('#result-lister-next-val').bind('click', function(event) {
		jsResultScroller.next();
	});
	$('#result-lister-cont').disableSelection();
});

jsResultScroller.init = function(uidListStr, tickerListStr, curPos) {
	jsResultScroller.curIndex = 0;
	jsResultScroller.prevIndex = -1;
	jsResultScroller.nextIndex = -1;
	jsResultScroller.setData(uidListStr, tickerListStr);
	if(jsResultScroller.size > 1)
	{
		if(parseInt(curPos) < 0 || parseInt(curPos) >= jsResultScroller.size)
			{ curPos=0; }
			
		if(jsResultScroller.size < 3)
		{
			$('#result-lister-control-prev').hide();
			$('#result-lister-control-next').hide();
			if(jsResultScroller.size < 2)
			{
				$('#result-lister-control-first').hide();
				$('#result-lister-control-last').hide();
			}
		}
		jsResultScroller.curIndex = parseInt(curPos);
		if(jsResultScroller.size > 1)
		{
			if(parseInt(curPos) + 1 < jsResultScroller.size)
				{ jsResultScroller.nextIndex = parseInt(curPos) + 1; }
			if(parseInt(curPos) - 1 >= 0)
				{ jsResultScroller.prevIndex = parseInt(curPos) - 1; }
		}
		jsResultScroller.update(false);
		$(jsResultScroller.containerElem).show();
	}
};


jsResultScroller.setData = function(uidListStr, tickerListStr) {
	jsResultScroller.size = 0;
	if(uidListStr == null || uidListStr.length == 0)
	{
		jsResultScroller.uidArr = null;
	}
	jsResultScroller.uidArr = uidListStr.split(',');
	if(tickerListStr == null || tickerListStr.length == 0)
	{
		jsResultScroller.tickerArr = null;
	}
	jsResultScroller.tickerArr = tickerListStr.split(',');
	if(jsResultScroller.tickerArr == null || jsResultScroller.uidArr == null || jsResultScroller.uidArr.length != jsResultScroller.tickerArr.length)
	{
		/* if they aren't equal size there was some error */
		jsResultScroller.tickerArr = null;
		jsResultScroller.uidArr = null;
	}
	else
	{
		jsResultScroller.size = jsResultScroller.tickerArr.length;
	}
};



jsResultScroller.update = function(executeCallback) {
	jsResultScroller.setVal($('#result-lister-cur-val'), jsResultScroller.curIndex);
	jsResultScroller.setVal($('#result-lister-next-val'), jsResultScroller.nextIndex);
	jsResultScroller.setVal($('#result-lister-prev-val'), jsResultScroller.prevIndex);
	if(jsResultScroller.size>0)
		{ $('#result-lister-msg').html('' + (parseInt(jsResultScroller.curIndex)+1) + ' of ' + jsResultScroller.size); }
	else
		{ $('#result-lister-msg').html(''); }

	if(executeCallback)
	{
		if(jsResultScroller.externalOutElem != null)
		{
			$(jsResultScroller.externalOutElem).attr('value', $('#result-lister-cur-val').html());
		}
		if(jsResultScroller.callback != null)
		{
			jsResultScroller.callback();
		}
	}
};





/* traverse the list */
jsResultScroller.first = function() {
	jsResultScroller.curIndex = 0;
	jsResultScroller.prevIndex = -1;
	jsResultScroller.nextIndex = 1;
	jsResultScroller.update(true);
};

jsResultScroller.last = function() {
	jsResultScroller.curIndex = jsResultScroller.size-1;
	jsResultScroller.prevIndex = jsResultScroller.size-2;
	jsResultScroller.nextIndex = -1;
	jsResultScroller.update(true);
};

jsResultScroller.next = function() {
	if(jsResultScroller.size>0)
	{
		if( jsResultScroller.curIndex+1 == jsResultScroller.size )
		{
			return;
		}
		else
		{
			jsResultScroller.curIndex++;
			jsResultScroller.prevIndex = jsResultScroller.curIndex - 1;
			if( jsResultScroller.curIndex+1 >= jsResultScroller.size )
				{ jsResultScroller.nextIndex = -1; }
			else
				{ jsResultScroller.nextIndex = jsResultScroller.curIndex + 1; }
		}
		jsResultScroller.update(true);
	}
};

jsResultScroller.prev = function() {
	if(jsResultScroller.size>0)
	{
		if( jsResultScroller.curIndex-1 < 0 )
		{
			return;
		}
		else
		{
			jsResultScroller.curIndex--;
			if( jsResultScroller.curIndex-1 < 0 )
				jsResultScroller.prevIndex = -1;
			else
				jsResultScroller.prevIndex = jsResultScroller.curIndex - 1;
			jsResultScroller.nextIndex = jsResultScroller.curIndex + 1;
		}
		jsResultScroller.update(true);
	}
	jsResultScroller.update(true);
};



/* update html values */
jsResultScroller.setVal = function(elem, indx) {
	if(indx < 0)
		{ $(elem).html(''); }
	else
		{ $(elem).html('' + jsResultScroller.tickerArr[indx]); }

};

