
jQuery.fn.rotator = function(args) {
	var $el = $(this);
	var time = 3000;
	var animation = 1000;
	
	if(!$.isArray(args) || args.length < 1)
	{
		return $el;
	}

	var images = [];
	var loaded = args.length;
	
	var _func, timeoutID;
	
	var current = 0;
	var lock = false;
	var i = 0;
	var started = false;

	_func = function() {
		lock = true;
		started = true;
		if(images.length - 1 < current)
		{
			current = 0;
		}

		var $old = $el.find('img');

		if($old.length)
		{
			var href = images[current].data('link');
			$link.removeAttr('href');
			$old.before(images[current].clone()).stop().animate({
				opacity: 0
			}, animation, function(){
				$old.remove();
				$link.attr('href', href);
			});
		}
		else
		{
			$link.attr('href', images[current].data('link'));
			$el.append(images[current].clone().stop().css('opacity', 0).animate({opacity: 1}, animation));
		}

		$('.rotator-nav div').stop()
							.not('#rotator_li_'+current)
								.animate({opacity: 0}, animation)
								.each(function(){
									var $div = $(this);
									$div.parent().css({backgroundPosition: 'top center'});
								})
							.end().filter('#rotator_li_'+current)
								.animate({opacity: 1}, animation, function(){
									var $div = $(this);
									$div.parent().css({backgroundPosition: '-2000px center'});
								});

		current++;
		window.setTimeout(function(){
			lock = false;
			timeoutID = window.setTimeout(_func, time + animation);
		}, animation);

	};

	var $link = $('<a href="#" />')
					.css({
						position: 'absolute',
						background: 'url(pic/blank.gif)', /* IE ssie*/
						right: 0,
						left: 0,
						top: 0,
						bottom: 0,
						zIndex: 3
					});

	var $list = $('<ul class="rotator-nav" />')
					.css({
						background: 'url(pic/menu_2_bg.png)',
						borderRadius: 10,
						MozBorderRadius: 10,
						WebKitBorderRadius: 10,
						position: 'absolute',
						right: 20,
						bottom: 175,
						zIndex: 4,
						padding: '8px 6px 6px 16px',
						listStyle: 'none'
					});
	
	for(var a in args)
	{
		images[i] = $(new Image())
						.attr('src', args[a].image)
						.data('id', i)
						.data('link', args[a].link)
						.load(function(){
							loaded--;

							if(!loaded)
							{
								_func();
							}
						});

		$list.append($('<li />')
						.css({
							background: 'url(pic/bg_rotator_nav_li.png) top center no-repeat',
							width: 28,
							height: 22,
							marginRight: 10,
							display: 'inline-block',
							cursor: 'pointer'
						})
						.data('id', i)
						.append($('<div />')
									.attr('id', 'rotator_li_'+i)
									.css({
										opacity: 0,
										background: 'url(pic/bg_rotator_nav_li.png) bottom center no-repeat',
										width: 28,
										height: 22
									})
						)
						.click(function(){
							if(!lock)
							{
								current = $(this).data('id');
								window.clearTimeout(timeoutID);
								_func();
							}
						})
		);
		
		i++;
	}
	
	if($.browser.msie && $.browser.version <= 9)
	{
		$list.find('li').css({
			display: 'block',
			float: 'left'
		});
	}
	
	
	$el.append($link).append($list);
	
	if($.browser.msie)
	{
		window.setTimeout(function(){
			if(!started)
			{
				$('.rotator-nav li').trigger('click');
			}
		}, 1000);
	}

	return $el;
}
