(function($) {
	/*
		jquery.twitter.js v1.5
		Last updated: 08 July 2009

		Created by Damien du Toit (and subsiquently abused by Engage Interactive)
		http://coda.co.za/blog/2008/10/26/jquery-plugin-for-twitter

		Licensed under a Creative Commons Attribution-Non-Commercial 3.0 Unported License
		http://creativecommons.org/licenses/by-nc/3.0/
	*/

	$.fn.getTwitter = function(options) {

		$.fn.getTwitter.defaults = {
			userName: null,
			numTweets: 5,
			showTimestamp: false,
			loaded: function(){} 
		};

		var o = $.extend({}, $.fn.getTwitter.defaults, options);

		return this.each(function() {
			var c = $(this);

			// add heading to container element
			if (o.showHeading) {
				c.append("<h2>"+o.headingText+"</h2>");
			}

			// add twitter list to container element
			var twitterListHTML = "<ul id=\"twitter_update_list\"><li class=\"twtw\"></li></ul>";
			c.append(twitterListHTML);

			var tl = $("#twitter_update_list");

			// hide twitter list
			tl.hide();

			// show container element
			c.show();

			$.getScript("http://twitter.com/javascripts/blogger.js");
			$.getScript("http://twitter.com/statuses/user_timeline/"+o.userName+".json?callback=twitterCallback2&count="+o.numTweets, function() {

				//remove timestamp and move to title of list item
				if (!o.showTimestamp) {
					tl.find("li").each(function() {
						var timestampHTML = $(this).children("a");
						var timestamp = timestampHTML.html();
						timestampHTML.remove();
						$(this).attr("title", timestamp);
						$(this).attr("class", "twtw");
						//Add Target blank
						$(this).children('span').children('a').attr('target','_blank');
					});
				}
					
				//Show and callback time
				tl.show();
				o.loaded.call(this);
			});
		});
	};
})(jQuery);


//////////////////////////
// TEENY PLUGINS

/*
 * jQuery Timer Plugin
 * http://www.evanbot.com/article/jquery-timer-plugin/23
 *
 * @version      1.0
 * @copyright    2009 Evan Byrne (http://www.evanbot.com)
 */

jQuery.timer = function(time,func,callback){
	var a = {timer:setTimeout(func,time),callback:null}
	if(typeof(callback) == 'function'){a.callback = callback;}
	return a;
};

jQuery.clearTimer = function(a){
	clearTimeout(a.timer);
	if(typeof(a.callback) == 'function'){a.callback();};
	return this;
};

//EASING

jQuery.extend(jQuery.easing,{
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutExpo: function(x,t,b,c,d){
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	}
});

/**
 * limitCharWidth 0.6 - Limit inner text to adjust to container width
 *
 * history
 * : 2009-04-05 ver0.6 - Bugfix: previouse version hasn't work on IE.
 * : 2009-04-05 ver0.5 - Spaces at the end of collapsed string is trimed
						 Some code improvement
 * : 2009-03-04 ver0.4 - Now the container needs not necessarily to be set
						 whiteSpace to nowrap
 * : 2009-02-27 ver0.3 - Fixed a bug that occured when the target isn't a block
 * : 2009-02-01 ver0.2 - Fixed a bug that this didn't work on IE6 without width
						 parameter.
 * : 2009-01-28 ver0.1 - Initial release
 *
 * Copyright (c) 2008 Sugama Keita (http://jamadam.com/blog/)
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($) {

    var attr_name;
	
    $(document).ready(function(){
        
        attr_name =
            (typeof $('body').get(0).innerText != "undefined")
                ? 'innerText'
                :
            (typeof $('body').get(0).textContent != "undefined")
                ? 'textContent'
                : null;
    });
    
	$.fn.extend({

		unlimitCharWidth: function() {

			return $(this).each(function () {

				$(this).attr(attr_name, $.data(this, 'limitCharWidth'));
			});
		},

		limitCharWidth: function(args) {

			args =
				$.extend({
					alternative : '...',
					width       : null,
					set_title   : false
				}, args || {});

			return $(this).each(function () {

				var current = $(this).attr(attr_name);

				// Set original content to title
				if (! this.title && args.set_title) {
					this.title = $.trim(current);
				}

				// Save original data
				if (! $.data(this, 'limitCharWidth')) {
					$.data(this, 'limitCharWidth', current);
				}

				var org = $.data(this, 'limitCharWidth');

				var width = args.width;

				if (! width) {
					if ($(this).css('display') == 'block') {
						width = $(this).attr(attr_name, '').width();
					} else {
						return $(this);
					}
				}

				$(this).attr(attr_name, org);

				var oldWhiteSpaceSetting = $(this).css('whiteSpace');
				$(this).css({whiteSpace : 'nowrap'});

				var dummyspan = $(this).wrapInner('<span></span>').find('span');

				/*
				dummyspan.css({
					fontSize        : $(this).css('fontSize'),
					fontWeight      : $(this).css('fontWeight'),
					fontFamily      : $(this).css('fontFamily'),
					wordSpacing     : $(this).css('wordSpacing'),
					textIndent      : $(this).css('textIndent'),
					textTransform   : $(this).css('textTransform'),
					letterSpacing   : $(this).css('letterSpacing'),
					whiteSpace      : $(this).css('whiteSpace')
				});
				*/

				if (dummyspan.width() > width) {
					dummyspan.attr(attr_name,
						dummyspan.attr(attr_name) + args.alternative);
				}

				while (dummyspan.width() > width) {

					var newcontent =
						dummyspan.attr(attr_name)
							.slice(0, -1 * (args.alternative.length + 1));

					newcontent = $.trim(newcontent);

					if (newcontent) {
						dummyspan.attr(attr_name, newcontent + args.alternative);
					} else {
						dummyspan.attr(attr_name, '');
						break;
					}
				}

				$(this).css({whiteSpace : oldWhiteSpaceSetting});

				// remove dummy span
				$(this).attr(attr_name, dummyspan.attr(attr_name));
			});
		}
	});
})(jQuery);

//TWITTER
	$(function(){

	totalT = 0;
	
	$("#twitter").getTwitter({
		userName: "smoothiecast",
		numTweets: 5,
		loaded: function(){
			
			totalT = $('#twitter_update_list li').size();
			
			$('#twitter_update_list li:first').clone().appendTo('#twitter_update_list');
			
			
	
			
			//Do the animating!
			$('#twitter span.loading').animate({opacity:0},400,'easeInOutExpo',function(){
				$(this).remove();
				$('#twitter_update_list').animate({top:0},400,'easeInOutExpo',function(){
					tweetCycle();
				});
			});
		}
	});
	
	currentY = 0;
	currentT = 1;
	
	var tweetTimer = {};
	
	$('#twitter').hover(function(){
		$.clearTimer(tweetTimer);
	},function(){
		tweetCycle();
	});
	
	function tweetCycle(){
		tweetTimer = $.timer(4000,function(){
			$.clearTimer(tweetTimer);
			if(currentT==totalT+1){
				$('#twitter_update_list').css({top:0});
				currentY = 0;
				currentT = 1;
			}
			currentY = currentY - 26;
			$('#twitter_update_list').animate({top:currentY},800,'easeInOutExpo');
			currentT = currentT + 1;
			tweetCycle();
		});
	}
	
});



