var refresh="";
	
function fixtime(createdOn){
	var parts = createdOn.split(" ");
	parts[5] = "UTC" + parts[5];
	return (new Date(parts.join(" "))).getTime();
}
	
function returntime(ms){
	var seconds = ms/1000;
	var minutes = Math.round(seconds/60);
	return minutes;
}

function setCookie(c_name,value,expiredays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";path=/;expires="+exdate.toGMTString());
}
	
function getTweets(query){

	if(refresh!=""){
		query = refresh;
		// update timestamps on existing tweets
		$('#tweets li span.meta a.time').each(function(){
			$(this).text(timeAgo($(this).attr('rel')));
		});
		$('#loading').slideDown('fast');
	}

	if(typeof(t)!=="undefined"){window.clearTimeout(t);}

	$.getJSON("http://search.twitter.com/search.json"+query+"&callback=?",
		function(data){
			var block = "";
			if(data.results!='') {
				$.each(data.results, function(i,result){
					$('#tweets li.new').each(function(){
						if(!$(this).hasClass('hidden')) removeClass('new');
					});
					var perma = "http://twitter.com/"+result.from_user+"/status/"+result.id;
					if(refresh!=""){ liclass = "class='new hidden'"; } else { liclass = ""; }
					var html = "<li id='tweet-"+result.id+"' "+liclass+">";
						html += "<div style='background-image:url(\""+result.profile_image_url+"\");' class='avatar'/>";
						html += "<div class='tweet'>";
							html += "<p>";
								html += "<strong><a href='http://twitter.com/"+result.from_user+"' target='_blank'>"+result.from_user+"</a></strong>&nbsp;"+ify.clean(result.text);
								// html += "<strong><a href='http://twitter.com/"+result.from_user+"' target='_blank'>"+result.from_user+"</a></strong>&nbsp;"+result.text;
								// html += "<span class='time'><a href='"+perma+"'>"+hrs+":"+mins+"</a></span>";
								var source = result.source.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&quot;/g,'"');
								html += "<span class='meta'><a href='"+perma+"' class='time' rel='"+result.created_at+"'>"+timeAgo(result.created_at)+"</a> via "+source;
								html += "<a target='_blank' class='reply' rel='"+result.from_user+"' tweetid='" + result.id + "' href='http://twitter.com/?status=@" + result.from_user + "%20&in_reply_to_status_id=" + result.id + "&in_reply_to=" + result.from_user + "'>reply</a></span>";
							html += "</p>";
						html += "</div>";
					html += "</li>";
					block += html;
				});
				if(refresh){
					if(data.results.length > 0) {
						var q = $('#show-new-tweets .num').text();
						$('#show-new-tweets .num').text(parseInt(q) + parseInt(data.results.length));
						$('#show-new-tweets').slideDown();
					}
					$('#tweets').prepend(block);
					twttr.anywhere(newOnAnywhereLoad);
				} else {
					$('#tweets').prepend(block)
					twttr.anywhere(onAnywhereLoad);
					$('#tweets').slideDown('1000');//+"<li class='more'><a href='"+data.next_page+"'>More...</a></li>").slideDown('1000');
				}
			}
			$('#loading').slideUp('fast');
			refresh = data.refresh_url;
			var t = window.setTimeout("getTweets()",60000);
		}
	);

}

function newOnAnywhereLoad(twitter) {
	twitter('#tweets li.new').hovercards();
};
function onAnywhereLoad(twitter) {
	twitter('#tweets li').hovercards();
};


