(function($) {
	$.fn.twitter = function(options){
		var self = this;
		var defaults = {
			element: $(this),
			account: 'weideic',
			beforeShow: null,
			show: 0
		}
		var fixedOpts = {
			feed : 'http://twitter.com/status/user_timeline/[::account::].json?count=[::count::]&callback=?'
		}
		this.opts = $.extend({}, defaults, options, fixedOpts);
		
		this.tweets = new Array();
		
		this.init = function(){
			self.opts.feed = self.opts.feed.replace('[::account::]', self.opts.account);
			self.opts.feed = self.opts.feed.replace('[::count::]', self.opts.show);
			self.load();
		}
		this.load =	function(){
			$.getJSON(self.opts.feed, function(d) {
				
				$.each(d, function(i, item)
				{
					var html = '';
					html += '<div class="tweet">';
					html += '  <div class="tweet-text"><p>' + addLinks(item.text) + "</p></div>";
					html += '  <div class="tweet-date"><p>' + getFormattedDate(item.created_at) + "</p></div>";
					html += '</div>';
					self.tweets[self.tweets.length] = html;
				});
				self.show();
			});
		
		}
		
		this.show = function(){
			var i = 0;
			var j = self.tweets.length-1;
			if(self.opts.beforeShow != null){
				var func = self.opts.beforeShow(self.opts.element, self.tweets);
			}
			if(self.opts.show < 0 && j > self.opts.show*-1){
				i = j+self.opts.show;
			}
			else if(self.opts.show > 0 && j >= self.opts.show-1){
				j = i+self.opts.show-1;
			}
			for(;i<=j;i++){
				$(self.tweets[i]).appendTo(self.opts.element);
			}
			
		}
		
		function addLinks(tweet)
		{
			var newTweet = "";
			var splittedTweet = new Array();
			splittedTweet = tweet.split(" ");
			var tokenTweet;
		 
			var i = 0;
			var n = splittedTweet.length;
			while (i < n)
			{
				tokenTweet = splittedTweet[i];
			   //     Look for @ and add the twitter link for user
				if (tokenTweet.indexOf("@") == 0)
				{
					tokenTweet = tokenTweet.link("http://twitter.com/"+tokenTweet.substr(1));
				}
		 
				// Look for # and add the twitter link for searching tags
				if (tokenTweet.indexOf("#") == 0)
				{
					tokenTweet = tokenTweet.link("http://twitter.com/search?q="+tokenTweet.substr(1));
				}
		 
				if (tokenTweet.indexOf("h") == 0 && tokenTweet.substring(0,7) == "http://"){
					tokenTweet = tokenTweet.link(tokenTweet);
				}
		 
				newTweet += tokenTweet+" ";
				i++;
			}
			return newTweet;
		}
		
		function getFormattedDate(date)
		{
			var dateArr = date.split(' ');
			var timeArr = dateArr[3].split(':');
			var d = new Date(dateArr[5], monthStrToNumber(dateArr[1]), dateArr[2], timeArr[0], timeArr[1], timeArr[2], 0);
			var tweetdate = d.toLocaleDateString();
			var tweettime = d.getHours()+':'+d.getMinutes();
			var timestamp = "" + tweetdate + ", " + tweettime;
		 
			return timestamp;
		}
		
		function monthStrToNumber(month){
			var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
			for(i in months){
				if(month.toLowerCase() == months[i]) return i;
			}
		}
		
		
		self.init();
	}
})( jQuery );	
		
$('document').ready(function () {
	if($('.tweetc').size() > 0) $('.tweetc').twitter({ account: 'VM_training', show:1 });
});
 

