$.promoRotator = function(transition,timeout,startPos) {
	
	// SET BASIC VARIABLES
	var $pos, $rotatorNav;
	
	// SET SOME DEFAULT CSS
	$('.promoRotator').css({
		position:'relative'
	});
	$('.promoRotator ul, .promoRotator li').css({
		margin:'0px',
		padding:'0px',
		listStyle:'none'
	});

	// LOOP THROUGH ALL BLOCKS ON PAGE
	$('.promoRotator').each(function() {
		var $width = $('img',this).width();
		var $height = $('img',this).height();
		var $size = $('li',this).size();
	
		$(this).css({
			width:$width+'px',
			height:($height/2+17)+'px'
		});
		$('ul',this).css({
			height:($height/2)+'px'
		});
		$('li',this).css({
			left:'0px'
		});
	
		// ONLY EXECUTE IF ROTATOR HAS MORE THAN ONE ITEM
		if ($size > 1) {
		
			// SET CSS ON <li>'s
			$('li',this).css({
				display:'none'
			});
		
			// CREATE NAVIGATION DOTS
			var $i = 0;
			var $promoRotatorNav = '';
			$('li',this).each(function() {
				$promoRotatorNav += '<a href="#" rel="'+$i+'">'+$i+'</a>';
				$i++;
			});
			$(this).append('<div class="promoRotatorNav">'+$promoRotatorNav+'</div>');
			$('.promoRotatorNav',this).css({
				position:'absolute',
				width:($width - ($width - ($size*15))/2)+'px',
				paddingLeft:(($width - ($size*15))/2)+'px',
				top:($height/2+5)+'px'
			});
		
			// SET FIRST ITEM
			$('ul li:eq('+startPos+')',this).fadeIn(transition).addClass('rotator-current');
			$('.promoRotatorNav a[rel='+startPos+']',this).addClass('promoRotatorNav-current');
		
			// MARK NEXT ITEM
			var $nextPos;
			if( (startPos+1) > ($size-1) ) {
				$nextPos = 0;
			} else {
				$nextPos = startPos+1;
			}
			$('ul',this).attr('rel',startPos);
			$('ul li:eq('+$nextPos+')',this).addClass('rotator-next');
			$('.promoRotatorNav a[rel='+$nextPos+']',this).addClass('promoRotatorNav-next');
		}
	});
	
	// ROTATE FUNCTIONS
	function rotate() {
	
		// PROCESS ANIMATION
		$('.promoRotatorNav a.promoRotatorNav-current').removeClass('promoRotatorNav-current');
		$('.promoRotatorNav a.promoRotatorNav-next').removeClass('promoRotatorNav-next');
		
		$('.rotator-current').fadeOut(transition,function() {
			$('.rotator-next').fadeIn(transition).removeClass('rotator-next').addClass('rotator-current');
		}).removeClass('rotator-current');
		
		determineNext();
	
	}
	
	// DETERMINE NEXT ITEM
	function determineNext() {
		
		$('body .promoRotator').each(function() {
			
			var $r = $(this);
			if ($('li',$r).size() > 1) {
				
				var $rel = parseInt( $('ul',$r).attr('rel') );
				
				if( ($rel+1) > ( $('li',$r).size()-1) ) {
					$pos = 0;
				} else {
					$pos = $rel+1;
				}
				
				$('li:eq('+$pos+')',$r).addClass('rotator-next');
				
				$('.promoRotatorNav a[rel='+$pos+']',$r).addClass('promoRotatorNav-current');
				$('.promoRotatorNav a[rel='+$pos+']',$r).addClass('promoRotatorNav-next');
				$('ul',$r).attr('rel',$pos);
				
			}
		
		});
		
	}
	
	// BUTTON CLICK
	$('.promoRotatorNav a').click(function() {
	
		$r = $(this).parent().parent();
		var $rel = parseInt($('ul',$r).attr('rel'));
		var $pos = parseInt($(this).attr('rel'));
	
		// CLEAR OUT CURRENT/NEXT
		$('.promoRotatorNav a.promoRotatorNav-current',$r).removeClass('promoRotatorNav-current');
		$('.promoRotatorNav a.promoRotatorNav-next',$r).removeClass('promoRotatorNav-next');
	
		// EXECUTE TRANSITION
		$('li.rotator-next',$r).removeClass('rotator-next');
		$('.promoRotatorNav a[rel='+$pos+']',$r).addClass('promoRotatorNav-current');
	
		$('li.rotator-current',$r).fadeOut(transition,function() {
			$('li:eq('+$pos+')',$r).fadeIn(transition).addClass('rotator-current');
		}).removeClass('rotator-current');
	
		// DETERMINE NEXT
		if( ($pos+1) > ($('li',$r).size()-1) ) {
			$next = 0;
		} else {
			$next = $pos+1;
		}
		$('li:eq('+$next+')',$r).addClass('rotator-next');
		$('.promoRotatorNav a[rel='+$next+']',$r).addClass('promoRotatorNav-next');
	
		$('ul',$r).attr('rel',$pos);
	
		return false;
				
	});
	
	// PAUSE/START TIMER ON HOVER
	$('.promoRotator').hover(
		function() {
			clearInterval(rotatePromos);
		},
		function() {
			rotatePromos = setInterval(rotate,timeout);
		}
	);
	$('.promoRotator li').hover(
		function() {
			var $top = $('img',this).height()/2;
			$(this).css('top','-'+$top+'px');
		},
		function() {
			$(this).css('top','0px');
		}
	);
	
	rotatePromos = setInterval(rotate,timeout);
}