

var ousefulURL='';
var ousefulMode='tag';
var q='cck08';

function init(qin,mode){
	//http://pipes.yahoo.com/pipes/pipe.run?_id=cF0ZelUG3RGKl_4mCB2yXQ&_render=json&url=http%3A%2F%2Fwww.open.ac.uk%2F
	if ((mode=='user')||(mode=='tag')) ousefulMode=mode;
	q=qin;
	var s=document.createElement('script');
	//url=encodeURIComponent(url);
	var src='http://pipes.yahoo.com/pipes/pipe.run?_id=db338ef066056a2d8b0ccfa2eaf775e7&_render=json&_callback=parseJSON2&test';
	s.setAttribute('src',src);
	s.setAttribute('type','text/javascript');
	document.body.appendChild(s);
}

var ousefulTagList=new Array();
var ousefulUserList;

function tagDetails(tag){
	this.tag=tag;
	this.users=new Array();
}

function userDetails(user){
	this.user=user;
	this.refs=new Array();
}

function createUserList(json_data, src){
	ousefulUserList=new Array();
	var il=json_data.value.items.length;
	for (var i=0;i<il;i++){
	  var item=json_data.value.items[i];
	  if (item.source==src){
		var user=item.authorName;
		var inList=false;
		for (k=0;k<ousefulUserList.length;k++){
			if (ousefulUserList[k].user==user){
				inList=true;
				ousefulUserList[k].refs[ousefulUserList[k].refs.length]=item.title;
				k=ousefulUserList.length;
			}
		}
		if (!(inList)) {
			var tl=ousefulUserList.length;
			ousefulUserList[tl]=new userDetails(user);
			ousefulUserList[tl].refs[0]=item.title;
		}
	  }
	}
}

function createTagList(json_data){
	var il=json_data.value.items.length;
	for (var i=0;i<il;i++){
		var item=json_data.value.items[i];
		var inList=false;
		if (item.tags!=undefined){
			var tags=new Array();
			tags=item.tags.split(' ');
			for (j=0;j<tags.length;j++){
				inList=false;
				for (k=0;k<ousefulTagList.length;k++){
					if (ousefulTagList[k].tag==tags[j]){
						inList=true;
						ousefulTagList[k].users[ousefulTagList[k].users.length]=item.authorName;
						k=ousefulTagList.length;
					}
				}
				if (!(inList)) {
					var tl=ousefulTagList.length;
					ousefulTagList[tl]=new tagDetails(tags[j]);
					ousefulTagList[tl].users[0]=item.authorName;
				}
			}
		}
	}
}

var ousefulIDcount=0;
var ousefulIDcount2='tag0';

function createJSONitemNode(n,pn,r,tags){
	var jitem={"id":ousefulIDcount2,"name":n,"data":[{"key":pn,"value":r}],"children":getJSONtagSet(tags,n)}; //getJSONtagSet(tags,n)
	return jitem;
}

function createJSONrefsNode(n,pn,r,refs){
	var jitem={"id":ousefulIDcount2,"name":n,"data":[{"key":pn,"value":r}],"children":getJSONrefSet(refs,n)}; //getJSONtagSet(tags,n)
	return jitem;
}

function createJSONtitleNode(n,pn,r,title){
	var jitem={"id":ousefulIDcount2,"name":n,"data":[{"key":pn,"value":r}],"children":createJSONtitleLeaf(title,pn,'blog post')}; //getJSONtagSet(tags,n)
	return jitem;
}

function createJSONtitleTypeNode(n,pn,r,title){
	var jitem={"id":ousefulIDcount2,"name":n,"data":[{"key":pn,"value":r}],"children":createJSONtitleLeaf(title,pn,'blog post')}; //getJSONtagSet(tags,n)
	return jitem;
}


function createJSONtitleLeaf(n,pn,r){
	var titleLeaf=new Array();
	ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
	titleLeaf[0]={"id":ousefulIDcount2,"name":n,"data":[{"key":pn,"value":r}],"children":[]};
	return titleLeaf;
}

function createJSONitemNode2(n,pn,r,users){
	var jitem={"id":ousefulIDcount2,"name":n,"data":[{"key":pn,"value":r}],"children":getJSONauthorSet(users,n)}; //getJSONauthorSet(users,n)
	return jitem;
}

