//
// This file contains all the JavaScript code necessary to 
// populate and maintain the active element:
//
//  tree
//

// function: treePopulator
// 'data' node is expected in the following format:
//
// <data>
//   <dir name="directory name">
//     <dir name="directory name" />
//     ...
//   </dir>
// </data>
//
// Within the data tag, all tags are called "dir", each with a "name" attribute.
// Empty tags (ie directories with no subdirectory) can be terminated by "/>"
//
// Output is to be generated of the form (repeated once per directory):
//
//   <ul>    <-- if a dir contains sub-dirs
//    	<li><a href="javascript:PopulateElement('gallery','homepage','&dir=content')">content</a></li>
//
// (where 'content' is the contents of the name attribute

var treeHTML;

// OK, what are we trying to do?
// From the <data> node, iterate through each of its <dir> children.
// for each <dir> child, iterate through each of its <dir> children, ad infinitum.

function calculateNodeHTML( dirNode, currentPath )
{   
    singleDirHTML = "<li><a href=\"javascript:PopulateElement('gallery','homepage','&dir=" + 
                    currentPath + dirNode.getAttribute('name') + 
                    "')\">" +
                    dirNode.getAttribute('name') + 
                    "</a></li>";

    treeHTML += singleDirHTML;

    if ( dirNode.childNodes.length == 0 )
    {
        //alert( "no child nodes - end of this branch" );
    }
    else
    {
        treeHTML += "<ul>";
	    for (var i=0; i< dirNode.childNodes.length; i++)
	    {
	        newNode = dirNode.childNodes[i];
	        if (newNode.nodeType == 1 && newNode.nodeName == "dir")
	        {
	             //alert( "inner iteration: " + (i+1) + " of " + dirNode.childNodes.length + " is " + newNode.getAttribute('name') );
				 calculateNodeHTML( newNode, currentPath+dirNode.getAttribute('name')+"/" );
	        }
	    }
        treeHTML += "</ul>";
	}    
}      

function treePopulator( activeElement, data )
{
	// (i) Update active element
	clearText( activeElement );

    treeHTML = "";
    treeHTML += "<ul>";

    for (var j=0; j< data.childNodes.length; j++)
    {
        newNode = data.childNodes.item(j);
        if (newNode.nodeType == 1 && newNode.nodeName == "dir")
        {
             //alert( "top-level iteration: " + (j+1) + " of " + data.childNodes.length + " is " + newNode.getAttribute('name') );
             calculateNodeHTML( newNode, "" );
        }
    }
    
    treeHTML += "</ul>";

    //alert( "treeHTML: " + treeHTML );
    activeElement.innerHTML = treeHTML;
}
