(function($){

$.fn.twitter = function(o) {
	
	var s = {
		count: 1,
		username: 'schelmanagement',
		textLoading: 'Loading Tweets...',
		
		avatar: false,  // true or false
		avatarSize: 48,	// 48 max
		
		before: '',
		after: '',
		
		https: false,
		
		linkStyle: 'target="_blank"', // can change to 'rel="external"', "", etc... 
		
		classList: 'twitter-list',
		classItem: 'twitter-item',
		classText: 'twitter-text',
		classAvatar: 'twitter-avatar'
	};
	
	if(o) $.extend(s, o);
	
	if (window.location.protocol == 'https:') {
		s.https = true;	
	}
	
	
	var url = "http" + (s.https ? 's' : '') + "://twitter.com/status/user_timeline/"+s.username+".json?count="+s.count+"&callback=?";
	
	var loading = $('<p>'+s.textLoading+'</p>').appendTo(this);
	
	var list = $('<div class="'+s.classList+'"></div>').appendTo(this);
	
	list.append(s.before);
	
	$.getJSON(url, function(data){
		loading.remove();
		
		$.each(data, function(i, item) {
			var tweet = $('<div class="'+s.classItem+'"></div>');
			var text = $('<div class="'+s.classText+'">'+item.text.makeLinks(s.linkStyle).makeTwitterUser(s.linkStyle).makeTwitterHash(s.linkStyle).makeHearts()+'</div>');
			var avatar = $('<div class="'+s.classAvatar+'"><a href="http' + (s.https ? 's' : '') + '://twitter.com/'+item.user.screen_name+'" '+s.linkStyle+'><img src="' + window.location.protocol + '//www.schel.com/layout/twitter-icon.jpg'/*+item.user.profile_image_url*/ + '" width="'+s.avatarSize+'" height="'+s.avatarSize+'"/></a></div>');
			
			if (s.avatar) {
				tweet.append(avatar);
			}
			tweet.append(text);

			list.append(tweet);
		});
	});
	
	list.append(s.after);
	
	
	function toHttps (url) {
		return url.replace('http://', 'https://');	
	}
	
	String.prototype.makeLinks = function(style) {
		if (!style) { style = ''; }
		return this.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi, "<a href=\"$1\" "+style+">$1</a>");
	}
	
	String.prototype.makeTwitterUser = function(style) {
		if (!style) { style = ''; }
		return this.replace(/[\@]+([A-Za-z0-9-_]+)/gi, "<a href=\"http://twitter.com/$1\" "+style+">@$1</a>");
	}
	
	String.prototype.makeTwitterHash = function (style) {
		if (!style) { style = ''; }
		return this.replace(/ [\#]+([A-Za-z0-9-_]+)/gi, " <a href=\"http://search.twitter.com/search?q=&tag=$1&lang=all\" "+style+">#$1</a>");
	}
	
	String.prototype.makeHearts = function (style) {
		if (!style) { style = ''; }
		return this.replace(/(&lt;)+[3]/gi, "<span "+style+">&#x2665;</span>");
	}
	
	
	return this;

};

})(jQuery);