var paginationActive, numPages, pageIndex, getVars;

$(document).ready(function() {
	itemsPerPage = 5;
	getVars = getUrlVars(); // get query string vars object
	pageIndex = getVars.paged; // set pageIndex to value of query string var 'paged'
	if (pageIndex == undefined) // if there was no query string var 'paged'
	{
		pageIndex = 0;
	}
	setupPagination(pageIndex,itemsPerPage);
});

// function to return an object containing query string variables
function getUrlVars() 
{
	var map = {};
	var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
		map[key] = value;
	});
	return map;
}

function updatePagination()
{
	// alert(firstIndex + ", " + lastIndex + ", " + numPages);
	if (paginationActive)
	{
		$("#prevButton, #pageNumbers, #nextButton").show();
		
		if (pageIndex > 0)
		{
			$("#prevButton a").show();
			$("#prevButton span").hide();
		}
		else
		{
			$("#prevButton a").hide();
			$("#prevButton span").show();
		}
		
		if ( pageIndex < (numPages - 1) )
		{
			$("#nextButton a").show();
			$("#nextButton span").hide();
		}
		else
		{
			$("#nextButton a").hide();
			$("#nextButton span").show();
		}
	}
	else
	{
		$("#prevButton, #pageNumbers, #nextButton").hide();
	}
	
}

function setupPagination(pageIndex,itemsPerPage)
{	
	var numItems = $(".pagedImageLinks li").length;
	
	numPages = Math.ceil(numItems / itemsPerPage);
	
	// alert(numItems + ", " + itemsPerPage + ", " + numPages);
	if (numPages > 1)
	{
		$(".pagination").append('<div id="prevButton"><a href="">&laquo; Previous</a><span>&laquo; Previous</span></div>');
		$(".pagination").append('<div id="pageNumbers"></div>');

		var message = ""; // for testing
						
		for (var i=0; i<numPages; i++)
		{
			var start = i * itemsPerPage;
			var end;
			if (i == numPages - 1)
			{
				end = numItems;
			}
			else 
			{
				end = start + itemsPerPage;
			}
			$(".pagedImageLinks li").slice(start, end).wrapAll('<div class="imageLinksPage"></div>');
			
			// loop through each link anchor in this page
			$(".imageLinksPage:eq(" + i + ") li a").each(function(){
				var href = $(this).attr("href"); // get current value of href attribute
				href += "&paged="; 
				href += i.toString(); // add '&paged=i' to query string 
				$(this).attr("href", href); // set new value of href attribute
				// message += href + "\n"; // for testing
			});
				
			/*
			if (i > 0)
			{
				$("#pageNumbers").append('');
			}
			*/
			$("#pageNumbers").append(' <a href="">' + (i + 1).toString() + '</a> ');
		}
		
		// alert(message); // for testing
		
		$(".pagination").append('<div id="nextButton"><a href="">Next &raquo;</a><span>Next &raquo;</span></div>');
		$("#prevButton, #pageNumbers, #nextButton").hide();
		
		$("#pageNumbers a").each(function(i){
			$(this).click(function()
			{
				showPage(i);
				return false;
			});
		});
		
		$("#nextButton a").click(function(){
			nextPage();
			return false;
		});
		$("#prevButton a").click(function(){
			prevPage();
			return false;
		});
		paginationActive = true;
	}
	else
	{
		paginationActive = false;
	}
		
	showPage(pageIndex);
	$(".pagedImageLinks").show();

}

function nextPage()
{
	showPage(pageIndex + 1);
}

function prevPage()
{
	showPage(pageIndex - 1);
}

function showPage(i)
{
	$("#pageNumbers a").removeClass("selected");
	$("#pageNumbers a:eq(" + i + ")").addClass("selected");
	$(".imageLinksPage").hide();
	$(".imageLinksPage").eq(i).show();
	pageIndex = i;
	updatePagination();	
}

