function Pager(settings)
{
	var container = settings.container,
		sectionClass = settings.sectionClass,
		pagerClass = settings.pagerClass,
		currentClass = settings.currentClass;
		
	var sections;
	
	function getClass(element)
	{
		if (element.className)
		{
			return element.className;
		}
		else if (element.hasAttribute && element.hasAttribute('class'))
		{
			return element.getAttribute('class');
		}
		else
		{
			return '';
		}
	}
	function hasClass(element, className)
	{
		var classes = getClass(element).split(/\s+/);
		for (var i = 0; i < classes.length; i++)
		{
			if (classes[i] == className)
			{
				return true;
			}
		}
		return false;
	}
	function setClass(element, className)
	{
		element.className = className;
		element.setAttribute('className', className);
	}
	function getDivsByClassName(parent, className)
	{
		var all = parent.getElementsByTagName('div');
		var select = [];
		for (var i = 0; i < all.length; i++)
		{
			if (hasClass(all[i], className))
			{
				select[select.length] = all[i];
			}
		}
		return select;
	}
	function makeHandler(n)
	{
		return function()
		{
			setPage(n);
		};
	}
	function initializeSections()
	{
		var i, j, pager, span;
		sections = getDivsByClassName(container, sectionClass);
		for (i = 0; i < sections.length; i++)
		{
			pager = getDivsByClassName(sections[i], 'pager')[0];

			for (var j = 0; j < sections.length; j++)
			{
				span = document.createElement('span');
				span.appendChild(document.createTextNode('[ '+(j+1)+' ]'));
				if (i == j)
				{
					setClass(span, currentClass);
				}
				pager.appendChild(span);
				pager.appendChild(document.createTextNode(' '));
				span.onclick = makeHandler(j);
			}
		}
		setPage(0);
	}
	function setPage(n)
	{
		for (var i = 0; i < sections.length; i++)
		{
			sections[i].style.display = 'none';
		}
		sections[n].style.display = 'block';
	}
	
	if (typeof container == 'string')
	{
		container = document.getElementById(container);
	}

	this.pngFixHackOpen = function()
	{
		for (var i = 0; i < sections.length; i++)
		{
			sections[i].style.visibility = 'hidden';
			sections[i].style.display = 'block';
		}
	};
	this.pngFixHackClose = function()
	{
		setPage(0);
		for (var i = 0; i < sections.length; i++)
		{
			sections[i].style.visibility = 'visible';
		}
	};

	Pager.pagers[Pager.pagers.length] = this;
	
	initializeSections();

}
Pager.pagers = [];

// Pngfix doesn't work on images that are inside elements
// whose css display property is set to 'none'.  Therefore,
// on page load we need to turn all the pager tabs on, 
// then run pngfix, then turn all the tabs off again.
Pager.pngFixHackOpen = function()
{
	for (var i = 0; i < Pager.pagers.length; i++)
	{
		Pager.pagers[i].pngFixHackOpen();
	}
};
Pager.pngFixHackClose = function()
{
	for (var i = 0; i < Pager.pagers.length; i++)
	{
		Pager.pagers[i].pngFixHackClose();
	}
};

