/*
	@author: piotr petrus (riddle) / http://riddle.pl
	@url: http://offtopic.jogger.pl/
	@licence: Creative Commons License - ShareAlike http://creativecommons.org/licenses/by-sa/3.0/
	@charset: UTF-8
*/

var riddle = {
	start : function() {
		if (!document.body.id) {
			this.getFeeds();
			this.loadTitles();
		}
		this.scrollTop();
		this.commentTweaks();
		this.fuckinBrowsers();
	},
	
	getFeeds: function() {
		var twitter = 'http://www.twitter.com/statuses/user_timeline/612373.json?callback=riddle.twitter&count=1';
		var lastfm = 'http://riddle.pl/blog/lastfm/';
		$.getScript(twitter);
		$.getScript(lastfm);		
	},
	
	loadTitles: function() {
		function appendLink(response, $handle) {
			var start = response.indexOf('<h1>') + 4;
			var end = response.indexOf('</h1>');
			if (start && end) {
				var h1 = response.substring(start, end);
				$handle.find('span').append(h1).children('strong').append(':');
			}
		}
		
		var 
			$ul = $('#header ul'),
			$prev = $ul.find('.prev'),
			$next = $ul.find('.next');
		
		if ($prev.length)
			$.ajax({ url: $prev.find('a').attr('href'), success: function(data) { 
				appendLink(data, $prev) 
			}});		
		if ($next.length)
			$.ajax({ url: $next.find('a').attr('href'), success: function(data) { 
				appendLink(data, $next) 
			}});
	},
	
	twitter: function(twitts) {
		$('#live div:first')
			.find('p').append(': ' + twitts[0].text).end()
			.append('<p class="when">' + this.relativeTime(twitts[0].created_at) + '</p>')
	},
	
	lastfm: function(tracks) {
		var artist = tracks[0].title.split(' – ')[0], title = tracks[0].title.split(' – ')[1];
		$('#live div:last')
			.find('p').append(': <a href="' + tracks[0].artist + '">' + artist + '</a> – <a href="' + tracks[0].track + '">' + title + '</a>').end()
			.append('<p class="when">' + this.relativeTime(tracks[0].date, true) + '</p>');
	},
	
	relativeTime: function(value, diff) {			
		var values = value.split(" ");
		if (diff) {
			value = values[2] + " " + values[1] + ", " + values[3] + " " + values[4];
		} else {
			value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
		}
	  var parsed_date = Date.parse(value);
	  var relative_to = new Date();
	  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	  delta = delta + (relative_to.getTimezoneOffset() * 60);
	  
	  var r = '';
		var temp = 0;
	  if (delta < 60) {
	    r = 'mniej niż minutę temu';
	  } else if(delta < 120) {
	    r = 'minutę temu';
	  } else if(delta < (45*60)) {
			temp = parseInt(delta / 60);
			var lastbit = parseInt(temp[temp.length - 1]);
			if (((temp != 12) && (temp != 13) && (temp != 14)) && ((lastbit > 1) && (lastbit < 5))) {
				r = (temp).toString() + ' minuty temu';
			} else {
			r = (temp).toString() + ' minut temu';
			}		    
	  } else if(delta < (90*60)) {
	    r = 'godzinę temu';
	  } else if(delta < (24*60*60)) {
			temp = parseInt(delta / 3600);
			if (((temp > 1) && (temp < 5)) || (temp == 22) || (temp == 23)) {
				r = 'około ' + (temp).toString() + ' godziny temu';
			} else {
				r = 'około ' + (temp).toString() + ' godzin temu';
			}
	  } else if(delta < (48*60*60)) {
	    r = '1 day ago';
	  } else {
	    r = (parseInt(delta / 86400)).toString() + ' dni temu';
	  }
	  
	  return r;
	},
	
	commentTweaks: function() {
		$('#comments p.modified').each(function() {
		  var $this = $(this);
		  var $modified = $(document.createElement('a'));
		  $modified
				.addClass('modified')
				.attr('href', $this.children('a').attr('href'))
				.append('Komentarz edytowany');
		  $this.parent().prev().append($modified)
		}).remove()
	},

	scrollTop: function() {
		var goBack = '<p class="go-back"><a href="#b">Następna kolumna</a></p>';
		$('#content div.body > div.a').append(goBack).next().attr('id', 'b');
	},

	
	fuckinBrowsers: function() {
		if (window.opera) {
			$('#content .meta').css('padding-bottom', '22px')
		}
		if (/*@cc_on!@*/false) {
			$('#categories li').each(function(i) {
				if (i % 4 == 0) {
					$(this).css('margin-left', '0');
				}
			});
		}
	}

}

$(function() {
	riddle.start();
})
