(function($){
	$.fn.tweets = function(options) {
		
		var defaults = {
			account:0,
			tweetCount:25,
			callback:""
		};
		var options = $.extend(defaults, options);
		var months = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
		return this.each(function() {
			if(options.account != 0){
				var $obj = $(this);
				
				$.getJSON(
					'http://search.twitter.com/search.json?callback=?&rpp='+options.tweetCount+'&q=' + options.account,
            		function(data) {
                		// our code to handle the data here
                		$.each(data, function(i, tweets){
                    		if (tweets.length != undefined){                   			
                       			if (tweets[0] != undefined){
                       				if (tweets[0].created_at != undefined){
                      	 				// tweets[] is an array of all the tweet items
                      	 				for(var i = 0; i < tweets.length; i++){                       					
                      	 					var tweetClass = "odd";
                      	 					if(i%2 ==0){
                      	 						tweetClass = "even";
                      	 					}  
                      	 					var $tweet = $(document.createElement("div"))
                      	 								.attr("id","tweet_"+tweets[i].id)
                      	 								.addClass(tweetClass);
                      	 					$obj.append($tweet);
                      	 					
                      	 					var $tweetPhoto = $(document.createElement("img"))
                      	 										.addClass("profile-img")
                      	 										.attr("src",tweets[i].profile_image_url)
                      	 										.attr("width","48").attr("height","48");
                      	 					$tweet.append($tweetPhoto);
                      	 					
                      	 					var $tweetDesc = $(document.createElement("div"))
                      	 									.addClass("tweet-text")
                      	 									.html("<a href='http://www.twitter.com/"+tweets[i].from_user+"' target='_blank'>"+tweets[i].from_user+"</a>: " + replaceURLWithHTMLLinks(tweets[i].text));	
                      	 					//$tweetDesc.linkTweetStuff();		
                      	 					$tweet.append($tweetDesc);
                      	 					
                      	 					var tweetDate = new Date(tweets[i].created_at);
                      	 					var today = new Date();
                      	 					
                      	 					var timeDiff;
                      	 					var minDiff = Math.ceil((today.getTime()-tweetDate.getTime())/(60*1000));
					  						var hourDiff = Math.ceil((today.getTime()-tweetDate.getTime())/(60*60*1000));
                      	 					var dayDiff = Math.ceil((today.getTime()-tweetDate.getTime())/(24*60*60*1000));
                      	 					                       					
                      	 					if(minDiff < 59){
                      	 						//timeDiff = "<div class='tweet-time'>about "+minDiff+" minutes ago from "+decHTMLifEnc(tweets[i].source)+"</div>";
                      	 						timeDiff = "<span class='tweet-time'>about "+minDiff+" minutes ago</span>";
                      	 					}else if(hourDiff < 24){
                      	 						//timeDiff = "<div class='tweet-time'>about "+hourDiff+" hours ago from "+decHTMLifEnc(tweets[i].source)+"</div>";
                      	 						timeDiff = "<span class='tweet-time'>about "+hourDiff+" hours ago</span>";
                      	 					}else if(dayDiff < 15){
                      	 						//timeDiff = "<div class='tweet-time'>"+dayDiff+" days ago from "+decHTMLifEnc(tweets[i].source)+"</div>";
                      	 						timeDiff = "<span class='tweet-time'>"+dayDiff+" days ago</span>";
                      	 					}else{
                      	 						var AMPM = "PM";
                      	 						var myHours;
                      	 						if(tweetDate.getHours() < 12){
                      	 							AMPM = "AM";
                      	 							if(tweetDate.getHours() == 0){
                      	 								myHours = "12";
                      	 							}else{
                      	 								myHours = tweetDate.getHours();
                      	 							}
                      	 						}else{
                      	 							myHours = tweetDate.getHours()-12;
                      	 						}
                      	 						
                      	 						var myDate = tweetDate.getDate() +"th";
                      	 						if(tweetDate.getDate() == 1 || tweetDate.getDate() == 21 || tweetDate.getDate() == 31){
                      	 							myDate = tweetDate.getDate() +"st";
                      	 						}else if(tweetDate.getDate() == 2 || tweetDate.getDate() == 22){
                      	 							myDate = tweetDate.getDate() +"nd";
                      	 						}else if(tweetDate.getDate() == 3 || tweetDate.getDate() == 23){
                      	 							myDate = tweetDate.getDate() +"rd";
                      	 						}
                      	 						
                      	 						
                      	 						//timeDiff = myHours+":"+tweetDate.getMinutes()+" "+AMPM+" "+months[tweetDate.getMonth()]+" "+myDate+" from "+decHTMLifEnc(tweets[i].source);
                      	 						timeDiff = myHours+":"+tweetDate.getMinutes()+" "+AMPM+" "+months[tweetDate.getMonth()]+" "+myDate;
                      	 					}
                      	 					
                      	 					var $hours = $(document.createElement("div"))
                      	 								.addClass("tweet-time")
                      	 								.html(timeDiff + "&nbsp;&middot;&nbsp;<a href='http://www.twitter.com/home?status=@"+tweets[i].from_user+"' target='_blank'>Reply</a>&nbsp;&middot;&nbsp;<a href='http://www.twitter.com/"+tweets[i].from_user+"/statuses/"+tweets[i].id+"' target='_blank'>View Tweet</a>");
                      	 					
                      	 					$tweet.append($hours);
                      	 					
                      	 					//var $tweetLinks = $(document.createElement("div"))
                      	 					//			.addClass("tweet-time")
                      	 				//				.html("<a href='http://www.twitter.com/home?status=@"+tweets[i].from_user+"' target='_blank'>Reply</a>&nbsp;&middot;&nbsp;<a href='http://www.twitter.com/"+tweets[i].from_user+"/statuses/"+tweets[i].id+"' target='_blank'>View Tweet</a>");
                      	 					
                      	 					//$tweet.append($tweetLinks);
                      	 					
                      	 				}
                      	 			}
                       			}
                       			
                       		}
                       		  		
                    	});
                    	if(jQuery.isFunction(options.callback)){
        					options.callback();
        				}
            		}
        		);
			}else{
				$.log("Please set account name.");
			}
			
		});
		
		function isEncHTML(str) { 
		  if(str.search(/&amp;/g) != -1 || str.search(/&lt;/g) != -1 || str.search(/&gt;/g) != -1 || str.search(/&quot;/g) != -1) 
		    return true; 
		  else 
		    return false; 
		}; 
		 
		function decHTMLifEnc(str){ 
		    if(isEncHTML(str)) 
		      return str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g,"'"); 
		    return str; 
		}
				
		function replaceURLWithHTMLLinks(text) {
			var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
			var topicExp = /(^|\s)#(\w+)/g;
			var userExp = /(^|\s)@(\w+)/g;
			text = text.replace(exp,"<a href='$1' target='_blank'>$1</a>");
			text = text.replace(userExp,"$1<a class='tweet-user' href='http://www.twitter.com/$2' target='_blank'>@$2</a>");
			text = text.replace(topicExp,"$1<a class='tweet-topic' href='http://search.twitter.com/search?q=%23$2' target='_blank'>#$2</a>");
			return text;
		}
	};
})(jQuery);

jQuery.log = function(message) {
	if(window.console && $.browser.mozilla) {
    	console.debug(message);
    }
};