		/**
		*	Load the feedlist
		*	@param {None}
		*	@return 
		*/
		var loadFeedsListener = new Object();
		var instance = this;
		var global_reference_to_this;
		
		function onLoad(obj){
			global_reference_to_this.onLoad(obj);
		}
		
		function jsonFlickrFeed(obj){
			global_reference_to_this.onLoad(obj);
		}
		/**
		 * Called when the manager wants to notify you of a significant process
		 * @param {Object} loaderManagerErrorObject
		 */
		loadFeedsListener.onOperationError = function(loaderManagerErrorObject){
			outputStr = loaderManagerErrorObject.description;
			//instance.updateScreen(outputStr)
		}
		
		/**
		 * Called when data is received from a process
		 * @param {Object} loaderManagerObject
		 */
		loadFeedsListener.onData = function(loaderManagerObject){
			outputStr = loaderManagerObject.data.id + " : " + loaderManagerObject.data.success + "; " + loaderManagerObject.data.content;
			
			
			if(loaderManagerObject.data.success){
				if(loaderManagerObject.data.id == "olympicstwitter"){
						instance.olympicstwitter.showTwitter(loaderManagerObject.data.content);
				}		
			}
			else{
				//handle error
				if(loaderManagerObject.data.id == "olympicstwitter"){ 
					instance.olympicstwitter.noTwitter();
					
				}
			}
					
		}
		
		/**
		 * Handle clean-up
		 * @param {Object} loadManagerObject
		 */
		loadFeedsListener.onComplete = function(loadManagerObject){
			outputStr = "Operation Complete";
			feedsLoader.cancelTimer();
			feedsLoader.removeListener(this);
		}
			
		var feedsLoader = new newsi.JsodLoadManager(
			new Array(
{url:"http://news.bbc.co.uk/sol/shared/bsp/hi/olympics2008/map/data/latest.json?callback=onLoad&count=1",name:"olympicstwitter",callback:"onLoad"}
),
				5, 
				10, 
				true,
				false
			);

		feedsLoader.addListener(loadFeedsListener);
		
 
		function updateScreen(outputStr){
			document.getElementById("debug_output").innerHTML += outputStr + "<br />";
		}
		
		//////////////////////////////////////////////////////////////////////////////////  81047161@N00
		
		
		
		function jsonDisplay(){
			this.dom=new newsi.HTML.DOM();
		};
		
		olympicstwitter=new jsonDisplay();
		
		jsonDisplay.prototype.removeElement = function(el){
			var d = this.dom.gebid(el);
			d.parentNode.removeChild( d );
		}
		
		
		/* ###############################################################################  TWITTER */
		
		jsonDisplay.prototype.showTwitter = function(obj){
		
			var parseTwitterDateString = function(dateString) {
					var splitDate = dateString.split(" ");
					var ieDateString = splitDate[0] + ", " + splitDate[2] + " " + splitDate[1] + " " + splitDate[5] + " " + splitDate[3] + " " + splitDate[4];
					return new Date(ieDateString);
			}


			// Pick a date that's really far in the past
			var currentLatestDate = new Date("Fri, 11 Jul 2000 06:00:00 +0000");
			
			// You should set this to your array of twitter posts
			var allTwitterPosts = obj;
			
			// Default values
			var latestTwitterPostIndex = 0;
			var latestTwitterPost = null;
			
			// Loop through each post
			// in the feed
			for(var i = 0; i < allTwitterPosts.length; i++) {
			  // Grab the date string from the twitter post
			  // and run it through the parseTwitterDateString function
			  // which will return a date object
			  var postDate = parseTwitterDateString( allTwitterPosts[i].created_at );
			 
			  // See if this post is earlier than the earliest twitter
			  // post we've found so far
			  if( postDate.getTime() > currentLatestDate.getTime() ) {
			    //change current date to be new value
			    currentLatestDate = postDate;
			    // If it is then we set a variable to 
			    // remember where this post is in the array
			    latestTwitterPostIndex = i;
			   
			  }
			}
			
			// When the loop is finished, grab the earliest post
			// that we've found
			latestTwitterPost = allTwitterPosts[latestTwitterPostIndex];
					
		
			var slot=this.dom.gebid("twitter");// Check the div is on the page
			if(slot==null) return;
			
			var id = obj[0].user.id;
			this.dom.gebid("twitter_status").innerHTML = latestTwitterPost.text;
			this.dom.gebid("twitter_time").innerHTML = this.relative_time(latestTwitterPost.created_at);
			this.author_name(latestTwitterPost.user.screen_name)
			
			/* Complete - remove script tag from head */
			this.removeElement("feedId_olympicstwitter");

			
		}
		
		jsonDisplay.prototype.relative_time = function(time_value) {
		    var values = time_value.split(" ");
		    time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
		    var parsed_date = Date.parse(time_value);
		    var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
		    var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
		    delta = delta + (relative_to.getTimezoneOffset() * 60);
		    
		    
		
		    if (delta < 60) {
		      return 'less than a minute ago';
		    } else if(delta < 120) {
		      return 'about a minute ago';
		    } else if(delta < (45*60)) {
		      return (parseInt(delta / 60)).toString() + ' minutes ago';
		    } else if(delta < (90*60)) {
		      return 'about an hour ago';
		    } else if(delta < (24*60*60)) {
		      return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
		    } else if(delta < (48*60*60)) {
		      return '1 day ago';
		    } else {
		      return (parseInt(delta / 86400)).toString() + ' days ago';
		    }
		 }
  		
  		jsonDisplay.prototype.author_name = function(name_value){
  			var names = name_value;
  			var claire = '<a href="http://twitter.com/bbcsport_claire">Read all Claire Stocks\' Twitter</a>';
  			var matt = '<a href="http://twitter.com/bbcsport_matt">Read all Matt Slater\'s Twitter</a>';
  			var tom = '<a href="http://twitter.com/bbcsport_tom">Read all Tom Fordyce\'s Twitter</a>';
  			var theclass = this.dom.gebid("author_name");
  			this.dom.setClass({el:theclass, className:names});
  			
  			if(names == "bbcsport_claire"){
  				this.dom.gebid("twitter_link").innerHTML = claire;
  			}else if(names == "bbcsport_matt"){
  				this.dom.gebid("twitter_link").innerHTML = matt;
  			}else if(names == "bbcsport_tom"){
  				this.dom.gebid("twitter_link").innerHTML = tom;
  			}
  			
  		}
  		
		jsonDisplay.prototype.noTwitter = function(){
			var slot=this.dom.gebid("twitter");// Check the div is on the page
			if(slot==null) return;
			
			this.dom.gebid("twitter_status").innerHTML = "This content is temporarily unavailable. Please try again later";
			this.dom.gebid("twitter_time").innerHTML = "unavailable";
		}
