			
			var currentItem = null;
			var currentItemPath = null;
			
			getItemClickHandler = function(path){
				var path = path;
				
				var url = '/api/itemDetail.php';
				var params = 'path=' + path;
				
				var targetElem = $('itemDetail');
				
				return function(){
					if (targetElem.className == path) {
						return false;
					}
					
					if (currentItem != null) {
						currentItem.className = currentItem.className.replace(/\s*current_item\s*/," ");
					}
					currentItem = $('item:' + path);
					currentItem.className+= ' current_item';
					currentItemPath = path;
					
					var myAjax = new Ajax.Request(
						url, 
						{
							method: 'get', 
							parameters: params, 
							onComplete: function(xmlObject){
								
								var wrap = document.createElement('div');
								document.getElementsByTagName('body')[0].appendChild(wrap);
								
								targetElem.className = path;
								targetElem.innerHTML = xmlObject.responseText;
					
							}
						}
					);
					
					return false;
				};
			};
			
		
		nodeInit = function(node){
			var node;
			
			var nodeLink = node.getElementsByTagName('a')[0];
			
			
			var appendNodeItems = function(nodeArray,itemArray){
				if (nodeArray) {
					node.nodeContainer = buildNodeContainer(nodeArray);
					node.appendChild(node.nodeContainer);
				}
				
				if (itemArray) {
					node.itemContainer = buildItemContainer(itemArray);
					node.appendChild(node.itemContainer);
				}
				
			};
			
			
			var buildNodeContainer = function(nodeArray){
				var nodeContainer = document.createElement('div');
				nodeContainer.className = 'nodes';
				nodeArray.each( function(nodeValues){
					
					var nodeElem = document.createElement('div');
					var nodeLinkElem = document.createElement('a');
					nodeElem.appendChild(nodeLinkElem);
					
					nodeElem.id = 'node:'+ nodeValues['path'];
					nodeElem.className = 'node';
					
					nodeLinkElem.href = '#';
					
					
					nodeLinkElem.className = 'nodeLink';
					nodeLinkElem.innerHTML = nodeValues['title'];
					
					nodeContainer.appendChild(nodeElem);
					
					if (nodeValues['hasNewItem']) {
						nodeLinkElem.className += ' hasNewItem';
					}
					
					if (nodeValues['hasUpdateItem']) {
			//			nodeLinkElem.className += ' hasUpdateItem';
			//			
			//			var moveTarget = nodeElem.firstChild;
			//			var moveInc     = 1.5;
			//			var moveTick    = 500; //msec
			//			
			//			moveTarget.style.position = 'relative';
			//			setInterval(function(){
			//				moveTarget.style.left = Math.round((Math.random() -0.5) * moveInc);
			//				moveTarget.style.top  = Math.round((Math.random() -0.5) * moveInc);
			//			}, 140);
			//			
			//			
			//		
					}
					
					nodeInit(nodeElem);
				});
				return nodeContainer;
			};
			
			var buildItemContainer = function(itemArray){
				var itemContainer = document.createElement('div');
				itemContainer.className = 'items';
				itemArray.each( function(itemValues){
					var itemElem = document.createElement('div');
					var itemLinkElem = document.createElement('a');
					var itemImageElem = document.createElement('img');
					
					itemElem.id = 'item:'+ itemValues['path'];
					itemElem.className = 'item '+itemValues['item_type'];
					if (currentItemPath == itemValues['path']) {
						itemElem.className += ' current_item';
					}
					
					if (itemValues['item_type'] == 'swf') {
						itemImageElem.src = '/img/ico_swf.gif';
					} else {
						itemImageElem.src = itemValues['item_url'] + '&w=25';
					}
					
						
					itemLinkElem.className = 'itemLink';
					itemLinkElem.href = '#';
					itemLinkElem.onclick = getItemClickHandler(itemValues['path']);
					
					
					itemLinkElem.onfocus = function(){itemLinkElem.blur();};
					
					
					
				
					itemLinkElem.appendChild(itemImageElem);
					itemElem.appendChild(itemLinkElem);
					
					itemLinkElem.innerHTML += itemValues['title'];
					
					itemContainer.appendChild(itemElem);
					
					
					if (itemValues['newItem']) {
						itemElem.className += ' newItem';
						
						var fadeTarget = itemElem.firstChild.firstChild;
						var fadeOpacity = 100;
						var fadeInc     = 22;
						var fadeTick    = 140; //msec
						
						fadeTarget.zoom = 1;
						
						if (fadeTarget.filters) {
							fadeTarget.style.filter = 'alpha(opacity='+fadeOpacity+')';
							setInterval(function(){
								if ((fadeOpacity -= fadeInc) < -100) { fadeOpacity = 100;}
								fadeTarget.filters['alpha'].opacity = Math.abs(fadeOpacity);
							}, fadeTick);
						} else {
							setInterval(function(){
								if ((fadeOpacity -= fadeInc) < -100) { fadeOpacity = 100;}
								fadeTarget.style.opacity = fadeTarget.style.MozOpacity = Math.abs(fadeOpacity) / 100;
							}, fadeTick);
						}
							
					}
					
					if (itemValues['updateItem']) {
						itemElem.className += ' updateItem';
				//		
				//		var moveTarget = itemElem.firstChild.firstChild;
				//		var moveInc     = 1.5;
				//		var moveTick    = 500; //msec
				//		
				//		moveTarget.style.position = 'relative';
				//		setInterval(function(){
				//			moveTarget.style.left = Math.round((Math.random() -0.5) * moveInc);
				//			moveTarget.style.top  = Math.round((Math.random() -0.5) * moveInc);
				//		}, 140);
				//		
						
					}
					
				});
				return itemContainer;
			};
			
		
			var nodeOpen = function(){
				
				var url = '/api/nodeSearch.php';
				var nodePath = node.id.split(':',2)[1];
				var params = 'np=' + encodeURIComponent(nodePath) + '&type=json';

				url = '/api/nodeSearch.php?' + params;
								
				Ticoma_JsonRequest(
					{
					url:url,
					callback:'callback',
					timeout:1,
					onSuccess:function(obj){
						appendNodeItems(obj['nodes'], obj['items']);
						}
					}
				);
				
				return false;
			};
			
			
			var nodeOpenHandler = function() {
				
				nodeLink.blur();
				nodeLink.onclick = nodeCloseHandler;
				nodeLink.href='javascript:void(0)';
				nodeLink.className = nodeLink.className.replace(/\s+close\s*/, '') + ' open';
				
				
				node['active'] = true;
				nodeOpen(node);
				return false;
			};
			
			var nodeCloseHandler = function() {
				
				nodeLink.blur();
				nodeLink.onclick = nodeOpenHandler;
				nodeLink.href='javascript:void(0)';
				nodeLink.className = nodeLink.className.replace(/\s+open\s*/, '') + ' close';
				
				
				if (node['nodeContainer']) {
					node.removeChild(node['nodeContainer']);
				}
				if (node['itemContainer']) {
					node.removeChild(node['itemContainer']);
				}
				
				node['active'] = false;
				return false;
			};
			
			var nodeHandler = function(){
				
				
				if (node['active']) {
					if (node['nodeContainer']) {
						node.removeChild(node['nodeContainer']);
					}
					if (node['itemContainer']) {
						node.removeChild(node['itemContainer']);
					}
					
					node['active'] = false;
				} else {
					node['active'] = true;
					nodeOpen();
				}
				
				return false;
			};
			
			
			nodeLink.onclick = nodeOpenHandler;
		};
		
		
//	
//		function setEventListener(target, type, func/* useCapture = false */){
//			if (target.attachEvent) {
//				target.attachEvent('on' + type, func);
//			} else if (target.addEventListener) {
//				var useCapture = arguments[3] || false;
//				target.addEventListener(type, func, useCapture);
//			} else {
//				target['on' + type] = func;
//			}
//		}
//		
//		function unsetEventListener(target, type, func/* useCapture = false */){
//			if (target.dettachEvent) {
//				target.dettachEvent('on' + type, func);
//			} else if (target.removeEventListener) {
//				var useCapture = arguments[3] || false;
//				target.removeEventListener(type, func, useCapture);
//			} else {
//				delete(target['on' + type] = func);
//			}
//		}

		
//Event.observe(window, 'load',
setEventListener(window, 'load',
	function(){
		var treeRoot = $('treeRoot');
		var nodeElems = treeRoot.childNodes;
		var len = nodeElems.length;
		for(var i = 0; i < len; i++) {
			var elem = nodeElems[i];
			if (elem['className'] == 'node') {
				nodeInit(elem);
			}
		}
		
				
//		$('logo').onclick = getItemClickHandler(encodeURIComponent('/MOVIE/GRAFICTION'));
	}
,false);

