$.fn.extend({
	tiny:function(opt){
		if(this.length>1)return $(this).each(function(){$(this).tiny(opt)})
		var keeper=$(this).css({overflow:'hidden',position:'relative'}),
			ul=$('>ul',keeper),
			li=[],
			w=0,
			i=0,
			slide=function(){
				$(li).removeClass('current').eq(0).addClass('current')
				ul.stop().animate({left:'-'+$('.current',ul).attr('offsetLeft')+'px'},opt.duration,opt.easing)
			},
			slideTo=function(n){
				$('>ul>li',keeper).eq(n).addClass('current').siblings().removeClass('current')
				while(!/current/.test(li[0].className))li.push(li.shift())
				slide()
			},
			next=function(){
				li.push(li.shift())
				slide()
			},
			prev=function(){
				li.unshift(li.pop())
				slide()
			}
		opt=$.extend({prev:'.tiny_prev',next:'.tiny_next',pagination:'.tiny_pagination',easing:'',duration:''},opt)
		$('>li',ul).each(function(){
			w+=$(this).css({'float':'left'}).outerWidth()
			i++
			li.push(this)
		}).eq(0).addClass('current')		
		ul.width(w).css({position:'relative',left:0})
		keeper.width(w/i)
		keeper.siblings(opt.prev+','+opt.next).bind('click',function(){
			if($(this).is(opt.next))
				next()
			else
				prev()
			return false
		})
		keeper.siblings(opt.pagination).find('li a').bind('click',function(){
			slideTo(this.rel)
			$(this).parent().addClass('current').siblings().removeClass('current')
			return false
		})
		keeper.bind('tinyNext',next)
		keeper.bind('tinyPrev',prev)
		
		return this
	}
})