$(document).ready(function(){

	$('#menu ul li a').click(function(event){

		event.preventDefault();
		
		refresh='';
		if(typeof(t)!=="undefined"){window.clearTimeout(t);}

		$('#menu ul li a[class="on"]').toggleClass('on');

		$('#tweets').slideUp('fast',function(){
			$(this).empty();
		});

		$(this).toggleClass('on');

		var on_items = $('#menu ul li a.on');
		var term = on_items[0].hash.substr(1);
		var query = tag_queries[on_items[0].hash.substr(1)] + '+-"RT"';

		setCookie(app_name+'_terms',term,1000);
		pageTracker._trackPageview(term);
		setCookie(app_name+'_query',query,1000);
		
		$('.twitter-anywhere-tweet-box').contents().find('#tweet-box').val(on_items[0].hash);

		$('#loading').slideDown('fast',function(){
			getTweets('?q='+escape(query));
		});

	});

	$('#show-new-tweets a').click(function(event){

		event.preventDefault();

		$('#tweets li.hidden').removeClass('hidden');
		$('#show-new-tweets').slideUp(function(){
			$('#show-new-tweets .num').text(0);
		});

	});

	$('#toggle a').click(function(event){
		event.preventDefault();

		var a = $('#toggle a.active');
		a.removeClass('active');
		$(a.attr('href')).slideUp();

		$(this).addClass('active');
		$(this.hash).slideDown();
	});
	
	// $('.tweet a.reply').live('click',function(event){
	// 	event.preventDefault();
	// 	var on_items = $('#menu ul li a.on');
	// 	$('.twitter-anywhere-tweet-box').contents().find('#tweet-box').val("@" + $(this).attr('rel') + " " + on_items[0].hash).focus(); //.after('<input type="hidden" value="' + $(this).attr('tweetid') + '" name="in_reply_to_status_id" id="in_reply_to_status_id"/><input type="hidden" value="' + $(this).attr('rel') + '" name="in_reply_to" id="in_reply_to"/>');
	// });

});

var timeAgo = function(dateString) {
	var rightNow = new Date();
	var then = new Date(dateString);

	// if (browser.ie) {
		// IE can't parse these crazy Ruby dates
		// then = Date.parse(dateString.replace(/( \+)/, ' UTC$1'));
	// }

	var diff = rightNow - then;

	var second = 1000,
			minute = second * 60,
			hour = minute * 60,
			day = hour * 24,
			week = day * 7;

	if (isNaN(diff) || diff < 0) { return ""; } // return blank string if unknown

	if (diff < second * 7) { return "right now"; } // within 7 seconds

	if (diff < minute) { return Math.floor(diff / second) + " seconds ago"; }

	if (diff < minute * 2) { return "about 1 minute ago"; }

	if (diff < hour) { return Math.floor(diff / minute) + " minutes ago"; }

	if (diff < hour * 2) { return "about 1 hour ago"; }

	if (diff < day) { return  Math.floor(diff / hour) + " hours ago"; }

	if (diff > day && diff < day * 2) { return "yesterday"; }

	if (diff < day * 365) { return Math.floor(diff / day) + " days ago"; }

	else { return "over a year ago"; }

};

var ify = {
	link: function(tweet) {
		return tweet.replace(/\b(((https*\:\/\/)|www\.).+?)(([!?,.\)]+)?(\s|$))/g, function(link, m1, m2, m3, m4) {
			var http = m2.match(/w/) ? 'http://' : '';
			return '<a target="_blank" href="' + http + m1 + '">' + ((m1.length > 25) ? m1.substr(0, 24) + '...' : m1) + '</a>' + m4;
		});
	},
	
	// at: function(tweet) {
	// 	return tweet.replace(/\B\@([a-zA-Z0-9_]{1,20})/g, function(m, username) {
	// 		return '@<a target="_blank" href="http://twitter.com/' + username + '">' + username + '</a>';
	// 	});
	// },
	
	list: function(tweet) {
		return tweet.replace(/\B\@([a-zA-Z0-9_]{1,20}\/\w+)/g, function(m, userlist) {
			return '@<a target="_blank" href="http://twitter.com/' + userlist + '">' + userlist + '</a>';
		});
	},
	
	hash: function(tweet) {
		return tweet.replace(/\B\#(\w+)/gi, function(m, hash) {
			return '<a target="_blank" href="http://twitter.com/search?q=%23' + hash + '">#' + hash + '</a>';
		});
	},
	
	clean: function(tweet) {
		// return this.hash(this.at(this.list(this.link(tweet))));
		return this.hash(this.list(this.link(tweet)));
	}
};

