var UpdateTimer=3000; //
var SearchURL="http://rapbasement.com/twitter/GetJson.php"; //getJSON throws bad label error when calling from the same domain (looks like when query is more than one item)
//var JsonType=""; this should be set by including page

jQuery.fn.reverse=Array.prototype.reverse;
String.prototype.linkify=function(){
		strInputCode = this.replace(/&(lt|gt);/g, function (strMatch, p1){
 		 	return (p1 == "lt")? "<" : ">";
 		});
 		var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
 		
 		
	return strTagStrippedText.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g,function(m)
{return m.link(m);});};
String.prototype.linkuser=function()
{return this.replace(/[@]+[A-Za-z0-9-_]+/g,function(u)
{var username=u.replace("@","")
return u.link("http://twitter.com/"+username);});};
String.prototype.linktag=function(){
	return this.replace("/[#]+[A-Za-z0-9-_]+/",function(t){
	var tag=t.replace("#","%23");
	return t.link("http://search.twitter.com/search?q="+tag);
});};
function fetch_tweets(elem){
	elem=$(elem);
	input=elem.attr('title').replace(" ","-");
	lang=elem.attr('lang');
	if(input!=window.monitter['text-'+input]){
		window.monitter['last_id'+input]=0;
		window.monitter['text-'+input]=input;
		window.monitter['count-'+input]=12;
	}
	if(window.monitter['count-'+input]>10){
		window.monitter['count-'+input]=0;
	}
	
	var url=SearchURL+"?q="+input+"&lang="+lang+"&rpp="+rrp+"&since_id="+window.monitter['last_id'+input]+"&JsonType=" + JsonType + "&callback=?";
//alert(url);
	$.getJSON(url,function(json){

		if(JsonType=="SearchJson"){
			$('div.tweet:gt('+window.monitter['limit']+')',elem).each(function(){
				//$(this).fadeOut('slow')
			});

			$(json.results).reverse().each(function(){
					if($('#tw'+this.id,elem).length==0 && this.text){
						window.monitter['count-'+input]++;var thedate=new Date(Date.parse(this.created_at));
						//var thedatestr=thedate.getHours()+':'+thedate.getMinutes();
						var thedatestr=relative_time2(this.created_at);
						var divstr='<div id="tw'+this.id+'" class="tweet"><img width="48" height="48" src="'+this.profile_image_url+'" ><p class="text">'+this.text.linkify().linkuser().linktag()+'<br /><span style="background-color:#000;padding:2px;">By: &nbsp;<b><a href="http://twitter.com/'+this.from_user+'" target="_blank">'+this.from_user+'</a></b> | &nbsp;-&nbsp;<b>'+thedatestr+'</b></span></p></div>';
						//var divstr='<div id="tw'+this.id+'" class="tweet"><img width="48" height="48" src="'+this.profile_image_url+'" ><p class="text">'+this.text.linktag()+'<br /><span style="background-color:#000;padding:2px;">By: &nbsp;<b><a href="http://twitter.com/'+this.from_user+'" target="_blank">'+this.from_user+'</a></b> | &nbsp;-&nbsp;<b>'+thedatestr+'</b></span></p></div>';
						window.monitter['last_id'+input]=this.id;
						elem.prepend(divstr);
						$('#tw'+this.id,elem).hide();
						$('#tw'+this.id+' img',elem).hide();
						$('#tw'+this.id+' img',elem).fadeIn(4000);
						$('#tw'+this.id,elem).fadeIn('slow');
					}
					elem.jScrollPane({showArrows:true, scrollbarWidth: 11});
				}
			);
		
			input=escape(input);
			rrp=3;
			setTimeout(function(){fetch_tweets(elem)},UpdateTimer);
				
		}else{
			//dgfdsfg	
			//alert(1);
		}
	});
	return(false);
}
$(document).ready(function(){window.monitter={};$('.monitter').each(function(e){rrp=10;fetch_tweets(this);});});
function relative_time2(time_value) {
	//Tue Feb 03 20:07:41 +0000 2009
	//Tue, 02 Jun 2009 18:51:44 +0000
	    if(!time_value)
	    	return;
	    	
	    	
	  var values = time_value.split(" ");
	  time_value = values[2] + " " + values[1] + ", " + values[3] + " " + values[4];
	  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);
	  
	  var r = '';
	  if (delta < 60) {
	    r = 'seconds ago';
	  } else if(delta < 120) {
	    r = 'a minutes ago';
	  } else if(delta < (45*60)) {
	    r = (parseInt(delta / 60)).toString() + ' minutes ago';
	  } else if(delta < (90*60)) {
	    r = 'an hour ago';
	  } else if(delta < (24*60*60)) {
	    r = '' + (parseInt(delta / 3600)).toString() + ' hours ago';
	  } else if(delta < (48*60*60)) {
	    r = '1 day ago';
	  } else {
	    r = (parseInt(delta / 86400)).toString() + ' days ago';
	  }
	  
	  return r;
}



