(function( $ )
{
	var methods = {
		'update' : function()
		{
		
		}
	};
	
	$.fn.wrRotator = function(options) 
	{
		var settings = {
			'item_height' : '22px'
		};
		
		$.extend(settings, options);
		
		return this.each(function()
		{
			var $t = $(this);
			$t.addClass('wr-rotator');
			
			var $items = $t.find('.items');
			var $pointer = $t.find('.pointer');
			var $announce = $t.find('.announce');
			var $image = $t.find('.main-image IMG');
			
			var idx = 0;
			var max_idx = $items.find('.item').size() - 1;
			
			//-------------
			// Scroll
			//-------------
			
			$t.find('.scroll-up').bind('click.rotator', function()
			{
				if($items.scrollTop() == 0)
				{
					return false;
				}

				$t.find('.scroll-down').css({'visibility': 'visible'});
				
				$items.scrollTo('-=' + settings.item_height, 75);
				set_idx(-1, true);
				
				if(idx == 0)
				{
					$(this).css({'visibility': 'hidden'});
				}
				
				return false;
			});
			
			$t.find('.scroll-down').bind('click.rotator', function()
			{
				if($items.scrollTop() == 220)
				{
					return false;
				}
				
				$t.find('.scroll-up').css({'visibility': 'visible'});
			
				$items.scrollTo('+=' + settings.item_height, 75);
				set_idx(1, true);
				
				if(idx == max_idx - 3)
				{
					$(this).css({'visibility': 'hidden'});
				}
				
				return false;
			});
			
			//-------------
			// Pointer & announce
			//-------------
			
			$items.delegate('DIV', 'mouseenter.rotator', function()
			{
				set_pointer(this);
				
				var $obj = $(this);
				var offset = $obj.offset();
				
				$announce.css({
					'top'  : offset.top + 24,
					'left' : offset.left + 65
				})
				.text($obj.find('.descr').text())
				.show();
				
				set_idx($obj.index());
			});
			
			$items.bind('mouseleave.rotator', function()
			{
				$announce.hide();
			});
			
			//-------------
			// Window resize handler
			//-------------
			
			$(window).bind('resize.rotator', function()
			{
				set_pointer($items.find('.item').eq(idx));
			});
			
			//-------------
			// Functions
			//-------------
			
			function set_pointer(obj)
			{
				var offset = $(obj).offset();
				
				$pointer.css({
					'top'  : offset.top - 2,
					'left' : offset.left - 13
				}).show();
			}
			
			function set_idx(new_idx, relative)
			{
				if(relative)
				{
					new_idx = idx + new_idx;
				}
				
				if(new_idx >= 0 && new_idx <= max_idx)
				{
					idx = new_idx;
				}
				
				$image.attr('src', $items.find('.item').eq(idx).find('.item-image').attr('src'));
			}
			
			//-------------
			// Init
			//-------------
			
			set_pointer($items.find('.item:first'));
			$items.scrollTop(0);
		});
	};
})( jQuery );

$(function()
{
	$('.wr-rotator').wrRotator();
});
