function relative_time(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 < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*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';
  }
}

var Twitterfeed = new Class({
	  
	  //implements
  Implements: [Options],

  //options
  options: {
    wrapper: null
  },
  
  //initialization
  initialize: function(options) {
    //set options
    this.setOptions(options);
    
    if(options.wrapper) {
    	this.options.wrapper = $(options.wrapper);
    }
  },
  
  //a method that does whatever you want
  parse: function(twitters) {
  	// Twitter update list beschikbaar?
  	if (!this.options.wrapper) return;            	
  	
	var template = this.options.wrapper.getElement('.tweet_template');          		
	if (!template) return;
	
	twitters.each(function(tweet) {
		// Kopie template
		var html = template.clone();
		
		// Zichtbaar maken
		html.setStyle('display','');     
		// class vervangen
		html.set('class','tweet');

		// Optionele elementen ophalen
		var usernameEl = html.getElement('.username');
		var textEl = html.getElement('.text');
		var dateEl = html.getElement('.date');

		// username replacen
		if (usernameEl) {
				usernameEl.set('text',tweet.user.screen_name);
		}			
		// text replacen
		if (textEl) {
			textEl.set('html',tweet.text.replace(
					/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,
					function(url) {
						return '<a href="' + url + '">' + url + '</a>';
					}).replace(
					/\B@([_a-z0-9]+)/ig,
					function(reply) {
						return reply.charAt(0)
								+ '<a href="http://twitter.com/'
								+ reply.substring(1) + '">'
								+ reply.substring(1) + '</a>';
					})
			);
		}
			
		// datum replacen
		if (dateEl) {
			dateEl.set('text',relative_time(tweet.created_at));
		}
				
		// Toevoegen aan update_list
		this.options.wrapper.adopt(html);        			
	}.bind(this));        	    
  }
  
}); 
