/*
	Plugin:   	TwitterGitter
	Author:   	David Walsh
	Website:    http://davidwalsh.name
	Date:     	2/21/2009
*/

var TwitterGitter = new Class({

	//implements
	Implements: [Options,Events],

	//options
	options: {
		count: 2,
		sinceID: 1,
		link: true,
		onRequest: $empty,
		onComplete: $empty
	},
	
	//initialization
	initialize: function(username,options) {
		//set options
		this.setOptions(options);
		this.info = {};
		this.username = username;		
	},
	
	//get it!
	retrieve: function() {
		new JsonP(
			'http://twitter.com/statuses/user_timeline/' + this.username + '.json',
			{
				data: {
					count: this.options.count,
					since_id: this.options.sinceID,
					// Make sure we dont get cached
					rand: Math.random()
				},
				onRequest: this.fireEvent('request'),
				onComplete: function(data) {
					//linkify?
					if(this.options.link) {
						data.each(
							function( tweet ) 
							{ 
								tweet.text = this.linkify(tweet.text); 
							},
							this
						);
					}
					//complete!
					this.fireEvent('complete',[data,data[0].user]);
				}.bind(this)
			}
		).request();
		return this;
	},
	
	//format
	linkify: function(text) {
		//courtesy of Jeremy Parrish (rrish.org)
		return text.replace(/(https?:\/\/\S+)/gi,'<a href="$1">$1</a>').replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>').replace(/(^|\s)#(\w+)/g,'$1#<a href="http://search.twitter.com/search?q=%23$2">$2</a>');
	}
});

