function loadXML(filename) {
	if (window.XMLHttpRequest)
	{
		var xhttp=new XMLHttpRequest();
	}
	else // for older IE 5/6
	{
		var xhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xhttp.open("GET",filename,false);
	xhttp.send("Menu:");
	return xhttp.responseXML;
}

var xmlDoc;
var galleries;
var pages;
var currentPage;
var currentGallery;

function getById(list, id) {
	var i;
	for (i=0; i<list.length; i++) {
		if (list[i].getAttribute("id") == id) {
			return list[i];
		}
	}
	return null;
}

function loadNavbar() {
	var barSrc="<table class=\"menu\">";
	for (i=0; i< pages.length; i++) {
		if ((pages[i].getAttribute("hideself") == "False") || (pages[i].getAttribute("id") != currentPage.getAttribute("id"))) {
			barSrc += "<tr><td class=\"list\">";
			if (pages[i].getAttribute("type") == "link") {
				barSrc +="<a href=\""+pages[i].getElementsByTagName("link")[0].getAttribute("url")+"\">";
				barSrc += pages[i].getAttribute("name");
				barSrc += "</a>";
			}
			else {
				barSrc += "<a href=\"javascript:loadPage('"+pages[i].getAttribute("id")+"')\">";
				barSrc += pages[i].getAttribute("name");
				barSrc += "</a>";
			}
			barSrc += "</td></tr>";
		}
	}
	barSrc += "</table>";
	document.getElementById("navbar").innerHTML = barSrc;
}

function loadImagePage() {
	var theImage = currentPage.getElementsByTagName("image")[0];
	var pageSrc = "<img src=\""+theImage.getAttribute("loc")+"\"/>";
	document.getElementById("main").innerHTML = pageSrc;
}

function guestbookSignUp(nameElement, emailElement, commentsElement) {
	var pageSrc = "";
	pageSrc += "<table class=\"list\">";
	pageSrc += "<tr><td class=\"centerlist\" id=\"guestmessage\">";
	var guestname = nameElement.value;
	var guestemail = emailElement.value;
	var comments = commentsElement.value;
	var message = "guestbook.php?name=" + guestname + "&email=" + guestemail + "&comments=" + comments;
	pageSrc += "Thanks!";
	pageSrc += "</td></tr>";
	pageSrc += "</table>";
	document.getElementById("main").innerHTML = pageSrc;
	return true;
}

function validate_required(field, alerttxt) {
	with (field) {
		if ((value==null) || (value=="")) {
			alert(alerttxt);
			return false;
		}
		else {
			return true;
		}
	}
}

function validate_form(thisform) {
	with (thisform) {
		if (validate_required(email, "You must include an email to be added to the list.") == false) {
			email.focus();
			return false;
		}
	}
}

function loadGuestbook() {
	var pageSrc = "";
	pageSrc += "<form action=\"guestbook.php\" onsubmit=\"return validate_form(this)\" method=\"POST\">";
	pageSrc += "<table class=\"list\">";
	pageSrc += "<tr><td class=\"centerlist\" id =\"guestmessage\">";
	pageSrc += "Join an email list to receive periodic updates about new work and upcoming exhibitions.";
	pageSrc += "</td></tr>";
	pageSrc += "<tr><td class=\"list\">";
	pageSrc += "Name:<br/><input type=\"text\" name=\"name\" id=\"guestname\" size=\"40\"/>";
	pageSrc += "</td></tr>";
	pageSrc += "<tr><td class=\"list\">";
	pageSrc += "Email address:<br/><input type=\"text\" name=\"email\" id=\"guestemail\" size=\"40\"/>";
	pageSrc += "</td></tr>";
	pageSrc += "<tr><td class=\"list\">";
	pageSrc += "Comments:<br/><textarea id=\"comments\" name=\"comments\" rows=\"10\" cols=\"40\"></textarea>";
	pageSrc += "</td></tr>";
	pageSrc += "<tr><td class=\"list\">";
	//pageSrc += "<input type=\"submit\" name=\"submit\" value=\"jsphp\" onclick=\"javascript:return guestbookSignUp(document.getElementById('guestname'), document.getElementById('guestemail'), document.getElementById('comments'))\"/>";
	pageSrc += "<input type=\"submit\" name=\"submit\" value=\"Join\">";
	pageSrc += "&nbsp;&nbsp;<input type=\"reset\" name=\"reset\" value=\"Reset\"/>";
	pageSrc += "</td></tr>";
	pageSrc += "</table>";
	pageSrc += "</form>";
	document.getElementById("main").innerHTML = pageSrc;
}

function loadNewsPage() {
	var newsList = currentPage.getElementsByTagName("news");
	var pageSrc = "<table class=\"newslist\">";
	var i;
	if (window.location.search=="?joined") {
		pageSrc += "<tr><td class=\"centerlist\">";
		pageSrc += "Thank you!"
		pageSrc += "</tr></td>";
	}
	else {
		pageSrc += "<tr><td class=\"centerlist\">";
		pageSrc += "<a href=\"javascript:loadGuestbook()\">";
		pageSrc += "Join an email list to receive periodic updates about new work and upcoming exhibitions.";
		pageSrc += "</a>";
		pageSrc += "</tr></td>";
	}
	for (i=0; i<newsList.length; i++) {
		if (newsList[i].getAttribute("date") != "") {
			pageSrc += "<tr>";
			pageSrc += "<td class=\"date\">"+newsList[i].getAttribute("date")+"</td>";
			pageSrc += "</tr>"
		}
		pageSrc += "<tr>";
		pageSrc += "<td class=\"news\">"+newsList[i].getAttribute("info")+"</td>";
		pageSrc += "</tr>";
	}
	pageSrc += "</table>";
	document.getElementById("main").innerHTML = pageSrc;
}

function loadStatement(id) {
	currentGallery = getById(galleries, id);
	statementList = currentGallery.getElementsByTagName("statement")[0].getElementsByTagName("p");
	var pageSrc = "";
	pageSrc += "<table class=\"statement\"><tr><td class=\"list\">";
	pageSrc += "<a href=\"javascript:loadGallery('"+currentGallery.getAttribute("id")+"')\">";
	pageSrc += currentGallery.getAttribute("name")+"<br/><br/>";
	pageSrc += "</a>";
	pageSrc += "</td></tr>";
	pageSrc += "<tr><td class=\"list\">";
	for (i=0; i<statementList.length; i++) {
		pageSrc += "<p>";
		pageSrc += statementList[i].childNodes[0].data;
		pageSrc += "</p>";
	}
	pageSrc += "</td></tr>";
	pageSrc += "</table>";
	document.getElementById("main").innerHTML = pageSrc;
}

function loadGalleryList() {
	var galleryLinkList = currentPage.getElementsByTagName("gallerylink");
	var pageSrc = "<table class=\"gallerylist\">";
	var gallery;
	var imageLoc;
	var i;
	for (i=0; i<galleryLinkList.length; i++) {
		gallery = getById(galleries, galleryLinkList[i].getAttribute("galleryid"));
		if (gallery == null) {
			pageSrc += "<tr><td>";
			pageSrc += "Error: Gallery not found."
			pageSrc += "</tr></td>";
			continue;
		}
		imageLoc = "thumbs/"+gallery.getAttribute("id")+"/"+gallery.getAttribute("thumb");
		pageSrc += "<tr><td>";
		pageSrc += "<a href=\"javascript:loadGallery('"+gallery.getAttribute("id")+"')\">";
		pageSrc += "<img src=\""+imageLoc+"\"/>"
		pageSrc += "</a>";
		pageSrc += "</td></tr>";
		pageSrc += "<tr><td class=\"gallerylist\">";
		pageSrc += "<a href=\"javascript:loadGallery('"+gallery.getAttribute("id")+"')\">";
		pageSrc += gallery.getAttribute("name");
		pageSrc += "</a><br/>";
		if (gallery.getElementsByTagName("statement").length > 0) {
			pageSrc += "<a href=\"javascript:loadStatement('"+gallery.getAttribute("id")+"')\">";
			pageSrc += "Statement";
			pageSrc += "</a><br/>";
		}
		else {
			pageSrc += "<br/>";
		}
		pageSrc += "</td></tr>";
	}
	pageSrc += "</table>";
	document.getElementById("main").innerHTML = pageSrc;
}

function loadLinkList() {
	var linkList = currentPage.getElementsByTagName("link");
	var pageSrc = "<table class=\"list\">";
	var i;
	for (i=0; i<linkList.length; i++) {
		pageSrc += "<tr><td class=\"list\">";
		pageSrc += "<a href=\""+linkList[i].getAttribute("url")+"\">";
		pageSrc += linkList[i].getAttribute("name");
		pageSrc += "</a>";
		pageSrc += "</td></tr>";
	}
	pageSrc += "</table>";
	document.getElementById("main").innerHTML = pageSrc;
}

function loadMain() {
	var pageType = currentPage.getAttribute("type");
	if (pageType == "imagepage") {
		loadImagePage();
	}
	else if (pageType == "newspage") {
		loadNewsPage();
	}
	else if (pageType == "gallerylist") {
		loadGalleryList();
	}
	else if (pageType == "gallery") {
		loadGallery(currentPage.getElementsByTagName("gallerylink")[0].getAttribute("galleryid"));
	}
	else if (pageType == "linklist") {
		loadLinkList();
	}
	else {
		document.getElementById("main").innerHTML = "<p>Sorry, a website error has occurred.</p>";
	}
}

function loadArtwork(id) {
	var artworkList = currentGallery.getElementsByTagName("artwork");
	var artwork;
	var position = -1;
	var pageSrc;
	var i;
	for (i=0; i<artworkList.length; i++) {
		if (artworkList[i].getAttribute("id") == id) {
			artwork = artworkList[i];
			position = i;
		}
	}
	if (position == -1) {
		document.getElementById("main").innerHTML = "<p>Sorry, artwork not found.</p>";
		return false;
	}
	var prev = position - 1;
	var next = position + 1;
	if (prev < 0) {
		prev = artworkList.length - 1;
	}
	if (next >= artworkList.length) {
		next = 0;
	}
	pageSrc = "<table class=\"artwork\">";
	pageSrc += "<tr><td class=\"list\"><a href=\"javascript:loadArtwork('"+artworkList[prev].getAttribute("id")+"')\">";
	pageSrc += "Prev</a>&nbsp;&nbsp;&nbsp;";
	pageSrc += "<a href=\"javascript:loadGallery('"+currentGallery.getAttribute("id")+"')\">";
	pageSrc += "Gallery</a>&nbsp;&nbsp;&nbsp;";
	pageSrc += "<a href=\"javascript:loadArtwork('"+artworkList[next].getAttribute("id")+"')\">";
	pageSrc += "Next</a></td></tr>";
	var imageLoc = "paintings/"+currentGallery.getAttribute("id")+"/"+artworkList[position].getAttribute("loc");
	pageSrc += "<tr><td class=\"artwork\"><img src=\""+imageLoc+"\"/></td></tr>";
	pageSrc += "<tr><td class=\"list\">"+artworkList[position].getAttribute("title")+"</td></tr>";
	pageSrc += "<tr><td class=\"list\">"+artworkList[position].getAttribute("specs")+"</td></tr>";
	pageSrc += "</table>";
	document.getElementById("main").innerHTML = pageSrc;
	//return false;
}

function loadGallery(id) {
	currentGallery = getById(galleries, id);
	var artworkList = currentGallery.getElementsByTagName("artwork");
	var pageSrc = "<table class=\"gallery\">";
	var imageLoc;
	var i;
	for (i=0; i<(artworkList.length - (artworkList.length%3))/3; i++) {
		pageSrc += "<tr>";
		pageSrc += "<td class=\"gallery\">";
		imageLoc = "thumbs/"+currentGallery.getAttribute("id")+"/"+artworkList[i*3].getAttribute("thumb");
		pageSrc += "<a href=\"javascript:loadArtwork('"+artworkList[i*3].getAttribute("id")+"')\">";
		pageSrc += "<img src=\""+imageLoc+"\"/>";
		pageSrc += "</a>";
		pageSrc += "<td>";
		pageSrc += "<td class=\"gallery\">";
		imageLoc = "thumbs/"+currentGallery.getAttribute("id")+"/"+artworkList[i*3+1].getAttribute("thumb");
		pageSrc += "<a href=\"javascript:loadArtwork('"+artworkList[i*3+1].getAttribute("id")+"')\">";
		pageSrc += "<img src=\""+imageLoc+"\"/>";
		pageSrc += "</a>";
		pageSrc += "<td>";
		pageSrc += "<td class=\"gallery\">";
		imageLoc = "thumbs/"+currentGallery.getAttribute("id")+"/"+artworkList[i*3+2].getAttribute("thumb");
		pageSrc += "<a href=\"javascript:loadArtwork('"+artworkList[i*3+2].getAttribute("id")+"')\">";
		pageSrc += "<img src=\""+imageLoc+"\"/>";
		pageSrc += "</a>";
		pageSrc += "<td>";
		pageSrc += "</tr>";
	}
	if (artworkList.length%3 != 0) {
		pageSrc += "<tr>";
		for (i=(artworkList.length - (artworkList.length%3)); i<artworkList.length; i++) {
			pageSrc += "<td class=\"gallery\">";
			imageLoc = "thumbs/"+currentGallery.getAttribute("id")+"/"+artworkList[i].getAttribute("thumb");
			pageSrc += "<a href=\"javascript:loadArtwork('"+artworkList[i].getAttribute("id")+"')\">";
		pageSrc += "<img src=\""+imageLoc+"\"/>";
		pageSrc += "</a>";
			pageSrc += "<td>";
		}
		pageSrc += "<tr>";
	}
	pageSrc += "</table>";
	document.getElementById("main").innerHTML = pageSrc;
	//return false;
}

function loadPage(id) {
	currentPage = getById(pages, id);
	loadNavbar();
	loadMain();
	//return false;
}

function loadWebsite() {
	xmlDoc = loadXML("website.xml");
	pages = xmlDoc.getElementsByTagName("page");
	galleries = xmlDoc.getElementsByTagName("gallery");
	currentPage = pages[0];
	if (window.location.search != "") {
		loadPage("news");
	}
	else {
		loadNavbar();
		loadMain();
	}
}
