var xmlHttp;
var menuHttp;
var prevPage = "";
var prevExtfn = new Array();
var prevExtft = new Array();
var response = "";
var menuResponse

window.onload = function()
{
//	alert('page loaded.');
	if(window.location.hash == "") window.location.hash = "aboutme";
	loadPage();
	setInterval(loadPage, 100);
	
	var osstyle = document.createElement('link')
	osstyle.setAttribute("rel", "stylesheet")
	osstyle.setAttribute("type", "text/css")
	osstyle.setAttribute("href", os())
	//alert(fileref)
	document.getElementsByTagName("head")[0].appendChild(osstyle)

}

function os()
{
	var os = navigator.platform;
	var osname = "";
	os = os.toLowerCase();
	if(os == "win64" || os == "win32" || os == "win16")
	{
		osname = "win-text.css";
	}
	else if(os.indexOf("linux") >= 0 || os.indexOf("mac") >= 0)
	{
//		alert(os);
		osname = "mac-text.css";
	}
	
//	alert (filename);
	return osname;
}

function loadjscssfile(filename, filetype)
{
//	alert(filename + '  ||  ' + filetype)
	if(filetype == "js") // Wanneer we een javascript bestand inladen..
	{
		var fileref = document.createElement('script')
		fileref.setAttribute("type","text/javascript")
		fileref.setAttribute("src",filename)
//		alert(fileref)
	}
	else if (filetype = 'css') // Wanneer we een css bestand inladen..
	{
		var fileref = document.createElement('link')
		fileref.setAttribute("rel", "stylesheet")
		fileref.setAttribute("type", "text/css")
		fileref.setAttribute("href", filename)
//		alert(fileref)
	}
	if (typeof fileref!="undefined")
	{
		document.getElementsByTagName("head")[0].appendChild(fileref)
		prevExtfn.unshift(filename)
		prevExtft.unshift(filetype)
//		alert('child added: ' + fileref)
//		alert('prevExtfn: ' + prevExtfn + '  ||  prevExtft: ' + prevExtft)
	}	
}

function removejscssfile(filename, filetype)
{
//	alert ('removing: ' + filename + ', ' + filetype)
	var targetelement = (filetype=="js")? "script" : (filetype=="css")? "link" : "none" // Op zoek naar het type bestand dat we willen verwijderen..
//	alert('targetelement: ' + targetelement)
	var targetattr = (filetype=="js")? "src" : (filetype=="css")? "href" : "none" // Soort attribute dat er bij hoort..
//	alert('targetattr: ' + targetattr)
	var allsuspects = document.getElementsByTagName(targetelement)
	for(var i=allsuspects.length; i>=0; i--) // Achterwaards zoeken..
	{
		if(allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
		{
			allsuspects[i].parentNode.removeChild(allsuspects[i]) // verwijder element van de ouder..
//			alert('child removed: ' + allsuspects[i])
		}
	}
}

function setMenu(activeItem)
{
	// Set Menu	
	menuHttp = getXmlHttpObject();
	if(xmlHttp == null)
	{
//		alert("XmlHttpObject failed to initialize.");
		return;
	}

	var page = window.location.hash;
	
	page = page.replace('#','');
	page = page.split('/');
	
	var menuItem = page[0];
	
	var url="menu.php";
	
	url = url + "?section=" + menuItem;
	url = url + "&sid=" + Math.random();

	menuHttp.onreadystatechange = menuStateChanged;
	menuHttp.open("GET", url, true);
	menuHttp.send(null);

}

function loadPage()
{
//	alert('loadPage() called.');
	
	var page = window.location.hash;

	if(prevPage == page)
	{
		return;
	}
	else if(prevPage != page)
	{
		prevPage = page;
	}
	
	// Set Contents
	xmlHttp = getXmlHttpObject();
	if(xmlHttp == null)
	{
		alert("XmlHttpObject failed to initialize.");
		return;
	}

	
	page = page.replace('#','');
	page = page.split('/');
	
	var pathLength = page.length;
	
	var url=page[0]+".php";
	if(pathLength > 1)
	{
		url = url + "?subsection=" + page[1];
	}
	if(pathLength > 2)
	{
		url = url + "&page=" + page[2];
	}
	if(pathLength > 1)
	{
		url = url + "&sid=" + Math.random();
	}
	else url = url + "?sid=" + Math.random();
//	alert(pathLength + '  ||  ' + url);
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function stateChanged()
{
//	alert('stateChanged() called.');
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
	{
		response = xmlHttp.responseText;
		if(prevExtfn != "")
		{
			for(var i in prevExtfn)
			{
//				alert(prevExtfn.length + '  ||  ' + i);
				removejscssfile(prevExtfn[i], prevExtft[i]);
			}
			prevExtfn = [];
			prevExtft = [];
		}
		
//		alert('response: ' + response);
		response = response.split("activeItem");
		activeItem = response[0];
		info = response[1].split("externals");
		externals = info[0];
		externals = externals.split("type");
//		alert('externals: ' + externals);
		extfilename = externals[0].split("fen");
		extfiletype = externals[1].split("fen");
		
		elements = info[1].split("sect");
		data = elements[0].split("fen");
		loc = elements[1].split("fen");
//		alert(extfilename + '  ||  ' + extfiletype + '  ||  ' + data + '  ||  ' + loc);
		setMenu(activeItem);
		for(var i in extfilename)
		{
//			alert('called: ' + i);
			loadjscssfile(extfilename[i], extfiletype[i]);
		}
		for(var i in data)
		{
//			alert(loc[i] + '  ||  ' + data[i]);
			document.getElementById(loc[i]).innerHTML = data[i];
		}
//		document.getElementById('content').innerHTML = response[0] + response[3];
//		document.getElementById('imagePlaceholder').innerHTML = response[1];
//		document.getElementById('commentPlaceholder').innerHTML = response[2];
//		document.getElementById('content').innerHTML = response;	
	}
}

function menuStateChanged()
{
//	alert('stateChanged() called.');
	if(menuHttp.readyState == 4 || menuHttp.readyState == "complete")
	{
		menuResponse = menuHttp.responseText;
		document.getElementById('menu').innerHTML = menuResponse;
	}
}


function getXmlHttpObject()
{
	var xmlHttp = null;
	try
	{
		//FireFox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
return xmlHttp;
}