function createJSONitemLeaf(n,pn,r){
	var jitem={"id":ousefulIDcount2,"name":n,"data":[{"key":pn,"value":r}],"children":[]};
	return jitem;
}

function getJSONtagSet(tags,pn){
	var tagleaves=new Array();
	if (tags!=undefined) {
		tags=tags.split(' ');
		for (var i=0;i<tags.length;i++){
			ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
			tagleaves[i]=createJSONitemLeaf(tags[i],pn,'using tag');
		}
	}
	return tagleaves;
}

function getJSONrefSet(refs,pn){
	var refleaves=new Array();
	for (var i=0;i<refs.length;i++){
		ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
		refleaves[i]=createJSONitemLeaf(refs[i],pn,'reference');
	}
	return refleaves;
}

function getJSONauthorSet(users,pn){
	var userleaves=new Array();
	for (var i=0;i<users.length;i++){
		ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
		userleaves[i]=createJSONitemLeaf(users[i],pn,'bookmarked by');
	}
	return userleaves;
}

function getJSONsociurlSetTree(json_data){
	var set=new Array();
	var il=json_data.value.items.length;
	var j=0;
	for (var i=0;i<il;i++){
		var item=json_data.value.items[i];
		if (item.source=='delicious') {
			ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
			var n=item.author;
			//set[i]=createJSONitemLeaf(i+1,n,'test1','bookmarked by');
			set[j]=createJSONitemNode(n,ousefulURL,'bookmarked by',item.tags);
			j++;
		} else if (item.source=='gblogsearch') {
			ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
			var n=item.author;
			set[j]=createJSONtitleNode(n,ousefulURL,'blog post',item.title);
			j++;
		}
	}
	//set[0]=createJSONitemLeaf('2','newtest2','test1','tagged');
	//set[1]=createJSONitemLeaf('3','newtest3','test1','tagged');
	return set;
}

function getJSONauthorSetTree(json_data){
	var set=new Array();
	var src;
	var il=json_data.value.items.length;
	for (var i=0;i<il;i++){
		ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
		var item=json_data.value.items[i];
		var n=item.author;
		//set[i]=createJSONitemLeaf(i+1,n,'test1','bookmarked by');
		src=item.source;
		set[i]=createJSONitemNode(n,ousefulURL,'via '+src,item.tags);
	}
	//set[0]=createJSONitemLeaf('2','newtest2','test1','tagged');
	//set[1]=createJSONitemLeaf('3','newtest3','test1','tagged');
	return set;
}


function getJSONtagSetTree(json_data){
	createTagList(json_data);//alert(ousefulTagList[1].tag+ousefulTagList[1].users[0])
	var set=new Array();
	var il=	ousefulTagList.length;
	for (var i=0;i<il;i++){
		ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
		var item=ousefulTagList[i];
		var n=item.tag;
		set[i]=createJSONitemNode2(n,ousefulURL,'using tag',item.users);
	}
	return set;
}

function deliSet(json_data){
	var set=new Array();
	var il=json_data.value.items.length;
	var j=0;
	for (var i=0;i<il;i++){
		var item=json_data.value.items[i];
		if (item.source=='delicious'){
			ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
			src=item.source; var n=item.authorName;
			set[j]=createJSONtitleNode(n,'deliTag','via '+src,item.title);
			j++;
		}
	}	
	return set;
}

function twitterUserSet(json_data){
	var set=new Array();
	createUserList(json_data, 'twitter');
	var il=json_data.value.items.length;
	var j=0;
	var ul=ousefulUserList.length;
	for (var i=0;i<ul;i++){
		ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
		set[i]=createJSONrefsNode(ousefulUserList[i].user,'twitterTag','by '+ousefulUserList[i].user,ousefulUserList[i].refs)
	}
	return set;
}


function deliUserSet(json_data){
	var set=new Array();
	createUserList(json_data, 'delicious');
	var il=json_data.value.items.length;
	var j=0;
	var ul=ousefulUserList.length;
	for (var i=0;i<ul;i++){
		ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
		set[i]=createJSONrefsNode(ousefulUserList[i].user,'deliTag','by '+ousefulUserList[i].user,ousefulUserList[i].refs)
	}
	return set;
}


