/*Copyright Infosnel.nl
	Needs prototype
*/
function serialise(n)
{
  var text = false;
  try {
    // Normal, object-oriented browsers
    var serializer = new XMLSerializer();
    text = serializer.serializeToString(n);
  }
  catch (e) {
    try {
      text = n.xml;
    }
    catch (e) {}
  }
  return text;
}
function contentXML(n)
{
	var s = '';
	for(var i = 0; i < n.childNodes.length; i++)
	{
		s += serialise(n.childNodes[i]);
	}
	return s;
}
function upToNumber(id)
{
	var i = 0;
	for(; i < id.length; i++)
	{
if(id.charAt(i) == '0'){ break; }
if(id.charAt(i) == '1'){ break; }
if(id.charAt(i) == '2'){ break; }
if(id.charAt(i) == '3'){ break; }
if(id.charAt(i) == '4'){ break; }
if(id.charAt(i) == '5'){ break; }
if(id.charAt(i) == '6'){ break; }
if(id.charAt(i) == '7'){ break; }
if(id.charAt(i) == '8'){ break; }
if(id.charAt(i) == '9'){ break; }
	}
	return id.substring(0, i);
}

function getElement(id)
{
	var e = document.getElementById(id);
	if(e)	{	return e;}
	//None found, try 'somethingLIST'
	var type = upToNumber(id);
	var container = document.getElementById(type + 'list');
	e = document.createElement('div');
	e.id = id;
	container.appendChild(e);
	return e;
}
function rep(obj, url, args)
{
	return repId(obj.id, url, args);
}
function repId(id, url, args)
{
	var r = new Ajax.Request(url,	{
		method: 'get', 
		parameters: 'oid=' + escape(id) + '&' + args, 
		onComplete: handleReq
	});		
}
function handleWrite(cmds)
{
	for(var i = 0; i < cmds.length; i++)
	{
		var cmd = cmds.item(i);
		var target = getElement(cmd.getAttribute('oid'));
		var val = contentXML(cmd);
		try {
			target.innerHTML = val;
		}
		catch (e) {
		  // IE fucks up again....
		  var wDiv = document.createElement('div');
		  wDiv.innerHTML = val;
		  target.parent.replaceChild(target, wDiv);
		}
	}
}

function handleReq(r)
{
	handleWrite(r.responseXML.getElementsByTagName('w'));
}


