// opinion's rotator
// by ejik; )
(function($) {
 
   $.fn.rotator = function(settings) {
 
     settings = $.extend({
							// paragraphs selected						 
							parArray:			[],
							currentPar:			0
							}, settings);
	 
//	 jQuery Obj cached (with all elements)
   	 var jQueryMatchedObj = this;
//	 buttons
	 var prev = $(jQueryMatchedObj).siblings('.prev_op');
	 var next = $(jQueryMatchedObj).siblings('.next_op');
	 var timeout;
	
	 function start(jQueryMatchedObj) {
			// Unset total paragraphs
			settings.parArray.length = 0;
			// Unset image active information
//			settings.activeImage = 0;

			if (jQueryMatchedObj.length <= 2) {
				// hide arrows and do nothing if there are only 2 paragraphs 				
				$(next).hide();
				$(prev).hide();
			} else {
				// show arrows if there are more then 2 paragraphs
				$(next).show();
				$(prev).show();
				
				// activate buttons
				$(prev).click(moveDown);
				$(next).click(moveUp);
				
				// building our parahraphs array
				for ( var i = 0; i < jQueryMatchedObj.length; i++ ) {
					settings.parArray.push(jQueryMatchedObj[i]);
					if (i > 1) {
						$(settings.parArray[i]).hide();
					};
				};

				// starting auto rotation
				timeout = setTimeout(moveUp, 10000);
			};			
	 };
	 function moveUp() {
		 clearTimeout(timeout);
		 $(next).unbind();
		 $(prev).unbind();
		 //$('#leftgfx').append(settings.currentPar + ' length: ' + settings.parArray.length + '<br />');
		 // hide and slide upper one, show next
		 $(settings.parArray[settings.currentPar]).animate({opacity:0},500,
														   function() {
															   // show next one
															  var nextOne;
															  if (settings.currentPar==settings.parArray.length-1) {
																  nextOne = 1;
															  } else if (settings.currentPar==settings.parArray.length-2) {
																  nextOne = 0;
															  } else {
																  nextOne = settings.currentPar+2;
															  };
															  $(settings.parArray[settings.currentPar]).slideUp(750,
																					  function() {
																							  // change order
																							  var lastOne;
																							  if (settings.currentPar==0) {
																								  lastOne = settings.parArray.length-1;
																							  } else {
																								  lastOne = settings.currentPar-1;
																							  };
																							  $(settings.parArray[settings.currentPar]).insertAfter($(settings.parArray[lastOne]));								
																							  $(settings.parArray[settings.currentPar]).css({opacity:1});	
																							  timeout = setTimeout(moveUp, 10000);
																					  });
															  
															  $(settings.parArray[nextOne]).fadeIn(1000,
																					  function() {
																						  
																							  $(prev).click(moveDown);
																							  $(next).click(moveUp);	
																							  if (settings.currentPar<settings.parArray.length-1) {
																								  settings.currentPar++;
																							  } else {
																								  settings.currentPar=0;
																							  };									
																					  });
											   });
	 };
	 
	 function moveDown() {
		 clearTimeout(timeout);
		 $(next).unbind();
		 $(prev).unbind();		 
		 
		 // hide and slide the lower one, show prev
		 
		var botOne;
		if (settings.currentPar==settings.parArray.length-1) {
			botOne = 0;
		} else {
			botOne = settings.currentPar+1;
		};		
		
		var prevOne;
		if (settings.currentPar==0) {
			prevOne = settings.parArray.length-1;	
		} else {
			prevOne = settings.currentPar-1;
		};
		
		 //hide lower one
		 $(settings.parArray[botOne]).fadeOut(500);
		 //change order
		 
		$(settings.parArray[prevOne]).css({opacity:0});
		$(settings.parArray[prevOne]).insertBefore($(settings.parArray[settings.currentPar]));
		
		// show prev one
		$(settings.parArray[prevOne]).slideDown(1000).animate({opacity: 1},1000, 
												 function() {
													$(prev).click(moveDown);
													$(next).click(moveUp);
													if (settings.currentPar>0) {
														settings.currentPar--;
													} else {
														settings.currentPar=settings.parArray.length-1;
													};	
													timeout = setTimeout(moveUp, 10000);
												 });	 
		};
	 

	 start(jQueryMatchedObj);
   };
})(jQuery);