function newUserSet(json_data, src, tag){
	var set=new Array();
	createUserList(json_data, src);
	var il=json_data.value.items.length;
	var j=0;
	var ul=ousefulUserList.length;
	for (var i=0;i<ul;i++){
		ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
		set[i]=createJSONrefsNode(ousefulUserList[i].user,tag,'by '+ousefulUserList[i].user,ousefulUserList[i].refs)
	}
	return set;
}


function technoratiSet(json_data){
	var set=new Array();
	var il=json_data.value.items.length;
	var j=0;
	for (var i=0;i<il;i++){
		var item=json_data.value.items[i];
		if (item.source=='technorati'){
			ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
			src=item.source; var n=item.authorName;
			set[j]=createJSONtitleNode(n,'technoratiTag','via '+src,item.title);
			j++;
		}
	}	
	return set;
}

function twitterSet(json_data){
	var set=new Array();
	var il=json_data.value.items.length;
	var j=0;
	for (var i=0;i<il;i++){
		var item=json_data.value.items[i];
		if (item.source=='twitter'){
			ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
			src=item.source; var n=item.authorName;
			set[j]=createJSONtitleNode(n,'twitterTag','via '+src,item.title);
			j++;
		}
	}
	return set;
}

function gblogSet(json_data){
	var set=new Array();
	var il=json_data.value.items.length;
	var j=0;
	for (var i=0;i<il;i++){
		var item=json_data.value.items[i];
		if (item.source=='gblogsearch'){
			ousefulIDcount++;ousefulIDcount2='tag'+ousefulIDcount;
			src=item.source; var n=item.authorName;
			set[j]=createJSONtitleNode(n,'gblogTag','via '+src,item.title);
			j++;
		}
	}
	return set;
}

function quadPlay(json){
	var set=new Array();
	set[set.length]={"id":'delitag',"name":'deliTag',"data":[{"key":q,"value":'delicious'}],"children":deliUserSet(json)};//getJSONauthorSetTree(json);//deliSet(json);
	//set[set.length]={"id":'twittertag',"name":'twitterTag',"data":[{"key":'eduPunk',"value":'twitter'}],"children":twitterUserSet(json)};
	set[set.length]={"id":'twittertag',"name":'twitterTag',"data":[{"key":q,"value":'twitter'}],"children":newUserSet(json,'twitter','twitterTag')};
//	set[set.length]={"id":'technoratitag',"name":'twitterTag',"data":[{"key":'eduPunk',"value":'technorati'}],"children":newUserSet(json,'technorati','technoratiTag')};
//	set[set.length]={"id":'gblogtag',"name":'gblogTag',"data":[{"key":'eduPunk',"value":'gblog'}],"children":newUserSet(json,'gblog','gblogTag')};

	/*
	set[1]={"id":'technoratitag',"name":'technoratiTag',"data":[{"key":'eduPunk',"value":'technorati'}],"children":technoratiSet(json)}
	set[2]={"id":'twittertag',"name":'twitterTag',"data":[{"key":'eduPunk',"value":'twitter'}],"children":twitterSet(json)};
	set[3]={"id":'gblogtag',"name":'gblogTag',"data":[{"key":'eduPunk',"value":'gblog'}],"children":gblogSet(json)};
	//*/
	return set;//deliSet(json);
}


function parseJSON2(json){
	//json={"id":"tsgr","name":ousefulURL,"children":getJSONsociurlSetTree(json),"data":[]};
	if (ousefulMode!='tag') json={"id":"tsgr","name":q,"children":quadPlay(json),"data":[]};//getJSONauthorSetTree(json),"data":[]};
	init2(json);
}

