/**
 * @author Bryan Maleszyk, Miller Systems, Inc.
 */
function onLoadCreatePager() {
	if (!$("pageContent")) return; // no context to perform paging.
	
	getPages();
	
}

var Pager = {
	pages : new Array(),
	currentPage : 0,
	PAGE_NUMBER_STRING : "(#{p} of #{n})",
	init : function() {
		if (!$("pageContent")) return;
		var content = $("pageContent");
		Pager.pages = content.getElementsBySelector("div.page");
		if (Pager.pages.length <= 1) return; // don't do anything if there are less than or equal to one page.
		Pager.buildNav();
		Pager.update();
		$("pageNumber").show();
		$("pageLinks").show();
	},
	next : function() {
		if (Pager.currentPage >= Pager.pages.length-1) return;
		Pager.currentPage++;
		Pager.update();
	},
	
	previous : function() {
		if (Pager.currentPage <= 0) return;
		Pager.currentPage--;
		Pager.update();
	},
	gotopage : function(page) {
		if ( (page >= 0) && (page <= Pager.pages.length-1) ) {
			Pager.currentPage = page;
			Pager.update();
		}
	},
	buildNav : function() {
		var pagelinks = $("pageLinks");
		if (!pagelinks) return;
		
		//$A(pagelinks.childElements()).each(Element.remove);
		(pagelinks.childElements()).invoke('remove');
		pagelinks.innerHTML = "";

		// build previous
		var prev = $(document.createElement("span"));
		var prev_anch = $(document.createElement("a"));
		prev_anch.href = "#"
		prev_anch.insert("Previous")
		prev.id = "link_prev";
		Event.observe(prev_anch, 'click',Pager.previous);
		prev.insert(prev_anch);
		prev.insert("&nbsp;|&nbsp;");
		pagelinks.insert(prev);
		
		
		// build next
		var next = $(document.createElement("span"));
		var next_anch = $(document.createElement("a"));
		
		next_anch.href = "#"
		next_anch.insert("Next");
		next.id = "link_next";
		Event.observe(next, 'click',Pager.next);
		next.insert(next_anch);
		next.insert("&nbsp;|&nbsp;");
		pagelinks.insert(next);
		
		
		// build page numbers
		for (var i=0; i<Pager.pages.length; i++) {
			pagenum = i+1;
			var s = $(document.createElement("span"));
			var a = $(document.createElement("a"));
			a.href = "#";
			s.id = "link_" + i;
			a.insert(pagenum);
			
			Event.observe(a, 'click', function() {Pager.gotopage(parseInt(this.innerHTML)-1)});
			s.insert(a);
			s.insert("&nbsp;|&nbsp;");
			pagelinks.insert(s);
			
		}
		
	},
	update : function() {
		// show the pages
		$A(Pager.pages).each(function(p){
			p.hide();
		});
		Pager.pages[Pager.currentPage].show();
		
		// update the page number
		$("pageNumber").innerHTML = Pager.PAGE_NUMBER_STRING.interpolate({p: Pager.currentPage+1, n: Pager.pages.length});
		
		if (Pager.currentPage == 0) $("link_prev").hide(); else $("link_prev").show();
		if (Pager.currentPage == Pager.pages.length-1) $("link_next").hide(); else $("link_next").show();
		$$("#pageLinks span").each(function(s){s.removeClassName('link_selected')});
		$("link_"+Pager.currentPage).addClassName('link_selected');
	}
	
	
};

Event.observe(window, 'load',Pager.init);
