function paginateMenu(listId, paginatorListId, numPerPage)
{
	var searchingForCurrent = true;
	var i=0;
	var currentIdx = 0;

	menuItems = jQuery('#' + listId).children();
	while (searchingForCurrent && i < menuItems.length)
	{
		if (jQuery(menuItems[i]).hasClass('current'))
		{
			currentIdx = i;
			searchingForCurrent = false;
		}
		i++;
	}


	var currentPage = Math.floor(currentIdx / numPerPage);
	switchToThumbTab(currentPage, listId, paginatorListId, numPerPage);

}

function createThumbPaginationLinks(currentPage, numPages, listId, paginatorListId, numPerPage)
{
	
	var paginatorList = jQuery('#' + paginatorListId);
	paginatorList.html(' ');
	if (numPages <= 1)
	{
		return ;
	}
	for (i=0; i<numPages; i++)
	{
		var pageLiEl = document.createElement('span');
		var pageLi = jQuery(pageLiEl);
		var pageNum = i + 1;

		pageLi.addClass('paginatorpage');	
		pageLi.text(pageNum);	
		if (i == currentPage)
		{
			pageLi.addClass('current');	
		} else {
			/*
			pageLi.click(function() {
				switchToThumbTab(i, listId, paginatorListId, numPerPage);
			});

			*/
			pageLi.html('<a href="#" onclick="return switchToThumbTab(' 
			+ i + ', \'' 
			+ listId + '\', \'' 
			+ paginatorListId + '\', ' 
			+ numPerPage  + ');">' + pageNum + '</a>');
		}
		paginatorList.append(pageLi);
	}
	paginatorList.show();

}

function switchToThumbTab(tabIdx, listId, paginatorListId, numPerPage)
{

	var menuItems = jQuery('#' + listId).children();
	menuItems.hide();
	// assume we've found current, otherwise just default to idx 0 anyway...
	var numItems = menuItems.length;
	var numPagesFloat = numItems / numPerPage;
	var numPages = Math.floor(numItems / numPerPage);
	if (numPages < numPagesFloat)
	{
		numPages = numPages + 1;
	}
	var currentPage = tabIdx;

	var startIdx  = currentPage * numPerPage;
	var endIdx  = startIdx + numPerPage;
	if (endIdx > numItems)
	{
		endIdx = numItems;
	}
	// show current page
	for (i=startIdx; i < endIdx; i++)
	{
		jQuery(menuItems[i]).show();
	}
	createThumbPaginationLinks(currentPage, numPages, listId, paginatorListId, numPerPage);


	return false;


}


function numThumbsForWinHeight()
{
	var thumbHeight = 59;
	var availHeight = getContextThumbDesiredHeight();
	availHeight = availHeight - (availHeight % (thumbHeight + 5));
	var numThumbs = Math.floor(availHeight / thumbHeight) * 2;
	if (numThumbs < 4)
	{
		numThumbs = 4;
	}

	return numThumbs;
}


function activateThumbAndPaginator(idx, autoLoadRandom)
{
	jQuery('.menuItem').removeClass('current');
	jQuery('#menuItem_' + idx).addClass('current');
	jQuery('#leftCol').children().hide();


	var contextThumbEl = jQuery('#contextThumb' + idx);


	if (autoLoadRandom)
	{
		var children = contextThumbEl.find('li > a');
		if (children.length)
		{
			var selectedIdx = Math.floor(Math.random()*children.length)
			var location = '' + children[selectedIdx];
			window.location.href = location;
			return false;
		}

	}



	contextThumbEl.show();
	jQuery('#thumbPaginator' + idx).show();


}