function parseJSON(json){
	//var json={"id":"1","name":"test1","children":[{"id":"2","name":"test2","data":[{"key":"test1","value":"is tagged as"}],"children":[]},{"id":"3","name":"test3","data":[],"children":[]}],"data":[]}
	//var json={"id":"347_0","name":"Nine Inch Nails","children":[{"id":"126510_1","name":"Jerome Dillon","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"52163_2","name":"Howlin' Maggie","data":[{"key":"Jerome Dillon","value":"member of band"}],"children":[]},{"id":"324134_3","name":"nearLY","data":[{"key":"Jerome Dillon","value":"member of band"}],"children":[]}]},{"id":"173871_4","name":"Charlie Clouser","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[]},{"id":"235952_5","name":"James Woolley","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[]},{"id":"235951_6","name":"Jeff Ward","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"2382_7","name":"Ministry","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]},{"id":"2415_8","name":"Revolting Cocks","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]},{"id":"3963_9","name":"Pigface","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]},{"id":"7848_10","name":"Lard","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]}]},{"id":"235950_11","name":"Richard Patrick","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"1007_12","name":"Filter","data":[{"key":"Richard Patrick","value":"member of band"}],"children":[]},{"id":"327924_13","name":"Army of Anyone","data":[{"key":"Richard Patrick","value":"member of band"}],"children":[]}]},{"id":"2396_14","name":"Trent Reznor","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"3963_15","name":"Pigface","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]},{"id":"32247_16","name":"1000 Homo DJs","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]},{"id":"83761_17","name":"Option 30","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]},{"id":"133257_18","name":"Exotic Birds","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]}]},{"id":"36352_19","name":"Chris Vrenna","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"1013_20","name":"Stabbing Westward","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"3963_21","name":"Pigface","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"5752_22","name":"Jack Off Jill","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"33602_23","name":"Die Warzau","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"40485_24","name":"tweaker","data":[{"key":"Chris Vrenna","value":"is person"}],"children":[]},{"id":"133257_25","name":"Exotic Birds","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]}]},{"id":"236021_26","name":"Aaron North","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[]},{"id":"236024_27","name":"Jeordie White","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"909_28","name":"A Perfect Circle","data":[{"key":"Jeordie White","value":"member of band"}],"children":[]},{"id":"237377_29","name":"Twiggy Ramirez","data":[{"key":"Jeordie White","value":"is person"}],"children":[]}]},{"id":"235953_30","name":"Robin Finck","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"1440_31","name":"Guns N' Roses","data":[{"key":"Robin Finck","value":"member of band"}],"children":[]}]},{"id":"235955_32","name":"Danny Lohner","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"909_33","name":"A Perfect Circle","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"1695_34","name":"Killing Joke","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"1938_35","name":"Methods of Mayhem","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"5138_36","name":"Skrew","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"53549_37","name":"Angkor Wat","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"113510_38","name":"Puscifer","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"113512_39","name":"Renhold\u00ebr","data":[{"key":"Danny Lohner","value":"is person"}],"children":[]}]}],"data":[]};
	
	//if (ousefulMode!='user') json={"id":"tagroot","name":ousefulURL,"children":getJSONtagSetTree(json),"data":[]};
	//else json={"id":"tsgr","name":ousefulURL,"children":getJSONauthorSetTree(json),"data":[]};
	if (ousefulMode!='tag') json={"id":"tsgr","name":q,"children":getJSONauthorSetTree(json),"data":[]};
	//createTagList(json_data);
	init2(json);
}

