var ajax = null;

try
{
	// W3C-conform
	ajax = new XMLHttpRequest();
}
catch(w3c)
{
	try
	{
		ajax = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(msie)
	{
		try
		{
			ajax = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(msie_old)
		{
			alert('Deze browser is niet geschikt voor deze website');
		}
	}
}

function ajaxRequest(url, target)
{
  if(ajax == null)
	  return;
	// alert('get page ' + url);
  ajax.open('GET', url, true);
  ajax.setRequestHeader('Content-Type', 'text/xml');
  // omzeilt Internet Explorers caching van GET-requests
  ajax.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
  ajax.send(null);

  ajax.onreadystatechange = function()
  {
  	// als bestand geheel ontvangen is ...
  	if (ajax.readyState == 4)
  	{
  		// bestand niet gevonden
  		if (ajax.status != 200 && ajax.status != 0)
  		{
			  parseFail(target, ajax.status);
  			return false;
  		}
			parseResult(target, ajax.responseXML);
  		return true;
  	}
  }
}

function parseFail(target, status)
{
  alert("Kon bestand niet laden " + status);
}

function parseResult(target, response)
{
  target = document.getElementById(target);
	while (target.hasChildNodes())
	{
	  target.removeChild(target.firstChild);
	}
  doClone(target, response);
}
function doClone(target, src)
{
	for(var i = 0; i < src.childNodes.length; i++)
	{
		var n = src.childNodes[i];
		//alert(n.nodeType + " $ " + n.nodeName + " - " + n.nodeValue);
		switch (n.nodeType)
		{
			case 1:		
				var newn = target.appendChild(document.createElement(n.nodeName));
				for (var j = 0; j < n.attributes.length; j++)
				{
					newn.setAttribute(n.attributes[j].nodeName, n.attributes[j].nodeValue);
				}
				doClone(newn, n);
				break;
			case 3:		
				var subn = document.createTextNode(n.nodeValue);
				target.appendChild(subn);
		}
	}
}