addLoadEvent(initGallery);
var galleryPage = 1;

function initGallery() {
	if (!document.getElementById("gallery")) return;
	var picDiv = document.getElementById("bigpic");
	var bigPicP = document.createElement("p");
	var bigPicImg = document.createElement("img");
	var captionP = document.createElement("p");
	bigPicP.appendChild(bigPicImg);
	bigPicImg.setAttribute("src", "./images/gallery_default.png");
	bigPicImg.setAttribute("id", "bigimg");
	bigPicImg.setAttribute("alt", "");
	picDiv.appendChild(bigPicP);
	picDiv.appendChild(captionP);
	captionP.setAttribute("id", "caption");
	
	var gallery = document.getElementById("gallery");
	var galleryAs = gallery.getElementsByTagName("a");
	for (var i = 0; i < galleryAs.length; i++) {
		galleryAs[i].onclick = displayPic;
	}
	
	initPaging();
}

function displayPic() {
	var href = this.getAttribute("href");
	if (this.getAttribute("title")) {
		var title = this.getAttribute("title");
	} else {
		var title = "";
	}
	var caption = document.getElementById("caption");
	var bigImg = document.getElementById("bigimg");
	if (caption.firstChild) caption.removeChild(caption.firstChild);
	captionText = document.createTextNode(title);
	caption.appendChild(captionText);
	bigImg.setAttribute("src", href);
	return false;
}

function initPaging(increment) {
	var maxImagesPerPage = 5;
	if (!document.getElementById("gallery")) return;
	var gallery = document.getElementById("gallery");
	var galleryLis = gallery.getElementsByTagName("li");
	var galleryLisLength = galleryLis.length;
	if (galleryLisLength < maxImagesPerPage) {
		return;
	} else {
		var galleryLinksP = document.getElementById("galleryLinks");
		var prevLink = document.getElementById("prevLink");
		var nextLink = document.getElementById("nextLink");
		if (!galleryLinksP) {
			var galleryLinksP = document.createElement("p");
			var prevLink = document.createElement("a");
			var nextLink = document.createElement("a");
			var prevLinkText = document.createTextNode("<");
			var nextLinkText = document.createTextNode(">");
			prevLink.appendChild(prevLinkText);
			nextLink.appendChild(nextLinkText);
			galleryLinksP.appendChild(prevLink);
			galleryLinksP.appendChild(nextLink);
			prevLink.setAttribute("id", "prevLink");
			nextLink.setAttribute("id", "nextLink");
			galleryLinksP.setAttribute("id", "galleryLinks");
			prevLink.setAttribute("href", "#");
			nextLink.setAttribute("href", "#");
			prevLink.onclick = function () {
				initPaging(-1);
				return false;
			};
			nextLink.onclick = function () {
				initPaging(1);
				return false;
			};
			var galleryCounter = document.createElement("p");
			var galleryCounterText = document.createTextNode("");
			galleryCounter.setAttribute("id", "galleryCounter");
			galleryCounter.appendChild(galleryCounterText);
			gallery.appendChild(galleryCounter);
			gallery.appendChild(galleryLinksP);
		}
		if (increment) galleryPage += increment;
		var lastPage = Math.ceil(galleryLisLength/maxImagesPerPage);
		var galleryCounter = document.getElementById("galleryCounter")
		if (galleryCounter) {
			galleryCounter.firstChild.nodeValue = galleryPage + " of " + lastPage;
		}
		for (var i = 0; i < galleryLisLength; i++) {
			var iMax = galleryPage * maxImagesPerPage - 1;
			var iMin = iMax - maxImagesPerPage + 1;
			if ((i < iMin || i > iMax)) {
				if (!hasClass(galleryLis[i], "hidden")) addClass(galleryLis[i], "hidden");
			} else {
				removeClass(galleryLis[i], "hidden");
			}
		}
		
		if (galleryPage <= 1) {
			if (!hasClass(prevLink, "hidden")) addClass(prevLink, "hidden");
		} else {
			removeClass(prevLink, "hidden");
		}
		
		if ((galleryPage >= galleryLisLength / maxImagesPerPage)) {
			if (!hasClass(nextLink, "hidden")) addClass(nextLink, "hidden");
		} else {
			removeClass(nextLink, "hidden");
		}
	}
}