			//SuckerTree Vertical Menu 1.1 (Nov 8th, 06)
			//By Dynamic Drive: http://www.dynamicdrive.com/style/

			var menuids = ["suckertree1"] //Enter id(s) of SuckerTree UL menus, separated by commas
			// var szImages = new Array("image1.gif", "image2.jpg", "image3.png", "etc..." );

			function buildsubmenus() {
				for (var i = 0; i < menuids.length; i++) {
					var ultags = document.getElementById(menuids[i]).getElementsByTagName("ul")
					for (var t = 0; t < ultags.length; t++) {
						ultags[t].parentNode.getElementsByTagName("a")[0].className = "subfolderstyle"
						if (ultags[t].parentNode.parentNode.id == menuids[i]) //if this is a first level submenu
							ultags[t].style.left=ultags[t].parentNode.offsetWidth + "px" //dynamically position first level submenus to be width of main menu item
						else //else if this is a sub level submenu (ul)
							ultags[t].style.left = ultags[t-1].getElementsByTagName("a")[0].offsetWidth + "px" //position menu to the right of menu item that activated it
						
						ultags[t].parentNode.onmouseover = function() {
							this.getElementsByTagName("ul")[0].style.display = "block"
						}
						
						ultags[t].parentNode.onmouseout = function() {
							this.getElementsByTagName("ul")[0].style.display = "none"
						}
					}
					
					for (var t = ultags.length-1; t > -1; t--) { //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
						ultags[t].style.visibility = "visible"
						ultags[t].style.display = "none"
					}
				}
			}

			if (window.addEventListener) {
				window.addEventListener("load", buildsubmenus, false)
			}
			else if (window.attachEvent) {
				window.attachEvent("onload", buildsubmenus)	
			}
			
			function setImage(szId, szImage) {
				if (typeof(szId) == "string") {
					// STRING ID PASSED
					document.getElementById(szId).src = szImage
				}
				else {
					// IMAGE OBJECT PASSED
					szId.src = szImage
				}
			}
			
			// IMAGE PRELOADER \/ \/ \/ 
			
			function ImagePreload( p_aImages, p_pfnPercent, p_pfnFinished ) {   
				// Call-back routines
				this.m_pfnPercent = p_pfnPercent;
				this.m_pfnFinished = p_pfnFinished;
				
				// Class Member Vars
				this.m_nLoaded = 0;
				this.m_nProcessed = 0;
				this.m_aImages = new Array;
				this.m_nICount = p_aImages.length;
				
				// Preload Array of Images
				for( var i = 0; i < p_aImages.length; i++ )
					this.Preload( p_aImages[i] );
			}
		
			ImagePreload.prototype.Preload = function( p_oImage ) {   
				var oImage = new Image;
				this.m_aImages.push( oImage );
				
				oImage.onload = ImagePreload.prototype.OnLoad;
				oImage.onerror = ImagePreload.prototype.OnError;
				oImage.onabort = ImagePreload.prototype.OnAbort;
				
				oImage.oImagePreload = this;
				oImage.bLoaded = false;
				oImage.source = p_oImage;
				oImage.src = p_oImage;
			}
			
			ImagePreload.prototype.OnComplete = function() {   
				this.m_nProcessed++;
				if ( this.m_nProcessed == this.m_nICount )
					this.m_pfnFinished();
				else
			 		this.m_pfnPercent( Math.round( (this.m_nProcessed / this.m_nICount) * 10 ) );
			}
			
			ImagePreload.prototype.OnLoad = function() {   
				// 'this' pointer points to oImage Object
				this.bLoaded = true;
				this.oImagePreload.m_nLoaded++;
				this.oImagePreload.OnComplete();
			}
			
			ImagePreload.prototype.OnError = function() {   
				// 'this' pointer points to oImage Object
				this.bError = true;
				this.oImagePreload.OnComplete();
			}
			
			ImagePreload.prototype.OnAbort = function() {   
				// 'this' pointer points to oImage Object
				this.bAbort = true;
				this.oImagePreload.OnComplete();
			}
			
			// IMAGE PRELOADER /\ /\ /\ 
				
