﻿var itemNumber = 101;
var itemsPerPage = 10;
var moreLessMoveRate = 5;
var startPage = 1;
var lowerRange = 1
var upperRange = moreLessMoveRate;
var numberOfPages = 0;
var optionsShown = false;
var showAllNumbers = false;

function Initialise()
{
	if (ctlPageSelectedValue)
	{
		startPage = parseInt(ctlPageSelectedValue.value);
		lowerRange = parseInt(ctlPageLowerRange.value);
		upperRange = parseInt(ctlPageUpperRange.value);
		itemsPerPage = parseInt(ctlItemsPerPage.value);
		itemNumber = parseInt(ctlItemNumber.value);

		numberOfPages = Math.ceil(itemNumber / itemsPerPage);
		WritePageNumbers();

		$(".pagerMoreLinks").click(function()
		{
			lowerRange = upperRange + 1;
			upperRange += moreLessMoveRate;
			$(".pagerPageNumbers a").remove();
			WritePageNumbers();
			return false;
		});

		$(".pagerLessLinks").click(function()
		{
			upperRange = lowerRange - 1;
			lowerRange -= moreLessMoveRate;
			$(".pagerPageNumbers a").remove();
			WritePageNumbers();
			return false;
		});

		$(".pagerFirstPage").click(function()
		{
			SetRanges(1);
			GotoPage(1);
			return false;
		});

		$(".pagerPreviousPage").click(function()
		{
			if (startPage - 1 >= 1)
			{
				SetRanges(startPage - 1);
				GotoPage(startPage - 1);
			}
			return false;
		});

		$(".pagerNextPage").click(function()
		{
			if (startPage + 1 <= numberOfPages)
			{
				SetRanges(startPage + 1);
				GotoPage(startPage + 1);
			}
			return false;
		});

		$(".pagerLastPage").click(function()
		{
			SetRanges(numberOfPages);
			GotoPage(numberOfPages);
			return false;
		});

		$(".pagerOptions").click(function()
		{
			if (optionsShown)
			{
				$(".pagerItemsPerPage").hide("slow");
				optionsShown = false;
			}
			else
			{
				$(".pagerItemsPerPage").show("slow");
				optionsShown = true;
			}
			return false;
		});

		$(".pagerItemsPerPage a").click(function()
		{
			itemsPerPage = parseInt($(this).attr('rel'));
			$(".pagerPageNumbers a").remove();
			$(".pagerItemsPerPage").hide("slow");
			lowerRange = 1;
			upperRange = lowerRange + moreLessMoveRate - 1;
			optionsShown = false;
			numberOfPages = Math.ceil(itemNumber / itemsPerPage);
			//WritePageNumbers();
			SetRanges(1);
			GotoPage(1);
			return false;
		});
	}
}

function WritePageNumbers()
{
	$(".pagerMoreLinks").hide();
	$(".pagerLessLinks").hide();

	if (lowerRange > 1)
	{
		$(".pagerLessLinks").show();
	}
	if (numberOfPages > upperRange)
	{
		$(".pagerMoreLinks").show();
	}

	if (showAllNumbers)
	{
		for (var i = 1; i < numberOfPages + 1; i++)
		{
			var className = "";
			if (i == startPage)
			{
				className = " class='selected'";
			}
			$(".pagerPageNumbers").append("<a href='' rel='" + i + "'" + className + ">" + i + "</a>");
		}
	}
	else
	{
		for (var i = lowerRange; i <= upperRange; i++)
		{
			var className = "";
			if (i == startPage)
			{
				className = " class='selected'";
			}
			$(".pagerPageNumbers").append("<a href='' rel='" + i + "'" + className + ">" + i + "</a>");

			if (i >= numberOfPages)
			{
				break;
			}
		}
	}

	// Get the value on the page link and send it to a hidden box to be retrieved by asp.net
	$(".pagerPageNumbers a").click(function()
	{
		GotoPage(parseInt($(this).attr('rel')));
		return false;
	});
}

function GotoPage(number)
{
	ctlPageLowerRange.value = lowerRange;
	ctlPageUpperRange.value = upperRange;
	ctlPageSelectedValue.value = number;
	ctlItemsPerPage.value = itemsPerPage;
	btnPageSelected.click();
}

function SetRanges(number)
{
	lowerRange = FindRange(number);
	upperRange = lowerRange + moreLessMoveRate - 1;
}

function FindRange(number)
{
	for (var i = 1; i < numberOfPages; i += moreLessMoveRate)
	{
		if (number >= i && number <= (i + moreLessMoveRate - 1))
		{
			return i;
		}
	}
	return numberOfPages;
}