var Reigi = {
	badBrowsers: {
		init: function(){
			// Internet Explorer versions
			var msie, msie6, msie7, msie8;
			// Check for IE. We love you, little browser.
			msie = $.browser.msie;
			msie6 = (msie && parseInt($.browser.version, 10) === 6);
			msie7 = (msie && parseInt($.browser.version, 10) === 7);
			msie8 = (msie && parseInt($.browser.version, 10) === 8);
			
			var body = $('body');
			
			if(msie6){
				body.addClass('iesix');
			}

			if(msie7){
				body.addClass('ieseven');
			}
			
			if(msie8){
				body.addClass('ieeight');
			}
		}
	},
	blogFeed: {
		init: function (){
			var feed = new google.feeds.Feed("http://robinreigi.com/blog/?feed=rss2");

			var feedContainer = $("#blogFeed");
			var feedurl = "http://robinreigi.com/blog/?feed=rss2";
			var feedlimit = 5;

			function rssfeedsetup(){
				var feedpointer = new google.feeds.Feed(feedurl); //Google Feed API method
				feedpointer.setNumEntries(feedlimit); //Google Feed API method
				feedpointer.load(displayfeed); //Google Feed API method
			}

			function displayfeed(result){
			if (!result.error){
				var thefeeds = result.feed.entries;
				var monthname = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
				var dayname = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
				
				for (var i=0; i<thefeeds.length; i++)
				{
					$("#blogFeed").append("<li><a href='" + thefeeds[i].link + "' target=\"_blank\">" + thefeeds[i].title + "</a><span>" + dayname[new Date(thefeeds[i].publishedDate).getDay()] + ", " + monthname[new Date(thefeeds[i].publishedDate).getMonth()] + " " + new Date(thefeeds[i].publishedDate).getDate() + ", " + new Date(thefeeds[i].publishedDate).getFullYear() + "</span></li>");
				}		
			}
			else
				$("#blogFeed").append('<li>The Blog is not responding.</li>');
			}

			rssfeedsetup();
		}
	},
	twitterFeed: {
		init: function (){
			var url = 'http://api.twitter.com/1/statuses/user_timeline/robinreigi.json?callback=?';
			
			function linkifyTwitterText(text) {
			    text = text.replace(/(https?:\/\/\S+)/gi, function (s) {
			        return '<a href="' + s + '" target="_blank">' + s + '</a>';
			    });

			    text = text.replace(/(^|)@(\w+)/gi, function (s) {
			        return '<a href="http://twitter.com/' + s + '" target="_blank">' + s + '</a>';
			    });

			    text = text.replace(/(^|)#(\w+)/gi, function (s) {
			        return '<a href="http://search.twitter.com/search?q=' + s.replace(/#/,'%23') + '" target="_blank">' + s + '</a>';
			     });
			
			    return text;
			}
			
			function relative_time(time_value) {
			  	var values = time_value.split(" ");
				time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
				var parsed_date = Date.parse(time_value);
				var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
				var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
				delta = delta + (relative_to.getTimezoneOffset() * 60);

				if (delta < 60) {
					return 'less than a minute ago';
				} else if(delta < 120) {
					return 'about a minute ago';
				} else if(delta < (60*60)) {
					return (parseInt(delta / 60)).toString() + ' minutes ago';
				} else if(delta < (120*60)) {
					return 'about an hour ago';
				} else if(delta < (24*60*60)) {
					return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
				} else if(delta < (48*60*60)) {
					return '1 day ago';
				} else {
					return (parseInt(delta / 86400)).toString() + ' days ago';
				}
			}
			
			// Enable caching
		    $.ajaxSetup({ cache: true });		
			
			try
			{
			  	$.getJSON(url,function(tweet){ // get the tweets
					var i = 0;
					for (i=0;i<=4;i++) 
					{
						$('#twitter').append('<li>' + linkifyTwitterText(tweet[i].text) + '<span>' + relative_time(tweet[i].created_at) + ' via ' + tweet[i].source.replace(/<.*?>/g, '') + '</span></li>');
					}
				});
			}
			catch(err)
			{
				$('#twitter').append('<li>Twitter is not responding.</li>');
			}
		}
	}
};

$(function() {
	// we love you bad browsers
	Reigi.badBrowsers.init();
	
	if ($('body#home').length) {
		// get blog feed
		Reigi.blogFeed.init();

		// get twitter feed
		Reigi.twitterFeed.init();
	}	
	
	var rowHovers = $("#feeds ul, #events, #mixtapes, #promoMaterialsList");
	rowHovers.delegate("li", "hover", function(){
		$(this).toggleClass("hover");
	});
});