function init2(json) {

  var Log = {
	elem: $('log'),
	write: function(text) {
		this.elem.setHTML(text);
	}
  };
	Infovis.initLayout();
	//var json ={"id":"347_0","name":"Nine Inch Nails","children":[{"id":"126510_1","name":"Jerome Dillon","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"52163_2","name":"Howlin' Maggie","data":[{"key":"Jerome Dillon","value":"member of band"}],"children":[]},{"id":"324134_3","name":"nearLY","data":[{"key":"Jerome Dillon","value":"member of band"}],"children":[]}]},{"id":"173871_4","name":"Charlie Clouser","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[]},{"id":"235952_5","name":"James Woolley","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[]},{"id":"235951_6","name":"Jeff Ward","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"2382_7","name":"Ministry","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]},{"id":"2415_8","name":"Revolting Cocks","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]},{"id":"3963_9","name":"Pigface","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]},{"id":"7848_10","name":"Lard","data":[{"key":"Jeff Ward","value":"member of band"}],"children":[]}]},{"id":"235950_11","name":"Richard Patrick","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"1007_12","name":"Filter","data":[{"key":"Richard Patrick","value":"member of band"}],"children":[]},{"id":"327924_13","name":"Army of Anyone","data":[{"key":"Richard Patrick","value":"member of band"}],"children":[]}]},{"id":"2396_14","name":"Trent Reznor","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"3963_15","name":"Pigface","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]},{"id":"32247_16","name":"1000 Homo DJs","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]},{"id":"83761_17","name":"Option 30","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]},{"id":"133257_18","name":"Exotic Birds","data":[{"key":"Trent Reznor","value":"member of band"}],"children":[]}]},{"id":"36352_19","name":"Chris Vrenna","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"1013_20","name":"Stabbing Westward","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"3963_21","name":"Pigface","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"5752_22","name":"Jack Off Jill","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"33602_23","name":"Die Warzau","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]},{"id":"40485_24","name":"tweaker","data":[{"key":"Chris Vrenna","value":"is person"}],"children":[]},{"id":"133257_25","name":"Exotic Birds","data":[{"key":"Chris Vrenna","value":"member of band"}],"children":[]}]},{"id":"236021_26","name":"Aaron North","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[]},{"id":"236024_27","name":"Jeordie White","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"909_28","name":"A Perfect Circle","data":[{"key":"Jeordie White","value":"member of band"}],"children":[]},{"id":"237377_29","name":"Twiggy Ramirez","data":[{"key":"Jeordie White","value":"is person"}],"children":[]}]},{"id":"235953_30","name":"Robin Finck","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"1440_31","name":"Guns N' Roses","data":[{"key":"Robin Finck","value":"member of band"}],"children":[]}]},{"id":"235955_32","name":"Danny Lohner","data":[{"key":"Nine Inch Nails","value":"member of band"}],"children":[{"id":"909_33","name":"A Perfect Circle","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"1695_34","name":"Killing Joke","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"1938_35","name":"Methods of Mayhem","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"5138_36","name":"Skrew","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"53549_37","name":"Angkor Wat","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"113510_38","name":"Puscifer","data":[{"key":"Danny Lohner","value":"member of band"}],"children":[]},{"id":"113512_39","name":"Renhold\u00ebr","data":[{"key":"Danny Lohner","value":"is person"}],"children":[]}]}],"data":[]};
	Config.drawMainCircle = true;
	var canvas= new Canvas('infovis', '#ddd', '#ddd');
	var ht= new Hypertree(canvas);
    var effectHash = {};
    //Add a controller to assign the node's name to the created label.
	ht.controller = {
	
	onBeforeCompute: function(node) {
  		Log.write("centering");
  	},
	
  	getName: function(node1, node2) {
  		for(var i=0; i<node1.data.length; i++) {
  			var dataset = node1.data[i];
  			if(dataset.key == node2.name) return dataset.value;
  		}
  		
		for(var i=0; i<node2.data.length; i++) {
  			var dataset = node2.data[i];
  			if(dataset.key == node1.name) return dataset.value;
  		}
  	},
		
  	onCreateLabel: function(domElement, node) {
  		$(domElement).setHTML(node.name).addEvents({

	//Call the "onclick" method from the hypertree to move the hypertree correspondingly.
	//This method takes the native event object. Since Mootools uses a wrapper for this 
	//event, I have to put e.event to get the native event object.
			'click': function(e) {
				ht.onClick(e.event);
			}
  		});
  		
  		var d = $(domElement);
  		effectHash[node.id] = new Fx.Tween(d, 'opacity', {duration:300, transition:Fx.Transitions.linear, wait:false});
  		d.setOpacity(0.8);
  		d.set('html', node.name).addEvents({
  			'mouseenter': function() {
  				effectHash[node.id].start(0.8, 1);
  			},
  			
  			'mouseleave': function() {
  				effectHash[node.id].start(1, 0.8);
  			}
  		});
  		
  	 },
  	 
  	//Take the left style property and substract half of the label actual width.
  	onPlaceLabel: function(tag, node) {
  		var width = tag.offsetWidth;
  		var intX = tag.style.left.toInt();
  		intX -= width/2;
  		tag.style.left = intX + 'px';
  	},
  	
  	onAfterCompute: function() {
  		Log.write("done");
  		var node = GraphUtil.getClosestNodeToOrigin(ht.graph, "pos");
  		var _self = this;
  		var html = "<h4>" + node.name + "</h4><b>Connections:</b>";
  		html += "<ul>";
 		GraphUtil.eachAdjacency(ht.graph, node, function(child) {
 			if(child.data && child.data.length > 0) {
 				html += "<li>" + child.name + " " + "<div class=\"relation\">(relation: " + _self.getName(node, child) + ")</div></li>";
 			}
 		});
 		html+= "</ul>";
  		$('inner-details').set("html", html);
  	}
  	
   };
  
	ht.loadTreeFromJSON(json);
	ht.compute();
	ht.plot();
	ht.prepareCanvasEvents();
	ht.controller.onAfterCompute();
}
