/* TWITTER */
$(function () {
    TWEET = $('.twitter-resource li');

    DoTwitterAjax('hollowaybeth', $('ul.tweets.bHolloway'));

    $('#users').find('li').click(function () {
        if ($(this).hasClass('active') !== true) {
            _active = $('#users li.active');
            _activate = $(this);

            _active.removeClass('active');
            $('ul.tweets.' + _active.attr('id')).fadeOut(function () {
                _activate.addClass('active');
                $('ul.tweets.' + _activate.attr('id')).fadeIn();
            });

            target = $('ul.tweets.' + _activate.attr('id'));
            if (target.find('li').length == 0) { 
              user = (_activate.attr('id') === 'Mayday360') ? 'Mayday360' : 'HollowayBeth';
              DoTwitterAjax(user, target);
            }
        }
    });
});

function DoTwitterAjax(user, target) {
    $.ajax({
        url: 'http://api.twitter.com/1/statuses/user_timeline.json?include_rts=1&screen_name=' + user + '&callback=?',
        dataType: 'json',
        success: function (data) {
            var TWEETS = [];
            var TweetList = data;
            $.each(TweetList, function (i, item) {
                rep =
                {
                    'id': item.id,
                    'tweet': Tweetify(item.text),
                    'datetime': FormatDate(item.created_at),
                    'screen_name': (item.user.screen_name) ? item.user.screen_name : null,
                    'fullname': item.user.name,
                    'image': item.user.profile_image_url
                };

                if (rep.tweet !== "") { TWEETS.push(rep); }
            });

            var TWEETS = TWEETS.splice(0, 3);

            for (i in TWEETS) {
                CurrentTweet = TWEET.clone();
                CurrentTweet.find('a:first').html(TWEETS[i].screen_name);
                CurrentTweet.find('a:first').attr('href', 'http://www.twitter.com/' + TWEETS[i].screen_name);

                CurrentTweet.find('b:first').html(TWEETS[i].fullname);
                CurrentTweet.find('h5:last').html(TWEETS[i].datetime);
                CurrentTweet.find('p:first').html(TWEETS[i].tweet);
                CurrentTweet.css('background-image', "url('" + TWEETS[i].image + "')");
                CurrentTweet.insertBefore(target.find('h4'));
            }
        },
        error: function () { }
    });
}

function Tweetify(tweet) {
	
	re = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
	tweet = tweet.replace(re,"<a href='$1'>$1</a>"); 

	re = /[@]{1}[A-Za-z0-9-_]+/g;
	tweet = tweet.replace(re,function(u) {
		username = u.replace("@","");
		return u.link("http://twitter.com/"+username);	
	});
	
	re = /[#]{1}[A-Za-z0-9-_]+/g;
	tweet = tweet.replace(re,function(h) {
		hashtag = h.replace("#","%23");
		return h.link("http://search.twitter.com/search?q="+hashtag);	
	});
	
	return tweet;
}

function FormatDate(CreatedAt) {
    MOY = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(' ');

    ParseArray = CreatedAt.split(' ');
    ParseTime = ParseArray[3].split(':');
    CreatedDate = new Date();
    CreatedDate.setUTCFullYear(ParseArray[5]);
    CreatedDate.setUTCMonth((function () { for (i in MOY) { if (MOY[i] == ParseArray[1]) { return (i) } } return false; })());
    CreatedDate.setUTCDate(ParseArray[2]);

    CreatedDate.setUTCHours(ParseTime[0]);
    CreatedDate.setUTCMinutes(ParseTime[1]);
    CreatedDate.setUTCSeconds(ParseTime[2]);
    MillisecondsAgo = new Date().getTime() - CreatedDate.getTime();
    SecondsAgo = Math.round(MillisecondsAgo/1000);
    MinutesAgo = Math.round(MillisecondsAgo/1000/60);
    HoursAgo = Math.round(MillisecondsAgo/1000/60/60);
    DaysAgo = Math.round(MillisecondsAgo/1000/60/60/24);

    if (SecondsAgo <= 10) {
        return "Seconds ago";
    } else if (SecondsAgo < 60) {
        return SecondsAgo + ' seconds ago';
    } else if (MinutesAgo == 1) {
        return 'One minute ago';
    } else if (MinutesAgo < 60) {
         return MinutesAgo + ' minutes ago';
    } else if (HoursAgo == 1) {
         return 'One hour ago';
     } else if (HoursAgo < 24) {
         return HoursAgo + ' hours ago';
    } else if (DaysAgo == 1) {
        return 'One day ago';
    } else if (DaysAgo < 4) {
        return DaysAgo + ' days ago';
    } else {
        return CreatedDate.getDate() + ' ' + new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Oct", "Nov", "Dec")[CreatedDate.getMonth()];
    }
}
