function loadCategoryTree(cID){
	var el = document.getElementById('cid'+cID);
	var http = getHTTPObject();
  	http.onreadystatechange=function()
   	{
		if( http.readyState==4 )
		{
			var doc;
			if( doc = xmlParse(http.responseText)){
			  makeTableFromXML(doc, el);
			}else{
			  el.innerHTML = http.responseText;
			}
		}
    }
	http.open("GET","ajax/categories.php?cID="+cID,true);
	http.setRequestHeader("If-Modified-Since","Sat, 1 Jan 2000 00:00:00 GMT");
	http.setRequestHeader("Cookie",document.cookie);
	http.send(null);
}
              
function toggleNode( elid ){
	var el = document.getElementById('cid'+elid);
	var obj = document.getElementById('ctrl'+elid);
	
	var table = el.getElementsByTagName('table');
	var catable;
	if( table != null && table.length > 0 ){
		catable = table[0];
	}
  	if( obj.innerHTML == '[+]' ){
		obj.innerHTML = '[-]';
		if( catable != null){
  			catable.style.display='';
   		}else{
   			loadCategoryTree(elid);
   		}
   	}else if( obj.innerHTML == '[-]' ){
		obj.innerHTML = '[+]';
   		if( catable != null ){
   			catable.style.display='none';
   		}else if( el.lastChild != null ){
			//hide the last element anyway.
   			el.lastChild.style.display='none';
   		}
   	}
}

function toggleEinNode( elid ){
	var el = document.getElementById('cid'+elid);
	var obj = document.getElementById('ctrl'+elid);
	
	var table = el.getElementsByTagName('table');
	var catable;
	if( table != null && table.length > 0 ){
		catable = table[0];
	}
  	if( obj.innerHTML == '[+]' ){
		obj.innerHTML = '[-]';
		if( catable != null ){
  			catable.style.display='';
   		}else{
   			loadCategoryTree(elid);
   		}
   	}else if( obj.innerHTML == '[-]' ){
		obj.innerHTML = '[+]';
   		if( catable != null ){
   			catable.style.display='none';
   		}else if( el.lastChild != null ){
			//hide the last element anyway.
   			el.lastChild.style.display='none';
   		}
   	}
}
///////////////////////////////////////////////////////////////////////////////
// doc is a XML Document Object
// appendElement is a HTML TD element.
// This function will append data to appendElement.
function makeTableFromXML(doc, appendElement){
  var table = document.createElement('table');
  var tbody = document.createElement('tbody');
  table.appendChild( tbody );

  var cats = doc.getElementsByTagName('category');
  for( var i = 0; i < cats.length; i++ )
  {
    var tr = document.createElement('tr');
    tr.vAlign = 'top';
    var id = cats[i].getElementsByTagName('id')[0];
    if( id.childNodes[0] != null){
	 	id = id.childNodes[0].nodeValue;
	}else{
		id = '';
	}
	var name = cats[i].getElementsByTagName('name')[0];
	if( name.childNodes[0] != null){
	 	name = name.childNodes[0].nodeValue;
	}else{
		name = '';
	}
	var isleaf = false;
	var temp = cats[i].getElementsByTagName('isleaf')[0];
	if( temp != null && temp.childNodes[0] != null){
 		isleaf = temp.childNodes[0].nodeValue;
	}
	var actionTD = document.createElement('td');
	if( ! isleaf ){
		var aToggle = document.createElement('a');
		aToggle.innerHTML = '[+]';
		aToggle.href = 'javascript: toggleEinNode(\''+id+'\');';
		aToggle.id = 'ctrl'+id;

		actionTD.className = 'categoryTreeNode';
		actionTD.appendChild( aToggle );
		//actionTD.onclick = toggleNode(actionTD, id);
	}
	tr.appendChild( actionTD );
	
	var a = document.createElement('a');
	a.innerHTML = name;
	a.href = 'index.php/cPath/'+id;

	var dataTD = document.createElement('td');
	dataTD.className = 'categoryTreeNodeName';
	dataTD.id = 'cid'+id;
	dataTD.appendChild( a );
	tr.appendChild( dataTD );
	//table.appendChild( tr );
	tbody.appendChild( tr );
  }
  table.className = 'categoryTable';
  appendElement.appendChild( table );
}
