(function($) {
	
	$.fn.dlelRotator = function(settings) {
		
		var def = {
			speed:		400, // speed animation
			pause:		7000 // delay for auto slide
		}
		
		var settings = $.extend(def, settings);
		
		return this.each(function() {
			
			var obj = $(this);
			var itemWidth = 528; // width of each item
			var itemsAmount = 5; // items amount
			var curr = 0; // current item
			
			/* used only for autoslide */
			function slide() {
				
				curr = ( curr >= itemsAmount-1 ) ? 0 : curr+1;
				$('.rotator_cells',obj).fadeOut();
				$('.rotator_cells li',obj).removeClass('active');
				cellId = $('.rotator_cells:eq(' + curr +')',obj);
				$('li:eq(' + curr +')',cellId).addClass('active');
				cellId.fadeIn();
				
				$('.windows',obj).animate({marginLeft:curr*itemWidth*-1},settings.speed);
				
				timeout = setTimeout(function(){slide();},settings.pause);				
				
			}
			
			/* rotate content */
			function dlelRotateContent( frameId ) {
				
				if( frameId.hasClass('active') ) return;
				
				$('.rotator_cells',obj).fadeOut();
				$('.rotator_cells li',obj).removeClass('active');
				
				curr = frameId.prevAll().length;
				
				cellId = $('.rotator_cells:eq(' + curr +')',obj);
				$('li:eq(' + curr +')',cellId).addClass('active');
				cellId.fadeIn();
				
				$('.windows',obj).animate({marginLeft:curr*itemWidth*-1},settings.speed);
				
			}
			
			/* calculate wrap width */
			$('.windows',obj).css('width',itemsAmount*itemWidth);
			
			/* rotate content event */
			$('.rotator_cells li',obj).click(function(){
				curr = $(this).prevAll().length;
				dlelRotateContent( $(this) );
			});
			
			/* stop auto slide onmouseover and resume onmouseout */
			$('.windows',obj).bind({
				'mouseover': function(){
					clearTimeout(timeout);
				},
				'mouseout': function(){
					timeout = setTimeout(function(){slide();},settings.pause);
				}
			});
			
			// init auto slide
			var timeout;
			timeout = setTimeout(function(){slide();},settings.pause);
			
		});
		
	}
	
})(jQuery);
