/* 	///// Init /////

	(c) Aen Tan. Some Rights Reserved.
	Licensed under a Creative Commons license (http://creativecommons.org/licenses/by-sa/3.0/)
*/


$(document).ready(function() {

	// Cycle all selected slides
	$('#selected ul').cycle({	// cycle background sets
		fx:			'scrollLeft',
        speed:		1000,
        easing:		'easeInOutCubic',
        timeout:	4000,
        fit:		0,
        pause:		1,
        slideExpr:	'li'
    });

	// Portfolio slides hover effect
	$('.portfolio-slides').each(function() {
		$(this).find('li:eq(0)').show();
	});

	$('.portfolio-slides').hover(function() {
		$(this).find('li:eq(0)').fadeOut('fast');
		$(this).find('li:eq(1)').fadeIn('fast');
	}, function() {
		$(this).find('li:eq(1)').fadeOut('fast');
		$(this).find('li:eq(0)').fadeIn('fast');
	});
	
	// Tooltips
	$('#tooltip').hide();
	$(document).mousemove(function(e){
        $('#tooltip').css({
            top: (e.pageY - 40) + "px",
            left: (e.pageX - 17) + "px"
        });
    });
	$('#portfolio > ul > li, #selected').hoverIntent(function() {
		$('#tooltip').fadeIn('fast');
	}, function() {
		$('#tooltip').hide();
	});
	
	// Fancybox
	$('.portfolio-slides a, #selected a').fancybox({
		'padding':			0,
		'imageScale':		false,
		'centerOnScroll':	false,
		'overlayShow':		true,
		'overlayOpacity':	1,
		'callbackOnShow':	pauseSelected,
		'callbackOnClose':	resumeSelected
	});
	
	function pauseSelected() {
		$('#selected ul').cycle('pause');
	}
	function resumeSelected() {
		$('#selected ul').cycle('resume');
	}
	
	// Twitter
	
    
});


// Twitter using Google Ajax Feeds API
var feeds = [
	{
		'selector' 	: '#tweet', 
		'url'   	: "http://twitter.com/statuses/user_timeline/28333012.rss",
		'fn'    	: loadTweets,
		'username'  : "perttumurto",
		'linkTweet' : true
	}
];
google.load("feeds", "1");
google.setOnLoadCallback(onLoad);
function onLoad() {
	$.each(feeds, function(i, n) {
		$(n.selector).append('<div class="loading">Loading&hellip;</div>');
		var feed = new google.feeds.Feed(n.url);
		feed.setNumEntries((n.num || 3));
		feed.load(function(result) {
			(n.fn || loadFeed)(result, n);
		});
	});
}
function loadTweets(result, n) {

	$.fn.extend({
		removeUsername: function() {
		    var returning = [];
		    var regexp = new RegExp("("+n.username+": )", "gi");
		    this.each(function() {
		      returning.push(this.replace(regexp,""));
		    });
		    return $(returning);
		},
		removeAtReply: function() {
	        var returning = [];
	        var regexp = new RegExp("("+n.username+": )", "gi");
	        this.each(function() {
	          returning.push(this.replace(regexp,""));
	        });
	        return $(returning);
		},
	    linkUrl: function() {
	        var returning = [];
	        var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
	        this.each(function() {
	          returning.push(this.replace(regexp,"<a href=\"$1\">$1</a>"));
	        });
	        return $(returning);
		},
	    linkUser: function() {
	        var returning = [];
	        var regexp = /[\@]+([A-Za-z0-9-_]+)/gi;
	        this.each(function() {
	          returning.push(this.replace(regexp,"<a href=\"http://twitter.com/$1\">@$1</a>"));
	        });
	        return $(returning);
		},
	    linkHash: function() {
	        var returning = [];
	        var regexp = / [\#]+([A-Za-z0-9-_]+)/gi;
	        this.each(function() {
	          returning.push(this.replace(regexp, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all">#$1</a>'));
	        });
	        return $(returning);
		},
	    makeHeart: function() {
	        var returning = [];
	        this.each(function() {
	          returning.push(this.replace(/[&lt;]+[3]/gi, "<tt class='heart'>&#x2665;</tt>"));
	        });
	        return $(returning);
		}
    });
	
	if (!result.error) {
		var html = '';
		html += '<ul>';
		for (var i = 0; i < result.feed.entries.length; i++) {
			var entry = result.feed.entries[i];
			html += '<li>'
				+ $([entry.title]).removeUsername().linkUrl().linkUser().linkHash()[0]
				+ ' <a href="' + entry.link + '" class="date">'
				+ relative_time(entry.publishedDate)
				+ '</a>'
				+ '</li>';  
				//eventually add support for entry.publishedDate
		}
		html += '</ul>';
		//html.children('li:first').addClass('first');
		$(n.selector).hide().empty().append(html).fadeIn('slow');
		gridflow();
	}
}
function relative_time(time_value) {
	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);
	if(delta < 120) {
		return '1 min ago';
	} else if(delta < (45*60)) {
		return (parseInt(delta / 60)).toString() + ' mins ago';
	} else if(delta < (90*60)) {
		return '1 hour ago';
	} else if(delta < (24*60*60)) {
		return '' + (parseInt(delta / 3600)).toString() + ' hours ago';
	} else if(delta < (48*60*60)) {
		return '1 day ago';
	} else {
		return (parseInt(delta / 86400)).toString() + ' days ago';
	}
}
function absolute_time(time_value) {
	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);
	if(delta < (24*60*60)) {
		return 'today';
	} else {
		return parsed_date.getMonth() + "/" + parsed_date.getDay();
	}
}


// Init Cufon
Cufon.replace('#contact h2, #selected h3, .link-list h3, #twitter-follow');
