if (typeof AY == "undefined" || !AY) {
    var AY = {};
}

AY.nodes = new Array();

AY.drawBelong = function(rootNodes){
	var node,branchNode;
	
	var html = new Array();
	for(var i=0;i<rootNodes.length;i++){
		node = rootNodes[i];
		
		//put into cache
		AY.nodes[node.name]=node;
		
		//parse html 
		html[html.length]='<div class="ay_root" id="'+node.name+'"><label class="ay_exp" onclick="AY.toggleBelongNode()"></label>';
		html[html.length]='<label class="ay_icon_5"></label>';
		html[html.length]='<span>';
		
		html[html.length]=node.label;
		html[html.length]='</span></div>';
		
		for(j=0;j<node.children.length;j++){
			branchNode = node.children[j];
			
			//put into cache
			AY.nodes[branchNode.name]=branchNode;
			html[html.length]='<div style="display:none" class="ay_node" id="'+branchNode.name+'">';
			
			html[html.length]=j>=node.children.length-1?'<span class="ay_cl"></span>':'<span class="ay_xl"></span>';
			html[html.length]='<span class="ay_line"></span><span class="ay_icon_4"></span>';
			html[html.length]='<span class="ay_rdata" onclick="memberClub('+branchNode.id+','+node.id+')" title="社员身份进入社团" onmouseover="AY.nodeStyle(1)" onmouseout="AY.nodeStyle(2)">';
			html[html.length]=branchNode.label;
			html[html.length]='</span>'
			html[html.length]='</div>';
		}
	}
	
	return html.join('');
}

AY.drawOwner = function(rootNodes){
	var node,branchNode;
	var html = new Array();
	for(var i=0;i<rootNodes.length;i++){
		node = rootNodes[i];
		
		//put into cache
		AY.nodes[node.name]=node;

		//parse html 
		html[html.length]='<div class="ay_root" id="'+node.name+'">';
		html[html.length]='<label class="ay_icon_'+node.type+'"></label>';
		
		html[html.length]='<span class="ay_link" onclick="leaderClub('+node.id+')" title="社长身份进入社团" onmouseover="AY.nodeStyle(1)" onmouseout="AY.nodeStyle(2)">';
		
		html[html.length]=node.label;
		html[html.length]='</span></div>';
	
		//parse children of node
		for(j=0;j<node.children.length;j++){
			branchNode = node.children[j];
			
			//put into cache
			AY.nodes[branchNode.name]=branchNode;
			
			//parse html
			html[html.length]='<div style="display:none" class="ay_node" id="'+branchNode.name+'">';
			if(branchNode.hasPreGame){
				html[html.length] = branchNode.hasNextGame?'<span class="ay_vl"></span>':'<span class="ay_space"></span>';
				html[html.length]='<span class="ay_sblank"></span>'
				html[html.length]='<span class="ay_blank"></span>';
			}else{
				html[html.length] = branchNode.hasNextGame?'<span class="ay_xl"></span>':'<span class="ay_cl"></span>';
				html[html.length]='<span class="ay_line"></span><label class="ay_icon_3"></label>';
				html[html.length]='<span class="ay_gdata" title="'+branchNode.data[0]+'">';
				html[html.length]=branchNode.data[0]+'.........................';
				html[html.length]='</span>';
			}
			
			if(branchNode.hasPreArea){
				html[html.length]=branchNode.hasNextArea?'<span class="ay_vl"></span>':'<span class="ay_space"></span>';
				html[html.length]='<span class="ay_mblank"></span>';
			}else{
				if(!branchNode.hasPreGame&&branchNode.hasNextArea)
					html[html.length]='<label class="ay_exp" onclick="AY.toggleNode(\''+branchNode.areas+'\')"></label>';
				else if(branchNode.hasNextArea)
					html[html.length]='<label class="ay_xl"></label>';
				else if(!branchNode.hasPreGame)
					html[html.length]='<label class="ay_hid"></label>';
				else
					html[html.length]='<label class="ay_cl"></label>';
				html[html.length]='<span class="ay_gdata" title="'+branchNode.data[1]+'">';
				html[html.length]=branchNode.data[1]+'...........................';
				html[html.length]='</span>';
			}

			if(branchNode.hasPreArea)
				html[html.length]='<label class="ay_cl"></label>';
			else if(branchNode.servers.length==0)
				html[html.length]='<label class="ay_hid"></label>';
			else
				html[html.length] ='<label class="ay_exp" onclick="AY.toggleNode(\''+branchNode.servers+'\')"></label>';
			html[html.length]='<span class="ay_sdata" title="'+branchNode.data[2]+'">';
			html[html.length]=branchNode.data[2];
			html[html.length]='</span>';
			
			html[html.length]='</div>';
		}//end of 2nd for
	}//end of 1st for
	
	return html.join('');
}

AY.toggleNode = function(data){
	var obj = window.event.srcElement;
	var action = obj.className=='ay_exp';
	
	if(action){
		obj.className='ay_hid';
		AY.expandNode(data);
	}else{
		obj.className='ay_exp';
		AY.hideNode(data,obj.id);
	}
}

AY.expandNode = function(str){
	var data = str.split(',');
	for(var i=0;i<data.length;i++){
		if(data[i].length==0) continue;
		$(data[i]).style.display = 'block';
	}
}

AY.hideNode = function(str,id){
	if(str.length==0) return;
	var data = str.split(',');	
	var node = AY.nodes[id];
	
	for(var i=0;i<data.length;i++){
		if(data[i].length==0) continue;
		$(data[i]).style.display = 'none';
		
		var btns = $(data[i]).getElementsByTagName('label');
		for(var j=0;j<btns.length;j++)
			if(btns[j].className=='ay_hid'&&btns[j].onclick){
				btns[j].className = 'ay_exp';
			}
		
		var tempNode = AY.nodes[data[i]];
		if(tempNode.areas.length>0)
			AY.hideNode(tempNode.areas,tempNode.id);
			
		if(tempNode.servers.length>0)
			AY.hideNode(tempNode.servers,tempNode.id);
	}
}

AY.toggleBelongNode = function(){
	var obj = window.event.srcElement;
	var action = obj.className=='ay_exp';

	var node = AY.nodes[obj.parentElement.id];

	if(action){
		obj.className='ay_hid';

		for(var i=0;i<node.children.length;i++)
			$(node.children[i].name).style.display='block';
	}else{
		obj.className='ay_exp';
			for(var i=0;i<node.children.length;i++)
				$(node.children[i].name).style.display='none';
	}
}

AY.nodeStyle = function(idx){
	var obj = window.event.srcElement;
	obj.style.color = idx==1?'green':'#373737';
	obj.style.textDecoration=idx==1?'underline':'none';
}