/*
 * TwitStream - A jQuery plugin for the Twitter Search API
 * Version 1.2
 * http://kjc-designs.com/TwitStream
 * Copyright (c) 2009 Noah Cooper
 * Licensed under the GNU General Public License <http://www.gnu.org/licenses/>
*/
String.prototype.linkify=function(){
	return this.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){
		return u.link("http://twitter.com/"+u.replace("@",""));
	});
};
String.prototype.linktag=function(){
	return this.replace(/[]+[A-Za-z0-9-_]+/,function(t){
		return t;
	});
};

//Twitter Object
var twiiterObj = new Object();

twiiterObj.searchParam = "from:Levis_Japan";

twiiterObj.elementsNum = 0;
twiiterObj.elementsArray = [];

twiiterObj.showTweetLinks = 'none';

//TICKER
twiiterObj.tickerSpeed = 300;
twiiterObj.tickerPause = 10000;

twiiterObj.fetchTweets = function(elem, num){
	var elem = jQuery(elem);
	var elementsNum = num;
	
	var keyword = escape(twiiterObj.searchParam);
	var num = elem.attr('class').split(' ').slice(-1);
	var url = "http://search.twitter.com/search.json?q="+keyword+"&rpp="+num+"&callback=?";
	
	jQuery.getJSON(url,function(json){
		var json_results = jQuery(json.results);
		var tweet = '\n<ul id="tweetTicker">\n';
		jQuery(json.results).each(function(i){
			var tTime = new Date(Date.parse(this.created_at));
			
			var d_hour = tTime.getHours();
			var d_min = tTime.getMinutes();
			d_min = twiiterObj.zeroPadding(String(d_min), 2);
			var d_hour_ampm = d_hour < 12 ? "AM" : "PM";
			d_hour = d_hour < 13 ? d_hour : d_hour - 12;
			var month_array = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
			var d_month = month_array[tTime.getMonth()];
			var d_day = tTime.getDate();
			d_day = d_day + twiiterObj.getSuffix(d_day);
			var d_year = tTime.getFullYear();
			
			var date_str = d_hour + ":" + d_min + " " + d_hour_ampm + " " + d_month + " " + d_day;
			
			var tweetBy = '<a class="tweet_user" target="_blank" href="http://twitter.com/'+this.from_user+'">@'+this.from_user+'</a>';
			
			var tweetCreatedTime = '<span>' + date_str + '</span>';
			
			tweet += '<li class="tweet" style="display: none;"><p>' + this.text.linkify().linkuser().linktag().replace(/<a/g,'<a target="_blank"') + tweetCreatedTime + '</p></li>\n';
		});
		tweet += '</ul>\n'
		
		var elem = twiiterObj.elementsArray[twiiterObj.elementsNum];
		jQuery(elem).html(tweet);
		twiiterObj.tweetShowFirst();
		
		
	});
	return(false);
}
twiiterObj.tweetShowFirst = function(first_html){
	var first_elm = jQuery('ul#tweetTicker li:first');
	first_elm.animate({opacity: 1}, twiiterObj.tickerSpeed)
		.fadeIn('slow', function() {
			twiiterObj.nId = setInterval(twiiterObj.tweetRemoveFirst, twiiterObj.tickerPause);
		});
}
twiiterObj.tweetRemoveFirst = function(){
	clearInterval(twiiterObj.nId);
	var first_elm = jQuery('ul#tweetTicker li:first');
	var first_html = first_elm.html();
	first_elm.animate({opacity: 0}, twiiterObj.tickerSpeed)
		.fadeOut('slow', function() {
			jQuery(this).remove();
			twiiterObj.tweetAddLast(first_html);
		});
}
twiiterObj.tweetAddLast = function(first_html){
	var last_html = '<li class="tweet" style="display:none">' + first_html + '</li>';
	jQuery('ul#tweetTicker').append(last_html);
	
	twiiterObj.tweetShowFirst();
}


twiiterObj.zeroPadding = function(str, length) {
	if (str.length >= length) {
		return str;
	}
	return new Array(length - str.length + 1).join("0") + str;
}

twiiterObj.getSuffix = function(day_num) {
	var return_str;
	switch(day_num % 10){
		case 0:
		case 4:
		case 5:
		case 6:
		case 7:
		case 8:
		case 9:
			return_str = "th";
			break;
		case 1:
			if(day_num % 100 == 11){
				return_str = "th";
			} else {
				return_str = "st";
			}
			break;
		case 2:
			if(day_num % 100 == 12){
				return_str = "th";
			} else {
				return_str = "nd";
			}
			break;
		case 3:
			if(day_num % 100 == 13){
				return_str = "th";
			} else {
				return_str = "rd";
			}
		break;
	}
	return return_str;
}

jQuery(function(){
	jQuery('.twitterArea').each(function(i){
		twiiterObj.fetchTweets(this, i);
		twiiterObj.elementsArray.push(this);
	});
	
});
