var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""

function loadDiv(url, containerid){
	var page_request = false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}	catch (e){}
		}
	}	else
		return false;
		
	page_request.onreadystatechange = function(){
		loadpage(page_request, containerid);
	}
	
	if (bustcachevar) bustcacheparameter = (url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
	page_request.open('GET', url+bustcacheparameter, true);
	page_request.send(null);
}

function loadpage(page_request, containerid){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)) {
		getElementSafe(containerid).innerHTML = page_request.responseText;
	}
}

function loadXML(url, func, args) {

	var page_request = false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}	catch (e){}
		}
	}	else
		return false;
	
	page_request.onreadystatechange = function(){
		loadXMLpage(page_request, func, args);
	}
	
	if (bustcachevar) bustcacheparameter = (url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
	page_request.open('GET', url+bustcacheparameter, true);
	page_request.send(null);
}

function loadXMLpage(page_request, func, args){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)) {
		if (func) {
			func(args, page_request.responseXML);
		}
	}
}

function pollContent(id, load, takeAction){
	if (load && getElementSafe(id)){
		if (takeAction) {
			if (id=='gallery-end') initGalleryScroll();
		}
		return;
	}
	else if (load && !getElementSafe(id)) {
		setTimeout("pollContent('"+id+"', " + load + "," + takeAction+ ")", 60);
	}
/*
	if (load && getElementSafe(id)){
		gv_pollContentLoaded = true;
		if (takeAction) {
			if (id=='gallery-end') initGalleryScroll();
		}
		return;
	}
	while (!gv_pollContentLoaded && load && !getElementSafe(id)) {
		setTimeout("pollContent('"+id+"', " + load + "," + takeAction+ ")", 60);
	}
*/
}

function pollContentSimple(id, takeAction) {
	if (getElementSafe(id)){
		if (takeAction) {
			if (id=='gallery-end') initGalleryScroll();
		}
		return true;
	}
	else if (!getElementSafe(id)) {
		return false;
	}
}

function setUpDiv(navURL,contentArea,divLoaded,compilePage,attrs) {
/*	if (currNav.tagName == undefined) {
		currNav = getElementSafe(currNav);
	}

	emptyDiv(contentArea);
	loadDiv(navURL, contentArea);

	if (!redirectHash) {
		if (!currNav) {
		
		var hrefs = currNav.getElementsByTagName("a");
		var href = hrefs[0].href;
		href = href.slice(href.lastIndexOf("/")+1);	
		href = href.slice(href.indexOf("#")+1);
		window.location.hash = href;
	}
*/
	var pageLoaded = false;

	if (compilePage) {
		compileDiv(contentArea,attrs);
	} else if (divLoaded) {
		do {
			pageLoaded = pollContentSimple(divLoaded, true);
		} while (!pageLoaded);

//		pollContent(divLoaded, true, true);
	}
}


function initialiseStateFromURL() {
	if (window.location.hash) {
		var hashParts = breakupHash(document.location.href);
		var navParts = hashParts[0];
		var xmlParts = hashParts[1];
		var imgParts = hashParts[2];
	
		var maxNav = navParts.length-1;
		
		var compilePage = xmlParts[maxNav] ? true: false;
		var initNav = getElementSafe(navParts[0]);
		var pageToLoad = navParts[maxNav] + ".htm";
		var contentArea = "page-area";
		var endTag = navParts[maxNav] + "-end";
		setUpDiv(true, pageToLoad, contentArea, initNav.parentNode, endTag, compilePage, window.location.hash);
	}
}

function compileDiv(contentArea, attrs) {
	var xmlDir = "/xml/";
	
/*	var hashParts = breakupHash(document.location.href);
	var navParts = hashParts[0];
	var xmlParts = hashParts[1];
	var attrParts = hashParts[2];
	
	var maxNav = navParts.length-1;*/
	var xmlURL = xmlDir + attrs[0] + "-" + attrs[1] + ".xml";
		
	var passFunc, passArgs;
	if (attrs[0] == "gallery") {
		passFunc = initGalleryPage;
		passArgs = contentArea;
	} else if (attrs[0] == "galleries") {
		passFunc = initGalleriesPage;
		var galleryStart = attrs[2];
		passArgs = [contentArea,galleryStart];
	}	
	loadXML(xmlURL, passFunc, passArgs);
}

function emptyDiv(contentArea) {
	var el = document.getElementById(contentArea);
	while(el.hasChildNodes()){
		el.removeChild(el.lastChild);
	}
}
