
// JavaScript Document

var output = ''; // will hold output data
var thisdiv = ''; // holds div tag to put output
/*
 * AjaxObject is a hypothetical object that encapsulates the transaction
 *     request and callback logic.
 *
 * handleSuccess( ) provides success case logic
 * handleFailure( ) provides failure case logic
 * processResult( ) displays the results of the response from both the
 * success and failure handlers
 * call( ) calling this member starts the transaction request.
 */

var AjaxObject = {

	handleSuccess:function(o){
		// This member handles the success response
		// and passes the response object o to AjaxObject's
		// processResult member.
		//this.processResult(o);
		traverseTree(o.responseXML);
		document.getElementById(o.argument.div).innerHTML = output;
		output = '';
	},
	
	// insert all HTML into 'div' argument
	handleSuccessInsertHTML:function(o){
		document.getElementById(o.argument.div).innerHTML = o.responseText;
	},

	handleFailure:function(o){
		// Failure handler
	},

	processResult:function(o){
		// This member is called by handleSuccess
	},

	startRequest:function(file, callback, paramName, param) {
	   YAHOO.util.Connect.asyncRequest('GET', file, callback, paramName + '=' + param);
	}

};

function traverseTree(tree) {
	if(tree.hasChildNodes()) { // node with children or text.
		if(tree.tagName != null) {
        	output += '<ul><li>';
        	output += '&lt;'+tree.tagName+'&gt;';
		}
        var nodes=tree.childNodes.length;
        for(var i=0; i<tree.childNodes.length; i++)
            traverseTree(tree.childNodes[i]);
		
		if(tree.tagName != null) {
			output += '&lt;/'+tree.tagName+'&gt;';
        	output += '</li></ul>';
		}
	
    } else if(tree.tagName != null) { // node, but no text or children.
		output += '<ul><li>';
        output += '&lt;'+tree.tagName+'&gt;';
		output += '&lt;/'+tree.tagName+'&gt;';
       	output += '</li></ul>';
	} else if(tree.text != null) // not a node, but has text
        	output += tree.text;
}
