/*
	aqtree3clickable.js
	
	Converts an unordered list to an explorer-style tree, with clickable
	icons
	
	To make this work, simply add one line to your HTML:
	<script type="text/javascript" src="aqtree3clickable.js"></script>
	
	and then make the top UL of your nested unordered list of class
	"aqtree3clickable".


*/

// ------------------------------------------------------------- //

	addEvent(window, "load", makeTreesC);
	
// ------------------------------------------------------------- //

	
	function makeTreesC() {
	    // We don't actually need createElement, but we do
	    // need good DOM support, so this is a good check.
	    if (!document.createElement) return;
	    var ul;	 
	    var uls = document.getElementsByTagName("ul");
		
	    for (uli = 0; uli<uls.length; uli++) 
		{
	        var ul = uls[ uli ];
	        if (ul.nodeName == "UL" && ul.className == "sitemapTree") processULELC( ul );
	        
	    }
	}

// ------------------------------------------------------------- //


// new method used without placing image tag in ul/li tags 

	function processULELC( ul ) {
	   if (!ul.childNodes || ul.childNodes.length == 0)  return;
	    // Iterate LIs
						
	    for (var itemi = 0; itemi < ul.childNodes.length; itemi++) {
	        var item = ul.childNodes[ itemi ];		
			
			var a = null;
			var img = null;
            var subul = null;
			
	        if (item.nodeName == "LI") 
			{
	            for (var sitemi = 0; sitemi < item.childNodes.length; sitemi++) 
				{						
	                var sitem = item.childNodes[ sitemi ];	
					 switch (sitem.nodeName) 
					 {						
	                    case "IMG": img = sitem; break;
						case "A": 	a = sitem; break;
	                    case "UL": 	subul = sitem;
									img.src = 'images/minus.gif';									
	                           		processULELC( subul );
	                           		break;			
	                }					
	            }//end second for loop
	    		if ( img && img.src.indexOf('bullet') == -1 )  
					associateELC( img, item );			  
	        }//end first for loop
	    }//end if statement
	}//end function processULELC

// ------------------------------------------------------------- //

// new method used without placing image tag in ul/li tags 

	function associateELC( img, li ) 
	{	
		if (li.className.indexOf('open') == -1)	
		{
			li.className = 'closed';
			img.src = 'images/plus.gif';		
		}				
	   	img.onclick = function() 
		{			
			this.parentNode.className  = ( this.parentNode.className == 'open' ) ? 'closed' : 'open';
	        this.src = ( this.parentNode.className == 'open' ) ? 'images/minus.gif' : 'images/plus.gif';
			return false;
			
	    }//end function onclick
	}//end function associateELC

// ------------------------------------------------------------- //

/*              Utility functions                    */

	function addEvent( obj, evType, fn )
	{ 
		  if ( obj.addEventListener )
		  {
		    obj.addEventListener( evType, fn, true );
		    return true;
		  } 
		  else if ( obj.attachEvent )
		  {
			var r = obj.attachEvent( "on" + evType, fn );
		    return r;
		  } 
		  else return false;
		  
	}
	
// ------------------------------------------------------------- //

