var sparqler = new SPARQL.Service("http://api.talis.com/stores/bbc-backstage/services/sparql");
	
// graphs and prefixes defined here
// are inherited by all future queries 
sparqler.setPrefix("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
sparqler.setPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#");

sparqler.setPrefix("dc", "http://purl.org/dc/elements/1.1/");
sparqler.setPrefix("foaf", "http://xmlns.com/foaf/0.1/");
sparqler.setPrefix("mo", "http://purl.org/ontology/mo/");
sparqler.setPrefix("po", "http://purl.org/ontology/po/");
sparqler.setPrefix("rel", "http://purl.org/vocab/relationship/");
sparqler.setPrefix("rev", "http://purl.org/stuff/rev#");
	
sparqler.setMethod("GET")
sparqler.setOutput("json");

function generateSubjectRelations(brand, div) {
	var query = sparqler.createQuery();
	query.query(
	  "SELECT ?categoryLabel ?relatedLabel WHERE { ?episode a po:Episode; po:masterbrand <" +brand + ">; po:category ?category; po:category ?related. ?category a po:Genre; rdfs:label ?categoryLabel. ?related a po:Genre; rdfs:label ?relatedLabel. FILTER (?category != ?related) } ORDER BY ?categoryLabel",	  
	  {
	  	failure: function() {
	  		alert("Failed to load subject-relations");
	  	},
	  	success: function(values) {
	       results = values["results"]["bindings"]
		   var nodes = new Object();
		   for (var i=0; i < results.length; i++) {
		   	   var binding = results[i];
		   	   var id = binding["categoryLabel"].value.replace(/ /g, "")
		   	   var node = nodes[id]		   	   
		   	   if (node == undefined) {
		   	   	node = new Object();
		   	   	node["id"] = id;
		   	   	node["text"] = binding["categoryLabel"].value
		   	   	node["connections"] = []
		   	   	
		   	   	nodes[id] = node
		   	   }
		   	   var relatedId = binding["relatedLabel"].value.replace(/ /g, "")  
		   	   node["connections"].push( relatedId  )		   	   		   	   		   	  
		   }
		   var relations = []
		   for (var x in nodes) {
		   	relations.push( nodes[x] );		   	
		   }
		   //alert(relations.length);
		   var wheel = new MooWheel(relations, $(div) );	  		
	  	}
	  }
	  
	);	
}

jQuery(document).ready( function() {
	generateSubjectRelations("http://www.bbc.co.uk/bbcone#service", "bbc-one-subject-relations");
	generateSubjectRelations("http://www.bbc.co.uk/bbctwo#service", "bbc-two-subject-relations");
	generateSubjectRelations("http://www.bbc.co.uk/bbcthree#service", "bbc-three-subject-relations");
	generateSubjectRelations("http://www.bbc.co.uk/bbcfour#service", "bbc-four-subject-relations");
 }
);

