/*
This plugin build simple banner rotator from selected elements. Perhaps images or images.

HTML structure sample
---------------------
<div class="content">
	<h1>Content title</h1>
	<a href="#"><img src="#"/></a>
	<a href="#"><img src="#"/></a>
	<a href="#"><img src="#"/></a>
</div>

jQuery code sample
------------------
$("div.content a").pmBannerRotator();

or

$("div.content a").pmBannerRotator({
	rotateSpeed: 7000,
	transformationSpeed: 1000
});

HTML structure sample after plugin application
----------------------------------------------
<div class="content">
	<h1>Content title</h1>
	<div class="banner-rotator">
		<ul>
			<li><a href="#"><img src="#"/></a></li>
			<li><a href="#"><img src="#"/></a></li>
			<li><a href="#"><img src="#"/></a></li>
		</ul>
	</div>
</div>
*/

(function($){

	$.fn.pmBannerRotator = function(customOptions) {
	
		var options = $.extend("", $.fn.pmBannerRotator.defaultOptions, customOptions);
		
		var $bannerRotatorWrapper = $("<div class=\"banner-rotator\"><ul></ul></div>");
		var $bannerRotatorList = $bannerRotatorWrapper.find("ul");
	
		var currentImageIndex = 0;

		this.each(function(e){
								  
			var $banner = $(this);
			var $bannerContainer = $("<li/>");
			
			if (e == 0) {
				$banner.before($bannerRotatorWrapper);	
			}; 
			
			//	initialy hide all banners except first one
			$bannerContainer.append($banner).hide();
			
			if (e == 0) {
				$bannerContainer.show();
			}; 
			
			//	move banner items to banner wrapper
			$bannerRotatorList.append($bannerContainer);
			
			$banner.hover(
				function(){
					clearTimeout(swapbanners);
				}, 
				function(){
					rotateBanners();
				}
			);
		});
		
		function rotateBanners() {
			var $banners = $bannerRotatorList.find("li");
			var bannerItemsLength =  $banners.length;
			
			if (bannerItemsLength > 1) {				
				swapbanners = setInterval(function() {
					$banners.hide();
					
					currentImageIndex++;
					if (currentImageIndex == bannerItemsLength) currentImageIndex = 0;
					
					$bannerRotatorList.find("li:eq(" + currentImageIndex + ")").fadeIn(options.transformationSpeed);
				}, options.rotateSpeed);
			};
		};
		
		rotateBanners();
	};
	
	$.fn.pmBannerRotator.defaultOptions = {
		rotateSpeed: 5000,
		transformationSpeed: 500
	};

})(jQuery);